精品欧美无遮挡一区二区三区在线观看,中文字幕一区二区日韩欧美,久久久久国色αv免费观看,亚洲熟女乱综合一区二区三区

        ? 首頁 ? 百科知識 ?交易輸出和輸入

        交易輸出和輸入

        時間:2023-12-20 百科知識 版權(quán)反饋
        【摘要】:比特幣交易的基本結(jié)構(gòu)單元是未花費輸出,或者被稱為UTXO,UTXO是一個不可拆分的比特幣結(jié)構(gòu),鎖定一個特定的所有者,記錄在區(qū)塊鏈上,并被全網(wǎng)看作一個貨幣單元。這樣,一個用戶的比特幣資金可能會以UTXO的形式分散存放在數(shù)百個交易和區(qū)塊上。比特幣能夠分割到小數(shù)點后8位,被稱作“聰”。它們通過引用交易哈希和UTXO在區(qū)塊鏈中的順序號指向一個特定的UTXO。為了花費UTXO,交易輸入需要包含解鎖腳本以滿足UTXO設(shè)置的花費條件。

        比特幣交易的基本結(jié)構(gòu)單元是未花費輸出,或者被稱為UTXO,UTXO是一個不可拆分的比特幣結(jié)構(gòu),鎖定一個特定的所有者,記錄在區(qū)塊鏈上,并被全網(wǎng)看作一個貨幣單元。比特幣網(wǎng)絡(luò)跟蹤數(shù)以百萬計的所有有效(未花費)UTXO。當一個用戶接收到比特幣,金額就以UTXO的形式記錄在區(qū)塊鏈上。這樣,一個用戶的比特幣資金可能會以UTXO的形式分散存放在數(shù)百個交易和區(qū)塊上。實際上,沒有任何東西會去記錄一個比特幣地址或者賬戶的余額,只有分散的UTXO,鎖定到特定的所有者。用戶比特幣賬戶余額的概念是錢包應(yīng)用軟件從傳統(tǒng)應(yīng)用中繼承而來的。錢包軟件通過掃描區(qū)塊鏈,收集所有屬于這個用戶的UTXO,以此來統(tǒng)計用戶的余額。

        一個UTXO可以由任意倍的“聰”構(gòu)成,就像美元可以被分割為小數(shù)點后兩位的“分”一樣。比特幣能夠分割到小數(shù)點后8位,被稱作“聰”。雖然UTXO可以是任意金額,但是一旦創(chuàng)建,它就是不可分割的,就如同一枚硬幣不能剖成兩半一樣。如果UTXO比交易所需要的金額大,它也需要一次性花完,超出的部分通過在交易中找零被索回。換句話說,如果你有20比特幣的UTXO,需要支付1比特幣,交易首先要將20比特幣的UTXO全部花完,那么就需要創(chuàng)建兩個輸出:一個是支付1比特幣給指定的接收人,另外一個則將19比特幣返回到你的錢包。結(jié)果是,絕大部分交易都需要創(chuàng)建找零輸出。

        如果一個顧客需要買一份1.5美元的飲料,她在她的錢包里找一些鈔票和硬幣以湊夠這筆費用。如果錢剛好夠用,顧客會選擇精確的零錢(比如1張1美元紙幣和2枚25分硬幣,或者6枚25分的硬幣)付款,不湊巧的話,她可能會掏出一張5美元的紙幣。如果給了店員太多的錢,比方說5美元,她會收到3.5美元的零錢,這些零錢將放回到她的錢包供以后的交易使用。

        類似地,比特幣交易不管多大金額,都需要從用戶的UTXO中進行創(chuàng)建。用戶無法將UTXO拆成兩半,就像不能把一張紙票撕成兩半來用一樣。用戶的錢包應(yīng)用自動從可用的UTXO中選取不同的金額,組合成大于或等于所需金額的交易。

        在真實生活中,比特幣應(yīng)用會使用不同的策略來滿足采購金額的要求:組合較小單位、找到精確的零錢,或者使用單一的大于交易金額的單元并進行找零。所有這些復(fù)雜的UTXO組合都是由用戶錢包軟件自動完成的,用戶看不到具體過程。只有當用戶以編程的方式自己從UTXO中創(chuàng)建原始交易,才需要關(guān)心這個選擇的過程。

        交易消費的UTXO叫作交易輸入,交易創(chuàng)建的UTXO叫作交易輸出。如此,比特幣價值不停地從一個所有者轉(zhuǎn)移到另一個所有者,形成一個消費和創(chuàng)建UTXO的交易鏈條。交易通過當前所有者的簽名解鎖并消費UTXO,通過將其鎖定到新的所有者的方式創(chuàng)建新的UTXO。

        對于輸出輸入鏈來說,也有一個例外,它是一種特殊類型的交易,叫作鑄幣(coinbase)交易,鑄幣交易是每個區(qū)塊的第一筆交易。這筆交易是礦工“贏家”放進區(qū)塊的,作為礦工挖到區(qū)塊的獎勵。這也就是比特幣系統(tǒng)在挖礦過程中發(fā)行新幣的過程。我們將在第8章介紹這部分內(nèi)容。

        每個比特幣交易都產(chǎn)生輸出,輸出將被記錄在比特幣賬本上。除一種情況外[參見本章中“數(shù)據(jù)輸出(OP_RETURN)”],幾乎所有這些輸出都創(chuàng)建可使用的比特幣,被稱為UTXO,這些UTXO會被全網(wǎng)識別,并可被新的所有者在將來的交易中花費。向某人發(fā)送比特幣就是創(chuàng)建一個UTXO并注冊到他的地址上,隨后他就可以花費這筆UTXO。

        UTXO將被所有完全客戶端,通過其維護在內(nèi)存中的數(shù)據(jù)庫的方式進行跟蹤,這個數(shù)據(jù)庫叫作UTXO集合或者UTXO池。新交易將從UTXO集合中消費(花費)一個或多個輸出。

        交易輸出包含兩部分:

        ●比特幣金額,“聰”的任意倍數(shù),“聰”是比特幣的最小單位。

        ●鎖定腳本,也被稱為“受限”,通過指定花費輸出必須符合某種條件,將這個金額鎖定。

        對于前面提到的鎖定腳本,其使用的交易腳本語言將在本章“交易腳本和腳本語言”中詳細討論。表5.2顯示一個交易輸出的結(jié)構(gòu)。

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

        在例5-1中,我們利用blockchain.info的API來查找特定地址的UTXO。

        運行腳本,我們將看到一個列表,其格式類似:“交易ID:UTXO的索引號,以‘聰’為單位計算的價值”。鎖定腳本在例5-2中的輸出并未顯示。

        交易輸出將特定金額(單位為“聰”)與特定的受限或者鎖定腳本相關(guān)聯(lián),明確了花費這個金額必須滿足的條件。在大多數(shù)情況下,鎖定腳本將輸出鎖定到一個特定的比特幣地址上,從而將這筆資金的所有權(quán)轉(zhuǎn)移給新的所有者。當愛麗絲向鮑勃咖啡店支付一杯咖啡的比特幣時,她的交易創(chuàng)建了一個0.015比特幣的輸出,鎖定到咖啡店的比特幣地址上。這個0.015比特幣的輸出記錄在區(qū)塊鏈上,成為UTXO集合的一部分,也意味著在鮑勃的錢包上,這筆輸出已成為可使用余額的一部分。當鮑勃選擇花費這筆余額時,他的交易將解開這個受限,通過提供包含私鑰簽名的解鎖腳本對輸出進行解鎖。

        簡而言之,交易輸入是一個指向UTXO的指針。它們通過引用交易哈希和UTXO在區(qū)塊鏈中的順序號指向一個特定的UTXO。為了花費UTXO,交易輸入需要包含解鎖腳本以滿足UTXO設(shè)置的花費條件。解鎖腳本通常就是證明鎖定腳本中比特幣地址所有權(quán)的簽名。

        當用戶進行支付時,錢包通過選擇可用的UTXO創(chuàng)建一筆交易。舉例來說,為了創(chuàng)建一筆0.015的支付交易,錢包應(yīng)用可能會選擇一個0.01的UTXO和一個0.005的UTXO進行組合,以匯總成交易所需金額。

        在例5-3中,我們使用一個“貪婪”算法,選擇可用UTXO來創(chuàng)建一個特定支付金額的交易。在例子中,可用UTXO以常量數(shù)組的形式提供,但在現(xiàn)實中,可用的UTXO通常需要通過RPC訪問比特幣核心或者其他第三方API,就像在例5-1中看到的那樣。

        如果不帶參數(shù)運行select-utxo.py腳本,它會嘗試構(gòu)建一個UTXO集合(包含找零)來支付55000000聰(0.55比特幣)。如果提供一個目標支付金額作為參數(shù),腳本將選擇UTXO來創(chuàng)建指定金額的支付。在例5-4中,我們執(zhí)行腳本,并嘗試創(chuàng)建一個0.5比特幣(50000000聰)的支付。

        一旦UTXO選定后,錢包應(yīng)用便開始創(chuàng)建包含每個UTXO簽名的解鎖腳本,使它們滿足鎖定腳本的條件,從而可以花費。錢包應(yīng)用加入這些UTXO的引用和解鎖腳本作為交易輸入。表5.3顯示了交易輸入的結(jié)構(gòu)。

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

        大多數(shù)交易包含交易費用,提供給為比特幣網(wǎng)絡(luò)安全做出貢獻的礦工作為報酬。礦工挖礦、收集費用和獎勵將在第8章詳細討論。本節(jié)主要研究交易費用是如何包含進典型交易的。大多數(shù)錢包軟件會計算并自動包含交易費用。但是如果你使用程序創(chuàng)建交易,或者使用命令行界面,就必須手工計算并包含這筆費用。

        通過在每筆交易中包含一小筆費用,可以形成令交易被加入下一區(qū)塊的激勵,也能成為對“垃圾”交易和系統(tǒng)濫用的反激勵措施。礦工挖出新區(qū)塊,將交易記錄到區(qū)塊鏈上,并收集交易費用。

        交易費用基于交易大小進行計算,以千字節(jié)為單位,而不是基于交易價值計算。總的來說,交易費用是基于網(wǎng)絡(luò)中的市場力量來設(shè)置的。礦工們基于不同的規(guī)則包括交易費用,對交易的優(yōu)先級進行排序,在一定條件下,他們也免費處理交易。交易費用影響交易處理的優(yōu)先級,也就是說,含有足夠費用的交易更有可能被包含進最近的下一個區(qū)塊,而費用不足或者沒有費用的交易就可能被延遲,并遵循盡量處理的原則在后面的區(qū)塊中被包含,或者干脆就得不到處理。交易費用不是必需的,沒有費用的交易最終可能也會被處理;但是附加一定費用會提高處理的優(yōu)先級。

        隨著時間推移,交易費用的計算方式,以及它對交易優(yōu)先級的影響也在變化。最初,交易費用是固定的,是網(wǎng)絡(luò)中的一個常量。慢慢地,費用結(jié)構(gòu)逐漸放寬,以便讓基于網(wǎng)絡(luò)容量和交易數(shù)量的市場力量對其產(chǎn)生影響。當前最小交易費用固定為0.0001比特幣或者每千字節(jié)0.1毫比特,這也是最近剛從1毫比特降到這個值的。大多數(shù)交易均小于1千字節(jié),但是對于有多個輸入和輸出的交易,就會更大一些。在將來的比特幣協(xié)議修訂版中,錢包應(yīng)用軟件可能會統(tǒng)計分析近期交易的平均費用,從而計算合理的交易費用并附加到交易中。

        當前礦工基于交易費用對交易優(yōu)先級進行排序,并打包進區(qū)塊的算法,將會在第8章中詳細介紹。

        交易的數(shù)據(jù)結(jié)構(gòu)中并沒有費用字段。實際上,費用隱含在交易輸入?yún)R總和交易輸出匯總的差值中。交易輸入加總扣除所有輸出后,剩余的金額就成為交易費用,最終被礦工收集走。

        交易費用是隱含的,是輸入減輸出的差額。

        費用是交易中很容易讓人感到迷惑的因素,但也是一個必須弄懂的關(guān)鍵點。如果用戶自己創(chuàng)建交易,就必須確保不會因為疏忽而使用太少的輸入以此形成一筆很大的交易費用。也就是說,你必須計算所有的輸入,必要時創(chuàng)建找零,否則你將向礦工貢獻一筆巨額的小費!

        舉例來說,如果你使用一個20比特幣的UTXO來創(chuàng)建一筆1比特幣的支付交易,那么你必須包含一個19比特幣的找零輸出,以使資金回到你的錢包。否則,余下的19比特幣將被認定為交易費用,將你的交易含進區(qū)塊的礦工將收走這筆交易費用。雖然你的交易處理優(yōu)先級別提高了,而礦工也會因為收到一大筆交易費用而高興,但是這很可能并不是你所希望的。

        我們再來看看愛麗絲購買咖啡的過程,可以觀察到在實踐中這個流程是如何工作的。愛麗絲希望花費0.015比特幣購買一杯咖啡。為確保交易能快速得到處理,她想在交易中添加一些費用,比方說0.001比特幣,這意味著交易總費用是0.016比特幣。她的錢包軟件必須找到一些UTXO,加起來余額要大于等于0.016比特幣。當然,如有必要就創(chuàng)建找零。假設(shè)愛麗絲的錢包中有一筆0.2比特幣的可用UTXO。交易需要耗盡這個UTXO,并創(chuàng)建兩個輸出,一個是支付給鮑勃咖啡店0.015比特幣,另一個是回到愛麗絲錢包的交易找零的0.184比特幣,還剩0.001比特幣未分配,就作為這筆交易隱含的費用。

        我們來看另一個場景。尤金妮婭——菲律賓的兒童慈善機構(gòu)負責人,已經(jīng)完成一項為學(xué)校兒童采購課本的募捐。她從世界各地接收到幾千筆的小額捐款,總共有50比特幣。因此,她的錢包里充滿了非常小額的UTXO。現(xiàn)在,她想從當?shù)匾粋€出版商那里采購幾百本課本,使用比特幣支付。

        當尤金妮婭的錢包應(yīng)用嘗試創(chuàng)建一個大額的支付交易時,它首先需要從大量小額的可用UTXO集合中抽取合適的UTXO作為交易輸入。這筆交易需要抽取超過100個小額UTXO作為輸入,而只有一個交易輸出,即付款給出版商。一個包含這么多輸入的交易,其大小將超過1千字節(jié),可能需要2000到3000字節(jié)。其結(jié)果是,交易費用必須高過網(wǎng)絡(luò)最低費用0.0001比特幣。

        尤金妮婭的錢包應(yīng)用會通過測算交易大小,并將其與每千字節(jié)的費用相乘,得到合適的交易費用。很多錢包軟件會對大筆交易多付一定的費用,以確保交易能被及早處理。付出更高的交易費用不是因為尤金妮婭花費的錢更多,而是因為她的交易更復(fù)雜,規(guī)模也更大——交易費用與交易涉及的比特幣價值無關(guān)。

        免責聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。

        我要反饋