波卡中的智能合約
Polkadot生态研究院
2022-10-08 06:46
本文约5033字,阅读全文需要约20分钟
智能合約是區塊鏈必不可少的功能,成熟的智能合約項目對於波卡生態也同樣重要。

圖片

波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望通過這樣的努力讓大家能夠正確認知波卡,也讓不了解波卡的人方便快速掌握波卡相關知識,圖片

波卡知識圖譜

”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望通過這樣的努力讓大家能夠正確認知波卡,也讓不了解波卡的人方便快速掌握波卡相關知識,圖片

波卡知識圖譜

”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望通過這樣的努力讓大家能夠正確認知波卡,也讓不了解波卡的人方便快速掌握波卡相關知識,

圖片

波卡知識圖譜

”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望通過這樣的努力讓大家能夠正確認知波卡,也讓不了解波卡的人方便快速掌握波卡相關知識,

今天是該欄目的第65期,波卡本身不支持智能合約,但是波卡的平行鏈將支持智能合約,而Substrate智能合約本質上更安全,開發門檻也較低,那麼如何在波卡中構建智能合約呢?智能合約是區塊鏈必不可少的功能,正是有了智能合約,區塊鏈才實現了機器信任,目前其應用場景廣泛,包括數字身份、供應鏈、貿易金融、抵押等多個領域。

Substrate智能合約允許用戶在區塊鏈核心邏輯的基礎上增加業務邏輯,同時建立了防範破壞者的保護機制。

與平行鏈相比,智能合約的開發速度更快、部署難度更低,因此像是Moonbeam、Astar、Phala這樣的智能合約平台為想要快速上線的應用提供了更多的選擇。

波卡中繼鏈本身不支持智能合約,但是,波卡上的平行鏈將支持智能合約。

開發智能合約和平行鏈的區別

抽象層

當你編寫智能合約時,你正在創建與特定鏈地址關聯並部署在其上的指令。相比之下,runtime模塊是一個鏈的狀態轉換的整個邏輯(稱為狀態轉換函數)。

智能合約必須有意識地實現可升級性,而平行鏈將有能力完全通過根命令或通過治理Pallet交換其代碼。

當你構建智能合約時,它最終會被部署到一個具有自己環境的目標鏈上

。平行鏈允許開發人員聲明自己鏈的環境,甚至允許其他人為其編寫智能合約。

Gas費

智能合約必須找到限制自身執行的方法,否則完整節點很容易受到DOS攻擊。

例如,智能合約中的無限循環可能會消耗整個鏈的計算資源,從而阻止其他人使用它。斷續問題表明,對於足夠強大的語言,不可能提前知道程序是否會停止執行。

  • 一些平台,比如比特幣,通過提供非常有限的腳本語言來繞過這個約束。其他項目,例如以太坊,向智能合約收取“gas”以提供執行其代碼的權利。

  • 平行鏈可以實現任意強大的編程語言,並且不為它們自己的本地邏輯包含gas概念。

Frontier提供的EVM Pallet。

將某些邏輯(例如可能無限期運行的複雜循環)留給非智能合約層,或者甚至試圖消除它,通常是更明智的選擇。平行鏈試圖主動,而智能合約平台是事件驅動的。

二級標題

Substrate目前以兩種方式支持開箱即用的智能合約:

圖片

二級標題

基於Wasm合約的FRAME庫中的Contracts Pallet。https://www.youtube.com/watch?v=fKHkFBXaUxQ

圖片

二級標題https://stackoverflow.com/questions/56040779/when-should-i-build-a-substrate-runtime-module-versus-a-substrate-smart-contract/56041305#56041305)

Frontier是一套工具,它使Substrate鏈能夠以相同的API/RPC接口原生運行以太坊合約(EVM),以太坊在Substrate上公開。以太坊地址也可以從現有賬戶直接映射到Substrate的SS58方案。https://github.com/paritytech/ink)

Contracts Pallet

圖片

1.Wasm(WebAssembly)Substrate合約

2.Substrate提供內置的合約Pallet;隨著時間的推移,更多平行鏈將支持WebAssembly智能合約。圖片

3.智能合約情況概述的視頻版本可以在Polkadot YouTube頻道上找到。存款(Deposit)

資源

4.我應該在什麼時候構建Substrate runtime與Substrate智能合約?這篇文章從技術上回答了開發人員何時可能選擇開發runtime而不是智能合約。 (以下是目前可供那些想要開始編寫智能合約以部署在基於Substrate的平行鏈上的開發人員使用的資源列表。 ink!——Parity編寫智能合約的ink!。 (

以前編寫過智能合約的開發人員可能更熟悉部署到基於EVM的鏈上的體驗。但是,Contracts Pallet對EVM的設計進行了一些顯著的改進:https://github.com/paritytech/substrate/pull/9669

:Contracts Pallet使用WebAssembly作為其編譯目標。任何編譯為Wasm的語言都可能用於編寫智能合約。儘管如此,最好有一個專門的領域特定語言,因此Parity提供了ink!語言。

存款(Deposit)

:合約必須持有足夠大的存款(名為ContractDeposit)以證明它們在鏈上的存在。部署人員需要在ExistentialDeposit的基礎上將其存入新合約。

緩存(Caching)https://github.com/w3f/PSPs

Ink!

:合約在默認情況下是緩存的,因此這意味著它們只需要部署一次,然後可以根據需要多次具現化。

這有助於將鏈上的存儲負載降至最低。最重要的是,當合約不再被使用,存在的存款被耗盡時,代碼將從存儲中刪除(稱為回收reaping)。

存儲租金(Storage Rent)

:已棄用Pallet_contracts最初是為了應對無限制的狀態增長而設計的,它對合約所消耗的狀態進行收費,但後來被棄用。

有關更多詳細信息,請參閱相關的pull request:

  • 波卡標準提案(PSP)https://docs.openbrush.io/

  • Web3基金會支持波卡的提案,這些提案定義了一套符合生態系統需求的標準。這些標準要經過幾個接受階段,在這些階段需要整個社區的參與來建立有價值的和麵向未來的標準。https://github.com/patractlabs/metis

從標準中受益的所有團隊都需要就其內容達成一致。

其中一些PSP是針對Substrate的Contracts Pallet:請訪問波卡標準建議(PSP) Github了解更多信息:

Parity Tech

ink!:

https://github.com/paritytech/inkSubstrate contracts Pallet:https://github.com/paritytech/substrate/tree/master/frame/contracts

ink!是一種在Rust中編寫智能合約的領域特定語言,可編譯為Wasm代碼。正如它在自述書中所言,它仍處於試驗階段,因此勇敢的開發人員應該意識到,他們可能會有一個坎坷但可行的開發經驗。

Moonbeam:

https://moonbeam.network/

Astar:

https://astar.network/

Acala:

https://acala.network/

Phala:

https://www.phala.network/zh/

有一些項目已經用ink!構建了項目,具有相當程度的複雜性,因此它已經足夠成熟,可以開始構建有趣的內容。

https://www.polkaproject.com/#/projects?cateID=1&tagID=6

Moonbeam

對於感興趣的開發人員,他們可以開始使用ink!編寫智能合約,通過研究已經寫過的例子。這些可以作為編寫更複雜邏輯的指南,這些邏輯將可部署在智能合約平行鏈上。

ink!為基於Wasm虛擬機並與Substrate鏈兼容的新智能合約棧奠定了許多基礎。

ink!的智能合約庫下面收集了一些智能合約的示例。你正在開發智能合約示例嗎?請讓我們將其添加到此頁面!

OpenBrush:一個ink!庫,提供基於PSP的標準合約,以及用於構建的有用合約和macros。https://docs.moonbeam.network/Astar

Metis:由Patract Labs開發的Wasm合約標準庫。

智能合約環境仍在不斷成熟

波卡上的智能合約還為時過早,其發展現在才趨於穩定。我們正在積極製作內容以幫助開發人員跟上進度,並將使用最新資源維護Wiki。你還應該通過以下鏈接了解最新信息:

平行鏈https://docs.astar.network/docs/wasm/sc-dev/ink-dev/

Acala

許多智能合約平台正在構建,成為生態系統中的平行鏈。可以在PolkaProjects上找到社區創建和維護基於波卡的不同智能合約平台的社區列表。

Moonbeam是另一個計劃作為平行鏈部署到波卡的項目,並將支持與以太坊兼容的智能合約。

由於Moonbeam使用Frontier,這是一個與現有以太坊工具的互操作層,它將支持所有針對EVM環境而編寫的應用程序,幾乎沒有阻力。https://wiki.acala.network/build/development-guide/smart-contracts

Phala

Moonbeam的先行網絡Moonriver以平行鏈的形式在Kusama上推出。平行鏈功能已上線,功能正在逐步發布。發布的最後階段將包括EVM功能和余額轉移。

嘗試按照Moonbeam的文檔來部署智能合約。

Astar(原Plasm)是建立在Substrate上的智能合約平台,並打算作為平行鏈與波卡集成。https://wiki.phala.network/en-us/general/phala-network/intro/

Shiden是Astar的先行網絡,目前在Kusama上運行,並支持EVM、WASM和Layer2解決方案。

Astar旨在容納所有第2層擴展解決方案,並通過OVM(樂觀虛擬機)支持所有Layer2協議。

嘗試部署以太坊或ink!按照他們的文檔進行智能合約。https://matrix.to/#/#polkadot-watercooler:web3.foundation

Acala是一個去中心化金融聯盟和DeFi基礎設施鏈,提供一組協議作為波卡上的DeF中心。 Karura,Acala的先行網絡作為平行鏈在Kusama上運行。https://area51.stackexchange.com/proposals/126136/substrate感興趣的團隊現在可以在Karura的平台上部署DApp和智能合約。 Acala也在實施Acala EVM。

嘗試按照Acala EVM的文檔部署Acala智能合約。

Phala是一個保護隱私的雲計算平台,旨在作為跨鏈平台提供強有力的保密保證。

作為一個智能合約平台,Phala將支持在波卡上使用加密的智能合約。 Khala是Phala的先行網絡,作為平行鏈在Kusama上運行。

https://t.me/polkadot_eri

嘗試按照的Phala文檔部署加密的智能合約。

https://mirror.xyz/0x9A259b3a2316281Cc948cE2Cf1Ac610a79844f05

Polkadot生态研究院
作者文库