Go-Ethereum

如何使用 geth 和 json rpc 在兩個地址之間轉移 ETH

  • March 16, 2018

我的伺服器上正在執行geth 。我正在建立一個充當錢包的 php 網站。現在我能夠創建地址。我需要能夠在同一節點上的地址之間存取 ETH。我用下面的命令開始 geth。

go-ethereum/build/bin/geth console  --rpc --rpcapi="db,eth,net,web3,personal,web3" --rpccorsdomain "*" --syncmode "light"

如何通過 rpc 在 geth 上實現錢包的功能?是否有為此的命令或 API 呼叫?我發現很難理解文件。

更新:我想做的是將 ETH 從一個帳戶轉移到另一個帳戶。以下是我嘗試的 api 呼叫以及我在 php 類中呼叫傳輸函式時在瀏覽器中遇到的錯誤。有人可以糾正我嗎

{“jsonrpc”:“2.0”,“id”:1,“method”:“personal_signAndSendTransaction”,“params”:

$$ [{“from”:“0xb60e8dd61c5d32be8058bb8eb970870f07233155”,“to”:“0xd46e8dd67c5d32be8058bb8eb970870f07244567”,“gas”:“0x76c0”,“gasPrice”:“0x9184e72a000”,“value”:“0x9184e72a”,“data”:“0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675”} $$“密碼”]}

致命錯誤:未擷取的 RPCException:json:無法將數組解組為 eth.SendTxArgs 類型的 Go 值

{“jsonrpc”:“2.0”,“id”:1,“method”:“personal_sendTransaction”,“params”:

$$ [{“from”:“0xb60e8dd61c5d32be8058bb8eb970870f07233155”,“to”:“0xd46e8dd67c5d32be8058bb8eb970870f07244567”,“gas”:“0x76c0”,“gasPrice”:“0x9184e72a000”,“value”:“0x9184e72a”,“data”:“0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675”} $$“密碼”]}

致命錯誤:未擷取的 RPCException:方法personal_sendTransaction 不存在/不可用拋出

{“jsonrpc”:“2.0”,“id”:1,“method”:“eth_sendTransaction”,“params”:

$$ {“from”:“0xb60e8dd61c5d32be8058bb8eb970870f07233155”,“to”:“0xd46e8dd67c5d32be8058bb8eb970870f07244567”,“gas”:“0x76c0”,“gasPrice”:“0x9184e72a000”,“value”:“0x9184e72a”,“data”:“0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675”} $$}

致命錯誤:未擷取的 RPCException:帳戶被鎖定拋出

請幫忙!

在 Geth 控制台中,您可以使用 sendTransaction 函式:

web3.eth.sendTransaction({
   from: "0xE618A4B5A516f371Ce26d9A1DBE7839F4e3812GB",
   to: "0xE618A4B5A516f371Ce26d9A1DBE7839F4e3812CB",
   value: web3.toWei(1, "ether")
})

您可以使用eth_sendtransaction將交易發送到目的地

在參數部分

params: [{
   "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
   "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
   "gas": "0x76c0", // 30400
   "gasPrice": "0x9184e72a000", // 10000000000000
   "value": "0x9184e72a", // 2441406250
   "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]

您應該取回交易簽名

{
   "id":1,
   "jsonrpc": "2.0",
   "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

這適用於以前在 geth 中解鎖的帳戶

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