幣安智慧鏈支援智慧合約的平行幣安鏈

買賣虛擬貨幣
動機幣安鏈於2019 年4月推出主網後,展示了其高速、高吞吐的設計。其主要關注點——原生去中心化應用程式(“dApp”)幣安鏈 DEX(去中心化交易所),透過在短時間內處理數百萬的交易量,展示了它的交易引擎的低延遲撮合特性。靈活性和可用性往往和效能是熊掌與魚不能兼得。將關注點集中在如何提供一個方便的數字資產發行和交易場所上的設計在某種程度上也帶來了限制。 關於最希望看到幣安鏈增加的功能,社羣中呼聲最高的是可程式設計擴充套件,或者直白點說,就是智慧合約和虛擬機器功能。由於當前幣安鏈的限制,數字資產發行者和所有者想要為其資產新增新的去中心化的特性或引入任何形式的社羣管理及社羣活動時都頗為頭痛。儘管在幣安鏈中新增智慧合約功能的期望很高,但這卻是個“艱難的決定”。 智慧合約的執行可能會減慢(去中心化)交易所功能,併為資產交易新增不確定性因素。即便可以容忍這種妥協,基於當前底層的Tendermint共識協議和 幣安鏈的主要 RPC 實現一個虛擬機器可能最容易想到的方案,但是這種方案會增加對所有現有 dApp 社羣的學習成本,不會受到歡迎。這裡我們提出了幣安鏈的並行區塊鏈的概念,以保持原生DEX的高效能,同時友好地支援智慧合約功能。設計原則
在幣安鏈生態系統中構建兩個並行區塊鏈之後,兩個區塊鏈將並行提供不同的服務。 新的並行鏈將被稱為“幣安智慧鏈”(以下部分簡稱為“BSC”),而現有的主網仍然稱為**“幣安鏈”(以下部分簡稱為“BC”**)。以下是BSC的設計原則:1. **獨立區塊鏈:**從技術上講,BSC 是一個獨立的區塊鏈,而不是Layer 2解決方案。 大多數 BSC 的基礎技術和業務功能應該是獨立的,這樣即使BC短時間停止,它也可以執行良好。2. 以太坊相容性: 第一個實用的、被廣泛使用的智慧合約平臺是以太坊 。為了對接相對成熟的應用程式和社羣,BSC 選擇與現有的以太坊主網相容。 這意味著大多數dApps、生態系統元件和工具將與BSC一起工作,不需要修改或最小的更改;BSC 節點將需要類似(或更高)的硬體規範和技能來執行和操作。該規範和技能應為 BSC 提供空間,以便和以太坊未來的版本繼續相容。3. **基於權益質押的共識和鏈上管理的:**基於權益質押的共識更環保,給社羣管理留下了更靈活的選擇。可以預期的是,這種一致性應該能夠在充分驗證工作(即區塊時間越少,事件容量越高)的情況下獲得更好的網路效能。4. 原生跨鏈通訊: BC 和 BSC 都將使用本地支援來編寫這兩個區塊鏈之間的跨鏈通訊。 通訊協議應該是雙向的、分散式的、不可信的。 它將專注於在 BC 和 BSC 之間轉移數字資產,即 BEP2代幣,以及後來引入的其他 BEP代幣。 該協議應該關注儲存在區塊鏈狀態中的最小其他項,只有少數其他情況例外。
共識與驗證者的人數基於以上設計原則,達成一致的 BSC 協議是為了實現以下目標:1. 出塊時間應該比以太坊時間短,例如 5 秒甚至更短。2. 只需要花費有限的時間就能最終確認交易,例如大約 1 分鐘或更短。3. 沒有通貨膨脹,區塊鏈的收益來自手續費,手續費以 BNB的形式支付。4. 儘可能與以太坊相容。
5. 配備了基於 權益質押的先進鏈上治理。基於權益的權威證明儘管工作量證明(PoW)已被證明為實現分散式式網路的實用機制,但它對環境並不友好,而且還需要大量參與者來維護安全性。以太坊及一些其他網路,如 MATIC Bor、TOMOChain、GoChain、xDAI在不同的場景中使用權威證明(PoA)或其變體,包括測試網路和主網。PoA 為 51%的攻擊提供了防禦,更有效的防止一部分拜占庭節點作惡。 選用PoA作為底層共識十分便利。同時,PoA 協議因不如PoW去中心化而被批評,因為驗證者(即輪流生成塊的節點)擁有極大的權利,並且容易發生腐敗和安全攻擊。 其他區塊鏈(如 EOS 和 Cosmos)引入了不同型別的委託權益證明(DPoS),允許令牌持有者投票和選舉驗證集。 它增加了權力下放功能,有利於社羣管理。在此,BSC 將 DPoS 和 PoA 結合以達成共識,以便:
1. 區塊是由有限的驗證者生成的2. 驗證者輪流以 PoA 方式生成區塊,類似於以太坊的Clique共識引擎3. 驗證人集合是基於權益質押的鏈上治理選出驗證者法定人數在啟動階段,一些受信任的節點將作為初始驗證人集合執行。開始出塊後,任何人都可以加入驗證人候選人的競爭。 權益質押狀態決定前 21 個權益質押最多的節點成為下一個驗證人集合,這樣的篩選每 24 小時進行一次。BNB是BSC權益質押的通證。
為了保持與 以太坊將來共識協議的相容性,BSC 選擇依賴BC 進行權益質押管理(請參閱下面的“權益質押與管理”部分)。 在 BC上有一個專用的BSC權益質押模組。 它將接受BNB 持有者的BSC權益質押,並計算權益質押最多節點集。 每次UTC 午夜,BC 都會發出一條可校驗的 ValidatorSetUpdate跨鏈訊息,通知 BSC 更新其驗證人集合。在生成新的區塊前,現有的BSC驗證者定期檢查是否有ValidatorSetUpdate訊息轉發到BSC 。 如果有,它們將在一段高度後(即預定義的區塊間隔)之後更新驗證人集合。 例如,如果 BSC 每 5 秒生成一個區塊,如果檢查週期是 240 個區塊,那麼當前的驗證人集合將在 1200 秒(20 分鐘)內檢查並更新下一週期的驗證人集。安全與最終性考慮到有超過一半的 ½*N+1 驗證者是誠實可信的,基於 PoA 的網路通常可以安全、正常地工作。 然而,在某些情況下,拜占庭驗證者仍然可能設法,透過,例如“克隆攻擊”,的方式攻擊網路。 為了保證具有與BC一樣高的安全性,鼓勵BSC 使用者等待,直到接收區塊被超過⅔*N+1 不同的驗證者所確認。 透過這種方式,BSC 可以實現與 BC 相似的安全級別,並且可以容忍少於1/3*N 的拜占庭驗證者。對於 21 個驗證者,如果區塊時間為 5 秒,那麼 ⅔* N + 1 個不同的驗證者確認將需要(2/3*21 + 1)*5 =75秒的時間。BSC 的任何重要應用程式可能都必須等待⅔*N + 1,以確保相對安全的最終結果。 然而,除了這樣的安排,BSC 還引入了懲罰機制來懲罰拜占庭驗證者的雙重簽名或不穩定性,這將在後面的“權益質押和管理”部分中做出介紹。 這種懲罰機制將在很短的時間內暴露惡意驗證者,並使 “克隆攻擊”非常難以執行或即使執行了,也非常不划算。 透過這種懲罰機制,½*N + 1 甚至更少的區塊就足夠滿足大部分交易確定性了。收益
當前驗證集中的所有 BSC 驗證者都將透過從 以BNB 支付的手續費中獲得收益。由於 BNB 不是一個會通脹的通證,因此不會像比特幣和 以太坊網路所產生的那樣有挖礦收益,但手續費是驗證者的主要收益。 由於BNB 也是其他應用的實用型通證,委託者和驗證者仍將獲得持有BNB 的其他好處。驗證者的收益是從每個區塊的交易中收取的手續費獲得的。驗證者可以決定向權益質押了BNB 的委託人分享多少收益,以吸引更多的投資。 每個驗證者將輪流以相同的概率生成區塊(如果它們保持 100%線上),因此,從長遠來看,所有穩定的驗證者都可能獲得類似規模的收益。 同時,每個驗證者的風險可能是不同的,因此,這帶來了一種與直覺相反的情況,即被更多的使用者信任並委託的一個驗證者,他們可能獲得更少收益。因此,只要驗證者仍然是可信的(不受信任的驗證者可能帶來極大的風險),理性的委託者就會傾向於委派抵押數量較低的驗證者。 最終,所有驗證者的變化都會更小。這實際上將防止權益質押集中和“贏家永遠贏”的問題出現在其他網路上。手續費的一部分也將獎勵給跨鏈通訊的中繼器。 請參考下面的“中繼器”部分。代幣經濟學BNB 和 BEP2代幣可以在BC和BSC上同時流通。由此定義了:1. 同一代幣可以在兩個網路上流通,並且透過跨鏈通訊機制雙向地在它們之間流通。
2. 同一代幣的總髮行量統一管理兩個網路,即代幣的總有效供應量應該是代幣在BSC和BC上的發行量的總和。3. 代幣可以最初在BSC上建立,格式類似於 ERC20,也可以在BC上建立為BEP2,然後在另一個區塊鏈上建立。 在這兩個網路上都有本地方式來連線這兩個網路,並確保代幣的全部供應。原生代幣BNB在BSC上執行的方式與ETH 在 以太坊 上執行的方式相同,因此它是BSC和 BC的“原生代幣”。這意味著BNB 除了可以在幣安鏈和幣安 DEX上被用來支付大部分手續費用之外,BNB 也將用於:1.支付在 BSC上部署智慧合約的手續費2.對選定的 BSC 驗證者進行權益質押,並獲得相應的獎勵
3.執行跨鏈操作,例如跨 BC 和 BSC 轉賬代幣資產啟動基金在啟動階段,一定量的BNB將在 BC上銷燬,然後轉移到 BSC 上。 這個數額被稱為 “啟動基金”,它將被記錄在BSC的第一個區塊中,它將被轉移到初始 BC-to-BSC 中繼器賬戶(在後面的章節中描述)和初始驗證人集合賬戶上。這些BNB 用於在早期階段支付交易費用,透過跨鏈機制將更多的 BNB 從BC 轉移到BSC 。BNB 跨鏈轉賬將在後面的小節中討論,但對於BC到BSC轉賬,通常是將 BC上的 BNB 從轉賬的源地址鎖定到一個系統控制的地址,並將相應數量的 BNB 從特殊合約解鎖到 BSC 上轉賬的目標地址,或者相反,當從 BSC 轉換到BC 時,是將BNB 從BSC 上的源地址鎖定到一個特殊合約中,並將 BC 上的鎖定的BNB從系統地址釋放到目標地址。這種邏輯由 BC 上的原生程式碼和 BSC 上的一系列智慧合約實現。其他代幣BC 支援 BEP2代幣和即將投入使用的 BEP8 代幣,它們是原生資產,可快速交易並確認,可以流通,上幣後可以在DEX上交易)。 同時,由於 BSC 是 以太坊相容的,在 BSC 上支援 ERC20合約,被稱為 “BEP2E”(未來可以透過BEP修改命名,同時也可能支援 BEP8)。BEP2E透過新增更多的方法來“增強”已有協議,這些方法可以公開更多的資訊,比如代幣單位、精度和能夠決定跨鏈代幣繫結地址的所有者地址。 BSC 和 BC 共同確保一個代幣在不同的用例中的總流通量不變。
代幣繫結BEP2代幣將增加一個新的屬性用來記錄該代幣所對應的BSC BEP2E合約(稱為“繫結器”),而這個過程被稱為“代幣繫結”。代幣繫結可以在BEP2 和BEP2E部署好之後的任何時候進行。BEP2或BEP2E的代幣所有者在不同的鏈上使用代幣之前,不需要擔心繫結。 發行者可以先建立 BEP2,也可以先建立 BEP2E,它們可以在稍後的時間進行繫結。 當然,我們鼓勵 BEP2 和 BEP2E 的所有發行者在發行後儘早建立繫結。繫結BEP2 和BEP2E的典型過程如下:1. 確保在兩條鏈上的 BEP2 代幣和 BEP2E代幣具有相同的總供應量。與更典型的ERC20合約 相比,BEP2E必須新增以下有3 種函式:a.symbol(): 獲取代幣符號
b.decimals(): 獲取代幣十進位制小數位數c.owner(): 獲取繫結合約所有者的地址。這個值應該在 BEP2E合約建構函式中初始化,以便繫結操作可以進一步驗證繫結訊息是否得到來自 BEP2E所有者。2. 確定兩個區塊鏈的初始發行量。假設總供應量為S,並且 BC 上的預期初始迴圈供應量為 K,那麼所有者應該將 S-K 代幣鎖定到 BC上的系統控制地址。3. 同樣,K代幣被鎖定在BSC上的特殊合約中,由一個叫做TokenHub的合約控制繫結功能。BEP2E代幣的發行者應該將該代幣的K額鎖定到TokenHub,從而使S- K代幣在BSC上迴圈。因此,兩個區塊鏈之間的總流通量仍然是S。4. BEP2 代幣的發行者在BC 上傳送繫結交易。經過適當的驗證後,一旦交易成功執行:a.它將 S-K 代幣轉賬到BC 上的系統控制地址。
b.將建立一個跨鏈繫結請求包,等待中繼傳遞訊息。5. BSC 中繼將把跨鏈繫結請求包中繼到 BSC 上的 TokenHub 中,相應的請求和資訊將儲存在合約中。6. 合約所有者(且只有該所有者)可以執行TokenHub合約的特殊方法ApproveBind來驗證繫結請求,以將其標記為成功狀態。它將證實:a. 代幣未被繫結;b. 繫結用於正確的名稱,並具有正確的總供應量和位數資訊;c. 在兩個網路上正確完成鎖定;
7. 一旦ApproveBind 方法成功,TokenHub 將標記這兩種代幣是繫結的,並且在 BSC 上共享同一流通,並且狀態將傳輸回 BC。在此最後確認之後,BEP2E合約地址和小數點位數將作為一個新屬性寫入BEP2代幣上,並且代幣可以雙向地跨兩個區塊鏈進行轉賬。 如果 ApproveBind 失敗,則故障交易也將傳輸回BC 以釋放鎖定的代幣,並且可以在以後重試上述步驟。跨鏈轉賬與通訊跨鏈通訊是讓社羣利用雙鏈結構的關鍵基礎架構:· 使用者可以隨意在BSC 或BC上建立任何代幣化的金融產品和數字資產;· 在 BSC上的代幣可以透過手動程式設計,在BC上穩定的,高通量,極快速和友好的環境中完成交易和資產流通;· 使用者可以在統一的工具系統中完成這些操作。
跨鏈轉賬跨鏈轉賬是兩個區塊鏈之間通訊的關鍵。 它的邏輯是:1. 轉出的區塊鏈將把來自源地址持有的金額鎖定到系統控制的地址/合約中;2. 轉入區塊鏈將解鎖系統控制的地址/合約中的金額,並將其轉賬到目標地址。跨鏈轉賬包訊息應允許BSC中繼器和BC Oracle中繼器驗證以下資訊:1. 從源地址中鎖定了足夠數量的代幣資產到源區塊鏈上的系統控制地址/合約中。 這可以在目標區塊鏈上得到證實。
2. 適當的代幣資產額從系統控制的地址/合約中釋放,並分配到目標區塊鏈上的目標地址中。 如果失敗,可以在源區塊鏈上確認,這樣鎖定的代幣就可以被釋放回去(可能會扣除費用)。

3. 無論轉賬是否成功,在此轉賬操作完成後,兩個區塊鏈上代幣資產的流通總量都不會改變。

跨鏈通訊的體系結構如上圖所示。 為了適應兩個異構系統,通訊處理在每個方向上都是不同的。

BC到BSC架構

BC 是一個基於 Tendermint 的、具有即時終結的區塊鏈。需要至少2/3* N + 1 總投票權的驗證者對每個區塊簽名。 因此可以透過區塊頭和 Merkle證明驗證來驗證區塊交易甚至狀態值是可行的。這一設計已經被研究並實現為“輕客戶端協議”。它被以太坊社羣廣泛討論,也被用於實現Cosmos的跨鏈通訊協議。

從BC到BSC 通訊將在透過 BSC 智慧合約實現的“鏈上輕客戶端”中得到驗證(其中一些是“預編譯”)。在 BC 上發生一些交易和狀態更改之後,如果一個交易被觸發跨鏈通訊,則中繼器將建立並傳遞跨鏈 “資料包”訊息,並作為資料提交到 BSC 上,以“輕客戶端合約”方式儲存。輕客戶端合約將驗證交易包,並在透過驗證後執行交易。透過下述設計保證:

1. BC的區塊狀態將透過區塊頭和pre-commits同步到BSC上的輕客戶端合約,以獲得以下資訊:

a.驗證者簽名的 BC 區塊和應用程式雜湊
b.當前驗證者集合和驗證者集合更新

2. 區塊鏈狀態的鍵值對將根據 Merkle 證明和上面第一點中的資訊進行驗證。

在確認鍵值對準確和可信之後,輕客戶端合約將執行與跨鏈包對應的操作。 BC到BSC的跨鏈操作可以 建立如下資料包:

· 繫結:將BEP2代幣與 BEP2E繫結
· 轉賬:繫結後進行跨鏈轉賬,這意味著BC上的流通將會由於鎖定減少,並出現在BSC上的目標地址中,保證流通量不變
· 錯誤處理:處理 BSC到BC 通訊的任何超時/失敗事件
· BSC驗證人集合更新

為了確保沒有重複、訊息序列正確和超時處理,BC 引入了“通道”概念來管理跨鏈通訊。

對於中繼器,請參考下面的“中繼器”部分。

BSC到BC 架構

BSC 使用了PoSA(基於權益質押的權威證明)共識協議,該協議可能會出現分叉,因此要求對更多的區塊進行確認。一個區塊只有一個驗證者的簽名,因此僅依賴一個區塊不適合驗證來自 BSC的資料。

為了充分利用 BC的驗證者集合資訊,採用了類似於橋接或 Oracle 區塊鏈的思路:

1. 來自BSC的跨鏈通訊請求將作為交易提交併在BSC上執行。交易的執行將發出事件,並且可以在“Oracle”上觀察並將這些事件打包,傳送到BC上。 這種型別的“Oracle”交易包沒有區塊頭、雜湊和 Merkle 證明,而是直接包含操作的跨鏈資訊,如傳送方、接收方和要轉賬的金額。

2. 為了保證 Oracle 的安全性,BC 的驗證者將組建一組“Oracle 中繼器”。 BC 的每個驗證者都應獨立運作一個 Oracle 中繼器。這些Oracle 中繼器將使用相同的秘鑰提交和投票給 BC 的跨鏈通訊包。 任何由超過⅔N+1Oracle中繼器 的投票許可權簽名的交易包,其安全性與由 ⅔N+1 相同法定數量的驗證者的投票許可權簽名的區塊相同。

透過複用同樣的驗證者集合, BC 無需實現一個輕客戶端,並在 BC 上持續更新區塊。這樣的Oracle也有 Oracle ID 和型別,以確保順序和正確的錯誤處理。

超時與錯誤處理

在某些情況下,跨鏈通訊會失敗。 例如,由於合約中的一些編碼錯誤,在 BSC 上無法執行中繼資料包。 在這種場景中使用超時和錯誤處理邏輯。

對於可識別的使用者和系統錯誤或任何預期的異常情況,這兩個網路應該自行修復。例如,當 BC 到 BSC的轉賬失敗時,BSC 將發出一個失敗事件,Oracle 中繼器將在BC 上執行退款;當 BSC 到 BC 的轉賬失敗時,BC 將發出一個退款包給BSC中繼器,以便解鎖款項。

然而,跨鏈通訊的任何步驟都可能發生意外錯誤或異常。在這種情況下,BSC中繼器和Oracle 中繼器將發現相應的跨鏈通道被卡在一個特定的序列中。超時一段時間後,BSC中繼器和 Oracle 中繼器可以請求SkipSequence交易,卡住的序列將被標記為“不可執行”。 將提出相應的警告,社羣必須討論如何處理這種情況,例如透過驗證者進行賠付,或者甚至在下一次網路升級期間清理錯誤鎖定的資金。

跨鏈使用者體驗

理想情況下,使用者希望使用兩條平行鏈的方式與使用一條單鏈的方式相同。它需要將更多複合交易型別新增到跨鏈通訊中以支援這一點,這將增加極大的複雜性、緊密耦合和維護負擔。在這裡,BC和BSC只實現了基本的操作,以在初始啟動時啟用價值流,並將大部分使用者體驗工作透過客戶端實現,如錢包。例如,一個錢包可以讓使用者將代幣直接從BSC傳送訂單到BC的DEX,以一種安全可靠的方式銷售代幣。

跨鏈合約事件

跨鏈合約事件(CCCE)是為了允許智慧合約直接透過合約程式碼觸發跨鏈事件而設計的。 這在下列基礎上成為可能:

1. 可以提供標準的系統合約,以服務於一般智慧合約可呼叫的操作;
2. 標準事件可以由標準合約發出;
3. Oracle 中繼器可以捕獲標準事件,並觸發相應的跨鏈操作;
4. 可以在 BC 上建立專用的、程式碼管理的地址,並由 BSC 合約訪問,這裡它被命名為 “BC的合約地址”(CAoB)。

實現以下標準操作:

1. BSC 到BC的轉賬: 這與普通的 BSC 到 BC 轉賬一樣,都是透過標準合約觸發的。 資金可以轉賬到 BC 上的任何地址,包括轉賬給原始合約中相應 CAoB 。

2. BC內轉賬: 轉賬的完成被視為為一個特殊的跨鏈轉賬,而真正的轉賬是從 CAoB 到任何其他地址(甚至是另一個 CAoB)。

3. BC 到BSC 轉換: 這是以雙通跨鏈通訊的方式實現的。 第一個通道是由 BSC合約觸發並傳輸到 BC 上,然後在第二個通道中,BC 將啟動一個正常的 從BC 到 BSC的跨鏈轉賬,轉賬地址為 CAoB 到 BSC上的合約地址。需要特別注意的是,BSC 合約只在第二個通道轉賬時增加餘額,第二個通道轉賬中的錯誤處理與正常的 BC 到 BSC 轉賬相同。

4. IOC(立即執行或取消)交易: 將資產轉移到BC 的主要目的是交易。該事件將指示將CAoB中某一資產交易為另一資產,並轉移交易的剩餘的目標代幣,並將全部結果轉賬給BSC。BC將透過傳送“IOC”訂單來處理此類中繼事件,如IOC訂單傳遞到交易對上,一旦下一次撮合完成,執行結果將被傳送回BSC,其可以是一種資產,也可以是兩種資產。

5. 拍賣交易:這樣的活動將指示BC發出拍賣交易,將CAoB中一定數額的資產儘可能多地轉換成另一項資產,並在拍賣結束時將所有成果轉回BSC。拍賣功能即將在BC上線。

以下是交易的一些細節:

a.針對交易,雙方都可以有一個(絕對或相對的)價格限制;
b.最終結果將以跨鏈交易包的形式寫入 BSC;
c.跨鏈通訊費用可從轉回 BSC 的資產中收取;
d.BSC 合約反映了 CAoB 的餘額和未完成的訂單。 無論在交易期間發生什麼錯誤,最終狀態都將被傳輸回原始合約並清算其內部狀態。

在上述特點的基礎上,將具有高流動性的跨鏈轉賬和交易功能非常方便地新增到 BSC 的所有智慧合約中。 它將極大地增加在智慧合約 和 dApps 上的應用場景,使幣安雙鏈產生1+1>2的聚合效應。

權益質押與鏈上治理

PoSA實現了分散式的社羣治理。 其核心邏輯可概括如下。 你可以從其他網路中看到類似的想法,特別是 Cosmos 和 EOS 。

1.代幣持有者,包括驗證者,可以將他們的代幣 “繫結”到權益質押中。 代幣持有者可以將他們的代幣委託給任何驗證者或一個驗證者候選物件,然後他們可以選擇一個不同的驗證者或候選物件來重新對他們的代幣進行委託。

2.所有驗證者候選物件都將按其獲得繫結代幣的數量進行排序,排名前列的將成為真正的驗證者。

3.驗證者可以與它們的委託人共享區塊收益。

4.驗證者可能會遭受 “懲罰”,即對他們的不良行為的懲罰,如雙重簽名和/或不穩定性。 這樣的損失也會與他們的委託人共同分擔。

5.驗證者和委託者有一個 “解除繫結期”。在這段時間內,系統確保他們之間仍然保持繫結,當發現惡意拜占庭行為時,作惡人將被及時懲罰。

BC權益質押

理想情況下,這樣的權益質押和獎勵發放邏輯應該包含在區塊鏈中,並在產生新區塊時自動執行。與幣安鏈一樣採用Tendermint共識庫的Cosmos Hub就是這樣工作的。

自設計之日起,BC就一直在準備啟用PoS。另一方面,BSC想要儘可能地與以太坊保持相容,這是一個巨大的挑戰和壓力。當以太坊本身可能在短時間(或更長時間)內遷移到PoS共識協議時,尤其如此。為了保持以太坊的相容性和複用BC的基礎架構,我們在BC上完成了BSC的權益質押邏輯:

1.質押代幣是 BNB,這是因為它是兩個區塊鏈上的原生代幣。
2.在BC上記錄BSC的權益質押和委託行為。
3.BSC 驗證集由它的權益質押和委託邏輯來決定,在BC上構建一個BSC的權益質押模組,並透過跨鏈通訊在每天UTC 00:00:00 由BC傳送到 BSC 。
4.BC上的獎勵分配發生在每天UTC 00:00時刻。

獎勵

驗證者集更新和獎勵分配都發生在每天 的UTC 00:00 。這是為了節省頻繁更新和區塊獎勵分配的成本。頻繁分配獎勵的代價可能是巨大的,因為區塊獎勵是在BSC上收取的,並在BC上分發給BSC驗證者和委託者。(請注意,BC出塊獎勵僅分發給BC驗證者。)

為了確保分配是公平的,這裡引入了一種延後分配的演算法:

1.區塊獎勵不會立即傳送給驗證者,而是計算並積累在智慧合約中;

2.當BSC收到驗證者集更新訊息時,它將觸發跨鏈轉賬,將獎勵轉賬給驗證者的託管地址。 託管地址是由系統控制,因此在向委派者承諾的分配完成之前,獎金是不能用的。

3.為了使同步更簡單,並分配時間以防出現罰沒,第T天的獎勵將在第T + 2 天分配。 在委託者收到獎勵後,剩下的收益將被轉移到驗證者自己的獎勵地址。

懲罰

懲罰是鏈上管理的一部分,以確保惡意或負面行為受到懲罰。 BSC懲罰證據可以由任何人提交。 交易提交要求提交懲罰證據和手續費,如果成功提交,也帶來了更多獎勵。

到目前為止,有兩種可以被懲罰的情況。

雙重簽名

當驗證者故意簽署多個在相同高度的區塊時,這是很嚴重的作惡行為。 協議的實現應該已經考慮到如何防止這種情況發生,因此只有惡意程式碼才能觸發這種情況。 當出現雙重簽名時,驗證者應該立即從驗證者集合中移除。

任何人都可以在 BC 上提交帶有 BSC 雙重簽名的懲罰請求,應該包含兩個具有相同高度的區塊和母區塊,以及違規驗證者的簽名。 在收到證據後,如果 BC 確認該證據是有效的:

1.該驗證者將立刻傳送 BSC “驗證者集合更新”跨鏈訊息,惡意驗證人將從驗證集中剔除;
2.驗證者的權益質押將按照預先設定的金額進行懲罰;
3.一部分被懲罰的BNB 將獎勵給證據提交者。獎勵金額應遠遠大於提交懲罰請求事件的成本
4.剩下的 BNB 將分配給其他驗證者的託管地址,並以與區塊獎勵相同的方式分配給所有委託者。

不穩定性

BSC 的可用性依賴於PoSA共識中驗證者集合中的每個驗證人,當輪到其出塊時,他們能夠及時生成區塊。 驗證者可能由於一些原因而錯過出塊時機,特別是由於硬體、軟體、配置或網路方面的問題。 這種不穩定執行將損害網路的效能,並給系統帶來更多的不穩定性。

BSC有一個內部的合約,負責記錄每個驗證者錯過的區塊。 一旦該指標超過預定義的閾值,驗證者的區塊獎勵將不會被轉移到 BC 進行分發,而是被其他更好的驗證者共享。透過這種方式,執行不良的驗證者會逐漸退出,因為它們的委託者將獲得較少獎勵或沒有獎勵。如果指標仍然高於另一個較高的閾值級別,驗證者將受到懲罰,並將傳輸回BC,在BC中,驗證者的的抵押資產將被罰沒一部分。

引數管理

有許多系統引數來控制 BSC 的行為,如懲罰閾值和數量,跨鏈轉賬費用等。所有這些引數將由 BSC 驗證者透過提案投票過程確定。此過程將在 BC 上進行,系統合約將透過跨鏈通訊來獲取最新引數。

中繼器

中繼器負責提交兩個區塊鏈之間的跨鏈通訊包。 由於並聯鏈結構的異構性,產生了兩種不同型別的中繼器。

BSC中繼器

BC 到 BSC 通訊的中繼器稱為 “BSC 中繼器”,或簡稱為 “中繼器”。 中繼器是一個獨立的程序,任何人都可以在任何地方執行,但是中繼器必須在BSC 註冊並鎖定一定數量的 BNB 。 BSC 將只接受來自注冊中繼器的中繼請求。

它們所中繼的軟體包將由 BSC 上的鏈上輕客戶端進行驗證。中繼成功需要透過足夠的驗證,並在BSC上支付足夠的手續費,因此,應該有激勵性獎勵來鼓勵社羣經營中繼器。

激勵

有兩種主要的溝通方式:

1.客戶端操作,如跨鏈繫結、轉賬和錯誤處理等。 這應該由事件請求者支付。
2.系統同步,例如用於驗證的區塊頭,以及驗證者集更新: 這包含了 BC 的區塊頭和驗證者集更改,並且應該由 BSC 系統獎勵支付。

如果某些中繼器有更快的網路和更好的硬體,它們可以壟斷所有的中繼器包,而不會給其他中繼器留下任何收益。 因此,將有更少的參與者加入中繼,這將鼓勵集中化,但損害網路的效率和安全。 理想情況下,由於 BSC 驗證者的分散化和動態重新選擇,一箇中繼器不可能總是第一個傳遞每個訊息。 但是為了避免進一步的壟斷,獎勵經濟機制也是專門為儘量減少這種機會而設計的:

1.對中繼器的獎勵將只分批次發放,而一次發放將覆蓋多個成功的中繼器包。
2.一箇中繼器可以從批處理分發中獲得的報酬與成功中繼包的數量並不是成比例的。 相反,除了前幾個中繼,在一個批次期間中繼器越多,它將獲得的報酬越少。

註冊也會增加這種壟斷的成本。

Oracle中繼器

BSC 到 BC 通訊的中繼器使用 “Oracle”模型,也就是所謂的 “Oracle 中繼器”。 每個BC驗證者都必須(只有驗證集中的驗證者可以)執行 Oracle 中繼器。 每個 Oracle 中繼器都會觀察 BSC狀態的變化。 一旦它捕獲到跨鏈通訊包,它將提交投票請求。在獲得大於2/3投票支援更改之後,將執行跨鏈操作。

Oracle 中繼器應該等待足夠的區塊來確認 BSC 的最終結果,然後才向 BC 提交和投票跨鏈通訊包。

跨鏈費用將與正常的 BC 區塊獎勵一起分配給 BC 驗證者。

此種 Oracle中繼器依賴於所有驗證者的支援。 由於跨鏈通訊包的所有投票都記錄在區塊鏈上,因此評估 Oracle 中繼器的效能並不難。將來可能會透過引入的另一種懲罰機制來限制表現最差的驗證人的收益。

展望

對於幣安鏈的未來,很難做出一個定論,因為它從未停止進化。雙鏈策略一方面為使用者開啟了快速轉賬與交易的大門,另一方面為使用者開啟了靈活可擴充套件的程式設計之門,但這只是幣安鏈發展的一個階段。以下是一些值得關注的主題,以促進社羣更好地獲得更多的可用性和可擴充套件性:

1.為不同的業務用例新增不同的數字資產模型
2.實現將更多的資料來源,特別是 DEX 市場資料,從幣安鏈 DEX傳輸到BSC
3.提供相容以太坊及其未來升級,以及其他區塊鏈的介面
4.改進錢包和區塊鏈客戶端的可用性

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;