麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 專題 > 區塊鏈 > 正文

比特幣交易是如何實現可編程的

2020-02-25 19:27:44
字體:
來源:轉載
供稿:網友

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

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

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

  未花費的交易輸出(UTXO)

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

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

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

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

  比特幣腳本

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

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

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

  當解鎖版腳本與鎖定版腳本的設定條件相匹配時,執行組合有效腳本時才會顯示結果為真

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

  常見交易腳本驗證過程

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

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

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

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

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

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

  交易分析

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

  交易結構

  我們來看看完整的交易結構,

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

  交易的數據結構沒有交易費的字段,交易費通過所有輸入的總和,以及所有輸出的總和之間的差來表示,即:

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

  交易輸入結構

  剛剛我們提過輸入需要提供一個解鎖腳本,現在來看看一個交易的輸入結構:

  我們結合整個交易的結構里看輸入結構就是這樣子:

  交易輸出結構

  剛剛我們提過輸出是指向一個解鎖腳本,具體交易的輸出結構為:

  我們結合整個交易的結構里看輸出結構就是這樣子:

  交易哈希計算

  在此前我們講到過區塊結構,區塊結構包含多個交易的哈希。

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

  1.交易結構各字段序列化為字節數組

  2.把字節數組拼接為支付串

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

  現在是不是對完整的交易到區塊有了更清晰的認識。

  智能合約雛形 - 應用場景說明

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

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

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

  這里不展開技術細節,下面說明一些應用場景,以便大家有更直觀的認識。

  ·多重簽名應用

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

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

  ·保證合同

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

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

  ·依靠預言

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产大片全部免费看 | 久久99精品久久久久久236 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 日本xxxx视频 | 国产精品美女一区二区 | 超碰97在线人人 | 草草视频免费观看 | 国产亚洲综合一区二区 | 免费视频a | 免费黄色短视频网站 | 亚洲网站免费观看 | 国产午夜精品视频免费不卡69堂 | 日韩欧美动作影片 | 中文字幕在线观看视频一区 | 欧美成在人线a免费 | 韩国精品视频在线观看 | 国产一级爱c视频 | 中文字幕一区在线观看视频 | 色就色 综合偷拍区91网 | 91福利社在线 | 久草在线视频精品 | 国产系列 视频二区 | 亚洲午夜在线 | 性欧美极品xxxx欧美一区二区 | hd日本xxxx| 亚洲成人精品国产 | 亚洲一区二区三区日本久久九 | 草草视频在线 | 天天草天天干天天射 | 一区二区三区四区高清视频 | av在线免费观看国产 | 在线观看免费毛片视频 | 爱性久久久久久久 | 五月天堂婷婷 | tube69xxxxxhd| 91精品国产综合久久婷婷香蕉 | 日韩视频一区二区三区在线观看 | 毛片毛片| 玩偶姐姐在线观看免费 | 国产一国产一级毛片视频在线 | 色播久久 |