Когда смарт-контракт развернут, доступен ли его исходный код для публичного просмотра?

Когда смарт-контракт развертывается в блокчейне, доступен ли исходный код для всех участников? Например, то, что вы видите здесь, в Etherchain. Я знаю, что там есть некоторые контракты с исходным кодом, но я просто хочу подтвердить.

Заранее спасибо!

В вашем вопросе об этом прямо не говорится, но то, что вы ищете, называется декомпилятором. Есть несколько доступных, например JEB Decompiler, Ethervm или Porosity (устарело). См. ethereum.stackexchange.com/questions/28877/…

Ответы (2)

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

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

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

В целом, как отмечали другие пользователи, на практике невозможно вернуть исходный код. Кроме того, Etherscan.io перечисляет только <1% контрактов с исходным кодом. Однако люди могут использовать декомпиляторы для реинжиниринга и попытаться лучше понять развернутые смарт-контракты. Доступны различные декомпиляторы, например Porosity, Mythril, EthIR и Vandal. В настоящее время доступен хороший декомпилятор (с точки зрения точности и надежности) https://www.contract-library.com . Это не отдельный инструмент, но он может декомпилировать большинство контрактов, которые в настоящее время находятся в основной сети Ethereum.

И это контракт, на который вы ссылаетесь в декомпилированном режиме: https://contract-library.com/contracts/Ethereum/0xbf35faa9c265baf50c9cff8c389c363b05753275 .

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