真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何執(zhí)行Transactions

本文小編為大家詳細介紹“如何執(zhí)行Transactions”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“如何執(zhí)行Transactions”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供新安企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為新安眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。

Transactions是什么

我們講到了Libra是一個分布式賬本,存儲著賬本狀態(tài),從賬本狀態(tài)里面,我們可以獲取現(xiàn)在每一個賬戶的資金情況和存儲的相應(yīng)資源。

而這個賬本狀態(tài)就是通過執(zhí)行Transactions來進行改變的。

用戶定義的Transactions是通過Move來編寫的,目前來說Libra處于早期版本,只有有限的功能開放給Move語言(不如用戶不能自定義資源類型等),但是隨著Libra的發(fā)展,我相信Move語言將會得到更多的功能支持。

Transactions運行的基礎(chǔ)條件

在Libra中,我們運行Transactions,這里面包含著如下幾個基礎(chǔ)條件:

  1. 賬本的初始狀態(tài)。所有的驗證者節(jié)點都必須接受賬本的初始狀態(tài),并在該初始狀態(tài)之上進行后續(xù)的驗證操作。

    在賬本的初始狀態(tài)中,我們需要定義Libra的核心組件(比如: 賬戶的邏輯,交易的驗證,驗證者的選擇,Libra幣等),這些核心組件都是以Move modules的形式存在的。

    同樣的,要保證交易的執(zhí)行,我們還需要一個初始賬戶,和初始的驗證節(jié)點,這些都是需要在初始狀態(tài)中定義。

    為了簡便起見,我們假設(shè)賬本的初始狀態(tài)為空,然后通過執(zhí)行一個Transaction T0來生成上面提到的modules。注意這里的T0是一個特殊的交易,他和普通的交易不一樣,他只能通過配置來實現(xiàn)。

  2. 交易的確定性。Libra的所有交易都必須是確定的并且和重復(fù)發(fā)送的。就是說如果知道了給定交易的輸入,則必定能得到相同的輸出。

    前面的文章我也提到過函數(shù)式編程,這里的作用和函數(shù)式編程很像。交易沒有任何副作用。我們可以通過重新執(zhí)行交易的歷史記錄來得到和現(xiàn)在賬本狀態(tài)一樣的賬本。

  3. 可度量的。同其他區(qū)塊鏈一樣,為了防止DDOS攻擊,Libra引入了gas的概念。每個交易都必須花費一定的gas,這樣可以有效的阻止無效的交易產(chǎn)生。

    Libra的gas和其他的區(qū)塊鏈的gas有一點不同的是,Libra的gas只是用來減少系統(tǒng)在高負載的情況運行的可能性,對于正常交易來說,Libra的gas花費很少。

    gas包括gas價格和gas數(shù)目。驗證節(jié)點會優(yōu)先執(zhí)行g(shù)as價格高的交易,而丟棄gas價格低的交易,這樣就可以有效的防止系統(tǒng)在高負載的情況下運行。

    同樣的,我們也有一個最大的gas數(shù)目,如果交易執(zhí)行超過了gas的最大數(shù)目,則Libra虛擬機會停止執(zhí)行,交易結(jié)果不會寫入到賬本狀態(tài)中,但是會被記錄在交易記錄中。

  4. 資產(chǎn)特性。我們知道Libra幣是要與真實世界的金錢掛鉤的,所以Libra幣必須不能重復(fù),不能丟失,也不能未授權(quán)被使用。這些特征都是通過Move虛擬機來實現(xiàn)的。

Transactions的結(jié)構(gòu)

在Libra中,一個Transaction就是一個簽名過的數(shù)據(jù),它包含如下內(nèi)容:

  1. 發(fā)送者地址。交易發(fā)送者的地址,VM可以通過讀取該地址內(nèi)的LibraAccount.T資源來獲取該地址的序列號,認證密鑰和余額等信息。

  2. 發(fā)送者公鑰。和該公鑰相匹配的私鑰用來對交易進行簽名。上面提到的LibraAccount.T資源里面的認證密鑰就是該公鑰的hash值。

  3. 程序。程序是一個Move字節(jié)碼的腳本代碼,有可能還包括所需額參數(shù)列表。

  4. 最大gas數(shù)目。VM允許的最大gas數(shù)目。

  5. 序列號。 序列號是一個無符號整數(shù),每次交易后,賬戶的序列號都會加1。序列號主要用來防止重放攻擊。

執(zhí)行Transactions

執(zhí)行Transactions通常來說,有6個步驟。

  1. 檢查簽名。簽名主要檢查Transaction是否跟發(fā)送者的public key和實際數(shù)據(jù)相匹配。

  2. 運行prologue。運行prologue階段主要檢查交易的發(fā)送者(是否有足夠的Libra幣),該交易是否是一個重放交易。所有的功能都是通過LibraAccount模塊的prologue過程來實現(xiàn)的。

  3. 驗證交易腳本和模塊。VM會使用Move字節(jié)碼驗證器來驗證交易的腳本和模塊是不是有效的(類型安全,引用安全,資源安全等)。

  4. 發(fā)布模塊。程序里面的模塊都會被發(fā)布到交易發(fā)起者的賬戶中。注意:模塊的名字必須是唯一的,否則交易會失敗。

  5. 運行交易腳本。VM構(gòu)建腳本參數(shù),并運行交易腳本。如果交易成功,將會把交易和相關(guān)的事件寫入賬本狀態(tài)中。如果交易失敗,賬本狀態(tài)不會改變。

  6. 運行epilogue。 最后VM運行epilogue來計算相應(yīng)的gas并減掉相對應(yīng)的數(shù)值,并增加發(fā)送者賬戶的序列號。和prologue一樣,epilogue也是LibraAccount模塊的一個過程。

讀到這里,這篇“如何執(zhí)行Transactions”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文題目:如何執(zhí)行Transactions
文章網(wǎng)址:http://weahome.cn/article/pddpej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部