Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
boogerwooger
7 лет назад

О смарт-контрактах попроще

Смарт-контракты. Что это такое за модное словечко в блокчейне?

Когда я был на митапе для юристов, очень многие в разных видах задавали вопрос "а вот ваш смарт-контракт, какая у него юридическая сила?". Хреновый это термин - смарт-контракт, вот что. Путает людей, ибо сразу сдвигает рассмотрение в какую-то правовую область, которой там и не пахнет. Так что давайте разберемся кратенько.

Если вы читали whitepaper по Bitcoin-у - то помните:

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

Ну так вот - некоторый набор транзакций в блоке можно рассматривать как состояние оперативной памяти некоторой программы. Перед запуском некоторой программы(смарт-контракта) память имеет одно состояние, после того как она отработала - другое. Если представить, что между адресами перемещаюся не монеты, а значения переменных, то можно представить себе и код, который исполняется на всех клиентах и целостно переводит одно состояние данных (к примеру X монет, распределенных между N адресами) в другое (X монет распределеннных другим способом между M адресами). Или, другими словами, представьте себе программу, которая работает только с адресами и деньгами на этих адресах, а результатом ее работы являются также адреса и деньги на них - тогда пачка транзакций отлично подходит для хранения "памяти" такой программы.

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

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

  • принимая транзакцию переводит деньги от мота на свой счет
  • проверяет не наступило ли "через год"
  • если наступило, переводит деньги обратно на счет мота

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

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

Большая проблема смарт-контрактов - контакты с внешним миром. Например контракт, который принимает от Васи и Пети ставки на исход матча, а потом на основании результата переводит деньги либо Васе, либо Пете. Ответ на вопрос "выиграл ли Спартак у ЦСКА 25 мая 2017 года" и является проблемой - ведь данные можно подменить, поэтому в блокчейне появился термин "оракул" - это механизм ответа на вопросы о фактах реального мира. Оракулы также могут быть частью того же блокчейна, и ответы на нужные вопросы создавать также с помощью консенсуса, а могут быть и внешними, тогда вопрос доверия к ним стоит особенно остро. В общем всё очень, и очень непросто.

Тонкостей в смарт-контрактах огромное количество, начиная от безопасности кода самих контрактов, оракулов, и заканчивая общими экономическими проблемами типа стоимости газа (который может быть привязан к основной крипте сети, а может и нет). Но при всех этих сложностях именно смарт-контракты являются смертью современного финтеха - банкинга, страхования, букмекерства. Легко программировать алгоритмы типа "пусть Вася платит каждый месяц по 1 монете (иначе контракт закрывается, возвращая все деньги кроме комиссий), а если разобъет машину(оракул) - получает страховую премию (которую страховая компания кладет прямо в контракт, где она и блокируется)". Остальные кейзы, типа депозитов, игры на предсказание, страхование тоже делаются довольно легко. И напомню, что никакой централизации тут нет, все делается силами сети, в которой никто никому не доверяет.

Как то так выглядит Etherium. Если хотите подробностей - welcome, вот одна из лучших whitepapers по блокчейну:
https://github.com/ethereum/wiki/wiki/White-Paper

а вот yellow paper - если интересны алгоритмы и техническая архитектура:
https://ethereum.github.io/yellowpaper/paper.pdf

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

0
0.000 GOLOS
На Golos с April 2017
Комментарии (0)
Сортировать по:
Сначала старые