Polkadot のスマート コントラクト
Polkadot生态研究院
2022-10-08 06:46
本文约5033字,阅读全文需要约20分钟
スマート コントラクトはブロックチェーンの重要な機能であり、成熟したスマート コントラクト プロジェクトは Polkadot エコシステムにとって同様に重要です。

写真

水玉模様のナレッジグラフ「これは、Polkadot をゼロから 1 まで説明する入門レベルの記事です。Polkadot の最も基本的な部分から始めて、Polkadot を包括的に理解できるように努めています。課題はありますが、このような取り組みを通じて、誰もが正しく理解できることを願っています」 Polkadot と、Polkadot を知らない人でも、Polkadot 関連の知識を簡単かつ迅速に把握できます。写真

水玉模様のナレッジグラフ

「これは、Polkadot をゼロから 1 まで説明する入門レベルの記事です。Polkadot の最も基本的な部分から始めて、Polkadot を包括的に理解できるように努めています。課題はありますが、このような取り組みを通じて、誰もが正しく理解できることを願っています」 Polkadot と、Polkadot を知らない人でも、Polkadot 関連の知識を簡単かつ迅速に把握できます。今日は、このコラムの 65 回目です。Polkadot 自体はスマート コントラクトをサポートしていませんが、Polkadot のパラチェーンはスマート コントラクトをサポートし、Substrate スマート コントラクトは本質的に安全であり、開発の敷居が低いです。では、Polkadot をどのように組み込むか? スマート コントラクトについてはどうでしょうか? ?

スマートコントラクトはブロックチェーンの重要な機能であり、スマートコントラクトがあるからこそブロックチェーンは機械の信頼を実現し、現在、デジタルアイデンティティ、サプライチェーン、貿易金融、住宅ローンなどの分野を含む幅広い応用シナリオが実現されています。

サブストレート スマート コントラクトを使用すると、ユーザーは妨害者に対する保護メカニズムを確立しながら、ブロックチェーンのコア ロジックに基づいてビジネス ロジックを追加できます。

パラチェーンと比較して、スマート コントラクトは開発速度が速く、導入の難易度が低いため、Moonbeam、Astar、Phala などのスマート コントラクト プラットフォームは、迅速にオンライン化したいアプリケーションに対してより多くのオプションを提供します。

Polkadot リレー チェーン自体はスマート コントラクトをサポートしていませんが、Polkadot 上のパラチェーンはスマート コントラクトをサポートします。

スマートコントラクト開発とパラチェーン開発の違い

抽象化層スマート コントラクトを記述するときは、特定のチェーン アドレスに関連付けられ、そのアドレスにデプロイされる命令を作成することになります。対照的に、ランタイム モジュールは、状態遷移のチェーン (状態遷移関数と呼ばれます) のロジック全体です。

スマート コントラクトは意図的にアップグレード可能である必要がありますが、パラチェーンはルート コマンドまたはガバナンス パレットを通じてコードを完全に交換できる機能を備えています。

スマート コントラクトを構築すると、最終的には独自の環境を持つターゲット チェーンにデプロイされます。

。パラチェーンを使用すると、開発者は独自のチェーンの環境を宣言でき、他の人がそのチェーンのスマート コントラクトを作成することもできます。

ガス料金

スマート コントラクトは、自身の実行を制限する方法を見つける必要があります。そうしないと、フル ノードが DOS 攻撃に対して脆弱になります。

たとえば、スマート コントラクト内の無限ループはチェーン全体のコンピューティング リソースを消費し、他のユーザーがそれを使用できなくなる可能性があります。不連続性の問題は、十分に強力な言語の場合、プログラムが実行を停止するかどうかを事前に知ることが不可能であることを示しています。

ビットコインなどの一部のプラットフォームは、非常に限定されたスクリプト言語を提供することでこの制約を回避しています。イーサリアムなどの他のプロジェクトは、コードを実行する権利を提供するためにスマート コントラクトに「ガス」を請求します。

スマート コントラクトが実行を決して停止できない状態になった場合、最終的にはガスが不足して実行が停止し、スマート コントラクトが行うはずの状態遷移はすべてロールバックされます。

Polkadot はガス計測モデルの代わりに重量料金モデルを使用します

パラチェーンは任意の強力なプログラミング言語を実装でき、独自のネイティブ ロジックにガスの概念は含まれません。

これは、特定の機能は開発者にとって実装が容易ですが、終了条件のないループなどの特定の構造は実装すべきではないことを意味します。

多くの場合、特定のロジック (無限に実行される可能性のある複雑なループなど) を非スマート コントラクト層に残すか、それを排除しようとする方が賢明です。パラチェーンはプロアクティブに行動しようとしますが、スマート コントラクト プラットフォームはイベント駆動型です。

  • スマートコントラクトを構築する

  • Substrate は現在、次の 2 つの方法ですぐに使えるスマート コントラクトをサポートしています。

フロンティアが提供するEVMパレット。

Wasm コントラクトに基づいた FRAME ライブラリのコントラクト パレット。

副題

Frontier は、Ethereum が Substrate 上で公開するのと同じ API/RPC インターフェイスを使用して、Substrate チェーンが Ethereum コントラクト (EVM) をネイティブに実行できるようにするツール スイートです。イーサリアム アドレスは、既存のアカウントから Substrate の SS58 スキームに直接マッピングすることもできます。

写真

基板契約

Substrate は組み込みのコントラクト パレットを提供します。時間の経過とともに、より多くのパラチェーンが WebAssembly スマート コントラクトをサポートするようになります。https://www.youtube.com/watch?v=fKHkFBXaUxQ

写真

さらに、パラチェーンがイーサリアム EVM を実装できるようにする EVM パレットがあり、イーサリアム コントラクトの直接ポートが可能になります。https://stackoverflow.com/questions/56040779/when-should-i-build-a-substrate-runtime-module-versus-a-substrate-smart-contract/56041305#56041305)

スマート コントラクトの概要のビデオ版は、Polkadot YouTube チャンネルでご覧いただけます。https://github.com/paritytech/ink)

Contracts Pallet

リソース

1.Wasm(WebAssembly)Substrate ランタイムと Substrate スマート コントラクトはいつ構築すればよいですか?この投稿では、開発者がスマート コントラクトではなくランタイムの開発を選択する場合について技術的に回答します。 (

2.以下は、Substrate ベースのパラチェーンに展開するスマート コントラクトの作成を開始したい開発者が現在利用できるリソースのリストです。 ink! - スマート コントラクトを作成するための Parity の ink!。 (以前にスマート コントラクトを作成したことのある開発者は、EVM ベースのチェーンへのデプロイメントの経験に精通しているかもしれません。ただし、Contracts Pallet では、EVM の設計にいくつかの注目すべき改善が加えられています。

3.: 契約パレットは、コンパイル ターゲットとして WebAssembly を使用します。 Wasm にコンパイルできる言語であれば、スマート コントラクトの作成に使用できる可能性があります。それでも、ドメイン固有の専用言語を用意した方がよいため、Parity は ink! 言語を提供しています。デポジット

: コントラクトは、オンチェーンでの存在を証明するために、十分な量のデポジット (ContractDeposit という名前) を保持する必要があります。デプロイヤーは、ExistentialDeposit に基づいてそれを新しい契約にデポジットする必要があります。

4.キャッシング: コントラクトはデフォルトでキャッシュされるため、デプロイする必要があるのは 1 回だけで、その後は必要に応じて何度でもインスタンス化できます。

これにより、オンチェーンのストレージ負荷を最小限に抑えることができます。さらに、コントラクトが使用されなくなり、既存のデポジットがなくなると、コードはストレージから削除されます (リープと呼ばれます)。https://github.com/paritytech/substrate/pull/9669

ストレージのレンタル

: 非推奨の Pallet_contracts は元々、コントラクトによって消費される状態に対して課金することで無制限の状態の増加に対処するように設計されましたが、後に非推奨になりました。

詳細については、関連するプル リクエストを参照してください。

ポルカドット標準提案 (PSP)https://github.com/w3f/PSPs

Ink!

Web3 Foundation は、エコシステムのニーズを満たす一連の標準を定義する Polkadot の提案をサポートしています。これらの標準はいくつかの受け入れ段階を経て、将来にわたって価値のある標準を確立するにはコミュニティ全体の参加が必要となります。

標準から恩恵を受けるすべてのグループは、その内容に同意する必要があります。

これらの PSP の一部は、基板用のコントラクト パレットです。詳細については、Polkadot Standard Proposal (PSP) Github を参照してください。

ink! は、Rust でスマート コントラクトを作成するためのドメイン固有の言語で、Wasm コードにコンパイルされます。 Readme に記載されているように、これはまだ実験段階であるため、勇敢な開発者は、困難はあるものの実用的な開発経験が得られる可能性があることを認識しておく必要があります。

ink! を使用してかなりの複雑さのプロジェクトを構築したプロジェクトがいくつかあるため、興味深いものを構築し始めるのに十分成熟しています。

  • 興味のある開発者は、すでに書かれた例を研究することで、ink! を使用してスマート コントラクトの作成を開始できます。これらは、スマート コントラクト パラチェーンにデプロイ可能な、より複雑なロジックを作成するためのガイドラインとして役立ちます。https://docs.openbrush.io/

  • ink! は、Wasm 仮想マシンをベースにし、Substrate チェーンと互換性のある新しいスマート コントラクト スタックの基盤の多くを築きます。https://github.com/patractlabs/metis

ink! のスマート コントラクト ライブラリには、以下のスマート コントラクトの例がいくつか集められています。スマート コントラクトのサンプルを開発していますか?ぜひこのページに追加させてください!

OpenBrush: 標準の PSP ベースのコントラクトに加えて、構築に役立つコントラクトとマクロを提供する ink! ライブラリです。

Parity Tech

ink!:

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

Metis: Patract Labs によって開発された Wasm コントラクトの標準ライブラリ。

Moonbeam:

https://moonbeam.network/

Astar:

https://astar.network/

Acala:

https://acala.network/

Phala:

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

スマートコントラクト環境はまだ成熟中

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

Moonbeam

Polkadot のスマート コントラクトはまだ初期段階にあり、その開発は今ようやく安定しつつあります。私たちは開発者が遅れないようにするためのコンテンツを積極的に作成しており、最新のリソースを使用して Wiki を維持していきます。最新情報については、以下のリンクも参照してください。

パラチェーン

多くのスマート コントラクト プラットフォームは、エコシステム内のパラチェーンとして構築されています。さまざまな Polkadot ベースのスマート コントラクト プラットフォームを作成および維持するコミュニティのリストは、PolkaProjects で見つけることができます。

Moonbeam は、パラチェーンとして Polkadot に展開する予定の別のプロジェクトであり、イーサリアム互換のスマート コントラクトをサポートします。https://docs.moonbeam.network/Astar

Moonbeam は、既存の Ethereum ツールとの相互運用性レイヤーである Frontier を使用しているため、EVM 環境用に作成されたすべてのアプリケーションをほとんど摩擦なくサポートします。

Moonbeam の主要ネットワークである Moonriver は、Kusama でパラチェーンとして開始されました。パラチェーン機能を開始し、段階的に機能をリリースしています。リリースの最終フェーズには、EVM 機能と残高転送が含まれます。

Moonbeam のドキュメントに従ってスマート コントラクトを展開してみてください。

Astar (旧名 Plasm) は、Substrate 上に構築されたスマート コントラクト プラットフォームであり、並列チェーンとして Polkadot と統合する予定です。https://docs.astar.network/docs/wasm/sc-dev/ink-dev/

Acala

Shiden は Astar の主要ネットワークであり、現在 Kusama 上で実行されており、EVM、WASM、および Layer2 ソリューションをサポートしています。

Astar は、すべてのレイヤー 2 スケーリング ソリューションに対応するように設計されており、OVM (Optimistic Virtual Machine) を通じてすべてのレイヤー 2 プロトコルをサポートします。

イーサリアムまたはインクをデプロイしてみてください! スマート コントラクトについてはドキュメントに従ってください。https://wiki.acala.network/build/development-guide/smart-contracts

Phala

Acala は分散型金融アライアンスおよび DeFi インフラストラクチャ チェーンであり、Polkadot の DeF センターとして一連のプロトコルを提供します。 Karura は、パラチェーンとして Kusama 上で実行されている Acala の主要ネットワークです。

興味のあるチームは、Karura のプラットフォームに DApps とスマート コントラクトを展開できるようになりました。 Acala は Acala EVM も実装しています。

Acala EVM のドキュメントに従って Acala スマート コントラクトをデプロイしてみます。https://wiki.phala.network/en-us/general/phala-network/intro/

Phala は、クロスチェーン プラットフォームとして強力な機密性保証を提供するように設計されたプライバシー保護クラウド コンピューティング プラットフォームです。

Phala は、スマート コントラクト プラットフォームとして、Polkadot 上の暗号化されたスマート コントラクトをサポートします。 Khala は Phala のリード ネットワークであり、Kusama 上でパラチェーンとして実行されます。

Phala のドキュメントに従って、暗号化されたスマート コントラクトをデプロイしてみます。https://matrix.to/#/#polkadot-watercooler:web3.foundation

連絡を取り合うhttps://area51.stackexchange.com/proposals/126136/substrateツールはまだ成熟段階にありますが、早期に実行する利点は、プロジェクトに慣れ、先を行くことができ、真に新しいものを革新して作成できることです。

Polkadot のスマート コントラクトに関する興味深いアイデアがある場合は、お気軽に Polkadot Watercooler に参加して議論してください。

開発者は、Polkadot Noobs Lounge https://matrix.to/#/#polkadotnoobs:matrix.org または Substrate Technical への参加に興味があるかもしれません。

彼らに質問するために。いつものように、ソーシャル チャネルをフォローして、ポルカドットやクサマとのつながりを保ちましょう。

https://t.me/polkadot_eri

すべてがうまくいきますように!

https://mirror.xyz/0x9A259b3a2316281Cc948cE2Cf1Ac610a79844f05

Polkadot生态研究院
作者文库