コンテンツへスキップ

スマートコントラクトとは?

スマートコントラクトは仲介者なしで実行されるコードであり、DeFi、ステーブルコイン、NFTの基盤となる技術です。その仕組みを学びましょう。

7分
スマートコントラクトとは?

スマートコントラクトとは、ブロックチェーンネットワーク上に保存された自己実行型のコードであり、条件が満たされると仲介者を必要とせず自動的に合意を実行します。スマートコントラクトは、ルールを透明かつ確実に適用することで、アプリ、DeFi、NFT、DAOを支えています。スマートコントラクトは特定のネットワークに限定されるものではなく、EthereumやEVM互換ブロックチェーン、Solana、Cardano、Polkadot、Suiなど、それぞれ独自のプログラミング言語と実行モデルを使用してスマートコントラクトを動かしています。スマートコントラクトはオンチェーン上に存在するため、仲介者なしで動作し、そのルールは誰でも確認でき、一度デプロイされると基本的に変更できません。スマートコントラクトは、DeFiプロトコル、ステーブルコイン、NFT、DAOを含むほとんどのブロックチェーンアプリの基盤となる構成要素です。

免責事項:このガイドは教育目的のみを目的としています。財務アドバイスや勧誘ではなく、英国の読者を対象としたものでもありません。スマートコントラクトとのやり取りにはリスクが伴い、すべてのユーザーに適しているわけではありません。

スマートコントラクトの仕組み

開発者はコントラクトを作成し、一度ブロックチェーンにデプロイします。それ以降、誰でもそれと対話でき、条件が満たされるたびにロジックが実行されます。たとえば、支払いを受け取るとトークンをリリースしたり、特定のブロック高に達するとユーザーが資金を引き出せるようにしたりします。スマートコントラクトをサポートするすべてのネットワークに共通する2つの特性があります。実行は自動的で仲介者を必要とせず、コードはデフォルトで不変であるため、アップグレード可能に設計されていない限り、バグは永続します。

スマートコントラクトの実行にはコストもかかります。すべてのネットワークは、コントラクトが使用する計算とストレージを処理するためにネットワーク手数料を請求します。EthereumおよびほとんどのEVMチェーンでは「gas」と呼ばれ、他のネットワークでは異なる名称と手数料モデルが使用されています(Solanaのトランザクションごとの手数料、Cardanoのトランザクションごとの手数料とスクリプト実行ユニット、Polkadotのウェイトベースの手数料など)。仕組みは異なりますが、原則は同じです。ブロックチェーン上でコードを実行するとネットワークリソースが消費され、誰かがその費用を負担する必要があります。

スマートコントラクトの簡単な歴史

スマートコントラクトの概念は、ブロックチェーンよりも以前から存在していました。コンピュータ科学者で法学者のNick Szaboは、1994年に「スマートコントラクト」という用語を作り出し、1996年のエッセイでさらに詳しく説明しました。彼は、合意の条件を実行するコンピュータ化されたトランザクションプロトコルを説明し、この概念を、支払いを受け取ると確実に商品を提供する自動販売機に例え、相手を信頼する必要がないと述べました(Szaboのオリジナルの著作、概念の歴史として参照)。当時、このようなコードを信頼最小化かつ改ざん耐性のある方法で実行できるプラットフォームは存在せず、このアイデアは20年間ほぼ理論的なものにとどまりました。

2009年に開始されたBitcoinはブロックチェーンを導入しましたが、スクリプト言語(Bitcoin Script)は限定的なものでした。これは意図的にチューリング完全ではなく、マルチシグネチャ要件やタイムロックなどの支出条件を適用できますが、任意の汎用プログラムを実行することはできません。Bitcoin Scriptは既存の資金の使い方を制御しますが、次に何が起こるかについてのオープンエンドなロジックを表現できないため、Bitcoinは汎用スマートコントラクトプラットフォームとは見なされていません。

2015年7月30日に開始されたEthereumは、Ethereum Virtual Machine(EVM)を通じて汎用スマートコントラクトを実行するために特別に構築された最初の主要なブロックチェーンでした。EVMはすべてのEthereumノードが同一に実行する共有ランタイムです(ethereum.org、Ethereumの歴史)。これにより、Ethereumは以前のブロックチェーンにはなかった方法でプログラム可能になり、ほとんどのスマートコントラクト用語(gas(ネットワーク手数料とも呼ばれる)、コントラクトアカウント、Solidity)がここから生まれた理由です。それ以降、他のネットワークも異なる言語と実行モデルを使用して独自のスマートコントラクト環境を構築しました。Solana(2020年)、CardanoのPlutusスクリプト(2021年)、Polkadotのink!コントラクト、SuiのMoveベースのオブジェクト(2023年)などが含まれ、この概念は単一のネットワークをはるかに超えて拡張されました。

スマートコントラクトはどこで動作するか?

スマートコントラクトが使用するランタイムと言語は、デプロイされるネットワークによって完全に異なります。一部のネットワークは、コントラクトが読み書きするアカウント残高として状態を追跡します(Ethereumのアカウントモデル)。他のネットワークは、個別の使用可能なアウトプットとして状態を追跡します(CardanoのeUTXOモデル、BitcoinのUTXOモデルの拡張)、または個別に所有されるオブジェクトとして追跡します(Suiのオブジェクト中心モデル)。これらの違いはコントラクトの書き方や組み合わせ方に影響しますが、基本的な保証は変わりません。自動的に実行され、一度デプロイされると変更が困難または不可能なコードです。

ネットワーク

言語

実行モデル

主なエコシステムの用途

EthereumおよびEVMネットワーク

Solidity;Vyper;EVMバイトコードにコンパイル

アカウントベース;チェーンごとに一度に1つのコントラクト呼び出しを実行

DeFi;ステーブルコイン;ERC-20およびERC-721トークン

Solana

Rust、主にAnchorフレームワークを使用

Sealevel:同じデータに触れない場合、トランザクションを並列実行

高スループットDeFi;NFTマーケットプレイス

Cardano

Plutus(Haskellベース)

Extended UTXO(eUTXO):トランザクションの結果を送信前に検証可能

DeFi;ネイティブトークン発行

Polkadot(パラチェーン経由)

ink!(Rustベース);MoonbeamなどのEVMパラチェーンもSolidityを実行

Substrateベースのパラチェーン上で動作;パーミッションレスデプロイ

パラチェーンアプリ;プロトタイピング

Sui

Move

オブジェクト中心:トランザクションが所有オブジェクトを変更し、並列処理を可能にする

NFT;ゲーム;DeFi

Bitcoin

Bitcoin Script

限定的、チューリング完全ではない;支出条件のみを適用

マルチシグネチャウォレット;タイムロック;レイヤー2プロトコル

出典: ethereum.org; Solana Sealevel; Cardano eUTXO; use.inkドキュメント; Sui Moveの概念。

スマートコントラクトを書くのは誰か、使うのは誰か?

開発者がスマートコントラクトを作成してデプロイします。適切なツールとデプロイコストをカバーするのに十分なネットワークのネイティブトークンがあれば誰でもできますし、デプロイに基盤となるネットワークからの許可は必要ありません。コントラクトが稼働すると、誰でもそれと対話できます。通常は、コードを直接書くのではなく、アプリのインターフェースを通じて行います。トークンをスワップしたり、NFTをミントしたり、DAOで投票したりする人は、基盤となる言語やランタイムを理解する必要なく、スマートコントラクトの実行をトリガーしています。

トークン標準

「トークン」と呼ばれる多くの資産は、共有標準に従ったスマートコントラクトであり、ウォレットやアプリが準拠するすべてのトークンと同じ方法でやり取りできます。EthereumおよびEVMチェーンでは、ERC-20がほとんどのステーブルコインやユーティリティトークンを含む代替可能トークンの標準であり、ERC-721は各トークンが固有であるNFTの標準です。他のネットワークには独自の同等物があります。たとえばSolanaのSPLトークン標準は、それぞれの実行モデルに合わせて構築されています。

スマートコントラクトが支えるもの

エコシステム全体にわたって、スマートコントラクトはアプリのエンジンです。貸し借りや取引のためのDeFiプロトコル、NFTやデジタル資産マーケットプレイス、そしてガバナンスルールが企業の内部ポリシーではなくコードに存在するDAOなどがあります。具体的な実装はネットワークによって異なりますが、基本的なパターン(仲介者なしで合意を適用するコード)は一貫しています。

スマートコントラクトが存在する理由

スマートコントラクトは、合意を適用するために信頼できる仲介者を必要とすることをなくすために存在します。資金を保持してルールに従うために銀行、エスクローエージェント、またはプラットフォーム運営者に依存する代わりに、ルールが直接コード化され、コントラクトと対話するすべての人に対して同じ方法で実行されます。これが、プログラム可能なセルフカストディアル金融、デジタル所有権、ブロックチェーンガバナンスを、コードをホストするネットワークに関係なく、大規模に可能にする特性です。

トークン承認と安全性

アプリを使用するということは、多くの場合、スマートコントラクトにトークン承認(特定のトークンをあなたの代わりに移動する許可)を付与することを意味します。これは通常のことですが、悪意のあるコントラクトがユーザーの意図以上のトークンを移動できる承認を要求する可能性があるため、一般的な攻撃ベクターでもあります。トークン承認は特定の金額に制限することも、無制限にすることもできます。MetaMask Extensionは、署名前にコントラクトアドレスや承認が制限付きか無制限かを含む完全なトークン承認の範囲を表示するため、ユーザーは事前に確認できます。トークン承認に関するガイドでは、承認の確認と取り消し方法について説明しています。

スマートコントラクトのリスク

  • バグは永続的です:欠陥のある不変コードは、デプロイ後に一般的にパッチを当てることができません。

  • 監査はリスクを軽減しますが、排除はしません:監査済みのコントラクトでも悪用された事例があります。

  • 悪意のあるコントラクトは、1つのネットワークだけでなく、それをサポートするすべてのネットワークに存在します。

スマートコントラクトに関するよくある質問

AIによる翻訳です。エラーが含まれている可能性があります。常に情報を確認してください。

翻訳を評価する

この記事の執筆者:

  • MetaMask

    MetaMask(旧Consensys Software Inc)は、世界最大のセルフカストディ型金融プラットフォームです。暗号資産と従来の資産の両方にわたって、資産の保有・支払い・貯蓄・運用を一か所で行える環境をユーザーに提供しています。同社は、決済・貯蓄・投資・デジタル資産をシームレスな体験として統合したコンシューマー向けプラットフォームの構築を進めています。世界で最も広く利用されているセルフカストディウォレットとして成長を遂げたMetaMaskは、約190か国にわたるユーザーが自身の資金と資産を直接管理できる手段を提供しています。MetaMaskは2016年以来、Ethereumの成長において基盤的な役割を果たしてきました。現在、MetaMaskはブロックチェーン経済の中心に位置し、「Open Money」のオペレーティングシステムを構築することで、人々が自らの金融生活を完全にコントロールできる世界を目指しています。

    すべての記事を読む