Vyper、Solidity、Scrypto: スマート コントラクト言語の比較

ブロックチェーン ネットワーク用の XNUMX つの異なるプログラミング言語とそれらの比較を見てみましょう。

イーサリアム ネットワークはスマート コントラクトをブロックチェーン空間にもたらし、次のような概念を作りました。 分散型ファイナンス(DeFi) 可能。 

スマート コントラクトは、特定の条件が満たされると、自動的にプロセスを実行できます。 この新しいテクノロジーとともに、Solidity と呼ばれる新しいコーディング言語が開発されました。

ブロックチェーン業界が成長を続け、新しいブロックチェーン ネットワークが出現するにつれて、特に Vyper や Scrypto など、追加のプログラミング言語がこの分野に持ち込まれています。

プログラミング言語 テキストと数値の文字列を機械可読コードに変換する一連のルールです。 簡単に言えば、プログラミング言語は、人間が入力した命令をコンピュータが理解できるようにするものです。 ブロックチェーン業界に関して言えば、Solidity、Python、Javascript は最も一般的に使用されている言語の一部ですが、すべて動作が異なります。

ソリディティとは何ですか?

Solidity は、Ethereum ブロックチェーンや、BNB Smart Chain や Avalanche などの他のブロックチェーン ネットワーク上でスマート コントラクトを構築するためのオブジェクト指向の高レベル プログラミング言語です。 この言語は 2014 年に開発され、JavaScript、C++、Python などのプログラミング言語と類似点を共有しています。

Solidity は高水準言語であるため、コンピューター コードは XNUMX と XNUMX ではなく、人間が判読しやすい方法で入力されます。 たとえば、Solidity コードには、「関数」や「コントラクト」などの単語やフレーズ、中かっこや数字が含まれます。

オブジェクト指向のコーディング言語であることは、Solidity が「オブジェクト」の使用を中心に展開していることを意味します。これは、元のコードを毎回書き直すことなく、再利用して同様のコードを作成できるコードの一部です。

また、Solidity はコンパイラを使用して、人間が読める高レベルのコードを、イーサリアム仮想マシン (EVM) で実行されるマシンが判読できるコードに変換します。

バイパーとは?

Vyper は、EVM で使用するように設計された、スマート コントラクト用のコントラクト指向の Python プログラミング言語です。 この言語は、コードのセキュリティと可読性を向上させることにより、Solidity を改善するように設計されています。 Vyper は、コードの可聴性に重点を置いています。 このため、その原則の XNUMX つは、人間ができるだけ多くの Vyper コードを読み取れるようにすることです。 

Vyper はまた、誤解を招くようなコードを誰でもできるだけ書きにくくすることを目指しています。 読み手 (つまり、監査人) にとっての単純さは、書き手 (つまり、開発者) にとっての単純さよりも重要です。 これにより、スマート コントラクトまたは分散型アプリケーション (DApp) 内の悪意のあるコードを特定しやすくなります。

スクリプトとは?

Scrypto は、資産指向のスマート コントラクト言語です。 この言語は Radix によって開発され、Rust に基づいており、Radix Engine v2 用の特定の関数と構文を追加しながら、Rust のほとんどの機能を保持しています。 Scrypto は資産指向であるため、言語内のリソースの一種であるトークンなどの資産と対話できます。 

Solidity のようなコーディング言語では、ERC-20 トークンは EVM 上のスマート コントラクトとして存在します。 Scrypto 内のアセットは、コンテナーとボールト内に存在するリソースです。 簡単に言えば、バケツ (コンテナ) にコイン (資産) を入れて貯金箱 (金庫) に保管するようなものです。

最近: 業界の成熟に伴い、市場への依存度が低下した仮想通貨の人材に対する需要

また、Scrypto は、DApp 内の機能を有効にするためにコンテナーやリソースと対話しながら、必要なコードのみを記述できるようにすることで、開発者にとって使いやすいものにすることにも重点を置いています。 セキュリティは、開発者が包括的な権限を与える代わりに DApp に特定の指示を与えることができるもう XNUMX つの原則です。

スマート コントラクト言語の比較

Solidity には、Ethereum などの主要なブロックチェーン ネットワークで使用されているため、幅広いオンライン学習リソースと多くのコミュニティ サポートがあります。 Solidity には、オブジェクト指向プログラミング (OOP) から取られた幅広い機能もあり、モジュール化され、問題が発生した場合のトラブルシューティングが容易になります。 たとえば、特定のクラスのオブジェクトが誤動作した場合、そのクラスの起源までさかのぼることができます。 

これが機能するのは、Solidity がカプセル化を使用しているためです。つまり、すべてのオブジェクトが自己完結型であり、各機能が独立して動作します。 また、コーディング言語のモジュール性により、開発者は複数のオブジェクトを同時に処理できるため、スマート コントラクトの構築、修正、展開がより効率的になります。

Vyper は Solidity よりも単純なコーディング言語であり、透明性、言語構造の単純さ、および可聴性を重視しています。 また、Vyper は、セキュリティ上の理由から意図的に行われた Solidity よりも機能が少なくなっています。 限られた機能セットにより、悪意のある攻撃者が悪用できる脆弱性の数が減少します。

たとえば、Solidity は、プロセスが実行される前後にチェックが実行されたことを示す修飾子を採用しています。 ただし、Vyper は修飾子を使用しません。開発者は、誤解を招くコードを記述しやすくすると考えているためです。 また、個人がファイル全体でバウンスするコードを開発することを奨励し、可聴性を低下させます。 Vyper には修飾子が存在しないため、状態の変更をコードに追加することはできません。

Vyper から除外されているもう XNUMX つの機能は継承です。 Solidity では、複数のコントラクトが親コントラクトから機能を継承できます。 意見の相違がある場合は、個人が優先順位の規範を理解する必要もあります。 Vyper はクラス継承を使用しません。これは、コードの複雑さの潜在的な原因を排除し、可聴性の向上に貢献するためです。 一般に、Vyper は、Vyper ベースのスマート コントラクトのユーザーをより適切に保護するために、セキュリティを強化し、コードベースをより適切に検査するために、いくつかの機能を交換する、よりミニマリストなコーディング言語です。

Solidity は、ブロックチェーン スペースで最も人気があり、よく知られているプログラミング言語の XNUMX つかもしれませんが、一部の言語は、開発者にとって学習曲線がより簡単です。 さらに、より単純なプログラミング言語により、新しい開発者を業界に引き付けることが容易になります。

Radix の開発者である RDX Works の最高戦略責任者である Adam Simmons 氏は、コインテレグラフに次のように語っています。 これは単に言語をよりシンプルにすることではなく、直感的で安全な開発者ツールを作ることです。」

「ピーク時には、DeFi はわずか 200 年で 200 億ドルを超える TVL に成長しました。明らかに、非常に高いレベルの需要があります。 しかし、資本が 2 倍に増加したにもかかわらず、開発者の数は 19,000 倍にしか増えておらず、合計で約 30 人になりました (世界中の約 XNUMX 万人の開発者のうち)」

分散型金融分野で高い成長が見られたにもかかわらず、開発者の数は需要に見合うほどには増えませんでした。 Simmons 氏は、開発者は、Solidity が難しすぎてブロックチェーン開発に移行できないことに気付いた可能性があると考えています。

「開発者は、Solidity の学習曲線が急で、セキュリティに関するリスクが高いため、Web3 に専念することをためらっています。 非常に才能のある開発者とセキュリティ監査に数百万ドルが費やされているにもかかわらず、DeFi は依然としてハッキングとエクスプロイトから出血しています。 これだけでも、開発者がこの分野に参入するのを思いとどまらせるのに十分です。」

「適切な言語とツールがあれば、開発者は業界全体をはるかに急速に成長させることができます。 90 年代にゲーム エンジンが開発者にビデオ ゲーム制作に革命をもたらすツールを提供したように、適切な Web3 言語とツールにより、開発者は Web3 の成長を加速できるようになります」と Simmons は付け加えました。

Scrypto は、セキュリティ、シンプルさ、使いやすさにも重点を置いています。 暗号トランザクションは資産に焦点を当てています。 これらは、ユーザーがシステム リソースを分散する方法を定義します。 また、返されたリソースがユーザーまたはマルチコンポーネント トランザクションの別のコンポーネントによってどのように処理されるかを示す場合もあります。

イーサリアム上のトランザクションは通常、スマート コントラクトへの呼び出しです (イーサリアム上の DApps とトークンはスマート コントラクトであるため)。 対照的に、Scrypto でのトランザクションには、あるコンポーネントから別のコンポーネントへの資産の移動が含まれます。

たとえば、ユーザー A が 10 個のカスタム トークンをユーザー B に送信したい場合、ユーザー B のトランザクションは、ユーザー B が含まれているボールトから 10 個のトークンを取り出そうとしていることを示します。 トランザクションは、それらのトークンをユーザー B のアカウント コンポーネントの入金メソッドに送信することも示します。 リソース (この場合はトークン) をどこかに配置する必要があるため、ユーザー A からユーザー B にトークンを転送するためにバケット (コンテナー) が使用されます。

上記の例では、ユーザーは、トークン スマート コントラクトを呼び出す代わりに、リソース (トークン) を含むバケットを XNUMX 番目のユーザーの入金メソッドに転送します。 DApps とのやり取りも同様に機能し、ユーザーは自分のアカウントからトークンを引き出し、やり取りしたい関連コンポーネントにトークンを渡します。 要約すると、Scrypto はアセットベースのアプローチを採用しており、ユーザーは実際のアセットを保存して渡します。 また、アセットベースのアプローチにより、トークン (リソース)、トークン プール (ボールト)、およびユーザー (コンポーネント) とのやり取りが容易になるため、開発者は DApp のコーディングが容易になります。

別の例として、スワッピング DApp (Uniswap など) が Scrypto でコーディングされている場合、開発者はスワップの取引方法をコーディングするだけで済みます。 最初に、DEX はユーザーのトークン A の受信コンテナーを識別し、次に為替レートを計算する必要があります。 次に、受信したトークンが入金され、DEX は正しい量のトークン B をユーザーに送り返します。

ブロックチェーン開発者はどのプログラミング言語を選ぶべきですか?

開発者は、従来のプログラミング言語 (C++、Python、JavaScript) をブロックチェーン開発に使用できるだけでなく、Solidity、Vyper、Scrypto などの特別に構築されたソリューションも使用できます。 複数のプログラミング言語は、開発者が使用できるさまざまなツールを提供するため、ブロックチェーン スペースにとって有益です。 

たとえば、C++、JavaScript、および Python に精通している開発者は、Solidity に魅力を感じるかもしれません。 Python に精通している開発者は Vyper に引き寄せられるかもしれませんが、Rust に精通している開発者は Scrypto 言語の使用を選択するかもしれません。

最近: ソーシャル トークンは、ファンベースからインセンティブまで、Web3 のエンジンになります。

シモンズ氏も同意し、コインテレグラフに次のように語った。 これらの言語が開発者との製品市場適合性を見出し、最も重要なこととして、それらの開発者が強力で便利で安全な DApps を構築できるようになると、業界は最高の結果をもたらすものに引き寄せられるようになるでしょう。」

Solidity は、イーサリアムや同様のブロックチェーン ネットワークに取り組みたい開発者にとって当然の選択です。 同時に、Vyper と Scrypto は、シンプルさと追加のセキュリティを好む開発者を引き付ける可能性があります。 Scrypto は、その単純さと資産指向のアプローチが向上しているため、開発者にとっても好ましいかもしれません。

ソース: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare