Платформа Ethereum: погружение в разработку смарт контрактов

smart contract Платформа Ethereum: погружение в разработку смарт контрактов
3/5 - (15 голоса)

 

Технология Блокчейн

 
Блокчейн — инновационная технология, представляющая собой распределенную базу данных, в которой содержатся записи транзакций.

По сути, блокчейн — это инструмент децентрализованного хранилища данных, обеспечивающий высокий уровень безопасности и манипуляции данными, включая их обработку и распространение.

Как следует из названия, блокчейн представляет собой цепочку блоков (block — блок, chain — цепочка), выстроенную по определенным правилам и реплицируемую по всей сети, где каждый блок состоит из заголовка и списка транзакций.

В свою очередь, заголовок блока содержит свой хеш, хеши транзакций, а также хеш предыдущего блока, то есть каждый блок ссылается на предыдущий.
 

Благодаря этому выполняются два важных условия:

  • нельзя изменить блок без нарушения целостности всей цепочки;
  • в цепочку нельзя подставить промежуточный блок.

 
Также одним из главных преимуществ блокчейна является прозрачность проводимых транзакций: все пользователи имеют доступ к информации и могут наблюдать за осуществлением транзакций.

Так как технология блокчейн основывается на обеспечении высокого уровня безопасности данных и защищенности транзакций, ее внедрение является отличным способом предотвращения различных мошеннических действий.

В связи с этим особый потенциал эта технология имеет в банковской сфере, финансах, недвижимости, медицине, страховании и юриспруденции, то есть там, где сохранность данных имеет наибольшее значение.

Что касается сфер применения, то они включают в себя проведение финансовых транзакций, проверку личности и подтверждение авторских прав, безопасное хранение данных и их обмен.

И данные примеры — далеко не конец списка. Так, одной из ключевых технологий мира блокчейн, которая открывает большие возможности, является платформа Ethereum (Эфириум).

Ethereum — это распределенная платформа с открытым исходным кодом на базе блокчейн, представленная в 2013 канадско-российским программистом Виталиком Бутериным и запущенная в 2015.

Ethereum предоставляет все необходимые инструменты для разработки децентрализованных приложений (decentralized applications — DApps), работающих на основе смарт контрактов и представляющих собой логику смарт контрактов  плюс пользовательский интерфейс.

Таким образом, можно сказать, что Ethereum служит дополнением к технологии блокчейн. Более того, на сегодняшний день Ethereum является самым популярной и лучшей блокчейн-платформой для создания смарт контрактов.
 

Смарт контракты

 
Смарт контракт — это программа, содержащая условия договора, вписанные в строки кода и определяемые заключающими его сторонами. Программа автоматически отслеживает выполнение условий соглашения и полностью убирает необходимость в посредниках.

Таким образом, можно сказать, что смарт контракт — это обычный контракт, заключение (и контроль выполнения) которого происходит техническим, а не юридическим, способом.

Как и в сети блокчейн, доступ к данным есть у всех пользователей (участников сети), а их изменение осуществляется через транзакции, представляющие собой вызовы методов контрактов.

В блокчейне смарт контракты выполняют функцию манипуляции данными. Каждый смарт контракт имеет свою небольшую базу данных, а также предоставляет способы изменения данных.

Смарт контракты и их базы данных реплицируются по всем нодам (серверам). Всякий раз как пользователь вызывает метод из контракта (таким путем изменяя данные), эта команда реплицируется и повторяется всей сетью. Благодаря осуществлению данной операции создается распределенный консенсус для выполнения обещаний.

Также смарт контракты на платформе Ethereum определяют, какие данные хранить в реестре и какие функции нужны для осуществления операций над этими данными.

Как говорилось выше, изменения данных происходят посредством транзакций, которые требуют наличия трех главных компонентов — отправителя транзакции, ее получателя, а также количества отправляемой валюты.

Если говорить более детально, каждая транзакция также может включать такие элементы как цена за единицу газа (где газ — это плата, которую получает участник сети (майнер) за вызов кода смарт контракта) и лимит газа на транзакцию.

Для выполнения транзакций в первую очередь необходима внутренняя валюта платформы Ethereum, а именно эфир (ETH). Также нужно некоторое время на то, чтобы блок, созданный майнером и содержащий вашу транзакцию и информацию о ней, был включен в общую цепочку.

При отправке транзакции в первую очередь вам нужно будет определить количество эфира, которое вы планируете платить за каждую единицу газа, а также установить максимальную цену, которую вы готовы заплатить.

Следует учесть, что, чем выше цена, которую вы устанавливаете, тем выше оплата работы майнера. И, соответственно, тем приоритетнее для него ваша транзакция и тем быстрее будет ее осуществление.
 

Разработка смарт контрактов

 
Как говорилось ранее, смарт контракты создаются на платформе Ethereum. Тем не менее, даже в Биткоин блокчейне (а также других блокчейнах) возможно их написание. Однако возможности тут значительно ограничены, язык Script не Тьюринг-полный и отсутствуют многие другие преимущества.

В свою очередь, на платформе Ethereum есть все необходимые “тулы” для разработки смарт контрактов разных уровней сложности. Для начала вам понадобится какое-то количество эфира и “соединение” с блокчейном.

Чтобы стать участником сети, скачайте какой-нибудь электронный кошелек, например, Mist (далее рассматриваем разработку на его примере).

На сегодняшний день Mist — самый распространенный и известный Ethereum кошелек. Плюс в том, что он довольно удобный и кроссплатформенный.

Что касается функционала, Mist дает возможность пользователям выпускать свои собственные токены, управлять своими аккаунтами, а также использовать децентрализованные приложения для соединения с блокчейном.

Так как на данный момент еще не изобрели кошелек, который позволил бы работать со смарт контрактами (light wallet), после установки Mist у вас будет выбор между синхронизацией с Main network и Test network. Также можно запустить кошелек Mist на приватном блокчейне (при его наличии).

Мы советуем начинать с Testnet: в отличие от Main, она не требует платы за использование. Другое немаловажный плюс работы с Testnet заключаются в том, что тут  майнинг занимает меньше времени по сравнению с реальной сетью.

Далее вам нужно будет выбрать между двумя вариантами — Testnet Ropsten и Testnet Rinkeby, где у каждого из них есть свои преимущества и недостатки. Прежде всего, перед началом работы все данные сети будут скачаны на ваш компьютер. В Ropsten они займут приблизительно 7 GB, а в Rinkeby — всего 800 MB. Для сравнения, для  реальной сети они будут весить целых 40 GB.

Чтобы получить какое-либо количество эфира в Ropsten, после синхронизации с сетью зайдите в меню и выберете опцию Develop->Start mining.

Если вы решили начать с Rinkeby, то для получения криптовалюты просто зайдите на www.rinkeby.io, Crypto Faucet и следуйте указанным инструкциям.

Как только у вас будет эфир, вы можете приступать к разработке смарт контрактов. Для этой цели оптимальным (и самым популярным) языком является Solidity, представляющий собой объектно-ориентированный язык программирования, довольно похожий на JavaScript (только со статической типизацией) и достаточно простой для изучения. Что немаловажно, Solidity имеет качественную документацию и активную поддержку комьюнити.

Ниже приведен пример простого смарт контракта, который позволяет пользователям отправлять друг другу валюту без регистрации.
 

Пример простого смарт контракта

 
pragma solidity ^0.4.0;

contract Coin {

// The keyword «public» makes those variables

// readable from outside.

address public minter;

mapping (address => uint) public balances;

// Events allow light clients to react on

// changes efficiently.

event Sent(address from, address to, uint amount);

// This is the constructor whose code is

// run only when the contract is created.

function Coin() {

minter = msg.sender;

}

function mint(address receiver, uint amount) {

if (msg.sender != minter) return;

balances[receiver] += amount;
}

function send(address receiver, uint amount) {

if (balances[msg.sender] < amount) return;

balances[msg.sender] -= amount;

balances[receiver] += amount;

Sent(msg.sender, receiver, amount);

}

{
 

Существует множество примеров использования смарт контрактов. Так как высокий уровень защищенности обеспечивается в них не доверием к третьей стороне (например, юридическому лицу) или к репутации другой стороны договора, а математическими законами, на которых основана вся технология блокчейн, смарт контракты имеют значительные перспективы во многих индустриях.

Одна из потенциальных сфер применения смарт контрактов — выборная система (голоса в зашифрованном виде помещаются в распределенном реестре и далее отслеживаются все новые голоса и ведется их подсчет), где благодаря их использованию можно будет исключить всякого рода мошенничество и вмешательство в процесс выборов третьими лицами.

Говоря о разработке смарт контрактов, следует отметить, что они имеют некоторые ограничения. Узнайте, с какими ограничениями вы можете столкнуться и как можно их обойти.
 

В нашей компании, мы активно развиваем направление блокчейн разработки. На данный момент на нашем счету много успешно завершенных проектов.
 
В связи с этим мы расширяем нашу команду и ищем специалиста на вакансию блокчейн/node.js разработчика. Мы будем рады предоставить вам все условия для карьерного роста и конкурентную оплату труда. Ждем ваше резюме.) (Добавлено 18 июня, 2018)

3/5 - (15 голоса)
×