微觀地看,每一個區塊鏈中的交易都是一個狀態轉換函數,以太坊白皮書就用“以太坊狀態轉換函數”(Ethereum state transition function)來討論在區塊鏈上一個交易的進行過程。幾乎所有的區塊鏈都是采用這一設計,每一個新區塊和它之前的所有區塊一起形成了一個新的狀態,如此重復、持續下去。在確認之后,之前的狀態就不可篡改,即不可隨意更改。UTXO(未使用的交易輸出)是與這種狀態的設計相對應的。
參考資料:《區塊鏈:技術驅動金融》中相應的討論,及文章“比特幣和以太坊的記賬方式——UTXO 和賬戶余額”(黃世亮/文)。
3) 當交易被區塊鏈確認后,Alice 的 UTXO 就變成了 0。而在Bob的地址中就多了一個 UTXO,數量是 12.5。這里簡化了交易過程,只討論了將上一個交易的輸出全部轉帳的情況。如果試圖轉出上一個交易的輸出的一部分比特幣,則要進行略復雜的處理。
按照比特幣系統的設計,比特幣交易還要遵循一個原則:每一次交易的輸入值都必須全部花掉,不能只花掉部分。比如,我要轉出比特幣給你的錢包地址中只有 8 個比特幣,那么很簡單,我發起一個交易,把這 8 個比特幣轉到你的錢包地址中,我簽名確認這個交易。但假如我的錢包地址中有 25 個比特幣,那我發起的交易就不是轉給你 8 個比特幣,然后自己的錢包地址中還剩下 17 個比特幣。這時,我發起的交易是:從我的錢包地址中轉 8 個比特幣給你,同時轉 17 個比特幣給我的同一地址。
新聞熱點
疑難解答