Что такое смарт-контракты (умные контракты) на базе блокчейна?

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

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

В 1994 году Ник Сабо, специалист в области права и криптограф, понял, что с помощью децентрализованного реестра можно заключать «умные контракты», которые также называют самоисполняемыми, цифровыми или смарт-контрактами.

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

Что такое умные контракты?

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

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

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

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

На недавнем блокчейн-саммите в Вашингтоне Виталик Бутерин, 23-летний программист и создатель проекта Ethereum, объяснил, что в умном контракте актив или валюта переводятся в программу, которая следит за соблюдением заложенного набора условий.

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

Криптовалюты и блокчейн

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

Цифровое золото. Что такое криптовалюта — на примере биткоина

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

Маша перевела Пете 1 биткоин. Информация об этой цифровой транзакции будет помещена в один блок с другими транзакциями, которые совершались примерно в это же время. Через месяц Петя решает перевести этот биткоин своему другу Васе. Информация о новой транзакции будет помещена в новый блок, но этот блок будет ссылаться на прошлый блок, где уже сохранена информация о денежном переводе «Маша — Петя».

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

Короче, блокчейн — это что-то вроде книжки-родословной, только вместо членов семьи или целой династии там финансовые транзакции (вплоть до самых первых). Одинаковые копии такой «книжки» хранятся у разных пользователей на компьютерах, поэтому ни один участник сети не может самовольно подделать «родословную» в своих интересах. Или, как говорят, блокчейн децентрализован.

Рассмотрим конкретный пример смарт контракта

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

Образец умного контракта, написанного на платформе Ethereum. Источник: www.ethereum.org/token

Здесь говорится, что создатель контракта должен получить 10 тыс. биткоинов. Этот контракт позволяет любому, у кого достаточно средств на счете, перевести биткоины другим людям.

Создать стандартный договор токена «BLC»

вcontracts/Создать каталогBloggerCoin.solФайл. Вы также можете использовать следующую команду для создания файла:

BloggerCoin.solКод выглядит следующим образом:

pragma solidity ^0.4.4; import «zeppelin-solidity/contracts/token/StandardToken.sol»; contract BloggerCoin is StandardToken { string public name = «BloggerCoin»; string public symbol = «BLC»; uint8 public decimals = 4; uint256 public INITIAL_SUPPLY = 666666; function BloggerCoin() { totalSupply = INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; } }

Объяснение кода

pragma solidity ^0.4.4;
Первая строка представляетsolidityВерсия, байт-код, скомпилированный в разных версиях, отличается,^От имени восходящей совместимости, но версия не может превышать0.5.0。

import «zeppelin-solidity/contracts/token/StandardToken.sol»;

Этот код переданimportЧтобы импортировать то, что нам нужно использоватьStandardTokenКонтракты.

contract BloggerCoin is StandardToken { … }

установитьBloggerCoinПри заключении договора пустьBloggerCoinКонтракт напрямую унаследован отStandardToken。isОба наследуются. поэтомуBloggerCoinунаследованныйStandardTokenВсе данные о состоянии и методы.

Когда мы унаследовалиStandardTokenКонтракт также поддерживает следующееERC20Функция указана в стандарте.

функцияметод
totalSupply()Общее количество выпущенных токенов
balanceOf(A)Проверьте количество токенов в аккаунте А
transfer(A,x)Отправить x токенов на счет A
transferFrom(A,x)Снять х токенов со счета А
approve(A,x)Согласиться на счет для снятия токенов с моего счета
allowance(A,B)Проверьте, сколько токенов можно снять со счета A на счете B

Как и прежде, он будет использован для последующей проверкиbalanceOfиtransferДве функции. потому чтоStandardTokenКонтракт уже реализовал эти функции для нас, поэтому нам не нужно писать его с нуля.

string public name = «BloggerCoin»; string public symbol = «BLC»; uint8 public decimals = 4; uint256 public INITIAL_SUPPLY = 666666;

Цель установки параметров здесь — указать некоторые характеристики этого токена. Принимая юань в качестве примера, название юаняRMBКод доллара¥Возьми100 юанейЭто копейки, чтобы получить малейшее изменение.0.0001Юань. потому что1 юаньНаименьшее можно разделить на десятичную точкуПоследние 4 цифры (0,0001)Итак, наименьшая торговая единица (decimals) Для4。

Здесь имя этого зашифрованного токена (имя)BloggerCoin (монета племени)Символ токена (символ)BLCМинимальная единица деления4(Минимум можно найти 0,0001 племенных монет).

СледующееКитайский юань,Bitcoin,Ethernet валют,Племенные деньгиДля справки:

namesymboldecimals
RMB¥4
BitcoinBTC8
EthereumETH18
BloggerCoinBLC4

Наконец, также определяется начальное количество токенов INITIAL_SUPPLY. Счастливый номер выбран здесь666666, Кроме того, когда мы устанавливаем глобальную переменную вpublic(Public), новая, которая читает публичные переменные, будет добавлена ​​автоматически при компиляцииИнтерфейс ABIМыtruffle consoleЭти переменные также можно прочитать в.

function BloggerCoin() { totalSupply = INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; }

С тем же именем, что и контрактBloggerCoinМетодBloggerCoinконтрактыКонструктор (конструктор), Указано в конструктореtotalSupplyНомер и все начальные токеныINITIAL_SUPPLYВсе назначеноmsg.senderУчетная запись, которая является учетной записью, используемой для развертывания этого контракта.totalSupplyОпределено вERC20Basic.solвbalancesОпределено вBasicToken.solДюйм


pragma solidity ^0.4.11; import ‘./ERC20Basic.sol’; import ‘../math/SafeMath.sol’; /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) returns (bool) { balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) constant returns (uint256 balance) { return balances[_owner]; } }

Далее будете смотреть на BasicToken.solСодержание договора можно найтиBasicToken.solИмпортировано в контрактSafeMath.solКонтракты.SafeMath` добавляет необходимую проверку к различным числовым операциям, чтобы сделать численный расчет в контракте более безопасным.

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

Практическое применение умных контрактов

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

Выборы

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

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

Менеджмент

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

Логистика и снабжение

Разработчик протокола Bitcoin Core Джефф Гарзик говорит:

«UPS может исполнять контракты, в которых будет сказано: “Если мы получим оплату за доставку товара, то его производитель, который в цепочке поставок находится на много звеньев выше, немедленно начнет создавать новый такой товар, поскольку этот уже доставлен по назначению”».

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

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

Автомобили

Задумайтесь о будущем, где все будет автоматизировано. Google уже строит его, создавая умные телефоны, умные очки и даже умные автомобили. И здесь на помощь придут умные контракты.

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

Другие сферы

Другие индустрии, такие как эквайринг, кредитование и бухгалтерский учет, тоже будут использовать умные контракты — например, для оценки рисков и аудита в режиме реального времени. Юристы смогут перейти от составления традиционных контрактов к созданию типовых образцов умных контрактов. А на сайте Blockchain Technologies умные контракты превратились в электронно-бумажный гибрид: они подтверждаются блокчейном и получают материальное воплощение в виде бумажной копии.

Патрик Хаббард, главный специалист и старший управляющий маркетингом продуктов в SolarWinds:

«Янгонская фондовая биржа в Мьянме производит платежи с помощью распределенного реестра. Особый интерес вызывают те функции блокчейна, которые выходят за рамки традиционного использования технологии. Так на Янгонской бирже удалось решить проблему производимых в разное время расчетов в торговой системе, которая синхронизирует торги всего лишь дважды в день. Благодаря тому, что умные контракты сами обеспечивают исполнение сделок, блокчейны с их надежной системой проведения транзакций могут использоваться в ситуациях, где требуется выполнение сложных операций, зависящих от разных изменяющихся факторов. Вот почему Amazon, Microsoft Azure и IBM Bluemix уделяют такое внимание разработке облачной технологии “блокчейн как услуга”».

Перспективы ETH

Разработчики Ethereum планируют вскоре провести масштабное обновление системы. Апгрейд носит гордое название Ethereum 2.0, а суть заключается в следующем:

  1. Постепенный отказ от майнинга и переход с proof-of-work на proof-of-stake. Майнинг — это весьма энергозатратный процесс. Все эти вычислительные мощности, компьютеры и видеокарты сегодня задействованы в сети эфира для подтверждения денежных переводов. А это вредит экологии (по крайней мере, по мнению противников майнинга). Разработчики ETH считают, что будущее за новым алгоритмом proof-of-stake (доказательство долей владения).
  2. Масштабируемость и увеличение пропускной способности. Сколько транзакций в сети эфира совершается за 1 секунду? 15 транзакций. А сколько, к примеру, в платежной системе VISA? Около 1 500. При всей своей технической мощи и безопасности эфир достаточно «медлителен» по сравнению с более традиционными платежными средствами. Этим «длительным» ожиданием мы платим за безопасность и гарантию перевода. Но, поскольку Ethereum — это огромная экосистема с кучей децентрализованных приложений, увеличение пропускной способности должно вывести криптовалюту на новый уровень.
  3. Внедрение шардов. Что может быть лучше блокчейна? Правильно! Много блокчейнов! Шарды — это мини-блокчейны, которые будут работать параллельно и связываться с основной цепочкой данных — Beacon Chain. За счет шардов нагрузка на сеть распределится равномернее.

Сооснователь Ethereum покидает криптомир из-за страха за свою жизнь

Обещание перемен взбодрило спрос на ETH. В мае был достигнут исторический максимум стоимости в 4 000 долларов.

На сегодня курс этого коина составляет около 2 130 долларов за штуку, что видно из линейного графика:


Источник Tradingview

А что вы думаете по поводу Ethereum? И какие криптовалюты вам нравятся больше всего? Напишите в комментариях!

Не хотим терять вас, давайте дружить! Подпишитесь на наш Telegram-канал, тут финансовые лайфхаки каждый день!

Плюсы смарт контрактов

Если рассматривать смарт-контракты при использовании в разных сферах жизнедеятельности, то можно выделить ряд важных преимуществ. Среди плюсов:

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

Эфириум-контракты: зачем нужен оракул и как он работает?

Сегодня основные задачи, которые ставят перед собой разработчики смарт-контрактов – это совершенствование путей получения данных, которые говорили бы об исполнении условий того или иного контракта.

Оракулы созданы для того, чтобы перерабатывать полученную из источников информацию и поставлять ее в смарт-контракт Эфириума в пригодном для считывания виде. Это своеобразный посредник, который адаптирует данные.

Как вы понимаете, в сфере получения объективной информации есть некоторые проблемы: сейчас в сети очень много источников и многие из них противоречат друг другу. Поэтому задача программистов сегодня – разработка оракулов, которые смогут добывать достоверную и проверенную информацию. А этого добиться не так уж и просто.

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

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

Сегодня, кстати, многие программисты получают неплохой заработок на написании смарт-контрактов для Ethereum, ведь основная проблема при создании кода – найти путь получений важных фактов. А это трудозатратная работа, которая стоит дорого.

Минусы умных контрактов

Умные контракты далеки от совершенства. Что если в код попадут ошибки? Как должно регулировать эти контракты государство? И как оно будет взимать налоги с таких транзакций?

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

Умные контракты нельзя назвать идеальным инструментом для построения взаимоотношений между людьми. У них тоже есть несколько недостатков. Среди минусов:

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

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

Блокчейны, где можно заключить умные контракты?

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

NXT: Это открытая блокчейн-платформа с ограниченным числом образцов умных контрактов. Вы можете использовать только то, что там есть; написать свой код нельзя.

Bitcoin: Отличный блокчейн для транзакций с биткоинами, но возможности для работы с документами там ограничены.

Side Chains: Другое название для блокчейнов, параллельных Bitcoin, которые предоставляют несколько большие возможности для работы с контрактами.

Компилировать, развертывать, проверять

вmigrations/Создать каталог3_deploy_bloggerchain.jsСодержание файла выглядит следующим образом:

Теперь выполните команды компиляции и переноса

Примечания:Убедитесь, чтоtestrpcРаботает

  • truffle compile

/Users/liyuechun/Desktop/SmartContractDemo/BloggerCoin liyuechun:BloggerCoin yuechunli$ truffle compile Compiling ./contracts/BloggerCoin.sol… Compiling ./contracts/Migrations.sol… Compiling ./contracts/SimpleStorage.sol… Compiling zeppelin-solidity/contracts/math/SafeMath.sol… Compiling zeppelin-solidity/contracts/token/BasicToken.sol… Compiling zeppelin-solidity/contracts/token/ERC20.sol… Compiling zeppelin-solidity/contracts/token/ERC20Basic.sol… Compiling zeppelin-solidity/contracts/token/StandardToken.sol… Writing artifacts to ./build/contracts liyuechun:BloggerCoin yuechunli$

  • truffle migrate

liyuechun:BloggerCoin yuechunli$ truffle migrate Using network ‘development’. Running migration: 1_initial_migration.js Deploying Migrations… … 0xac35fdd655a7b8916d5a43fb608227f1827aa666e4d4aa7b4d50347f8883de8a Migrations: 0x5c7102091425e16998b8bed1cd6634f499ab3684 Saving successful migration to network… … 0x1131a209a1ca27cadbec4ef8f84cecbe322e59d01b2b584f3e0ddada5a7a53d8 Saving artifacts… Running migration: 2_deploy_contracts.js Deploying BloggerCoin… … 0xc23199c5fe72206a5d74ad09797c9df17deb361c56ee1cb14b816ee0d874d5e2 BloggerCoin: 0xbacb9b3da2e3140df11516be2244c4ea230d6d39 Saving successful migration to network… … 0x32bf4f5299bb4d260cc86da76591d9564376a82c4b8122261043d74a70c57b9e Saving artifacts… Running migration: 3_deploy_bloggerchain.js Replacing BloggerCoin… … 0x87e8c7a24727a06da750a2c9f3b4ea1bc4b87c8c3e9c8a9219c3dada911e0991 BloggerCoin: 0x5262d2b6de1a1187abdd203cb726b387bcd6140f Saving successful migration to network… … 0x75166d7f6ee595437718df960d9a3bc76466bd890988a92b1aac1a396dc7f018 Saving artifacts… liyuechun:BloggerCoin yuechunli$

верификация

liyuechun:BloggerCoin yuechunli$ truffle console truffle(development)> let contract undefined truffle(development)> BloggerCoin.deployed().then(instance => contract = instance) …… truffle(development)> contract.balanceOf(web3.eth.coinbase) { [String: ‘66666’] s: 1, e: 5, c: [ 666666 ] } truffle(development)> contract.balanceOf(web3.eth.accounts[1]) { [String: ‘600000’] s: 1, e: 0, c: [ 0 ] } truffle(development)> contract.transfer(web3.eth.accounts[1], 600000) truffle(development)> contract.balanceOf(web3.eth.coinbase) { [String: ‘66666’] s: 1, e: 4, c: [ 66666 ] } truffle(development)> contract.balanceOf(web3.eth.accounts[1]) { [String: ‘600000’] s: 1, e: 5, c: [ 600000 ] } truffle(development)>
Для объяснения конкретных методов в процессе проверки, пожалуйста, смотрите эту статью:Как написать умный контракт? (II) Установите простой зашифрованный токен

Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]