Как узнать, какую версию компилятора Solidity я использую?

В частности, при использовании Туман . Когда я создаю контракт через Mist GUI, я хочу, чтобы затем проверить исходный код на Etherscan. Однако Etherscan требует, чтобы вы предоставили версию компилятора и включили ли оптимизацию.

  • Как я могу найти версию компилятора для версии Mist, которая у меня есть?

  • Оптимизация всегда включена или всегда отключена?

  • Отличается ли TEST-NET vs Main net?

Примечание. Я ищу ответ на вопрос о том, как найти версию компилятора, а не текущую версию компилятора Mist (которая изменит решение только переходного процесса).

18 голосов | спросил Micah Zoltu 22 AMpFri, 22 Apr 2016 05:18:21 +030018Friday 2016, 05:18:21

2 ответа


13

Mist /Ethereum Wallet теперь имеет встроенный компилятор, который не очень хорошо документирует за пределы скриншотов в учебниках, чтобы создавать, компилировать и развертывать контракты. Тем не менее, версия компилятора Mist и независимо от того, оптимизирована ли она ... трудно понять.

Однако это НЕ обязательно решает вашу проблему с проверкой на EtherScan. Я не могу получить код маркера, чтобы соответствовать, независимо от того, что я пробовал (и я много пробовал). См. Нижнюю часть этого комментария, если вы хотите погрузиться со мной.


Если получение верификации на EtherScan важно для вас , тогда напишите свой код Solidity, где бы то ни было, но скомпилируйте его с помощью Browser Solidity здесь: http://chriseth.github.io/browser-solidity/

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


Если вы используете Mix IDE /Solidity , вы можете просмотреть версию Solidity, перейдя (в Mix IDE) в File /Mix /Help -> О.


Если вы используете solc /Solidity (интерфейс командной строки) , вы можете использовать команду web3.eth.compile , который затем выплюнет что-то вроде:

contract = eth.compile.solidity(source).test
{
  code: '605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056',
  info: {
    language: 'Solidity',
    languageVersion: '0',
    compilerVersion: '0.9.13',
    abiDefinition: [{
      constant: false,
      inputs: [{
        name: 'a',
        type: 'uint256'
      } ],
      name: 'multiply',
      outputs: [{
        name: 'd',
        type: 'uint256'
      } ],
      type: 'function'
    } ],
    userDoc: {
      methods: {
      }
    },
    developerDoc: {
      methods: {
      }
    },
    source: 'contract test { function multiply(uint a) returns(uint d) { return a * 7; } }'
  }
}

Это скомпилирует ваш код и предоставит вам информацию, такую ​​как версия компилятора и т. д.

Дополнительная информация


Оптимизация - это выбор, который вы можете сделать. Через solc вы используете флаг --optimize. Вы можете узнать больше об этом волшебном объекте оптимизации здесь: Как работает оптимизатор надежности? . Я думаю, что Mist оптимизируется на основе того факта, что у меня было 73% -ное сходство, когда я выбрал «не оптимизированный» на EtherScan и 93% -ное сходство, когда я выбралоптимизировано.


Контрактное тестирование:

Я создал точный контракт https://www.ethereum.org/token#the -код без каких-либо изменений кода с использованием Mist v 0.5.2.

Код контракта, полученный Etherscan.io /Mist, был:

0x6060604052361561008d5760e060020a600035046306fdde03811461009557806318160ddd146100f257806323b872dd146100fb578063313ce5671461012d57806354fd4d501461013957806370a082311461019357806395d89b41146101ab578063a9059cbb14610207578063cae9ca5114610236578063dc3080f214610398578063dd62ed3e146103bd575b6103e2610002565b6103e460008054602060026001831615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104995780601f1061046e57610100808354040283529160200191610499565b61045260045481565b610452600435602435604435600160a060020a0383166000908152600560205260408120548290101561057057610002565b61046460035460ff1681565b6103e460028054602060018216156101000260001901909116829004601f810182900490910260809081016040526060828152929190828280156104995780601f1061046e57610100808354040283529160200191610499565b61045260043560056020526000908152604090205481565b6103e4600180546020600282841615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104995780601f1061046e57610100808354040283529160200191610499565b6103e2600435602435600160a060020a033316600090815260056020526040902054819010156104a157610002565b60806020604435600481810135601f810184900490930284016040526060838152610452948235946024803595606494939101919081908382808284375094965050505050505060006000836006600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257506001979650505050505050565b6007602090815260043560009081526040808220909252602435815220546104529081565b6006602090815260043560009081526040808220909252602435815220546104529081565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156104445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6060908152602090f35b820191906000526020600020905b81548152906001019060200180831161047c57829003601f168201915b505050505081565b600160a060020a0382166000908152604090205480820110156104c357610002565b806005600050600033600160a060020a03168152602001908152602001600020600082828250540392505081905550806005600050600084600160a060020a0316815260200190815260200160002060008282825054019250508190555081600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600160a060020a03831681526040812054808301101561058f57610002565b600160a060020a038085168083526006602090815260408085203394909416808652938252808520549285526007825280852093855292905290822054830111156105d957610002565b816005600050600086600160a060020a03168152602001908152602001600020600082828250540392505081905550816005600050600085600160a060020a03168152602001908152602001600020600082828250540192505081905550816007600050600086600160a060020a03168152602001908152602001600020600050600033600160a060020a0316815260200190815260200160002060008282825054019250508190555082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3506001939250505056

Вы можете увидеть это на EtherScan, или вы можете получить его в кошельке Ethereum, открыв консоль и запустив ееTokenContract.eth.getCode('YOUR_ADDRESS_HERE_NO_0x_AT_BEGINNING'); Оба Mist и EtherScan выплевывают один и тот же код.

Я попытался проверить, возможно, 20 разных версий с оптимизацией и без нее, используя Browser Solidty и ни разу этот код не является коротким или Etherscan.io имеет его, и он не начинается с 0x .....

Вот пример того, что Browser Solidty & EtherScan дает мне использование 0.2.1-3ad5e821 w /оптимизация:

606060405260405161092b38038061092b83398101604052805160805160a05160c05160e05193949283019391929081019101600160a060020a03331660009081526005602090815260408220879055600487905581548651838052601f6002600019600185161561010002019093169290920482018390047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390810193919290918901908390106100d457805160ff19168380011785555b506101049291505b8082111561015d57600081556001016100c0565b828001600101855582156100b8579182015b828111156100b85782518260005055916020019190600101906100e6565b50508160016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016157805160ff19168380011785555b506101919291506100c0565b5090565b82800160010185558215610151579182015b82811115610151578251826000505591602001919060010190610173565b50506003805460ff19168417905560028054825160008390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace602060018416156101000260001901909316849004601f90810184900482019386019083901061020e57805160ff19168380011785555b5061023e9291506100c0565b82800160010185558215610202579182015b82811115610202578251826000505591602001919060010190610220565b505050505050506106d8806102536000396000f36060604052361561008d5760e060020a600035046306fdde03811461009557806318160ddd146100f257806323b872dd146100fb578063313ce5671461012d57806354fd4d501461013957806370a082311461019357806395d89b41146101ab578063a9059cbb14610207578063cae9ca5114610236578063dc3080f214610398578063dd62ed3e146103bd575b6103e2610002565b6103e460008054602060026001831615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104995780601f1061046e57610100808354040283529160200191610499565b61045260045481565b610452600435602435604435600160a060020a0383166000908152600560205260408120548290101561057057610002565b61046460035460ff1681565b6103e460028054602060018216156101000260001901909116829004601f810182900490910260809081016040526060828152929190828280156104995780601f1061046e57610100808354040283529160200191610499565b61045260043560056020526000908152604090205481565b6103e4600180546020600282841615610100026000190190921691909104601f810182900490910260809081016040526060828152929190828280156104995780601f1061046e57610100808354040283529160200191610499565b6103e2600435602435600160a060020a033316600090815260056020526040902054819010156104a157610002565b60806020604435600481810135601f810184900490930284016040526060838152610452948235946024803595606494939101919081908382808284375094965050505050505060006000836006600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257506001979650505050505050565b6007602090815260043560009081526040808220909252602435815220546104529081565b6006602090815260043560009081526040808220909252602435815220546104529081565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156104445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6060908152602090f35b820191906000526020600020905b81548152906001019060200180831161047c57829003601f168201915b505050505081565b600160a060020a0382166000908152604090205480820110156104c357610002565b806005600050600033600160a060020a03168152602001908152602001600020600082828250540392505081905550806005600050600084600160a060020a0316815260200190815260200160002060008282825054019250508190555081600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600160a060020a03831681526040812054808301101561058f57610002565b600160a060020a038085168083526006602090815260408085203394909416808652938252808520549285526007825280852093855292905290822054830111156105d957610002565b816005600050600086600160a060020a03168152602001908152602001600020600082828250540392505081905550816005600050600085600160a060020a03168152602001908152602001600020600082828250540192505081905550816007600050600086600160a060020a03168152602001908152602001600020600050600033600160a060020a0316815260200190815260200160002060008282825054019250508190555082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3506001939250505056

Так .... этовсе еще не соответствует тому, что Mist предположительно отправил и получил EtherScan.

Во время исследований я обнаружил, что EtherChain может иметь большую удачу при проверке. Тем не менее, я все еще не мог получить ничего выше ~ 93% сходства (используя 2.1.1, оптимизированный).

Надеюсь, это поможет кому-то.

ответил tayvano 22 AMpFri, 22 Apr 2016 05:29:51 +030029Friday 2016, 05:29:51
4

Прямо сейчас нет реального простого способа. Я пытаюсь понять это сам: -)

Когда вы запускаете версию разработчика в электронном режиме, вы всегда можете перейти в папку с кодом тумана и введите:

node

, который затем приведет вас к узлу терминала, где вы можете проверить версию своей солидности:

var solc = require('solc')
solc.version()

> '0.2.1-91a6b35f/.-Emscripten/clang/int linked to libethereum-'

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

В прошлый раз, когда я попробовал проверить контракт на банке наконечника ethereum (который я развернул самостоятельно), я смог получить только 97% -ное сходство. У меня не было возможности проверить его, но я считаю, что разница в параметрах, отправленных функции-конструктора, поскольку изменения происходят только в конце файла.

ответил Alexandre Van de Sande 22 PMpFri, 22 Apr 2016 22:24:11 +030024Friday 2016, 22:24:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132