Проблема компиляции/развертывания контракта Solidity

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

 var Web3 = require("web3");
 var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

var source = "" +
"contract test {\n" +
"   function multiply(uint a) returns(uint d) {\n" +
"       return a * 7;\n" +
"   }\n" +
"}\n";
var compiled = web3.eth.compile.solidity(source);
console.log(compiled);

Основываясь на документации, я ожидал, что это так:

"test": {
"code": "0x605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056",
"info": {
  "source": "contract test {\n\tfunction multiply(uint a) returns(uint d) {\n\t\treturn a * 7;\n\t}\n}\n",
  "language": "Solidity",
  "languageVersion": "0",
  "compilerVersion": "0.8.2",
  "abiDefinition": [
    { ...

но что я получаю:

0x606060405260308060106000396000f3606060405260e060020a6000350463c6888fa18114601c575b6002565b34600257600760043502606090815260200

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

var greeterContract = web3.eth.contract(compiled.test.info.abiDefinition);

 var greeter = greeterContract.new(_greeting,{from:web3.eth.accounts[0], data: compiled.test.code, gas: 1000000}, function(e, contract){

есть идеи, что я сделал не так?

PS Я использую Parity в качестве провайдера

Пошаговое руководство, но с использованием geth, доступно по адресу ethereum.stackexchange.com/questions/2751/… .

Ответы (1)

Похоже, что Parity не соответствует eth_compileSolidityспецификации.

Изменить: похоже, одна из причин, по которой они не возвращают полный результат, заключается в том, что они не могут (пока). По этой ссылке они не получают ABI от компиляции: https://github.com/ethcore/parity/issues/2276#issuecomment-249277973

Редактировать 2: Похоже, здесь есть разговор об этом: https://github.com/ethcore/parity/issues/2272