如何在伺服器中部署智能合約?
我已經開發了一個智能合約並用 solc 編譯它,並且生成了 bin 和 abi 文件。現在,我想在 linux 伺服器中使用 web3js 部署這個合約。我該怎麼做?
簡而言之:
首先:在您的伺服器中部署一個 geth 節點。這是一個詳細的教程https://medium.com/mercuryprotocol/how-to-create-your-own-private-ethereum-blockchain-dad6af82fc9f
第二:一旦您的節點執行使用Remix,將其連接到您的節點 RPC 地址並直接從 remix 部署。
否則,您可以探索我對您的文章的評論中描述的解決方案。
要在乙太坊上部署智能合約,您必須進行部署交易。
部署交易是將合約字節碼發送到空地址。
例如:
我的 add.sol
pragma solidity 0.5.1; contract ADD { uint256 total; function add(uint256 a, uint256 b) public { total = a+b; } }
add.sol 的字節碼
608060405234801561001057600080fd5b5060b88061001f6000396000f3fe6080604052600436106039576000357c010000000000000000000000000000000000000000000000000000000090048063771602f714603e575b600080fd5b348015604957600080fd5b50607d60048036036040811015605e57600080fd5b810190808035906020019092919080359060200190929190505050607f565b005b808201600081905550505056fea165627a7a72305820e3f9b94abc880b4f5646678c218c6c79a98f8dad3a566a9822548d539b741a340029
部署事務如下所示:
{ from: "0x......", // you have to unlock account first to: null, gas: 2000000, gasPrice: 1000000000, value: 0, data: "0x60806040523480156......" }
您可以通過 curl 呼叫 send transaction rpc:
curl -vX POST localhost:8545 -d '{"method": "eth_sendTransaction", "id": 1, "params": [{"transaction object"}]}' -H "Content-Type: application/json"
如果你想用自己的私鑰簽名,你可以呼叫 send raw transaction rpc:
curl -vX POST localhost:8545 -d '{"method": "eth_sendRawTransaction", "id": 1, "params": ["0x................."]}' -H "Content-Type: application/json"