if button_pressed == “Coca Cola” and money_inserted >= 1.75:
release(“Coca Cola”)
return_change(money_inserted – 1.75)
else if button_pressed == “Aquafina Water” and money_inserted >= 1.25:
release(“Aquafina Water”)
return_change(money_inserted – 1.25)
else if …
Этот контракт имеет четыре привязки к внешнему миру: входные переменные button_pressed (нажать кнопку) и money_inserted (вставить деньги) и выходные команды release (выдать) и return_change (вернуть сдачу). В разных автоматах эти функции могут быть реализованы по-разному, но на первой мы останавливаться не будем, поскольку нажатие кнопки – задача несложная. Попытка выполнить этот контракт на Android-смартфоне образца 2007 года ни к чему бы не привела: он не сможет узнать, сколько денег внес покупатель, и уж точно не выдаст сдачу и бутылку колы. А вот в вендинговом автомате этот контракт приобретает «силу» за счет запасов колы и физической защиты, которая не позволяет взять напиток просто так, без соблюдения условий контракта.
Можно представить и другое, более футуристическое воплощение умной собственности – например, в сфере аренды автомобилей. Вообразите мир, где у каждого в смартфоне есть собственный приватный ключ, и, если отправить $100 на конкретный адрес, автомобиль в течение суток будет автоматически подчиняться командам, подписанным этим ключом. Тот же принцип можно применить и к домам. Если для вас это звучит нереально, напомню, что уже сегодня некоторые офисные здания функционируют как умная собственность: для входа в них нужна карта доступа, и то, какую именно дверь сможет открыть ключ, определяет код, привязанный к базе данных. Более того, если компания использует HR-систему, которая автоматически обрабатывает трудовые контракты и активирует карты доступа новых сотрудников, это тоже своего рода смарт-контракт.
УМНЫЕ ДЕНЬГИ И ФАКТИЧЕСКОЕ ОБЩЕСТВО
И все же возможности физической собственности весьма ограничены. Уровень ее защиты невысок, поэтому интересных опций на сумму, превышающую несколько десятков тысяч долларов, практически не существует. И, в конце концов, самые интересные контракты связаны с перемещением денег. Но как реализовать их на практике? Собственно, прямо сейчас – никак. Теоретически мы можем предоставить контрактам учетные данные для доступа к нашим банковским счетам, чтобы затем контракт отправлял оттуда средства при выполнении определенных условий, но такой контракт нельзя будет назвать «самоисполняемым». Одна из сторон контракта в любой момент сможет отключить его до наступления срока оплаты, или опустошить свой банковский счет, или попросту изменить свой пароль. В сущности, неважно, как контракт интегрирован в систему, ведь любая сторона всегда сможет его отключить.