Transactions

檢索區塊鏈上交易的簽名

  • February 21, 2019

如何找到交易的簽名?web3.eth.getTransaction()似乎沒有提供。

這可以使用 EthereumJS 來完成:乙太坊的庫和實用程序的集合。 https://github.com/ethereumjs

首先,獲取包含目標交易的區塊的原始編碼。這可以在 live.ether.camp 上完成。

或者,如果您不想從 live.ether.camp 複製,您可以通過將乙太坊鏈數據載入到 leveldb 並通過塊雜湊查詢來恢復原始塊編碼。

最後,使用 ethereumjs(參見 ethereumjs-block 和 ethereumjs-tx 模組),您可以輕鬆恢復交易簽名。

事務簽名不適用於 JavaScript web3 和 JSON RPC 等常見 API

  • 帕維爾·比利卡

下一個自然問題是:為什麼不呢?

乙太坊不需要儲存所有交易簽名,因為它是基於狀態的,而不是基於 UTXO(未使用的交易輸出集)的

  • 賈登·赫斯

下一個自然的問題是:什麼是 UTXO,它與交易有什麼關係,為什麼乙太坊沒有 UTXO?

Vitalik 在這裡寫了關於 UTXO 的文章。要點總結如下。

什麼是 UTXO,它與交易有什麼關係?

在比特幣中,一筆交易實際上“在幕後”工作的方式是,它消耗一組由一個或多個先前交易創建的稱為未使用交易輸出(“UTXO”)的對象,然後產生一個或多個新的 UTXO,這然後可以被未來的交易消耗……因此,使用者的餘額不會儲存為數字;相反,它可以計算為他們擁有的 UTXO 面額的總和。

為什麼乙太坊不這樣做?

  1. UTXO 是不必要的複雜,在實現中的複雜性甚至比理論中的複雜。
  2. UTXO 是無狀態的,因此不太適合比通常有狀態的資產發行和轉移更複雜的應用,例如各種智能合約。

很明顯,UTXO 不能很好地與有狀態的智能合約相結合:如果需要創建具有多個階段的合約,例如。如果多方必須提供某種形式的輸入,然後在一段時間後,這些方必須執行一些額外的操作,最後合約根據這些操作支付資金,那麼很難看到如何將該模型擬合到基本上無狀態的對象,只能使用或不能使用。

總而言之,沒有真正的理由需要乙太坊簽名,這就是常見 API 不提供簽名的原因。

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