波卡的以太坊模擬器
Gavin Wood曾說:你可以在波卡上再造一個以太坊,卻不能在以太坊裏做出一個波卡。這句話是對波卡整體架構的靈活性和可組合性的評價,會存在一條或多條平行鏈具備類似以太坊,或者完全兼容以太坊的能力。
如今的以太坊,正面臨成本和可擴展性的挑战,無數开發者和DAPP承受着高昂的交易費用,共享一個相對較慢的交易池模型;而波卡網絡,提供很多較為先進的設計和組件,但底層實現與以太坊差異較大。
對於开發者來說,選擇开發性價比高、使用體驗好、兼容性強的平臺,尤其是能夠同時連接波卡和以太坊兩個區塊鏈流量巨擘,具有很大的現實需求。
兼容波卡和以太坊的智能合約平臺
Moonbeam的定位則是完全兼容EVM、Web3的API兼容以及將Moonbeam連接到現有的以太坊網絡的網橋。借助Moonbeam,利用現有的以太坊开發者工具和網絡,开發者可以輕松實現跨鏈兼容。
开發者只需基於自身开發成果稍作修改,即可輕松將現有的Solidity智能合約和DApp前端部署到Moonbeam。
從技術方案上來看,Moonbeam 相當於建設了一個適用於波卡的「以太坊模擬器」,具備以下功能特性:
與EVM兼容的工具鏈:MetaMask、Remix(智能合約开發 IDE)、Truffle(基於 Solidity 的开發框架)和 Web3 JavaScript 庫,开發者可以使用熟悉的工具在 Moonbeam 上調試應用或構建新應用;
與Substrate兼容的工具鏈:Polkadot wallet/Polkadot.js.apps、Polkadot JavaScript庫和區塊鏈瀏覽器,可幫助开發人員和用戶創建他們的區塊鏈空間並與之交互;
跨鏈集成:得益於Polkadot網絡發展和轉接橋成熟,Moonbeam將有能力與更多平行鏈、異構鏈、甚至是非區塊鏈進行消息傳遞,並保證其狀態可見性;
鏈上治理:允許Moonbeam根據开發人員和社區的需求進行快速響應、邏輯升級和數據遷移,而無需任何分叉;
統一账戶&籤名:統一H256/H160账戶系統、ECDSA/25519籤名系統,开發者和用戶能夠更加友好、更低學習成本的遷移和使用Dapp應用。
同時,Moonbeam與以太坊存在許多重要差異,例如Moonbeam使用基於權益證明的共識機制,這意味着所有與以太坊工作量證明相關的API都將返回默認值,Moonbeam也將更加經濟和節能。
從整體而言,Moonbean是一個非常尊重以太坊开發者習慣和用戶習慣的智能合約平臺,而運營智能合約平臺關鍵在於原生資產的創造與價值共識構建的能力。
Moonbeam平臺正處於快速發展期和紅利期,預計未來會出現更多的項目合作方,比如:
Ocean Protocol,是一個去中心化的數據交換協議,旨在解鎖數據,為數據用戶提供更公平的結果,其允許數據提供者通過去中心化的數據市場與數據消費者進行交互,同時保證所有參與者的控制,可審計性,透明度和合規性。目前Ocean已在Moonbeam部署Ocean Marker Web應用程序組件,並將進一步退出數據隱私增強功能。
-
Orion Protocol,是一個流動性交易聚合協議,旨在提供一個非托管的網關——將分散式和集中式交易和互換平臺的流動性聚集在一個分散式平臺,試圖解決加密市場、傳統金融和NFTs資產碎片化的問題。目前Orion已通過Moonbeam成功遷移到Polkadot生態系統,並且正在構建UI/UX集成到Orion Terminal。
如下圖,目前有92個項目正在Moonbeam生態中开發建設:
數據結構
Moonbeam之Extrinsics
通常我們將Substrate區塊分為Header和Body,Header由number、extrinsics_root、state_root 、parent_hash和digest所組成,Body由一系列Vec<Extrinsic>所構成。
除了Extrinsic: Event、Extrinsic: Error外,Moonbeam還包含內部inherents(Set Author、Set Validation Data和Set Timestamp)、Unsigned Transactions(pallet ethereum)以及Signed Transactions(Balance Transfer、System Remark、Stake、DIRECT EVM Calls、Runtime Upgrades)。
每個Moonbeam區塊中,典型的Extrinsic有4類:timestamp.set、parachainSystem.setValidationData、authorInherent.setAuthor和ethereum.transact。
Moonbeam之Digest Logs
每個Moonbeam區塊中,典型的Digest有:auth、fron、aura。
auth: runtime將區塊Author inherent信息復制到logs中,以便於外部調用;
fron:Ethereum pallet包括以太坊風格的區塊和以太坊交易哈希列表,它允許採用區塊流水线技術維護從ethereum到substrate路由查詢表;
aura:會在standalone模式下使用,包括author和slot信息。
統一账戶模型
統一账戶設計挑战
得益於pallet-evm模塊,波卡生態內任何一條平行鏈都可以提供執行基於Solidity智能合約的可能性,而少量或無需更改solidity代碼。
Substrate 使這種集成成為可能,只需將evm pallet組合到runtime以獲得 EVM 支持,以及增加 Frontier 的以太坊模塊來提供以太坊 RPC 兼容性。
然而,仔細思考後會存在如下方面的挑战:
如何維護账本數據?
如何映射地址類型?
如何兼容籤名算法?
-
如何支持不同特性?
除此之外,還需要考慮客戶端兼容調用、ETH-Substrate兼容層交互和獨立鏈/平行鏈模式切換中上下文修復(比如best_block、block_author)工作。
同時,針對統一账戶模型,存在三種設計方案:完全統一账戶、同步账戶或可轉讓账戶。
第一種方案裏,需要在Substrate中實現H160和ECDSA的traits;
第二種方案裏,需要實現一種同步账戶ID映射的機制;
第三種方案裏,需要實現余額能夠從storage中進行Moved的方法。
相對來說,第一種方案的難度最大,收益是开發者和用戶能夠獲得更好的體驗,Moonbeam最後採用第一種方案實現統一账戶模型。
-
账戶系統結構分析
從账戶類型來看,以太坊账戶分為:用戶地址和合約地址,兩種類型账戶都有余額字段可進行正常轉账;Moonbeam账戶分為:用戶地址、合約地址和代理地址,代理地址能夠被授權操作另外一個地址執行有限的操作。
此外,Moonbeam擁有幾種不同的余額類型:
Reducible – 代表可使用的活動余額(沒有鎖定/凍結),調用Ethereum API或Metamask查看的余額;
Reserved – 代表因鏈上需求而抵押的余額,能夠通過執行一些鏈上操作來釋放。例如,通過協議進行質押顯示為保留的余額,這些資金不能通過Ethereum API訪問,直到它們被釋放;
-
Misc frozen – 代表除支付交易費外,維持账戶的最低閾值余額。例如,用於對治理提案進行投票的資金將被顯示為misc frozen,同樣不能通過Ethereum API訪問,直到他們被釋放。
從账戶交易來看,以太坊通過Ethereum API調用eth_sendRawTransaction進行轉账操作,利用Ethereum JSON RPC制定不同的策略來監聽轉账或余額變化;Moonbeam具備多種交易觸發方法,最佳方案是採用Polkadot.js SDK(Substrate API)進行監控。
此外,Moonbeam擁有幾種不同的交易類型:
Substrate transfer – 通過用戶創建一個extrinsic(balances.transfer或balances.transferKeepAlive)進行轉账,會觸發一個balances.Transfer事件;
Substrate feature – 通過Substrate原生組件來創建一個extrinsc,比如treasury pallet調用treasury.proposeSend,同時會觸發一個或多個balances.Transfer事件;
Ethereum transfer – 通過一個無數據輸入,創建一個ethereum.transact extrinsic,觸發一個balances.Transfer事件;
-
Ethereum transfers via smart contracts – 將一些數據作為輸入,創建一個ethereum.transact extrinsic,並觸發一個或多個balances.Transfer事件;
Polkadot.js API為开發者提供一種使用Javascript與Substrate鏈交互的方法,步驟為:
構造wsProvider和PolkadotApi,循環查詢鏈上所有事件;
-
檢查是否為balances事件,如果是則對事件進行解析,並打印輸出到控制臺。
更多示例請參考本腳本。(https://gist.github.com/crystalin/b2ce44a208af60d62b5ecd1bad513bce)
統一账戶模型設計
如上所述,通過EVM和Frontier pallet,Alice用戶可以在基於Substrate的鏈上擁有一個以太坊風格的地址(H160格式),長度為40+2的十六進制字符,該地址私鑰可在以太坊一側進行籤署交易;同時,該地址被映射到Substrate Balance pallet的Storage中,成為一個Substrate風格的地址(H256格式)。
Alice只知道H160地址的私鑰,但不知道映射版本的私鑰,因此無法使用對應H256地址發送交易,這樣也就無法參與質押、治理操作,如下圖所示:
如此一來,Alice需要將余額移動到H160映射的H256地址,才能進行合約交易與部署。同時,她還需要維持另外一個H256地址保持平衡才能使用基於Substrate的功能。綜上,Alice至少需要兩個私鑰才能實現兼容以太坊,這帶來了摩擦和糟糕的用戶體驗。
Moonbeam統一账戶模型,旨在解決上述問題並創造一個完全兼容以太坊的環境,並盡可能提供最佳的用戶體驗,包括以太坊基礎功能集、Substrate鏈上治理、抵押和跨鏈能力。
目前,Bob用戶無需面臨账戶之間移動余額的問題,並且能夠使用單個账戶和私鑰訪問所有功能。
總的來說,Moonbeam利用波卡平行鏈機制能夠進行多個異構分片鏈通信,利用中繼鏈模式獲得共享安全性,利用以太坊轉接橋和EVM虛擬機實現智能合約的無縫遷移和交互,讓开發者利用現有以太坊工具和網絡,輕松將項目成果進行跨鏈兼容。
隨着波卡網絡和以太坊網絡的不斷發展,Moonbeam強大的兼容性必將迎合市場的需求,進而實現开發者和用戶的最優使用體驗。
感興趣的开發者如果想要獲取進一步實踐教程,請點擊左下方閱讀原文訪問。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...
悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤
一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...