Смарт-контракты
Смарт-контракт это часть кода который может выполняться автоматически и с определённой точностью. Код смарт-контракты обычно хранится и выполняется на блокчейне, что делает его надёжным и безопасным. Смарт-контракты также имеет возможность получать хранить и отправлять средства и даже выполнять вызовы других смарт-контрактов. Они следуют семантике if then (если когда) что делает их простыми в программировании. Цель смарт контрактов устранить человеческий фактор из процесса принятия решений. Человеческий фактор часто оказываются наиболее подверженным ошибкам и ненадежным элементом стандартных традиционных контрактов.
Торговый автомат очень часто используются в качестве хорошей налоги смарт-контрактов, поскольку он имеет некоторые общие черты. Типичный торговый автомат запрограммирован таким образом, что позволяет выполнить определённые действия. Он также работает по принципу полной определённости например, если Вы хотите купить банку колы которая стоит только 2$ а у Вас есть только 1$, сколько бы Вы не пытались, Вы не сможете получить напиток за 1$. С другой стороны если Вы ставите 3$ автомат выдаст вам банку колы и соответствующую сдачу. Даже сдача который выдается запрограммированным образом на основе того, какие монеты вам доступны и от каких монет автомат хочет избавиться в первую очередь.
Смарт-контракт может полагаться исключительно на информацию доступную на блокчейне. Например если Вы дадите мне 10 токенов A, я дам вам 10 токенов B, при при условии что оба токена доступны на одном блокчейне. Еще он может полагаться на внешние источники данных например на цену Ethereum или S&P 500. Последний пример усложняет работу смарт-контрактов, поскольку им приходится доверять данным из реального мира. Необходимое доверие можно свести к минимуму используя сервисы оракулов, но даже к сервисам оракулов должно быть доверие.
Смарт-контракт может быть написан на языке программирования Solidity, который был создан специально для этой цели. Все запущенные смарт контракты являются неизменяемыми, это означает что после запуска они не могут быть изменены, что создает определённые риски. Смарт-контракты, например в Ethereum также децентрализованны, что означает отсутствие единой машины контролирующий контракт. Фактически все узлы и сети хранят один и тот же смарт-контракт с абсолютно одинаковым состоянием.
Давайте сравним гипотетические смарт-контракт с его аналогом в традиционным мире. Допустим мы хотим написать следующий контракт: если Алиса пошлет Х количество токенов А, то Боб пошлет ей такое же количество токенов В, то токены поменяется местами. Алиса получит токены Боба, а Боб получит токены Алисы. В мире где нет смарт-контрактов без необходимости Алисе доверять Бобу, а Бобу доверять Алисе было бы создание договора условного хранения с третий стороной. Третья сторона собирает токены А от Алисы, ждет такое же количество токенов В от Боба и отправляет Алиса и Бобу их соответствующая поменяны местами токены.
Таким образом можно через смарт-контракты автоматизировать огромное количество рутины и бюрократии. А включать в смарт-контракт можно любые условия и последствия при достижении этих условий.