Web3js

如何在伺服器中部署智能合約?

  • February 11, 2022

我已經開發了一個智能合約並用 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"

引用自:https://ethereum.stackexchange.com/questions/45266