比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > OKB > Info

DAPP:一文了解以太坊交易可能經歷的8個狀態以及 Dapp 該如何應對

Author:

Time:1900/1/1 0:00:00

在本文中,我們將重點介紹以太坊上復雜的交易生命周期;開發者在這些情況下嘗試讓 dapp 提供理想的用戶體驗的挑戰;以及 dfuse 是如何幫助突破這些挑戰的。

每當一筆交易提交到以太坊網絡上時,它會經歷一系列相當復雜的狀態,而并非每個狀態轉換都是向前的——交易可能回滾到較早的狀態、可能被另一個交易替換、還可能完全分叉。(下文中會詳細描述交易的生命周期。)

在 dapp 中跟蹤交易的進程并為用戶提供良好的體驗是具有挑戰性的。如今,許多基于以太坊的 dapp 都可以提供吸引人但還是相對靜態的用戶體驗:應用能顯示某個時間點上的交易狀態,但必須通過刷新(點擊刷新或 dapp UI 定期刷新頁面)才能得到信息的更新。市面上有相對更動態的接口,但提供的數據粒度還是不夠細,或者/同時以高網絡流量為代價,在其底層區塊鏈節點上施加高負載。

接下來我們討論下造成這種情況的原因,以及如何以高效利用網絡和服務器的方式、細粒度的交易狀態更新在 dapp 中提供符合現代標準的、流暢的用戶體驗。

0N1 Force推出Web3盟友計劃:金色財經報道,NFT項目0N1 Force在社交媒體宣布推出Web3盟友計劃(Web3 Alley Program) ,旨在通過合作和共同成長培育一個強大的 web3 生態系統。該計劃將匯集資源來支持 Web3 生態系統,并未媒體、游戲、IP開發和NFT項目給予幫助同時增強 0N1 FORCE 及其合作伙伴的社區,目前該計劃對所有人開放,項目負責人、藝術家、創作者、品牌等均可提出申請。[2023/6/13 21:32:44]

當今的 Dapp 接口

每個 dapp 都需要向用戶顯示正在執行的交易的區塊鏈底層信息——無論是 Ether 轉賬、代幣轉賬還是智能合約調用,而當下的許多 dapp 的界面顯示這些信息的時候顯示的是區塊鏈在單個時間點上的狀態。

用戶在交易過程中經常需要更新信息(例如,知道轉賬什么時候完成了),因此 dapp 會在界面上放一個 “刷新” 按鍵(或定期自動為用戶刷新頁面),或者用戶需要直接點擊瀏覽器的刷新按鈕來獲取更新。

有些用戶體驗更成熟的 dapp 會向用戶顯示交易的動態更新。它們會在后臺輪詢 AJAX 請求,重復檢查其以太坊節點是否有更新,然后將更新發布到前端。這么做是非常復雜的,因為 dapp 必須進行大量 API 調用,查詢許多不同的數據源(包括區塊、內存池和網絡條件),從而才能從頭到尾的跟蹤交易的生命周期。

Maitri Capital推出加密量化交易基金,擬募資2.5億美元:5月20日消息,英國資產管理公司 Maitri Capital 宣布推出加密量化交易基金 Maitri Cento Quant Fund,該基金的融資目標為 2.5 億美元,當前正在等待在英國金融行為監管局注冊。Maitri Capital 聯合創始人 Thomas Caddick 表示,Maitri Cento Quant Fund 是一個機構級的投資工具,將采用機器學習建立量化交易模型并將專注于 30 種最具流動性的加密貨幣交易對。[2023/5/20 15:15:34]

這種處理方式會有弊端:要么交易的更新不頻繁、信息粒度大,導致用戶想去重復點擊“刷新”而去更快地獲取更新;或者 dapp 必須高頻輪詢區塊鏈,從而產生大量網絡流量,在底層區塊鏈節點上施加高負載。

為什么不使用基于鏈上事件的接口?

對于 dapp 開發人員,做靜態頁面或輪詢一直是僅可用的兩個選項,這反映了以太坊節點提供的 API 的性質。如果有一個基于鏈上事件的接口,可以接收推送到鏈上的交易狀態更新并實時反饋用戶,dapp 才能提供更好的用戶體驗——而標準的以太坊節點并不提供豐富的實時交易數據。

富達高管:對加密貨幣持謹慎態度但可為大客戶提供服務:金色財經報道,富達的一位高管周三對《金融新聞》表示,他們對放棄任何新的加密產品持謹慎態度,并將“謹慎行事”。富達國際歐洲區董事總經理Christian Staub表示,我們不是在敲桌子告訴大家買比特幣。但如果大客戶想要買入,我們現在可以提供。

富達公司曾經涉足過加密貨幣,這家資產管理公司在2021年12月推出了加拿大比特幣現貨ETF,在2022年2月為歐洲機構推出了實物比特幣ETP。

此前2022年4月報道稱,富達將允許與之合作的2.3萬名雇主在其401k投資組合中提供數字資產賬戶。它允許員工通過工作投資比特幣,并于2022年秋季推出。[2023/5/18 15:09:53]

以太坊節點確實提供了鏈上事件的流讀取功能,但功能有限,只能通過使用以太坊的 JSON-RPC 接口的 PUB/SUB 功能才可用(在使用 GraphQL 時不可用)。PUB/SUB 接口允許 dapp 接收一些事件類型的通知:

newHeads——每次新的區塊 header-hujt 附加到鏈上

logs——根據指定的條件過濾匹配包含在新導入的區塊中的日志

newPendingTransactions——進入待處理狀態并被節點中可用密鑰簽名的所有交易的哈希(而這種情況在公共節點上很少見)

Uniswap V3擬上線Polygon zkEVM,現處于提案階段:3月4日消息,Uniswap社區成員Jack Melnick發起提案,擬使Uniswap V3在PolygonzkEVM發布,建議授權Uniswap Labs代表社區將Uniswap的協議部署到稱為zkEVM的Polygon零知識以太坊虛擬機。

Uniswap在EVM兼容的ZKrollup上可用具有重要價值。Polygon zkEVM是一種新的zk-rollup,它提供以太坊虛擬機(EVM)等效性(操作碼級兼容性),以實現透明的用戶體驗以及現有的以太坊生態系統和工具兼容性。[2023/3/4 12:42:20]

syncing——指示節點何時開始或停止同步

根據這些事件類型獲取信息很受限,dapp 無法通過它們跟蹤交易的完整生命周期。

以太坊交易生命周期

以太坊交易是有復雜的生命周期的。每個交易都會經過多個的 state (狀態),在整個過程中經歷各種 state 的變更,可能前進也可能回滾。

Lido Finance計劃支持直接在Layer 2上質押以太坊:7月18日消息,Lido Finance發布公告稱將在Layer 2上支持stETH。Lido將首先支持wstETH在Layer2上的跨鏈和質押,并計劃未來直接支持在Layer 2上質押以太坊。而無需跨鏈至以太坊主網。Lido表示,初期將僅支持wstETH以及Optimism和Arbitrum網絡。[2022/7/19 2:21:39]

交易狀態

以太坊交易從提交上鏈到(在一定的成功幾率下)入塊,它會經歷如下的一系列狀態:

UNKNOWN (未知):一個未被網絡檢測到或未被處理的交易被定義為處于 UNKOWN 狀態。

PENDING (待處理):交易在等待礦工揀選和處理,位于我們所稱的 mempool (內存池)中。礦工通常會首先選擇 gas 價格較高的交易,因此 gas 價格較低的交易可能會長期處于 PENDING 狀態。Gas 價格最低的交易可能永遠都不會被選中,那就會導致它們無限期地處于 PENDING 狀態。

IN_BLOCK(入塊):當礦工成功選擇交易并將其處理進入區塊,交易將進入IN_BLOCK 狀態。如果交易進入 IN_BLOCK 狀態,但它所在的區塊分叉了,則交易可能回到 PENDING 狀態。

REPLACED(被替換):在以下兩種情況下,交易可以從 PENDING 狀態變為 REPLACED 狀態:

另一筆來自同一發送者且有相同 nonce 的交易進入了 IN_BLOCK 狀態,或

另一筆來自同一發送者且有相同 nonce 但 gas 價格高出12%的另一筆交易進入了 PENDING 狀態

下圖顯示了這些狀態以及它們之間的過渡。

States(狀態)轉換

如上圖所示,狀態之間的轉換也是有名稱定義的。

POOLED(入池):處于 UNKOWN (未知)狀態的交易進入等待礦工選擇的交易池,被稱為 POOLED 并進入 PENDING (待處理)狀態。處于 REPLACED(被替換)狀態的交易,如果替換條件不再成立(例如:在極少數情況下,處于 IN_BLOCK (入塊)的低 gas 價格的交易被分叉,而替代它且具有相同 nonce 和發送者的交易仍在網絡上游動),則也有可能再次變為 POOLED 狀態。

MINED (被挖礦):被挖礦的交易是由礦工處理過的交易,這過程會創建一個區塊。一旦被挖,交易就被算做處于 IN_BLOCK (入塊)狀態。由于以太坊網絡的點對點性質,從一個指定節點的角度監測,交易可以從 UNKNOWN (未知)狀態直接進入到 IN_BLOCK (入塊)狀態,無需明顯地通過 PENDING (待處理)狀態。出于相同的原因,從一個指定節點的角度監測,交易也可以不通過 PENDING (待處理)狀態而直接從 REPLACED(被替換)狀態轉換為 IN_BLOCK (入塊)狀態。

REPLACED(被替換):從 PENDING (待處理)狀態進入到 REPLACED 狀態的交易也被稱為 REPLACED。請參見文中交易狀態中列出的 REPLACED 狀態。

FORKED(被分叉):當已被挖的交易處于被網絡撤消的區塊中時,就是產生了被分叉的交易。那個區塊內的所有交易將接連被分叉,從 IN_BLOCK (入塊)狀態轉回到 PENDING (待處理)狀態。

CONFIRMED(已確認):處于 IN_BLOCK (入塊)狀態的交易會在每次它后續的子區塊被挖時而被確認。

如上所述,以太坊上的交易的生命周期是非常復雜的,這使得 dapp 很難去準確的跟蹤它并向用戶提供無縫式、流暢的更新。

毫不費力地跟蹤交易狀態

dfuse 平臺為提供了一個豐富的、能夠串流監聽的接口,該接口支持實時詳細跟蹤以太坊交易的生命周期。dfuse 以太坊交易狀態跟蹤器 API 使開發人員能夠提交以太坊交易,然后在同一數據通道上即刻獲取精細的狀態更新,跟隨交易在其整個生命周期中的進展。

使用 GraphQL,您可以實時監聽指定類型交易的變化,同時可以精確指定每次交易發生變化時您想收到的數據。dfuse 平臺處理了跟蹤交易這項工作的復雜性,并會在事件發生時實時傳輸給 dapp。

這樣一來,您無需撰寫和運行復雜的后臺邏輯和重復進行輪詢,也不會浪費帶寬和多次運行同樣的查詢。簡單地監聽您所需的更新,然后在界面中把這些更新反饋給用戶。

下面的動圖展示的是一個經歷了這種復雜生命周期的交易——它經歷了八個狀態轉換,最后才被包含在區塊中并得到確認。

如果沒有使用 dfuse,dapp 則必須一次次的訪問區塊鏈以捕獲交易經歷的所有轉換再更新給用戶,并且后端代碼需要去準備好應對每個狀態轉換。

使用 dfuse,dapp 僅需要通過單個連接獲取串流更新,dfuse 會為您跟蹤交易經歷的各種曲變化,直到它的命運被最終確定。

為先進的 Dapp 提供的現代化平臺

Lifecycle (生命周期) API 只是 dfuse 平臺的重要的一小部分。dfuse 為 dapp 提供了完整的現代化基礎架構層,即:

快速,

可擴展,

提供對區塊鏈事件的高度精細的串流監聽,

支持主動的 Webhook 形式的回調,

具有業內最高的可靠性。

Tags:DAPPDAP以太坊APP區塊鏈dapp開發語言USDAP以太坊幣最新價格今日行情2022.10.12nash幣挖礦app

OKB
以太坊:以太坊核心開發人員會議激辯ProgPow

周五以太坊核心開發人員舉行了電話會議,ProgPow是本次會議討論的重點。 據Cointelegraph報道,此次電話會議持續了大約三個小時,其中兩個小時完全用于討論ProgPow.

1900/1/1 0:00:00
比特幣:HODL Waves Chart揭示42%的堅定持有者兩年內從未移動過比特幣

根據Coin Metrics分析師Jacob Franek撰寫的報告,截至2020年3月1日,大約42%的比特幣在兩年多的時間內沒有在鏈上被移動過.

1900/1/1 0:00:00
區塊鏈:愛迪爾回復關注函:區塊鏈等技術合作提升運營效率

3月6日晚間,愛迪爾(002740)回復深交所關注函稱,公司與數秦科技及寧波聯通簽訂戰略合作協議,有助于公司充分借助數秦科技的區塊鏈技術、寧波聯通提供的5G服務.

1900/1/1 0:00:00
BTC:BTC何時大漲?關注這根線就夠了

大帝怎么看? BTC: 技術上看,比特幣4小時K線圖脫離布林下軌,有向中軌靠近的趨勢,BOLL敞口緩慢縮小。附圖指標,MACD低位形成金叉,KDJ超賣后向上金叉,DMI-ADX曲線60以上掉頭.

1900/1/1 0:00:00
USD:金色觀察 | 暴跌中的“奇跡”:穩定幣

近幾周,由冠狀病引起的恐慌日益加劇,已席卷全球市場。 加密貨幣市場在這次“屠殺”中流失了數百億美元,然而在市場暴跌之際,穩定幣的市值卻明顯上升了.

1900/1/1 0:00:00
SUB:Substrate 區塊鏈框架:用十幾分鐘開發出一條區塊鏈

在柏林舉行的 Web3 峰會上,Parity 的創始人 Gavin Wood 演示了在不到 60 分鐘的時間內,在一臺全新筆記本電腦上開發出一條區塊鏈.

1900/1/1 0:00:00
ads