a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 專題 > 區(qū)塊鏈 > 正文

比特幣交易是如何實現(xiàn)可編程的

2020-02-25 19:27:44
字體:
供稿:網(wǎng)友

  大家都有轉(zhuǎn)過賬,每筆交易是這樣的:張三賬上減¥200,李四賬上加¥200。

  在比特幣區(qū)塊鏈中,交易不是這么簡單,交易實際是通過腳本來完成,以承載更多的功能個,這也是為什么比特幣被稱為是一種“可編程的貨幣”。

  本文就來分析一下交易是如何實現(xiàn)可編程的。

  未花費的交易輸出(UTXO)

  先引入一個概念:未花費的交易輸出——UTXO(Unspent Transaction Output)

  其實比特幣的交易都是基于UTXO上的,即交易的輸入是之前交易未花費的輸出,這筆交易的輸出可以被當做下一筆新交易的輸入。

  挖礦獎勵屬于一個特殊的交易(稱為coinbase交易),可以沒有輸入。 UTXO是交易的基本單元,不能在分割。 在比特幣沒有余額概念,只有分散到區(qū)塊鏈里的UTXO

  隨著錢從一個地址被移動到另一個地址的同時形成了一條所有權(quán)鏈,像這樣:

  比特幣腳本

  比特幣交易是首先要提供一個用于解鎖UTXO(用私鑰去匹配鎖定腳本)的腳本(常稱為解鎖腳本:Signature script),這也叫交易輸入,

  交易的輸出則是指向一個腳本(稱為鎖定腳本:PubKey script),這個腳本表達了:誰的簽名(簽名是常見形式,并不一定必須是簽名)能匹配這個輸出地址,錢就支付給誰。

  每一個比特幣節(jié)點會通過同時執(zhí)行這解鎖和鎖定腳本(不是當前的鎖定腳本,是指上一個交易的鎖定腳本)來驗證一筆交易,腳本組合結(jié)果為真,則為有效交易。

  當解鎖版腳本與鎖定版腳本的設(shè)定條件相匹配時,執(zhí)行組合有效腳本時才會顯示結(jié)果為真

  如最為常見類型的比特幣交易腳本(支付到公鑰哈希:P2PKH(Pay-to-Public-Key-Hash))組合是這樣:

  常見交易腳本驗證過程

  比特幣交易腳本語言是一種基于逆波蘭表示法的基于棧的執(zhí)行語言(不知道逆波蘭和棧的同學去翻大學數(shù)據(jù)結(jié)構(gòu)課本,你也可跳過這個部分)。

  比特幣腳本語言包含基本算數(shù)計算、基本邏輯(比如if…then)、報錯以及返回結(jié)果和一些加密指令,不支持循環(huán)。

  腳本語言通過從左至右地處理每個項目的方式執(zhí)行腳本。

  下面用兩個圖說明下常見類型的比特幣交易腳本驗證執(zhí)行過程:

  上圖為解鎖腳本運行過程(主要是入棧)

  上圖為鎖定腳本運行過程(主要是出棧),最后的結(jié)果為真,說明交易有效。

  交易分析

  實際上比特幣的交易被設(shè)計為可以納入多個輸入和輸出。

  交易結(jié)構(gòu)

  我們來看看完整的交易結(jié)構(gòu),

  交易的鎖定時間定義了能被加到區(qū)塊鏈里的最早的交易時間。在大多數(shù)交易里,它被設(shè)置成0,用來表示立即執(zhí)行。 如果鎖定時間不是0并且小于5億,就被視為區(qū)塊高度,意指在這個指定的區(qū)塊高度之前,該交易不會被包含在區(qū)塊鏈里。 如果鎖定時間大于5億,則它被當作是一個Unix紀元時間戳(從1970年1月1日以來的秒數(shù)),并且在這個指定時間之前,該交易不會被包含在區(qū)塊鏈里。

  交易的數(shù)據(jù)結(jié)構(gòu)沒有交易費的字段,交易費通過所有輸入的總和,以及所有輸出的總和之間的差來表示,即:

  交易費 = 求和(所有輸入) - 求和(所有輸出)

  交易輸入結(jié)構(gòu)

  剛剛我們提過輸入需要提供一個解鎖腳本,現(xiàn)在來看看一個交易的輸入結(jié)構(gòu):

  我們結(jié)合整個交易的結(jié)構(gòu)里看輸入結(jié)構(gòu)就是這樣子:

  交易輸出結(jié)構(gòu)

  剛剛我們提過輸出是指向一個解鎖腳本,具體交易的輸出結(jié)構(gòu)為:

  我們結(jié)合整個交易的結(jié)構(gòu)里看輸出結(jié)構(gòu)就是這樣子:

  交易哈希計算

  在此前我們講到過區(qū)塊結(jié)構(gòu),區(qū)塊結(jié)構(gòu)包含多個交易的哈希。

  那么交易哈希是怎么計算的呢?

  1.交易結(jié)構(gòu)各字段序列化為字節(jié)數(shù)組

  2.把字節(jié)數(shù)組拼接為支付串

  3.對支付串計算兩次SHA256 得到交易hash

  現(xiàn)在是不是對完整的交易到區(qū)塊有了更清晰的認識。

  智能合約雛形 - 應(yīng)用場景說明

  由于交易是通過腳本來實現(xiàn),腳本語言可以表達出無數(shù)的條件變種。

  比特幣的腳本目前常用的主要分為兩種,一種是常見的P2PKH(支付給公鑰哈希),另一種是P2SH(Pay-to-Script-Hash支付腳本哈希)。

  P2SH支付中,鎖定腳本被密碼學哈希所取代,當一筆交易試圖支付UTXO時,要解鎖支付腳本,它必須含有與哈希相匹配的腳本。

  這里不展開技術(shù)細節(jié),下面說明一些應(yīng)用場景,以便大家有更直觀的認識。

  ·多重簽名應(yīng)用

  合伙經(jīng)營中,如只有一半以上的的股東同意簽名就可以進行支付,可為公司治理提供管控便利,同時也能有效防范盜竊、挪用和遺失。

  用于擔保和爭端調(diào)解,一個買家想和他不認識或不信任的某人交易,在一般情況交易正常進行時,買家不想任何第三方參與。那交易雙方可以發(fā)起支付,但如果交易出現(xiàn)問題時,那第三方就可以根據(jù)裁定,使用自己的簽名和裁定認可的一方共同簽名來兌現(xiàn)這筆交易。

  ·保證合同

  保證合同是建造公眾商品時的集資辦法,公眾商品是指一旦建成,任何人都可以免費享受到好處。標準的例子是燈塔,所有人都認同應(yīng)該建造一個,但是對于個人航海者來說燈塔太貴了,燈塔同時也會方便其他航海者。

  一個解決方案是向所有人集資,只有當籌集的資金超過所需的建造成本時,每個人才真正付錢,如果集資款不足,則誰都不用付錢。

  ·依靠預(yù)言

  假如老人想讓他孫子繼承遺產(chǎn),繼承時間是在他死后或者在孫子年滿18歲時(也是一個帶鎖定時間交易),無論哪個條件先滿足,他的孫子都可以得到遺產(chǎn)。

  因為比特幣節(jié)點可依靠預(yù)言對死亡條件進行判斷,預(yù)言是指具有密鑰對的服務(wù)器,當用戶自定義的表達式被證明是真的,它能按照要求對交易簽名。

  相信隨著區(qū)塊鏈的普及,會對未來的交易模式和商業(yè)結(jié)構(gòu)帶來巨大的影響。不過由于比特幣的腳本語言不是圖靈完備的,交易模式依舊有限,后續(xù)我們會繼續(xù)豐富其內(nèi)容。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人在线观看免费视频 | 色噜噜网站 | 91激情在线 | 久久综合九九 | 欧美激情精品 | 欧美寡妇偷汉性猛交 | 成人情趣视频 | 91精品国产色综合久久不卡98口 | 在线国产区 | 91精品国产综合久久久蜜臀粉嫩 | 国产精品视频不卡 | 成人免费一区二区三区 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 久久国产一区二区三区 | 日韩中文字幕一区二区 | 欧美一级全黄 | 永久看片 | 国产精品99久久久久久久久久久久 | 日韩成人在线播放 | 亚洲高清免费 | 国产高清精品在线 | 国偷自拍 | 亚洲精品一区二区 | 欧美日韩在线免费 | 中文字幕一区二区三 | 久久人人爽人人爽人人片av不 | 欧美 国产精品 | 天天操夜夜拍 | 视频精品一区二区三区 | 久久久精| 一区二区不卡视频在线观看 | 9久9久9久女女女九九九一九 | 日韩在线精品 | 在线中文字幕视频 | 在线观看成人小视频 | 久久精品国产免费 | 免费一级淫片aaa片毛片a级 | 欧美色综合 | 黄页网址免费观看 | 国产91精品一区二区绿帽 | 精品福利一区二区 |