0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

比特幣交易腳本詳解

lviY_AI_shequ ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-06-22 09:59 ? 次閱讀

經(jīng)過(guò)第五章的學(xué)習(xí),其實(shí)對(duì)區(qū)塊鏈有一個(gè)更深的了解,就是,不僅區(qū)塊前后相連,而且交易和交易之間也是相連,一個(gè)普通交易的輸入部分總是前面某個(gè)交易的輸出UTXO。在《比特幣 (1):傳統(tǒng)貨幣和比特幣的區(qū)別》中看到的相連,就是普通交易之間的相互連接;在《比特幣 (2):區(qū)塊鏈的大致結(jié)構(gòu)》中看到的相連,是區(qū)塊之間的相互連接。

假設(shè)你已經(jīng)閱讀完第五章,對(duì)于為啥需要腳本也比較清楚了。首先明確一下,交易輸入其實(shí)是之前某個(gè)交易的某個(gè)輸出UTXO,是按照之前那個(gè)交易的Hash值加上對(duì)應(yīng)輸出在該交易中的位置標(biāo)記的。一旦UTXO被選中,錢包會(huì)為每個(gè)UTXO生成包含簽名的解鎖腳本,換句話說(shuō),每個(gè)解鎖腳本都對(duì)應(yīng)的是一個(gè)之前某個(gè)輸出的某個(gè)UTXO。

對(duì)于解鎖腳本加上鎖定腳本拼在一起,按照棧的方式運(yùn)算,這個(gè)書中第五章已經(jīng)說(shuō)得很明確了,最重要的是棧操作的最后一步:

棧內(nèi)是操作符是CHECKSIG

其實(shí)CHECKSIG很簡(jiǎn)單,就是基于一定的規(guī)則,看看之前錢包生成的正不正確。CHECKSIG的步驟肯定和生成的過(guò)程相同。我們來(lái)看看CHECKSIG的過(guò)程,其實(shí)也就知道了生成的過(guò)程。如下圖:

正如前面所述,正在檢查的這個(gè)解鎖腳本,是放在該交易下面的該輸入中,會(huì)對(duì)應(yīng)一個(gè)之前某個(gè)交易的某個(gè)輸出UTXO,那么假設(shè),之前這個(gè)交易叫 TxPrev,而當(dāng)前包含這個(gè)解鎖腳本的交易叫TxNew(即TxNew的某個(gè)輸入是該UTXO)。按照上圖中說(shuō)明的CHECKSIG的步驟(根據(jù)簽名類型SIGHASH_ALL對(duì)整個(gè)交易進(jìn)行驗(yàn)證):

1. 在棧中pop出

2. TxPrev中該UTXO對(duì)應(yīng)的輸出腳本,也即鎖定腳本,會(huì)有很多的操作系列,每個(gè)操作系列之間使用OP_CODESEPARATOR分隔。取這個(gè)腳本最后一個(gè)操作系列,也就是倒數(shù)第一個(gè)OP_CODESEPARATOR和腳本結(jié)束之間的部分(上圖與該邏輯不符合),取出來(lái)即為Subscript,注意該Subscript對(duì)應(yīng)的是TxPrev下面的一個(gè)輸出UTXO。

(3. 在Subscript中去掉簽名)

4. 在Subscript中移除OP_CODESEPARATORS

5. 之前從棧中彈出的,最后一個(gè)字節(jié)代表的是簽名類型,1是指SIGHASH_ALL,對(duì)整個(gè)交易進(jìn)行驗(yàn)證。一個(gè)字節(jié)沒有所謂的大小端問題。

6. 復(fù)制TxNew為TxCopy

7. 將交易TxCopy中的所有輸入中的解鎖腳本置為空(因?yàn)樯厦嬲f(shuō)過(guò),CHECKSIG是和生成的過(guò)程對(duì)應(yīng),生成的時(shí)候,該部分都沒有,所以驗(yàn)證的時(shí)候該部分肯定得去掉)

8. TxCopy中正在檢查的解鎖腳本位置,替換為經(jīng)過(guò)步驟4處理完的Subscript

9. 序列化TxCopy,添加4字節(jié)的簽名類型,即在步驟5中提到的簽名類型,因?yàn)樵?中是1個(gè)字節(jié),現(xiàn)在變成4個(gè)字節(jié),這時(shí)候才會(huì)涉及大小端問題,存為小端模式。得到的最終信息假設(shè)叫verifyThisStr。

10. 之前是個(gè)人錢包使用私鑰對(duì)SHA256(SHA256(verifyThisStr))進(jìn)行ECDSA加密的結(jié)果,現(xiàn)在已經(jīng)重新計(jì)算出來(lái)了verifyThisStr,其他人驗(yàn)證的時(shí)候,利用對(duì)應(yīng)的公開的公鑰,對(duì)進(jìn)行ECDSA解密,看是否與SHA256(SHA256(verifyThisStr))相同即可??!(反過(guò)來(lái)也是一樣的)

至此,交易腳本的驗(yàn)證過(guò)程結(jié)束。

這里面最重要的是:

1. 生成verifyThisStr的過(guò)程,確保了每次進(jìn)行加密解密的內(nèi)容都不一樣

2. 個(gè)人錢包使用用戶的私鑰進(jìn)行加密,其他人利用用戶公開的公鑰進(jìn)行解密

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 區(qū)塊鏈
    +關(guān)注

    關(guān)注

    112

    文章

    15565

    瀏覽量

    107623
  • 比特幣
    +關(guān)注

    關(guān)注

    57

    文章

    7006

    瀏覽量

    142317

原文標(biāo)題:區(qū)塊鏈系列--比特幣 (5):交易腳本詳解

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    究竟比特是什么

    12月5日央行等五部委宣布禁止金融機(jī)構(gòu)開展比特業(yè)務(wù),但表示比特交易作為一種互聯(lián)網(wǎng)上的商品買賣行為,普通民眾在自擔(dān)風(fēng)險(xiǎn)的前提下?lián)碛袇⑴c的自
    發(fā)表于 12-15 11:17

    比特交易所系統(tǒng)開發(fā)如何適應(yīng)海外市場(chǎng)?

    比特交易所系統(tǒng)開發(fā)如何適應(yīng)海外市場(chǎng)?近日央視攜《對(duì)話》欄目幫助電視機(jī)前的觀眾們更好的探尋區(qū)塊鏈?zhǔn)鞘裁?、?huì)為我們的生活帶來(lái)哪些改變、這項(xiàng)技術(shù)具體應(yīng)該如何應(yīng)用。目前大家對(duì)區(qū)塊鏈的技術(shù)非常關(guān)注,之前國(guó)內(nèi)
    發(fā)表于 05-28 14:55

    比特交易平臺(tái)排名情況

    國(guó)內(nèi)比特交易平臺(tái)哪個(gè)好,國(guó)內(nèi)十大比特交易平臺(tái)排名2017版:搞
    發(fā)表于 12-16 09:41 ?1.4w次閱讀

    比特是不是電子貨幣_(tái)比特怎么交易

    本文開始詳細(xì)的介紹了比特的特征,其次介紹了比特的幾個(gè)易平臺(tái)和分析了比特是不是電子貨幣,最后
    發(fā)表于 01-30 16:25 ?1.1w次閱讀

    比特交易網(wǎng)站哪個(gè)好?比特交易網(wǎng)站排名一覽

    比特早已分布在世界的各個(gè)角落,而如今想要獲取比特比以前更加困難了,據(jù)說(shuō),在國(guó)內(nèi)1枚比特現(xiàn)在
    發(fā)表于 05-29 16:01 ?2.5w次閱讀

    比特ETN代表著比特交易所交易基金的一個(gè)軟開端

    美國(guó)的投資者如果想在不購(gòu)買加密貨幣的情況下交易比特,就可以通過(guò)比特交易所交易票據(jù)(ETN)獲
    發(fā)表于 08-17 14:52 ?2372次閱讀

    比特OTC場(chǎng)外交易市場(chǎng)具有哪些特點(diǎn)?

    隨著各大交易所的關(guān)閉,嚴(yán)管之下,比特逐漸由場(chǎng)內(nèi)交易交易所)轉(zhuǎn)為場(chǎng)外交易。目前以社交群為載體的
    發(fā)表于 09-29 15:25 ?5093次閱讀

    比特期貨的交易模式及風(fēng)險(xiǎn)

    近期比特交易無(wú)論成交量還是價(jià)格似乎遠(yuǎn)遠(yuǎn)超出了我們的預(yù)期,更而甚者美國(guó)芝加哥商品交易所、芝加哥期權(quán)交易所、東京期貨
    發(fā)表于 10-23 14:45 ?1344次閱讀

    什么是灰塵比特交易

    在過(guò)去,粉塵交易對(duì)比特用戶來(lái)說(shuō)并不一定是個(gè)問題。然而現(xiàn)在,情況發(fā)生了變化,去年晚些時(shí)候費(fèi)用就比以往任何時(shí)候都高了,這就使得較小的價(jià)值交易發(fā)送起來(lái)變得更昂貴了。簡(jiǎn)而言之,一些開發(fā)商認(rèn)為
    發(fā)表于 12-21 11:42 ?1181次閱讀

    比特為什么要采用UTXO模型

    比特腳本是非圖靈完備的。比特使用自行定義的一種腳本進(jìn)行
    發(fā)表于 01-15 11:11 ?2536次閱讀
    <b class='flag-5'>比特</b><b class='flag-5'>幣</b>為什么要采用UTXO模型

    比特交易究竟是如何運(yùn)作的

    比特使用UTXO(未使用的交易輸出)模型,而不是賬戶/余額系統(tǒng)。這意味著區(qū)塊鏈并不直接跟蹤每個(gè)比特地址的
    發(fā)表于 04-06 09:00 ?6423次閱讀
    <b class='flag-5'>比特</b><b class='flag-5'>幣</b><b class='flag-5'>交易</b>究竟是如何運(yùn)作的

    比特交易的好處的有哪些

    你有沒有想過(guò)改變你的交易方式,用比特取代現(xiàn)金和銀行?如果你已經(jīng)想過(guò),而且你還沒有決定是否應(yīng)該采取下一步,比如說(shuō)緊接著在你的交易中全部使用數(shù)字加密貨幣,現(xiàn)在看看
    發(fā)表于 04-23 10:48 ?3455次閱讀

    比特腳本的應(yīng)用實(shí)例介紹

    比特一直以來(lái)都有一種機(jī)制,它可通過(guò)更復(fù)雜的策略(而不僅僅是單個(gè)密鑰)來(lái)使可花費(fèi):這就是腳本(Script)系統(tǒng)。雖然腳本主要用于單密鑰支
    發(fā)表于 09-10 11:16 ?1894次閱讀

    比特被頻繁用于非法交易的原因是什么

    比特價(jià)格暴漲,交易手續(xù)費(fèi)持續(xù)高昂,與比特功能相似,但交易速度和手續(xù)費(fèi)價(jià)格更佳的萊特
    發(fā)表于 11-11 10:10 ?3694次閱讀

    比特混合交易的好處是什么

    比特網(wǎng)絡(luò)上的交易是開放的。這意味著任何對(duì)此感興趣的人都可以查看分類帳并了解您的交易歷史。他們甚至可以知道你錢包里有多少比特
    發(fā)表于 03-08 11:34 ?638次閱讀

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品