位元幣交易是位元幣系統中最重要的部分。位元幣交易的本質是一種特殊設計的資料結構。而區塊鏈是記錄位元幣交易的總賬簿,每個位元幣交易都被記錄在區塊鏈上。這種資料結構的生命週期包括:被建立、被簽名加密、被廣播、被驗證、被新增到新建立的區塊。
位元幣交易這種資料結構包含6個字段:版本、輸入數量、輸入、輸出數量、輸出、時鐘時間。位元幣交易的基本單位是未使用交易輸出(utxo),乙個位元幣使用者在整個區塊鏈上的所有utxo之和即為其位元幣餘額(實際上位元幣的設計中並不存在「餘額」的概念)。在交易中,被消耗的utxo就是交易的輸入,產生的utxo就是交易的輸出。一筆位元幣交易通過所有者簽名來解鎖其當前擁有的utxo,通過新所有者位址來鎖定並建立新的utxo。此外還存在一種特殊的交易稱為coinbase交易,這是每個區塊中的首個交易,是作為挖礦獎勵產生的全新的位元幣給贏家礦工。
交易輸出包含三個字段:總量(8位元組),表示以聰為單位的位元幣值;鎖定指令碼尺寸(1~9位元組),用位元組表示後面的鎖定指令碼長度;鎖定指令碼(變長),定義了支付所需條件的指令碼。
交易輸入結構包含五個字段:交易(32位元組),指向交易包含的被花費的utxo的雜湊指標;輸出索引(4位元組),被花費的utxo的索引號,第乙個是0;解鎖指令碼尺寸(1~9個位元組),解鎖指令碼尺寸,用指令碼表示的後面的解鎖指令碼長度;解鎖指令碼(變長),乙個達到utxo鎖定指令碼中的條件的指令碼;序列號(4位元組),目前未被使用的交易替換功能,設成0xffffffff。
交易費可以當作為了包含交易到下乙個區塊的一種獎勵,也可以當作針對欺詐交易和任何種類的系統濫用的一種避免方法。交易費不是強制的,但是包含交易費能夠提高交易被處理的優先順序。交易的資料結構中沒有顯式包含交易費的字段,但是交易費=輸入之和-輸出之和。
交易鏈條類似於信用卡的透支消費。
位元幣錢包客戶端通過兩類指令碼來驗證交易:解鎖指令碼和鎖定指令碼。
鎖定指令碼用來鎖定位元幣交易的輸出,即交易後新的位元幣擁有者獲取了位元幣。解鎖指令碼是用來滿足先前鎖定指令碼所設定的鎖定條件的指令碼。位元幣客戶端會同時執行鎖定和解鎖指令碼來驗證一筆交易。對於每一筆位元幣交易的輸入,驗證軟體會先檢索輸入所指向的utxo,每個utxo中本身包含著定義其花費條件的鎖定指令碼。軟體再從輸入交易中讀取解鎖指令碼,同時執行這兩個指令碼。具體地,軟體採用從解鎖指令碼中複製而來的資料放入主堆疊中和解鎖指令碼一起執行,如果執行結果為真,則這個輸入就是乙個對utxo的有效授權,這使得utxo被標記為「已使用」,並從utxo集中被移除。考慮指令碼在主堆疊中的執**況,如果指令碼執行完畢後堆疊頂部結果為真(任何非零值)或執行後堆疊內為空,則交易有效;如果指令碼執行完後堆疊頂部結果為假或者執行被操作符禁止(op_verify op_return)或者有條件終止(op_endif),則交易無效。
(未完待續)
位元幣交易簽名(真)
本文介紹位元幣的交易簽名和utxo 位元幣和以太坊最大的區別是位元幣發起交易是基於utxo unspent transaction output 說utxo大家可能聽不懂,但是我們來親自籤一筆交易就會明白了 首先需要依賴包 const bitcoin require bitcoinjs lib 要簽...
位元幣UTXO交易模型
因為位元幣網路有個天然的問題 分叉問題,總是可能出現多個位元幣礦工挖出合法區塊,然後在鏈上產生分叉。在這個時候位元幣有一條規則 多條分叉鏈出現時,最長鏈 積累工作量最多的鏈 是有效的。如果你挖出一條比現有的誠實鏈更長的攻擊鏈,那大家就會承認你的攻擊鏈是有效的,誠實鏈會被作廢。這個時候就會產生雙花問題...
位元幣今日行情如何?怎麼進行位元幣交易?
自上週 迎來單邊拉公升後,細心的朋程式設計客棧友可以發現這一輪拉公升伴隨的量能釋放並不及預期,這和近期defi死灰復燃 專案更新迭代脫不了關係,市場大部分穩定資產都去參與流動性挖礦,導致市場流動性資金縮水。每一次大餅的拉公升給人的第一感覺就是後續量能不足,這也是提醒各位朋友現貨布局不必要太過著急的原...