Transactions
簽署交易:實際簽署了什麼?noobquestionn這這bq在和s噸一世這nnoob question
我正試圖圍繞簽名交易的實際工作原理展開思考。據我了解,ECDSA 簽名大致是這樣工作的:有一個魔術函式,我們稱它為帶有
sign
兩個參數的函式。private key
和message
。_ 它輸出簽名或在 web3.py 或 web3.js 的情況下,三個奇怪的值v
,r
和s
.因此,當使用者簽署消息時,他們基本上是在簽署一個數據塊,這是函式
message
中的值sign
。我在這個假設中正確嗎?因此,當使用者簽署消息時,他們基本上是在簽署一個數據塊,即簽名函式中的消息值。我在這個假設中正確嗎?如何訪問該數據塊?是否可以通過 web3 從公共交易中獲取它?
我找到了這篇文章,它說要簽名的數據雜湊是從
rlp + hash
. 有誰知道rpl
web3 是什麼意思或如何獲取輸出雜湊?
ECDSA 使用數字,因此要首先簽署消息,您必須將其編碼為數字。
RLP的確切含義在黃皮書(附錄 B 遞歸長度前綴)中定義。它是一個將結構化的東西(例如交易)編碼為字節序列的函式。給定一個事務
Transaction
然後RLP(Transaction)
返回一個字節序列。實際上 ECDSA 數字也必須在一個範圍內。為了確保它
RLP(Transaction)
具有正確的 ECDSA 範圍,我們應用了一個像KECCAK256(RLP(Transaction))
.此外,ECDSA 簽名的確切細節在黃皮書(附加 F 簽名交易)中。
r, s, v = ECDSASign(KECCAK256(RLP(Transaction)), PrivateKey)