Go-Ethereum
如何從交易中獲取簽名參數?
在我的應用程序中,我必須手動驗證乙太坊區塊鏈上的某些交易簽名。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" } }
注意
v
、r
和s
參數:這些是驗證簽名所需的。我不確定為什麼這些不在官方 RPC 規範中,但如果您需要它們,它們是可用的