2016-10-09 6 views
1

https://github.com/eris-ltd/eris-contracts.jserisのjavascriptを使用してソリッドシードコードをコンパイルするにはどうすればよいですか?

var myAbi = [...]; 
var myCompiledCode = "..."; 

// Create a factory for the contract with the JSON interface 'myAbi'. 
var myContractFactory = contractManager.newContractFactory(myAbi); 

// To create a new instance and simultaneously deploy a contract use `new`: 
var myNewContract; 
myContractFactory.new({data: myCompiledCode}, function(error, contract){ 
    if (error) { 
      // Something. 
      throw error; 
     } 
    myNewContract = contract; 
}); 

に示したように、私はコードの例を見ているが、私は、コンパイルを行う方法は考えてきません。 私はeris-contracts.jsがweb3.js上に構築されていることを理解しています しかし、Web3オブジェクトをインスタンス化するときに私が入力しなければならないプロバイダは何か分かりません。

var edbFactory = require('eris-db'); 
var Web3 = require('web3'); 
var web3 = new Web3(); 
web3.setProvider(new web3.providers.HttpProvider('http://simplechain:1337/rpc')); 

var edb = edbFactory.createInstance("http://simplechain:1337/rpc"); 

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); 

答えて

3

私はエリスからです。私たちの文書がもっとはっきりしないのは残念です。

Solidityをコンパイルする最も簡単な方法は、JavaScript bindings for the Solidity compilerを使用することです。

$はインストールNPM

const Solidity = require('solc') 

var source = "" + 
    "contract test {\n" + 
    " function multiply(uint a) returns(uint d) {\n" + 
    "  return a * 7;\n" + 
    " }\n" + 
    "}\n"; 

const compiled = Solidity.compile(source, 1).contracts.test 
const abi = JSON.parse(compiled.interface) 
const contractFactory = contractManager.newContractFactory(abi) 

contractFactory.new({data: compiled.bytecode}, (error, contract) => { 
    // use contract here 
}) 
+0

参考のために、erisは 'HttpProvider'として使用できるノードを提供していますか? – default

+0

いいえ、私たちは今後、Web3互換レイヤーを提供することを検討しています。 –

1

私はエリスを使用することはありませんが、あなたの質問には、JavaScriptを使用して、この契約をコンパイルする方法である場合:

pragma solidity ^0.4.0; 

contract test { 
    function multiply(uint a) returns(uint d) { 
     return a * 7; 
    } 
} 

あなたはbrowser-solidityを試みたことがありますか?これは即座にあなたのブラウザで固執のコードをコンパイルします。上記の堅牢コードのコンパイル契約は次のとおりです。

606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056 

およびインターフェイス(ABI):

[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}] 

web3jsでそれを展開するには、次のコードを使用し

/* the test contract interface */ 
var testContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}]); 

/* deploy it with web3, here: on ethereum */ 
var test = testContract.new(
    { 
    from: web3.eth.accounts[0], 
    data: '606060405260788060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146039576035565b6002565b34600257605160048080359060200190919050506067565b6040518082815260200191505060405180910390f35b60006007820290506073565b91905056', 
    gas: 4700000 
    }, function (e, contract){ 
    console.log(e, contract); 
    if (typeof contract.address !== 'undefined') { 
     console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash); 
    } 
}) 

をIあなたの質問にボトムアップで答えるかどうかわからない。問題が有効なJSON-HTTPプロバイダを必要とする場合は、ローカルのgethノードを実行し、RPCポート(デフォルトではlocalhost:8545)をポイントします。

申し訳ありません私はerisに沿ってこれに答えることはできませんが、web3jsで強固なものをコンパイルする場合は、これがうまくいくはずです。

+0

は、「私はあなたの質問のボトムアップに答えた場合、私はわからないよ。問題は有効なJSON-HTTPプロバイダを必要とすることである場合は、ローカルに実行することができ--save solc RPCポートを指します(デフォルトではlocalhost:8545です)。 - これは私の質問に対する答えかもしれないと思います。 –

+0

私はブラウザコンパイラを使ってみました。コードは新しい契約を作成するときにコンパイルされたソースを受け入れましたが、契約のメソッドを使用するとエラーに遭遇しました。 –

1

最終的に私は自分の規定されたコンパイラを使って自分の問題をerisチェーンで解決しました。しかし、私はweb3内で提供されているようなjsコ​​ンパイラを見つけることはできないようです。 Ubuntuの

sudo apt-get install golang 

export GOPATH=$HOME/go 
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 

go get github.com/eris-ltd/eris-compilers/cmd/eris-compilers 

sudo add-apt-repository ppa:ethereum/ethereum 
sudo add-apt-repository ppa:ethereum/ethereum-dev 
sudo apt-get update 
sudo apt-get install lllc sc solc 

sudo apt-get install solc 

にエリス・コンパイラをインストールするには、ソースに

eris-compilers --debug compile -s -u compilers.monax.io -p 10120 idi.sol 

をコンパイルするにはコンパイル済みの製品は、そのようなことになります。

[email protected]:/prodlib/ERIS/.eris/apps/idi-service$ eris-compilers -- 
debug compile -s -u compilers.monax.io -p 10120 idi.sol 
Cached Item(s)      cached?=false 
Could not find cached object, compiling... 
Response         abi=[{"constant":true,"inputs":[],"name":"getName","outputs":[{"name":"retVal","type":"string"}],"type":"function"},{"constant":false,"inputs":[{"name":"x","type":"uint256"}],"name":"set","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"retVal","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_name","type":"string"}],"name":"SetName","type":"event"}] 
              bin=6060604052610399806100126000396000f360606040526000357c01000000000000000000000000000000000000000000000000000000009004806317d7de7c1461005a57806360fe47b1146100d55780636d4ce63c146100ed578063c47f00271461011057610058565b005b61006760048050506102dd565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156100c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100eb6004808035906020019091905050610166565b005b6100fa6004805050610174565b6040518082815260200191505060405180910390f35b6101646004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050909091905050610186565b005b806000600050819055505b50565b60006000600050549050610183565b90565b8060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101d557805160ff1916838001178555610206565b82800160010185558215610206579182015b828111156102055782518260005055916020019190600101906101e7565b5b5090506102319190610213565b8082111561022d5760008181506000905550600101610213565b5090565b50503373ffffffffffffffffffffffffffffffffffffffff167f5b55a57845097b0b4cf682f6d089fe6bad81dc28242927eca133f4b1c4d28b448260405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156102cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25b50565b602060405190810160405280600081526020015060016000508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561038a5780601f1061035f5761010080835404028352916020019161038a565b820191906000526020600020905b81548152906001019060200180831161036d57829003601f168201915b50505050509050610396565b9056 
             name=IdisContractsFTW 
[email protected]:/prodlib/ERIS/.eris/apps/idi-service$ 
関連する問題