Как предотвратить изменение и развертывание смарт-контракта в сети блокчейн?

Этот вопрос больше касается частных блокчейн-фреймворков, таких как Corda, Hyperledger и других. На всех этих платформах можно написать несколько программ с именем chaincode, смарт-контрактами и т. Д., Которые позволят нам реализовать бизнес-логику. Все это развертывается на каждом одноранговом узле сети блокчейн, но как избежать и обнаружить, что на некоторых узлах развернуты разные версии кода?

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

как мы можем управлять этим сценарием в частном блокчейне?


person Ricardo Ruano    schedule 03.01.2018    source источник


Ответы (2)


Чтобы расширить ответ Мэтью, каждое состояние в транзакции связано с данным контрактом. Этот контракт однозначно идентифицируется с помощью пары [contract name, hash of the JAR file containing the contract].

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

Как говорит Мэтью, транзакция, которая содержит (среди прочего) информацию о том, какой контракт использовать с каждым состоянием, затем подписывается цифровой подписью, предотвращая ее изменение.

person Joel    schedule 04.01.2018
comment
Спасибо, Джоэл и Мэтью, это в случае с Кордой, правда? Не могли бы вы поделиться дополнительной информацией об этом ?. С другой стороны, я думаю, что у Hyperledger такой же механизм, и я собираюсь исследовать - person Ricardo Ruano; 05.01.2018

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

Наличие цифровой подписи предоставляет всем узлам механизм, позволяющий им определять, подвергались ли манипуляции с кодом контракта.

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

person Matthew Stannard    schedule 03.01.2018