Infura

請提供 eth_sendRawTransaction 的 PHP 範例

  • October 29, 2018

我希望有一個 PHP 腳本使用 Infura 的端點來呼叫eth_sendRawTransaction. 我有一個 PHP 腳本,它使用 curl 通過 Infura 的端點呼叫函式,例如eth_getBalance.

我使用**BlockCypher 的“簽名者”**程序在 BlockCypher 上對數據進行簽名。

以下描述eth_sendRawTransaction不說明如何創建簽名交易數據,這裡

請提供一段 PHP 程式碼,舉例說明如何創建簽名交易數據。在需要對數據進行簽名的地方,使用這行程式碼即可:

$sSignature = exec("./signer $sToSign $sPrivateKey");

我相信許多其他人將從這個例子中受益。

考慮查看作為 JSON-RPC 包裝器的 PHP 庫之一。

乙太坊的 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"
});

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