Infura
請提供 eth_sendRawTransaction 的 PHP 範例
我希望有一個 PHP 腳本使用 Infura 的端點來呼叫
eth_sendRawTransaction
. 我有一個 PHP 腳本,它使用 curl 通過 Infura 的端點呼叫函式,例如eth_getBalance
.我使用**BlockCypher 的“簽名者”**程序在 BlockCypher 上對數據進行簽名。
以下描述
eth_sendRawTransaction
不說明如何創建簽名交易數據,這裡。請提供一段 PHP 程式碼,舉例說明如何創建簽名交易數據。在需要對數據進行簽名的地方,使用這行程式碼即可:
$sSignature = exec("./signer $sToSign $sPrivateKey");
我相信許多其他人將從這個例子中受益。
考慮查看作為 JSON-RPC 包裝器的 PHP 庫之一。
你應該使用 web3.js
我喜歡 PHP,但它真的很討厭 geth,geth 本身很難,文件零星,人們知道的很少。我真的被困在 php 上建構我的整個應用程序(在註冊時生成錢包)然後集成 web3.js。最好你只使用 JS,神話般的程式碼的一個很好的例子是 myetherwallet
來自官方 web3.js 文件:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethsendrawtransaction
var Tx = require('ethereumjs-tx'); var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex') var rawTx = { nonce: '0x00', gasPrice: '0x09184e72a000', gasLimit: '0x2710', to: '0x0000000000000000000000000000000000000000', value: '0x00', data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057' } var tx = new Tx(rawTx); tx.sign(privateKey); var serializedTx = tx.serialize(); //console.log(serializedTx.toString('hex')); //f889808609184e72a00082271094000000000000000000000000000000000000000080a47f74657374320000000000000000000000000000000000000000000000000000006000571ca08a8bbf888cfa37bbf0bb965423625641fc956967b81d12e23709cead01446075a01ce999b56a8a88504be365442ea61239198e23d1fce7d00fcfc5cd3b44b7215f web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) { if (!err) console.log(hash); // "0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385" });