摘要:改標(biāo)準(zhǔn)試圖拓展以太坊的簽名規(guī)則,為簽名內(nèi)容的可讀化提供的重要的基礎(chǔ)。摘要這個(gè)提議了一個(gè)關(guān)于如何在以太坊合約中處理簽名數(shù)據(jù)的詳細(xì)說明。如果對(duì)沒有句法約束,這就意味著可以用作句法有效的交易。
本文翻譯了官網(wǎng)EIP-191的相關(guān)內(nèi)容。改標(biāo)準(zhǔn)試圖拓展以太坊的簽名規(guī)則,為簽名內(nèi)容的可讀化提供的重要的基礎(chǔ)。摘要
這個(gè)ERC提議了一個(gè)關(guān)于如何在以太坊合約中處理簽名數(shù)據(jù)的詳細(xì)說明。
動(dòng)機(jī)一些接受presigned交易的多簽名錢包應(yīng)用已經(jīng)出現(xiàn)了。一筆presigned交易就是一堆二進(jìn)制的signed_data,同時(shí)包含簽名(r, s, v)。因?yàn)閷?duì)signed_data的解釋并不具體,導(dǎo)致了一些問題:
標(biāo)準(zhǔn)的以太坊交易可以作為signed_data提交。一筆以太坊交易可以拆解成這幾個(gè)組件:RLP
多簽名錢包同樣也有問題:presigned交易并不和一個(gè)特定的validator綁定在一起,舉一個(gè)特定錢包的例子:
i. 用戶A, B和C有2/3-錢包X
ii. 用戶A, B和D有2/3-錢包Y
iii. 用戶A和B提交了一個(gè)presigned交易給X
iv. 攻擊者可以復(fù)用他們的給X的presigned交易,然后提交給Y。
說明我們?yōu)?b>signed_data提議了以下格式:
0x19 <1 byte version>.
版本0對(duì)于版本特定數(shù)據(jù)有<20字節(jié)地址>,這個(gè)地址就是預(yù)期的驗(yàn)證者。在多簽名錢包的例子中,就是錢包自己的地址。
最初的0x19字節(jié)用來確保signed_data不是有效的RLP
對(duì)于單個(gè)值為[0x00, 0x7f]的字節(jié),字節(jié)的RLP編碼就是它本身
這意味著任何signed_data不能是一個(gè)RLP結(jié)構(gòu),而是1個(gè)字節(jié)的RLP,后面再加上一些別的內(nèi)容。
因此,任何ERC-191 signed_data永遠(yuǎn)不會(huì)是一筆以太坊交易。
額外地,之所以用0x19是因?yàn)樽詮膃thereum/go-ethereum#2940,下面的一行文字會(huì)在personal_sign方法中預(yù)添加在要簽名的hash數(shù)據(jù)之前:
"x19Ethereum Signed Message: " + len(message).
因此,使用0x19是為了可以擴(kuò)展這個(gè)模式,通過定義一個(gè)版本 0x45(E)來處理這種類型的簽名。
版本字節(jié)登記Version byte | EIP | Description |
---|---|---|
0x00 | 191 | Data with intended validator |
0x01 | 712 | Structured data |
0x45 | 191 | personal_sign messages |
function submitTransactionPreSigned(address destination, uint value, bytes data, uint nonce, uint8 v, bytes32 r, bytes32 s) public returns (bytes32 transactionHash) { // Arguments when calculating hash to validate // 1: byte(0x19) - the initial 0x19 byte // 2: byte(0) - the version byte // 3: this - the validator address // 4-7 : Application specific data transactionHash = keccak256(byte(0x19),byte(0),this,destination, value, data, nonce); sender = ecrecover(transactionHash, v, r, s); // ... }
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24166.html
摘要:有效的數(shù)字簽名使收件人有理由相信該信息是由已知的發(fā)件人認(rèn)證創(chuàng)建的,發(fā)件人不能否認(rèn)已發(fā)送的信息不可否認(rèn),并且信息在傳輸過程中未被更改完整性。當(dāng)我們說簽署交易時(shí),我們實(shí)際上是指簽署序列化交易數(shù)據(jù)的哈希。 特殊交易:合約注冊(cè) 有一種特殊的帶有data,沒有value的交易。表示注冊(cè)一個(gè)新的合約。合約登記交易被發(fā)送到一個(gè)特殊的目的地地址,即零地址。簡(jiǎn)而言之,合約注冊(cè)交易中的+to+字段包含地址...
摘要:本文解釋了比特幣交易的內(nèi)容,目的和結(jié)果。本文底部的信息圖提供了從錢包到區(qū)塊鏈的整個(gè)比特幣交易流程的全面說明。在文本中使用的任何地方是比特幣交易的縮寫。目的比特幣交易的目的是將一定數(shù)量的比特幣的所有權(quán)轉(zhuǎn)移到比特幣地址。 本文解釋了比特幣交易的內(nèi)容,目的和結(jié)果。下面的解釋適用于新手和中級(jí)比特幣用戶。 作為加密貨幣用戶,你需要熟悉交易雛形——為了你對(duì)這種不斷發(fā)展的創(chuàng)新有信心,以及作為理解新興...
摘要:去中心化應(yīng)用程序的常見設(shè)計(jì)不僅依賴于以太坊區(qū)塊鏈,還依賴于層。每個(gè)用戶的所有登錄操作在以太坊區(qū)塊鏈上變得不可公開。用于驗(yàn)證用戶身份的機(jī)制與以太坊用于保證以太坊區(qū)塊鏈安全性的機(jī)制相同。以太坊,主要是針對(duì)工程師使用進(jìn)行區(qū)塊鏈以太坊開發(fā)的詳解。 去中心化應(yīng)用程序(DApp)的常見設(shè)計(jì)不僅依賴于以太坊區(qū)塊鏈,還依賴于API層。在這種情況下,DApp通過用戶的以太坊帳戶與智能合約進(jìn)行交互,并通過...
摘要:比特幣區(qū)塊鏈無疑是當(dāng)今業(yè)界的最熱門的。目前,每個(gè)成功的礦工獲得可能每年更換一次或通過比特幣社區(qū)決策作為成功向區(qū)塊鏈添加一塊交易的獎(jiǎng)勵(lì)。填寫其他詳細(xì)信息,例如比特幣金額和可選說明。 比特幣區(qū)塊鏈無疑是當(dāng)今業(yè)界的最熱門的。通過這篇博客,我將盡力向大家介紹加密貨幣比特幣的概念,以及它如何創(chuàng)造我們稱之為區(qū)塊鏈的革命性技術(shù)。 這個(gè)問題經(jīng)常引起混淆。這篇文章可以快速解釋和清理這方面的混亂! 什么是...
閱讀 743·2021-10-14 09:42
閱讀 1995·2021-09-22 15:04
閱讀 1606·2019-08-30 12:44
閱讀 2167·2019-08-29 13:29
閱讀 2762·2019-08-29 12:51
閱讀 577·2019-08-26 18:18
閱讀 733·2019-08-26 13:43
閱讀 2846·2019-08-26 13:38