Когда смарт-контракт развертывается в блокчейне, доступен ли исходный код для всех участников? Например, то, что вы видите здесь, в Etherchain. Я знаю, что там есть некоторые контракты с исходным кодом, но я просто хочу подтвердить.
Заранее спасибо!
Нет, исходный код не становится общедоступным автоматически. Если у вас есть общедоступный смарт-контракт, вам обычно необходимо опубликовать его, чтобы люди знали, с чем они взаимодействуют, но это не происходит автоматически.
Однако скомпилированный байт-код находится в блокчейне. Его трудно читать, но небезопасно предполагать, что кто-то не разберется, что он делает, или не напишет хороший декомпилятор.
В целом, как отмечали другие пользователи, на практике невозможно вернуть исходный код. Кроме того, Etherscan.io перечисляет только <1% контрактов с исходным кодом. Однако люди могут использовать декомпиляторы для реинжиниринга и попытаться лучше понять развернутые смарт-контракты. Доступны различные декомпиляторы, например Porosity, Mythril, EthIR и Vandal. В настоящее время доступен хороший декомпилятор (с точки зрения точности и надежности) https://www.contract-library.com . Это не отдельный инструмент, но он может декомпилировать большинство контрактов, которые в настоящее время находятся в основной сети Ethereum.
И это контракт, на который вы ссылаетесь в декомпилированном режиме: https://contract-library.com/contracts/Ethereum/0xbf35faa9c265baf50c9cff8c389c363b05753275 .
Как видите, некоторые имена функций и структуры данных выводятся автоматически, иногда на основе знаний, полученных при попытке понять прошлые контракты. В целом, декомпиляторы для Ethereum в настоящее время не предназначены для оптимизации их вывода для типичного потребления человеком, однако они оптимизированы для использования другими машинами (алгоритмами), которые могут находить уязвимости в системе безопасности.
Алекс Берд