Cartesi Rollups 推出— 事務管理器


Cartesi Rollups 推出— 事務管理器

在Cartesi,我們每天都會遇到與缺乏成熟工具相關的問題。區塊鍊是一項新興技術,軟件堆棧仍處於起步階段,並且發展速度很快。針對這些問題編寫臨時解決方案是不可擴展的。更好的方法是以可重用的方式在已建立的較低級別解決方案之上構建抽象。

Cartesi Rollups 推出— 事務管理器

必須指出的是,這些較低級別的解決方案是開源的,由社區開發。同樣,我們也從中受益,我們正在發布自己的內部工具,這可能會使社區受益。

之前,我們談到了通過State Fold 讀取智能合約的狀態,這是與區塊鏈交互的第一步。事務管理器是下一步。該工具解決了將交易發送到區塊鏈的問題。在很多方面,它是State Fold 的對偶:State Fold 讀取賬本的狀態,而交易管理器寫入賬本的狀態。

交易推動區塊鏈狀態向前發展。它們是區塊鏈之外的用戶對分類帳進行狀態更改的方式。常見的交易類型包括將Ether 轉移到其他地址、調用智能合約的方法(例如ERC20 代幣轉移)和實例化智能合約。在Cartesi 匯總的背景下,交易的示例包括向匯總添加輸入、進行狀態哈希聲明以及與防欺詐糾紛進行交互。

交易由用戶帳戶發送,也稱為外部擁有的帳戶。交易首先由用戶使用帳戶的私鑰進行簽名,然後廣播到網絡以包含在未來區塊的分類帳中。它們包含諸如“to”地址(可以是另一個用戶帳戶或智能合約)、有效載荷(包含我們要發送到智能合約的數據)、gas 價格以及我們要在Ethers 中轉移的價值等信息。

從礦工的角度來看,交易首先被添加到所謂的交易礦池中。交易礦池是每個以太坊節點的本地結構。它保存了礦工在創建新區塊時提取的一組交易。將它們視為要包含在區塊鏈中的交易隊列。然而,由於這個隊列是每個節點的本地隊列,它的排序由每個單獨的礦工決定。

一般來說,礦工首先選擇產生最高利潤的交易:交易添加到區塊鏈的順序與它們添加到礦池中的順序不對應。將交易添加到區塊鏈的盈利能力的合理啟發是交易的天然氣價格。因此,通常首先將具有較高gas 價格的交易添加到分類賬中。

從用戶帳戶發送到區塊鏈的交易必須按升序進行唯一編號,沒有間隙。此編號稱為隨機數,是交易的一部分。具有重複隨機數的交易是互斥的。如果交易礦池包含兩筆具有相同隨機數的交易,礦工只能將其中的一筆加入區塊鏈(一般是gas價格較高的一筆)。

在實踐中,當我們想要發送交易時,我們通過以太坊的JSON-RPC API 來完成,該API 通常封裝在一些高級庫中,例如web3.js。這個庫與一個遠程提供者通信,我們必須在使用它之前指定它。對這個提供商的信任是必不可少的:惡意提供商可以簡單地忽略我們的請求並拒絕廣播我們的交易。但是,它不能偽造或修改我們的交易:加密貨幣簽名可以確保這一點。

由於提供商必須與以太坊網絡通信,因此它必須運行一個以太坊節點。通常有兩種設置此提供程序的方法。第一個是自己做。我們選擇以太坊協議的一個實現,例如Geth 或Parity,並在某些機器上運行它。這個設置並不簡單。第二種方法是將其委託給某些外部提供商,例如Infura 或Alchemy。

確保將交易添加到區塊鏈說起來容易做起來難。管理事務存在多個陷阱和障礙,如果我們希望創建一個健壯的應用程序,就必須解決這些問題。

第一步是構建交易數據本身,然後對其進行簽名並將其發送到以太坊節點。部分交易數據是固定的,從某種意義上說,我們不能在不改變交易效果的情況下隨意更改它。其中的例子是“to”地址、有效載荷和以太值。它們是事務固有的,是“應用程序邏輯”的一部分,與“提交事務邏輯”分開。

交易數據的一些參數是外在的,因為它們(通常)不會改變交易的影響。這些例子是隨機數和天然氣價格。它們不是應用程序邏輯的一部分,從某種意義上說,純粹是官僚主義的。

然而,必須謹慎選擇它們以確保我們的轉換被添加到區塊鏈中:錯誤的隨機數將導致交易永遠不會被添加,並且指定一個低的gas 價格會阻塞用戶帳戶。即便如此,天然氣價格也不是一成不變的,會受到劇烈波動的影響。如果gas 價格飆升,以看似合理的gas 價格提交交易可能仍然會阻塞用戶帳戶,指定太高的gas 價格會浪費金錢。

以穩健的方式發現正確的隨機數並不像最初看起來那麼簡單。獲取nonce 的規範方法是計算該用戶帳戶添加到區塊鏈的交易數量。如果用戶不經常發送交易,在發送下一個交易之前總是等待前一個交易被挖礦,這很有效。否則,我們可能會遇到重複的隨機數:交易礦池可能包含更多未被計算在內的交易。

更糟糕的是,交易可能會被任意從交易礦池中刪除。除了可能錯過重要的反應之外,被丟棄的交易可能會毒害用戶帳戶:如果隨機數編號存在間隙,則在填補間隙之前,帳戶將無法包含進一步的交易。

很明顯,我們不能僅僅提交交易並期望將其添加到分類賬中。如果我們想編寫一個健壯的應用程序,應用程序和提供者之間必須有一些簿記邏輯。這種簿記邏輯還必須對進程重新啟動具有彈性:我們必須能夠以全新的方式打開我們的應用程序並使其正常運行。

交易管理器是我們將交易穩健地提交到區塊鏈的解決方案。它可用作Rust 庫(用Rust 的說法是一個板條箱),並處理所有這些簿記邏輯。

要通過管理器提交交易,我們必須首先指定內在的交易數據和提交策略。該策略用於確定天然氣價格。經理將持續監控區塊鍊和天然氣價格,並將按照提交策略重新提交價格過時的交易。

如果一個事務從事務礦池中被刪除,它會被管理器自動重新提交。 Nonce 也是自動管理的。當交易第一次提交時,管理器會為交易分配正確的隨機數,在重新提交交易時重用隨機數。如果交易提交的策略比以前的交易更高,則管理器會將舊交易提升到更新的策略。這樣做是為了確保舊的定價過低的交易不會阻塞用戶帳戶。所有這些都是並發處理的,不會阻塞主應用程序。

我們的經理也可以嘗試取消已發送的交易。取消交易不是保證的事情。一旦提交到區塊鏈,交易就無法撤銷。但是,當它們仍在交易礦池中時,我們可能會嘗試覆蓋它們。訣竅包括提交一個什麼都不做的新交易(比如向自己轉移零以太),但與我們希望取消的交易具有相同的隨機數,並且具有更高的汽油價格。這樣,礦工就有可能將具有較高gas 價格的交易而不是原始交易包含在內,從而有效地取消原始交易。用戶仍然需要支付交易的基本費用。

我們正在發布交易管理器的第一個版本。管道中有多項改進,我們渴望在他們準備好時與社區分享,包括與EIP-1559 相關的調整。

關於Cartesi

Cartesi 是一個多鏈第2 層基礎設施,它允許任何軟件開發人員使用他們習慣的主流軟件工具和語言創建智能合約,同時實現大規模的可擴展性和低成本。 Cartesi 結合了開創性的虛擬機、樂觀匯總和側鏈,徹底改變了開發人員創建區塊鏈應用程序的方式。

關於中本聰

c6ea0c3794492f30883e516d39b2597a?s=90&d=blank&r=g Cartesi Rollups Rollout — 事務管理器

活動家/記者,前作家– 我們正在改變,思想釋放,食肉動物,其他。目前為– Activist Post 和Bitboy 加密貨幣寫作。不是右翼或左翼非政治性的。我關心真相(CATS.) 加密貨幣愛好者,我在2010-2011 年開採並損失了100 多個BTC。我與Bitboy、SoMee、CEEK、Presearch 和W3BT aka FMW Media Group 合作。大多數不是雞巴的人的朋友。只是一隻很酷的貓。

資訊來源:由0x資訊編譯自BITBOYCRYPTO。版權歸作者Catoshi Nakamoto所有,未經許可,不得轉載

Total
0
Shares
Related Posts