Go-Ethereum

如何從交易中獲取簽名參數?

  • June 27, 2017

在我的應用程序中,我必須手動驗證乙太坊區塊鏈上的某些交易簽名。Atm 我正在執行 geth 和 parity 節點並通過 rpc 介面查詢事務資訊,但它似乎缺少 ecdsa sig 參數。

據我所知,geth 和 parity 似乎都沒有像 bitcoind 那樣通過 rpc 介面公開簽名參數(它使用 公開輸入和輸出腳本get_rawtransaction)。一旦出於某種原因驗證了簽名,是否有一種簡單的方法可以訪問它們,或者在其本地區塊鏈記憶體中同時進行 geth 和奇偶校驗剝離簽名?我想知道,因為即使ecp似乎也只能將原始交易從塊解析為txhash, rcpt, from, amount, price, gaslimit, payload(=data),blockid缺少簽名參數(或者它們是否隱藏在有效負載欄位中?)。

什麼是獲得完整原始交易資訊的選項,就像我剛剛簽署它一樣web3.eth.sign()

eth_getTransaction在我的 geth 實例返回的事務對像中確實包含 ECDSA 參數:

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params": ["0x47ced780ecca7c273243dded62c6a240f3ba4332ab067345909a304d7294cfda"],"id":1}' localhost:8545

{
 "jsonrpc": "2.0",
 "id": 1,
 "result": {
   "blockHash": "0x7126318b5736f655049fcb7c3f6ef02d0986a5553cb1b1fbc0ca188543b1e60a",
   "blockNumber": "0x339d04",
   "from": "0xea674fdde714fd979de3edf0f56aa9716b898ec8",
   "gas": "0x15f90",
   "gasPrice": "0x4a817c800",
   "hash": "0x47ced780ecca7c273243dded62c6a240f3ba4332ab067345909a304d7294cfda",
   "input": "0x",
   "nonce": "0x15dcf8",
   "to": "0xf34a762291e2578b79646cbf296abf4f5a242b3d",
   "transactionIndex": "0x0",
   "value": "0x16978c7c04171dc",
   "v": "0x26",
   "r": "0xe448b291661c63d8add23a8be2eb726e92ace5c100e902ee75a6396f8df8d221",
   "s": "0x197fb2e88dc2d4e8f606faf6abdb8012d21b024939756ceaf2d39b4bef619fa4"
 }
}

注意vrs參數:這些是驗證簽名所需的。我不確定為什麼這些不在官方 RPC 規範中,但如果您需要它們,它們是可用的

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