SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Знакомство с Ethereum Virtual
Machine
Сергей Лоншаков
Blockchain разработчик, Airalab
© 2016 Microsoft Corporation. All rights reserved.
Занимаюсь исследованиями/созданием:
- Bitcoin/Altcoin/криптовалютных проектов с 2011.
- Smart contract/Ethereum проектов с 2014.
- DAO (децентрализованных автономных организаций)
с 2015.
- Проектов в области децентрализованного интернета
вещей с использованием технологии Blockchain с осени
2015 года.
Цели
#msdevcon
Децентрализованный
компьютер Ethereum
Анатомия умного
контракта
Инструменты и
примеры DAO
Изучим внутреннее
содержание умного
контракта с точки зрения
EVM
Узнаем об основных
клиентах сети Ethereum и
примерах популярных
сценариев применения
умных контрактов
Разберемся в абстрактном
представлении Ethereum
Virtual Machine
#msdevcon
Децентрализованный
компьютер Ethereum
Определение Ethereum Virtual Machine
Абстрактно: часть протокола, которая фактически обрабатывает внутреннее состояние
хранилища и выполняет вычисления называется Ethereum Virtual Machine (сокр. EVM)
В СМИ: EVM можно рассматривать как децентрализованный компьютер, содержащий
миллионы объектов, называемые "аккаунты", которые имеют возможность поддерживать /
изменять внутреннюю базу данных, выполнять код и общаться друг с другом.
Среди разработчиков: Разработчики могут создавать особый вид приложений - DApp,
работающие на децентрализованном компьютере (EVM) с помощью дружественных языков
программирования смоделированных на основе существующих языков, таких как JavaScript
и Python ..
Децентрализованный компьютер, О_о
• Код исполняется в 5 - 100 раз
медленнее, чем скомпилированный
для локального запуска.
• Стоимость использования
вычислений, памяти и хранилища
примерно на уровне 1950-х годов.
• Информация может быть изменена в
первые 60с после получения
информации от подключенных узлов.
EVM - это не очень хороший компьютер,
он медленный и очень очень дорогой.
Dr. Gavin Wood, devcon1, 2015 год
Децентрализованный компьютер, Yep
• Это действительно единый мировой
компьютер для всей планеты и
навсегда.
• Не может быть остановлен и не
зависит от государств и корпораций в
работе.
• EVM - вездесущий, доступный
повсюду, где есть интернет. Можно найти на Youtube по запросу:
DEVCON1: Ethereum for Dummies - Dr.
Gavin Wood
Ethereum Virtual Machine и Тьюринг
полнота
• Формально EVM может выполнить любое вычисление,
которое возможно выполнить, включая бесконечные циклы.
• Поддержка Тьюринг полных языков программирования
Solidity (from Javascript), Serpent (from Python), LLL (from Lisp)
Есть два типа аккаунтов в Ethereum:
Аккаунт пользователя (Externally owned account сокр. EOAs): учетная запись
контролируемая закрытым ключом, и если у вас есть закрытый ключ,
связанный с EOA у вас есть возможность отправлять эфиры и сообщения от
EOA.
Контракт: учетная запись, которая имеет свой собственный код, и
управляемая с помощью кода.
Ethereum Virtual Machine и умные
контракты
Анатомия умного контракта: bytecode
• Контракты живут в Ethereum Blockchain в бинарном формате (EVM
bytecode).
• Контракты, как правило, создаются на языке высокого уровня (Solidity),
компилируются в машинно-независимый код низкого уровня
(bytecode) из исходного кода.
• Bytecode загружается в Ethereum Blockchain с помощью отправки
транзакции специального вида “Создание контракта” в сеть обычным
клиентом сети.
Анатомия умного контракта: abi
• Abi - Application Binary Interface – Бинарный интерфейс приложения.
• Abi контракта не хранится в Blockchain.
• Abi контракта генерируется при компиляции контракта и может быть
передано в готовой форме пользователю или “зашито” в коде DApp.
Анатомия умного контракта: gas
• Gas - это метрика для мирового компьютера Ethereum (EVM).
• Чем больше вычислений и использования хранилища, тем больше
требуется газа.
• Gas не равно Fee. Fee = Amount of gas * gasPrice
Анатомия умного контракта: gas
• Каждая операция в EVM требует определенное количество газа.
• В любой момент времени известен gasLimit в сети.
• Если транзакция не помещается в gasLimit (Out of Gas), она не будет
выполнена, но fee будет снято с отправителя.
• Майнер, нашедший блок может изменить gasLimit +/- 0.0976 % для
следующего блока.
contract = eth.compile.solidity(source).test
{ code: '605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063
c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056',
info: {
language: 'Solidity',
languageVersion: '0',
compilerVersion: '0.9.13',
abiDefinition: [{
constant: false,
inputs: [{
name: 'a',
type: 'uint256'
} ],
name: 'multiply',
outputs: [{
name: 'd',
type: 'uint256'
} ],
type: 'function' } ],
userDoc: {
methods: {
}
},
developerDoc: {
methods: {
}
},
source: 'contract test { function multiply(uint a) returns(uint d) { return a * 7; } }'
}
}
#msdevcon
Инструменты для работы с
Ethereum Blockchain
Geth
• Geth это интерфейс командной строки для
запуска полного узла Ethereum Blockchain.
• Реализован на языке Go.
• Является основным результатом работы
Frontier Release.
• Выпущено 106 релизов начиная с 8
февраля 2014 года.
/ethereum/go-ethereum
Geth: interfaces & API
• Javascript Console.
• web3 JavaScript Dapp API
• JSON RPC API
• JSON-RPC server.
• Command line options.
/ethereum/go-ethereum
contract = eth.compile.solidity(source).test
{ code: '605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063
c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056',
info: {
language: 'Solidity',
languageVersion: '0',
compilerVersion: '0.9.13',
abiDefinition: [{
constant: false,
inputs: [{
name: 'a',
type: 'uint256'
} ],
name: 'multiply',
outputs: [{
name: 'd',
type: 'uint256'
} ],
type: 'function' } ],
userDoc: {
methods: {
}
},
developerDoc: {
methods: {
}
},
source: 'contract test { function multiply(uint a) returns(uint d) { return a * 7; } }'
}
}
(1) primaryAddress = eth.accounts[0];
(2) MyContract = eth.contract(abi);
(3) contact = MyContract.new(arg1, arg2, ...,{from: primaryAddress, data: evmCode});
(4) MyContract.new([arg1, arg2, ...,]{from: primaryAccount, data: evmCode},
function(err, contract) { if (!err && contract.address) console.log(contract.address); });
Отправляем контракт в сеть
Parity
• Parity это интерфейс командной строки для
запуска полного узла Ethereum Blockchain.
• Реализован на языке Rust.
• Является разработкой команды Ethcore,
Гевина Вуда.
• Выпущено 35 релизов начиная с 8 февраля
2016 года.
/ethcore/parity
Parity: interfaces & API
• Parity имеет режим совместимости с geth.
Parity --geth
• JSON RPC API
• parity JavaScript Dapp API (+web3)
• web3 JavaScript Dapp API
/ethereum/go-ethereum
Ethereumj
• ethereumj - Java implementation of the
Ethereum protocol.
• The Java library that can be embedded in any
Java project
• Является разработкой команды
Hack.ether.camp.
• Выпущено 25 релизов начиная с 15
сентября 2014 года.
/ethereum/ethereumj
Ethereum Wallet & Mist
• Использует geth как протокол общения с
сетью Ethereum.
• The Mist - это браузер для запуска DApp,
работающих с web3 JavaScript Dapp API
• Ранние релизы.
• Платформа написания: Meteor + Electron.
/ethereum/mist
MetaMask
• Плагин для браузера Google Chrome,
позволяющий запускать DApp без полной
ноды на клиенте.
• Общается с полной нодой через JSON RPC
API.
• Ранние релизы.
• Написан на Javascript
/MetaMask/metamask-plugin
#msdevcon
Примеры DAO
Умный кошелёк, multisig
1. Полная свобода в
проектировании кошелька .
2. Автономность2 = автономная
ценность на счету автономного
кода.
3. Банк?
Токены
contract MyToken {
/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;
}
Описание стандарта ERC20:
https://github.com/ethereum/EIPs/issues/20
Управление взаимоотношениями
1. Конгресс / Совет директоров /Демократия
2. Escrow / Аккредитив
3. p2p + Страхование / Кредитование / Финансирование
Управление взаимоотношениями
Alice и Bob заключают пари
на 100 GavCoin с триггером
на основе данных о
температуре в Москве.
Если температура в Москве
не будет выше 35 градусов в
течении года, то Bob
получит 100 GavCoin, иначе
их получит Alice.
Первая среда для прямых экономических
взаимоотношений человек – робот, робот
- робот
Q&A
#msdevcon
Знакомство с Ethereum Virtual
Machine
Сергей Лоншаков, sergeylonshakov@gmail.com

Contenu connexe

En vedette

Масштабируемость блокчейн-систем: проблемы и решения
Масштабируемость блокчейн-систем: проблемы и решенияМасштабируемость блокчейн-систем: проблемы и решения
Масштабируемость блокчейн-систем: проблемы и решенияAlex Chepurnoy
 
Virtual machines and their architecture
Virtual machines and their architectureVirtual machines and their architecture
Virtual machines and their architectureMrinmoy Dalal
 
Etherem ~ agvm
Etherem ~ agvmEtherem ~ agvm
Etherem ~ agvmgha sshee
 
Dapps for Web Developers Aberdeen Techmeetup
Dapps for Web Developers Aberdeen TechmeetupDapps for Web Developers Aberdeen Techmeetup
Dapps for Web Developers Aberdeen TechmeetupJames Littlejohn
 
日本のIT市場のトピックス
日本のIT市場のトピックス日本のIT市場のトピックス
日本のIT市場のトピックスHiroyasu NOHATA
 
Vision for a health blockchain
Vision for a health blockchainVision for a health blockchain
Vision for a health blockchainJames Littlejohn
 
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter..."Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...Khaled Ben Driss
 
Etherisc Versicherung neu erfinden
Etherisc Versicherung neu erfindenEtherisc Versicherung neu erfinden
Etherisc Versicherung neu erfindenStephan Karpischek
 
The Ethereum ÐApp IDE: Mix
The Ethereum ÐApp IDE: MixThe Ethereum ÐApp IDE: Mix
The Ethereum ÐApp IDE: Mixgavofyork
 
NodeJS Blockchain.info Wallet
NodeJS Blockchain.info WalletNodeJS Blockchain.info Wallet
NodeJS Blockchain.info WalletSjors Provoost
 
Learning Solidity
Learning SolidityLearning Solidity
Learning SolidityArnold Pham
 
Ingredients for creating dapps
Ingredients for creating dappsIngredients for creating dapps
Ingredients for creating dappsStefaan Ponnet
 
Introduction to Ethereum
Introduction to EthereumIntroduction to Ethereum
Introduction to EthereumArnold Pham
 

En vedette (16)

Масштабируемость блокчейн-систем: проблемы и решения
Масштабируемость блокчейн-систем: проблемы и решенияМасштабируемость блокчейн-систем: проблемы и решения
Масштабируемость блокчейн-систем: проблемы и решения
 
Virtual machines and their architecture
Virtual machines and their architectureVirtual machines and their architecture
Virtual machines and their architecture
 
Ethereum @ descon 2016
Ethereum @ descon 2016Ethereum @ descon 2016
Ethereum @ descon 2016
 
Etherem ~ agvm
Etherem ~ agvmEtherem ~ agvm
Etherem ~ agvm
 
Dapps for Web Developers Aberdeen Techmeetup
Dapps for Web Developers Aberdeen TechmeetupDapps for Web Developers Aberdeen Techmeetup
Dapps for Web Developers Aberdeen Techmeetup
 
日本のIT市場のトピックス
日本のIT市場のトピックス日本のIT市場のトピックス
日本のIT市場のトピックス
 
Introduction to Idea
Introduction to IdeaIntroduction to Idea
Introduction to Idea
 
Solidity intro
Solidity introSolidity intro
Solidity intro
 
Vision for a health blockchain
Vision for a health blockchainVision for a health blockchain
Vision for a health blockchain
 
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter..."Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...
 
Etherisc Versicherung neu erfinden
Etherisc Versicherung neu erfindenEtherisc Versicherung neu erfinden
Etherisc Versicherung neu erfinden
 
The Ethereum ÐApp IDE: Mix
The Ethereum ÐApp IDE: MixThe Ethereum ÐApp IDE: Mix
The Ethereum ÐApp IDE: Mix
 
NodeJS Blockchain.info Wallet
NodeJS Blockchain.info WalletNodeJS Blockchain.info Wallet
NodeJS Blockchain.info Wallet
 
Learning Solidity
Learning SolidityLearning Solidity
Learning Solidity
 
Ingredients for creating dapps
Ingredients for creating dappsIngredients for creating dapps
Ingredients for creating dapps
 
Introduction to Ethereum
Introduction to EthereumIntroduction to Ethereum
Introduction to Ethereum
 

Similaire à Знакомство с Ethereum virtual machine

Стек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPСтек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPIntersog
 
IoT Protocols #iotconfua
IoT Protocols #iotconfuaIoT Protocols #iotconfua
IoT Protocols #iotconfuaAndy Shutka
 
Введение в Bitcoin и Ethereum
Введение в Bitcoin и EthereumВведение в Bitcoin и Ethereum
Введение в Bitcoin и EthereumSergey Lonshakov
 
Bitcoin - криптовалюта будущего
Bitcoin - криптовалюта будущегоBitcoin - криптовалюта будущего
Bitcoin - криптовалюта будущегоLex Mosolov
 
Bitcoin
Bitcoin Bitcoin
Bitcoin SPPL
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейEugene Aseev
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
"Программируемые деньги" Чепурной Александр, IOHK Research
"Программируемые деньги" Чепурной Александр, IOHK Research"Программируемые деньги" Чепурной Александр, IOHK Research
"Программируемые деньги" Чепурной Александр, IOHK Researchit-people
 
Статический анализ исходного кода на примере WinMerge
Статический анализ исходного кода на примере WinMergeСтатический анализ исходного кода на примере WinMerge
Статический анализ исходного кода на примере WinMergeTatyanazaxarova
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)Ontico
 

Similaire à Знакомство с Ethereum virtual machine (20)

Blockchain & Ecommerce (part 1)
Blockchain & Ecommerce (part 1)Blockchain & Ecommerce (part 1)
Blockchain & Ecommerce (part 1)
 
Async Python
Async PythonAsync Python
Async Python
 
Стек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPСтек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMP
 
IoT Protocols #iotconfua
IoT Protocols #iotconfuaIoT Protocols #iotconfua
IoT Protocols #iotconfua
 
IoT Conf UA 2016
IoT Conf UA 2016IoT Conf UA 2016
IoT Conf UA 2016
 
Введение в Bitcoin и Ethereum
Введение в Bitcoin и EthereumВведение в Bitcoin и Ethereum
Введение в Bitcoin и Ethereum
 
Bitcoin - криптовалюта будущего
Bitcoin - криптовалюта будущегоBitcoin - криптовалюта будущего
Bitcoin - криптовалюта будущего
 
Все о Bitcoin
Все о BitcoinВсе о Bitcoin
Все о Bitcoin
 
Bitcoin
Bitcoin Bitcoin
Bitcoin
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн Сетей
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
"Программируемые деньги" Чепурной Александр, IOHK Research
"Программируемые деньги" Чепурной Александр, IOHK Research"Программируемые деньги" Чепурной Александр, IOHK Research
"Программируемые деньги" Чепурной Александр, IOHK Research
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Статический анализ исходного кода на примере WinMerge
Статический анализ исходного кода на примере WinMergeСтатический анализ исходного кода на примере WinMerge
Статический анализ исходного кода на примере WinMerge
 
4328
43284328
4328
 
Smart Contracts
Smart ContractsSmart Contracts
Smart Contracts
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
 

Plus de Sergey Lonshakov

Публично доступные блокчейн сети для цифровых паспортов на основе IoTданных
Публично доступные блокчейн сети для цифровых паспортов на основе IoTданныхПублично доступные блокчейн сети для цифровых паспортов на основе IoTданных
Публично доступные блокчейн сети для цифровых паспортов на основе IoTданныхSergey Lonshakov
 
Devcon5 robotics under ethereum computer control
Devcon5  robotics under ethereum computer controlDevcon5  robotics under ethereum computer control
Devcon5 robotics under ethereum computer controlSergey Lonshakov
 
Robotics in Polkadot, Sub0 Berlin
Robotics in Polkadot, Sub0 BerlinRobotics in Polkadot, Sub0 Berlin
Robotics in Polkadot, Sub0 BerlinSergey Lonshakov
 
ERF 2019 blockchain in robotic applications
ERF 2019 blockchain in robotic applications ERF 2019 blockchain in robotic applications
ERF 2019 blockchain in robotic applications Sergey Lonshakov
 
Economy of-robots-brussels-oct-18
Economy of-robots-brussels-oct-18Economy of-robots-brussels-oct-18
Economy of-robots-brussels-oct-18Sergey Lonshakov
 
Brussels: cryptocurrency, smart contracts and robotics
Brussels: cryptocurrency, smart contracts and roboticsBrussels: cryptocurrency, smart contracts and robotics
Brussels: cryptocurrency, smart contracts and roboticsSergey Lonshakov
 
Who will be gatekeeper from human economy to economy of robots?
Who will be gatekeeper from human economy to economy of robots?Who will be gatekeeper from human economy to economy of robots?
Who will be gatekeeper from human economy to economy of robots?Sergey Lonshakov
 
How works the global robot economics
How works the global robot economicsHow works the global robot economics
How works the global robot economicsSergey Lonshakov
 
Robot economics protocol by Airalab short presentation
Robot economics protocol by Airalab short presentationRobot economics protocol by Airalab short presentation
Robot economics protocol by Airalab short presentationSergey Lonshakov
 
Экономика роботов, расширенная презентация
Экономика роботов, расширенная презентацияЭкономика роботов, расширенная презентация
Экономика роботов, расширенная презентацияSergey Lonshakov
 
Экономика роботов, часть 1
Экономика роботов, часть 1Экономика роботов, часть 1
Экономика роботов, часть 1Sergey Lonshakov
 
Экономика роботов и индустрия 4.0
Экономика роботов и  индустрия 4.0Экономика роботов и  индустрия 4.0
Экономика роботов и индустрия 4.0Sergey Lonshakov
 
Взаимодействие человека и робота как двух автономных экономических агентов
Взаимодействие человека и робота как двух автономных экономических агентовВзаимодействие человека и робота как двух автономных экономических агентов
Взаимодействие человека и робота как двух автономных экономических агентовSergey Lonshakov
 
Введение в децентрализованный интернет вещей
Введение в децентрализованный интернет вещейВведение в децентрализованный интернет вещей
Введение в децентрализованный интернет вещейSergey Lonshakov
 
Autonomous technologies for global commercial and civil uav vendors
Autonomous technologies for global commercial and civil uav vendorsAutonomous technologies for global commercial and civil uav vendors
Autonomous technologies for global commercial and civil uav vendorsSergey Lonshakov
 

Plus de Sergey Lonshakov (16)

Публично доступные блокчейн сети для цифровых паспортов на основе IoTданных
Публично доступные блокчейн сети для цифровых паспортов на основе IoTданныхПублично доступные блокчейн сети для цифровых паспортов на основе IoTданных
Публично доступные блокчейн сети для цифровых паспортов на основе IoTданных
 
Devcon5 robotics under ethereum computer control
Devcon5  robotics under ethereum computer controlDevcon5  robotics under ethereum computer control
Devcon5 robotics under ethereum computer control
 
Robotics in Polkadot, Sub0 Berlin
Robotics in Polkadot, Sub0 BerlinRobotics in Polkadot, Sub0 Berlin
Robotics in Polkadot, Sub0 Berlin
 
ERF 2019 blockchain in robotic applications
ERF 2019 blockchain in robotic applications ERF 2019 blockchain in robotic applications
ERF 2019 blockchain in robotic applications
 
Economy of-robots-brussels-oct-18
Economy of-robots-brussels-oct-18Economy of-robots-brussels-oct-18
Economy of-robots-brussels-oct-18
 
Ethereum Devcon 3
 Ethereum Devcon 3  Ethereum Devcon 3
Ethereum Devcon 3
 
Brussels: cryptocurrency, smart contracts and robotics
Brussels: cryptocurrency, smart contracts and roboticsBrussels: cryptocurrency, smart contracts and robotics
Brussels: cryptocurrency, smart contracts and robotics
 
Who will be gatekeeper from human economy to economy of robots?
Who will be gatekeeper from human economy to economy of robots?Who will be gatekeeper from human economy to economy of robots?
Who will be gatekeeper from human economy to economy of robots?
 
How works the global robot economics
How works the global robot economicsHow works the global robot economics
How works the global robot economics
 
Robot economics protocol by Airalab short presentation
Robot economics protocol by Airalab short presentationRobot economics protocol by Airalab short presentation
Robot economics protocol by Airalab short presentation
 
Экономика роботов, расширенная презентация
Экономика роботов, расширенная презентацияЭкономика роботов, расширенная презентация
Экономика роботов, расширенная презентация
 
Экономика роботов, часть 1
Экономика роботов, часть 1Экономика роботов, часть 1
Экономика роботов, часть 1
 
Экономика роботов и индустрия 4.0
Экономика роботов и  индустрия 4.0Экономика роботов и  индустрия 4.0
Экономика роботов и индустрия 4.0
 
Взаимодействие человека и робота как двух автономных экономических агентов
Взаимодействие человека и робота как двух автономных экономических агентовВзаимодействие человека и робота как двух автономных экономических агентов
Взаимодействие человека и робота как двух автономных экономических агентов
 
Введение в децентрализованный интернет вещей
Введение в децентрализованный интернет вещейВведение в децентрализованный интернет вещей
Введение в децентрализованный интернет вещей
 
Autonomous technologies for global commercial and civil uav vendors
Autonomous technologies for global commercial and civil uav vendorsAutonomous technologies for global commercial and civil uav vendors
Autonomous technologies for global commercial and civil uav vendors
 

Знакомство с Ethereum virtual machine

  • 1.
  • 2. Знакомство с Ethereum Virtual Machine Сергей Лоншаков Blockchain разработчик, Airalab
  • 3. © 2016 Microsoft Corporation. All rights reserved. Занимаюсь исследованиями/созданием: - Bitcoin/Altcoin/криптовалютных проектов с 2011. - Smart contract/Ethereum проектов с 2014. - DAO (децентрализованных автономных организаций) с 2015. - Проектов в области децентрализованного интернета вещей с использованием технологии Blockchain с осени 2015 года.
  • 4. Цели #msdevcon Децентрализованный компьютер Ethereum Анатомия умного контракта Инструменты и примеры DAO Изучим внутреннее содержание умного контракта с точки зрения EVM Узнаем об основных клиентах сети Ethereum и примерах популярных сценариев применения умных контрактов Разберемся в абстрактном представлении Ethereum Virtual Machine
  • 6. Определение Ethereum Virtual Machine Абстрактно: часть протокола, которая фактически обрабатывает внутреннее состояние хранилища и выполняет вычисления называется Ethereum Virtual Machine (сокр. EVM) В СМИ: EVM можно рассматривать как децентрализованный компьютер, содержащий миллионы объектов, называемые "аккаунты", которые имеют возможность поддерживать / изменять внутреннюю базу данных, выполнять код и общаться друг с другом. Среди разработчиков: Разработчики могут создавать особый вид приложений - DApp, работающие на децентрализованном компьютере (EVM) с помощью дружественных языков программирования смоделированных на основе существующих языков, таких как JavaScript и Python ..
  • 7.
  • 8. Децентрализованный компьютер, О_о • Код исполняется в 5 - 100 раз медленнее, чем скомпилированный для локального запуска. • Стоимость использования вычислений, памяти и хранилища примерно на уровне 1950-х годов. • Информация может быть изменена в первые 60с после получения информации от подключенных узлов. EVM - это не очень хороший компьютер, он медленный и очень очень дорогой. Dr. Gavin Wood, devcon1, 2015 год
  • 9. Децентрализованный компьютер, Yep • Это действительно единый мировой компьютер для всей планеты и навсегда. • Не может быть остановлен и не зависит от государств и корпораций в работе. • EVM - вездесущий, доступный повсюду, где есть интернет. Можно найти на Youtube по запросу: DEVCON1: Ethereum for Dummies - Dr. Gavin Wood
  • 10.
  • 11. Ethereum Virtual Machine и Тьюринг полнота • Формально EVM может выполнить любое вычисление, которое возможно выполнить, включая бесконечные циклы. • Поддержка Тьюринг полных языков программирования Solidity (from Javascript), Serpent (from Python), LLL (from Lisp)
  • 12. Есть два типа аккаунтов в Ethereum: Аккаунт пользователя (Externally owned account сокр. EOAs): учетная запись контролируемая закрытым ключом, и если у вас есть закрытый ключ, связанный с EOA у вас есть возможность отправлять эфиры и сообщения от EOA. Контракт: учетная запись, которая имеет свой собственный код, и управляемая с помощью кода. Ethereum Virtual Machine и умные контракты
  • 13. Анатомия умного контракта: bytecode • Контракты живут в Ethereum Blockchain в бинарном формате (EVM bytecode). • Контракты, как правило, создаются на языке высокого уровня (Solidity), компилируются в машинно-независимый код низкого уровня (bytecode) из исходного кода. • Bytecode загружается в Ethereum Blockchain с помощью отправки транзакции специального вида “Создание контракта” в сеть обычным клиентом сети.
  • 14. Анатомия умного контракта: abi • Abi - Application Binary Interface – Бинарный интерфейс приложения. • Abi контракта не хранится в Blockchain. • Abi контракта генерируется при компиляции контракта и может быть передано в готовой форме пользователю или “зашито” в коде DApp.
  • 15. Анатомия умного контракта: gas • Gas - это метрика для мирового компьютера Ethereum (EVM). • Чем больше вычислений и использования хранилища, тем больше требуется газа. • Gas не равно Fee. Fee = Amount of gas * gasPrice
  • 16. Анатомия умного контракта: gas • Каждая операция в EVM требует определенное количество газа. • В любой момент времени известен gasLimit в сети. • Если транзакция не помещается в gasLimit (Out of Gas), она не будет выполнена, но fee будет снято с отправителя. • Майнер, нашедший блок может изменить gasLimit +/- 0.0976 % для следующего блока.
  • 17. contract = eth.compile.solidity(source).test { code: '605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063 c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056', info: { language: 'Solidity', languageVersion: '0', compilerVersion: '0.9.13', abiDefinition: [{ constant: false, inputs: [{ name: 'a', type: 'uint256' } ], name: 'multiply', outputs: [{ name: 'd', type: 'uint256' } ], type: 'function' } ], userDoc: { methods: { } }, developerDoc: { methods: { } }, source: 'contract test { function multiply(uint a) returns(uint d) { return a * 7; } }' } }
  • 19. Geth • Geth это интерфейс командной строки для запуска полного узла Ethereum Blockchain. • Реализован на языке Go. • Является основным результатом работы Frontier Release. • Выпущено 106 релизов начиная с 8 февраля 2014 года. /ethereum/go-ethereum
  • 20. Geth: interfaces & API • Javascript Console. • web3 JavaScript Dapp API • JSON RPC API • JSON-RPC server. • Command line options. /ethereum/go-ethereum
  • 21. contract = eth.compile.solidity(source).test { code: '605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063 c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056', info: { language: 'Solidity', languageVersion: '0', compilerVersion: '0.9.13', abiDefinition: [{ constant: false, inputs: [{ name: 'a', type: 'uint256' } ], name: 'multiply', outputs: [{ name: 'd', type: 'uint256' } ], type: 'function' } ], userDoc: { methods: { } }, developerDoc: { methods: { } }, source: 'contract test { function multiply(uint a) returns(uint d) { return a * 7; } }' } }
  • 22. (1) primaryAddress = eth.accounts[0]; (2) MyContract = eth.contract(abi); (3) contact = MyContract.new(arg1, arg2, ...,{from: primaryAddress, data: evmCode}); (4) MyContract.new([arg1, arg2, ...,]{from: primaryAccount, data: evmCode}, function(err, contract) { if (!err && contract.address) console.log(contract.address); }); Отправляем контракт в сеть
  • 23. Parity • Parity это интерфейс командной строки для запуска полного узла Ethereum Blockchain. • Реализован на языке Rust. • Является разработкой команды Ethcore, Гевина Вуда. • Выпущено 35 релизов начиная с 8 февраля 2016 года. /ethcore/parity
  • 24. Parity: interfaces & API • Parity имеет режим совместимости с geth. Parity --geth • JSON RPC API • parity JavaScript Dapp API (+web3) • web3 JavaScript Dapp API /ethereum/go-ethereum
  • 25. Ethereumj • ethereumj - Java implementation of the Ethereum protocol. • The Java library that can be embedded in any Java project • Является разработкой команды Hack.ether.camp. • Выпущено 25 релизов начиная с 15 сентября 2014 года. /ethereum/ethereumj
  • 26. Ethereum Wallet & Mist • Использует geth как протокол общения с сетью Ethereum. • The Mist - это браузер для запуска DApp, работающих с web3 JavaScript Dapp API • Ранние релизы. • Платформа написания: Meteor + Electron. /ethereum/mist
  • 27. MetaMask • Плагин для браузера Google Chrome, позволяющий запускать DApp без полной ноды на клиенте. • Общается с полной нодой через JSON RPC API. • Ранние релизы. • Написан на Javascript /MetaMask/metamask-plugin
  • 29. Умный кошелёк, multisig 1. Полная свобода в проектировании кошелька . 2. Автономность2 = автономная ценность на счету автономного кода. 3. Банк?
  • 30. Токены contract MyToken { /* This creates an array with all balances */ mapping (address => uint256) public balanceOf; } Описание стандарта ERC20: https://github.com/ethereum/EIPs/issues/20
  • 31. Управление взаимоотношениями 1. Конгресс / Совет директоров /Демократия 2. Escrow / Аккредитив 3. p2p + Страхование / Кредитование / Финансирование
  • 32. Управление взаимоотношениями Alice и Bob заключают пари на 100 GavCoin с триггером на основе данных о температуре в Москве. Если температура в Москве не будет выше 35 градусов в течении года, то Bob получит 100 GavCoin, иначе их получит Alice.
  • 33. Первая среда для прямых экономических взаимоотношений человек – робот, робот - робот
  • 34. Q&A #msdevcon Знакомство с Ethereum Virtual Machine Сергей Лоншаков, sergeylonshakov@gmail.com