百家乐官网 (中国)有限公司官网

澎湃Logo
下載客戶(hù)端

登錄

  • +1

Comunion區(qū)塊鏈深度學(xué)習(xí)系列|橢圓曲線(xiàn)數(shù)字簽名應(yīng)用

2020-09-18 13:59
來(lái)源:澎湃新聞·澎湃號(hào)·湃客
字號(hào)

Comunion 是一個(gè)基于區(qū)塊鏈的組織形式 (DAO) 與創(chuàng)業(yè)互助網(wǎng)絡(luò),為超級(jí)個(gè)體提供面向數(shù)字時(shí)代的全新商業(yè)基礎(chǔ)設(shè)施和價(jià)值轉(zhuǎn)化機(jī)制,致力于讓勞動(dòng)價(jià)值 像 資本一樣自由流通、交易和積累。

本系列內(nèi)容包含:基本概念及原理、密碼學(xué)、共識(shí)算法、錢(qián)包及節(jié)點(diǎn)原理、挖礦原理及實(shí)現(xiàn)

區(qū)塊鏈中哪些地方使用了ECDSA?

通過(guò)前面系列的區(qū)塊鏈原理和技術(shù),大家應(yīng)該都熟悉交易是如何在區(qū)塊鏈系統(tǒng)或者在比特幣、以太坊系統(tǒng)里面開(kāi)展的。

在進(jìn)行交易的環(huán)節(jié)當(dāng)中,有一個(gè)很重要的消息,那就是需要進(jìn)行簽名。

也就是說(shuō)一筆交易至少涉及到三項(xiàng)內(nèi)容:付款人、收款人、付款金額。

例如,張三給李四付款的時(shí)候,張三付款人,李四是收款人,付款金額假設(shè)是5個(gè) Token。

當(dāng)張三準(zhǔn)備好這筆交易之后,需要發(fā)給全網(wǎng),當(dāng)其他人看到這筆交易的時(shí)候,他們需要去認(rèn)證這筆交易是否由張三發(fā)起的,這個(gè)環(huán)節(jié)中就使用到了數(shù)字簽名技術(shù)。

交易簽名如何運(yùn)用ECDSA?

以特幣為例,具體流程如下圖所示。

交易的模塊分為:交易輸入和交易輸出,一筆交易由多個(gè)輸入或者多個(gè)輸出組成。

交易輸入代表付款信息,交易輸出代表收款信息。當(dāng)然里面還會(huì)有付款金額,付款金額的字段是在交易輸出里面顯示的。

這種交易類(lèi)型和我們正常理解的交易是非常類(lèi)似的,其資金的流向是從交易輸入流向交易輸出,即從付款人流向收款人。

圖的右邊有一個(gè)虛線(xiàn)的框,里面的 ScriptSig 是一個(gè)腳本簽名,這個(gè)字段屬于交易輸入。同理,ScriptPubKey屬于交易輸出。腳本里面包含一些數(shù)據(jù)和操作碼來(lái)支持這個(gè)腳本語(yǔ)言的運(yùn)行。

ScriptSig  和 ScriptPubKey  可以直觀(guān)的用中文解釋為:解鎖腳本和鎖定腳本。

為什么 ScriptSig 又叫解鎖腳本呢?是因?yàn)?ScriptSig 在之前相關(guān)連接的交易輸出里面 鎖定了一些資金。

如果張三要花費(fèi)之前已有的 Token,也就是要花費(fèi)一個(gè)未花費(fèi)的交易輸出,那么其需要在另一筆交易里面 構(gòu)造一筆交易輸入,在這個(gè)交易輸入里面 會(huì)設(shè)置簽名字段和公鑰,以此證明張三有資格花費(fèi) 未花費(fèi)的交易輸出。

這種情況叫做解鎖腳本,即把之前已有的資金打開(kāi)進(jìn)行使用。

這個(gè)過(guò)程中,解鎖腳本里面有兩個(gè)字段數(shù)據(jù),<sig> 和 <PubK>(PubKey的簡(jiǎn)寫(xiě))。這兩個(gè)字段分別代表:簽名和公鑰。兩者由使用者提供,用以解決阻礙。

鎖定腳本里面也有一些字段和操作碼:DUP 是復(fù)制操作碼;HASH160 是哈希操作碼;<PubkHash> 是字段;EQUALVRTIFY 是驗(yàn)證操作碼;CHECKSIG 也是驗(yàn)證操作碼。

其整體意思是:執(zhí)行復(fù)制——進(jìn)行哈希——執(zhí)行字段——驗(yàn)證是否相等——校驗(yàn)簽名是否正確。

在驗(yàn)證簽名的環(huán)節(jié),就會(huì)調(diào)用ECDSA里面的驗(yàn)簽算法。

如何使用ECDSA

 我們知道了簽名在交易里面的具體使用位置,那么 ScriptSig 和 ScriptPubKey 這兩個(gè)腳本語(yǔ)言,是如何執(zhí)行,以及在執(zhí)行的過(guò)程當(dāng)中如何使用 ECDSA 呢?

如上圖所示,這里會(huì)將兩個(gè)腳本語(yǔ)言進(jìn)行堆棧處理,即所有字段和操作碼全部羅列在右邊,解鎖腳本里面有2個(gè),鎖定腳本里面有5個(gè)。

第一步,將第一個(gè)字段 <sig>  解鎖,置于堆棧的底部;

第二步,向右移動(dòng)一格,將 <PubK>  解鎖推送至堆棧頂部,置于 <sig>  的上面;

第三步,DUP 是復(fù)制操作碼,它會(huì)將剛剛解鎖腳本里面的 <PubK> (公鑰)進(jìn)行復(fù)制,此時(shí)會(huì)有兩個(gè) <PubK>,結(jié)果被推送至堆棧頂部;

第四步,HASH160 將復(fù)制的公鑰進(jìn)行哈希,使之變成 <PubKHash>, 公鑰哈希;

第五步,EQUALVRTIFY 操作碼將 PubKHash 和用戶(hù)的 PubKHash 對(duì)比,如果一致,則都被移除,然后繼續(xù)執(zhí)行(這里是為了對(duì)公鑰進(jìn)行認(rèn)證,來(lái)表明公鑰或者地址是否相同);

如果第五步匹配的話(huà),繼續(xù)執(zhí)行第六步——驗(yàn)證簽名,這里就用到了 ECDSA,也是交易中很關(guān)鍵的一步。

在圖中會(huì)看到,在執(zhí)行最后一個(gè)操作碼的時(shí)候,堆棧里面有兩個(gè)字段。

此時(shí) CHECKSIG 操作碼會(huì)核查簽名 <sig>  是否與公鑰的 <sig> 匹配,如果匹配,則會(huì)在頂部顯示 TRUE,如果不匹配會(huì)顯示 FLOSE。

如果返回值是TRUE 的話(huà),此時(shí)發(fā)送者也表明了其對(duì)發(fā)送 Token 的所有權(quán)和使用權(quán)。

以上就是橢圓曲線(xiàn)數(shù)字簽名(ECDSA)在區(qū)塊鏈中的主要應(yīng)用位置和場(chǎng)景。

    本文為澎湃號(hào)作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀(guān)點(diǎn),不代表澎湃新聞的觀(guān)點(diǎn)或立場(chǎng),澎湃新聞僅提供信息發(fā)布平臺(tái)。申請(qǐng)澎湃號(hào)請(qǐng)用電腦訪(fǎng)問(wèn)http://renzheng.thepaper.cn。

            查看更多

            掃碼下載澎湃新聞客戶(hù)端

            滬ICP備14003370號(hào)

            滬公網(wǎng)安備31010602000299號(hào)

            互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006

            增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:滬B2-2017116

            ? 2014-2025 上海東方報(bào)業(yè)有限公司

            反饋
            白凤凰博彩通| 百家乐路单破解软件| 诚信真人博彩网站| 百家乐有好的投注法吗| 大发888游戏下载平台| 百家乐官网bp| 镇远县| 威尼斯人娱乐城老品牌lm0| 尊龙百家乐官网娱乐城| 齐博线上娱乐| 网上赌百家乐被抓应该怎么处理| 百家乐官网六合彩3535| 优博网| 大发888官网df888| 百家乐任你博赌场娱乐网规则| 郑州百家乐官网的玩法技巧和规则| 大发888赌博网站大全| 百家乐官网牡丹娱乐城| 澳门百家乐官网下路写法| 顶尖娱乐| e利博娱乐城开户| 二八杠棋牌| 百家乐桌布小| 真博百家乐官网的玩法技巧和规则 | 百家乐隔一数打投注法| 百家乐官网公式分析| bet365备用网址b365etbyty| 威尼斯人娱乐城进不了| 百家乐投法| 百家乐赌博平台| 玩百家乐去哪个平台好| 百家乐投注翻倍方法| 百家乐胜率在哪| 网上百家乐玩法| 赌百家乐官网赢的奥妙| 百家乐官网能作弊吗| 大发888官网游戏平台| 威尼斯人娱乐棋牌平台| 威尼斯人娱乐城老lm0| 大发888资讯网007| 丹东棋牌网|