Microblocks

Wilson
Nov 30, 2023

--

微區塊是Stacks區塊鏈的協議級特性,它解決了交易延遲的技術挑戰。在Stacks區塊鏈中,由於每個區塊都透過Proof-of-Transfer共識機制錨定到一個比特幣區塊,因此Stacks的區塊時間受到比特幣網絡相同區塊時間的限制。微區塊的引入使得Stacks區塊鏈能夠在錨定區塊之間進行狀態遷移。

交易狀態

交易狀態在Stacks區塊鏈中由多個要素組成,其區塊生成模型在SIP-001中得到了詳盡描述。這個標準概述了能夠產生區塊的領導者如何使用批量處理交易或串流交易的機制在Stacks區塊鏈上生成區塊。而微區塊正是串流模型的一種體現。

當一個區塊的領導者選擇進行微區塊的挖礦時,該領導者會在當前的epoch中從記憶池中挑選交易,並將這些交易打包成微區塊。

微區塊是由礦工在上一個錨定區塊被挖掘出來後,但在選擇下一個區塊之前打包的交易區塊。微區塊中包含的交易將被網絡處理,其處理結果是已知的。

這兩種交易的週期類似,但其區別在於待處理的狀態。在許多比特幣錢包中,顯示的0確認餘額指的是您的錢包餘額,包括了任何已經被應用但尚未得到確認的記憶池(mempool)交易。這種顯示能夠讓您了解何時發送了交易或收到了交易。然而,對於智能合約而言,顯示待處理狀態就沒有像比特幣那麼直觀了。

智能合約不僅僅是將輸入轉換為輸出,它們可能會調用其他合約、觸發事件,或執行其他計算。在微區塊中處理的交易會生成所有這些信息,因此待處理狀態的顯示在智能合約方面更加複雜且具有更多的層面。

啟用微區塊

是指礦工在其挖礦配置中選擇是否啟用微區塊功能。一般而言,礦工應該選擇啟用微區塊挖掘作為最佳實踐。當應用程序或用戶提交一筆交易時,這筆交易可以包含一個參數,指示該交易應當在微區塊中執行、錨定區塊中執行,或者允許在兩者中任何一種情況下執行。這樣的參數設置允許交易的發起者指定其交易的執行方式,從而更好地控制交易的處理方式,依據應用程序或用戶的需求和特定情況進行選擇。

具體而言,交易中包含一個選項,稱為錨定模式(Anchormode)交易選項,這是一個可選參數,用於控制一筆交易是否必須被包含在錨定區塊或微區塊中,或者可以被包含在其中的任意一種之中。這樣的選項允許交易的發起者指定交易應該如何被處理,能夠針對性地選擇交易的執行方式,根據特定的需求或應用場景進行設定。

挖礦

對於Stacks礦工而言,啟用微區塊是實現區塊串流模型的必要步驟。Stacks區塊鏈以與比特幣區塊鏈相同的速率生成區塊,但為了實現交易的低延遲,礦工可以選擇啟用微區塊功能。微區塊允許當前區塊的領導者串流交易並在當前epoch中包含其狀態轉換,這有助於提高交易速度。

當區塊的領導者選擇生成微區塊時,下一個領導者將以當前領導者生成的最後一個微區塊為基礎來建立區塊鏈的最新端點,以確保交易的連續性。

在處理Nonce(交易序號)方面存在挑戰,特別是在微區塊中處理Nonce。這是因為下一個帳戶的Nonce必須考慮到微區塊中包含的任何Nonce值,而這些值可能尚未納入錨定區塊。Stacks區塊鏈API提供了一個端點,用於檢索特定主體(principal)的下一個Nonce。這個API端點的作用是幫助應用程序或開發者確定特定主體的下一個Nonce值,即使這些Nonce可能包含在微區塊中但尚未納入錨定區塊。這一功能有助於確保交易序列的正確性,確保交易的順利進行,同時避免可能的錯誤。

注意事項

對於應用程序的設計者來說,與用戶之間溝通微區塊交易的狀態是非常重要的。在將微區塊整合到您的應用程序時,以下是一些初始UI設計最佳實踐指南:

a. 清晰顯示交易狀態:在用戶界面中清楚地顯示微區塊交易的當前狀態,包括是否已確認、是否包含在錨定區塊中等信息。這可以讓用戶了解其交易的進展狀況。

b. 提示交易可能性:提醒用戶微區塊交易的處理方式可能與錨定區塊中的交易不同。強調交易在微區塊中的暫時性質,直到確認為最終交易,從而幫助用戶明白交易的特性。

c. 明確的變化通知:如果交易所涉及的區塊發生變化,清楚地通知用戶相關的輸出或相關的區塊已經改變,以便用戶能夠及時了解狀況,這有助於減少用戶的混淆和誤解。

d. 持續更新狀態:在交易狀態發生變化時,持續更新和呈現這些變化,確保用戶能夠及時瞭解交易的最新狀態。這樣可以幫助用戶跟蹤其交易的變化。

e. 教育和解釋:對於普通用戶,提供有關微區塊交易概念的簡要解釋,以幫助他們理解交易確認的過程和特性。這將增進用戶對交易運作方式的理解,從而增加對系統的信任和使用的便利性。

Stacks blockchain API

Stacks區塊鏈的API由兩部分組成:

  1. Stacks Node RPC API

Stacks節點RPC API通過JSON RPC端點提供。所有的/v2/路由都經過代理路由到Hiro提供的Stacks節點。對於不具備信任的架構,您可以將這些請求發送到自行托管的節點。

2. Stacks Blockchain API所有的/extended/路由直接由Stacks 2.0 Blockchain API提供。這些路由擴展了Stacks節點API的功能,以便更容易地與之集成。

Stacks Node RPC API提供了與Stacks節點互動所需的端點,使用JSON RPC協議通信。這些端點可以用於查詢區塊鏈數據、發送交易、管理錢包等操作。然而,為了實現更加信任和安全的架構,建議將請求發送到自行運行的節點。

另一方面,Stacks Blockchain API的/extended/路由則擴展了Stacks節點API的功能,使開發者能夠更輕鬆地與Stacks 2.0區塊鏈進行交互。這些擴展路由提供了更多的功能,有助於更深入地整合和使用區塊鏈數據。

--

--