Web3を網羅的に学ぶなら、ブックマーク!
記事の目次
はじめに
スマートコントラクトについて、詳しく知りたい方へ。
本記事では、以下の内容を解説しています。
この記事の内容
- スマートコントラクトとは
スマートコントラクトとは、ブロックチェーンに参加しているコンピューターのリソースを用いて動くプログラムを指します。スマートコントラクトの開発者は、自分でデータベースやサーバーを維持する必要はなく、コードをブロックチェーンにデプロイします。 - スマートコントラクトが動くブロックチェーンは
スマートコントラクトが動くブロックチェーンの中で、最もメジャーなものはイーサリアムです。他にも、BNBチェーンやソラナ、ポリゴンなどのブロックチェーンが有名です。 - スマートコントラクトを活用したアプリケーション事例
スマートコントラクトで動くWeb3アプリケーションは「DApps」と呼ばれます。金融分野(DeFi)やゲーム分野では、特にスマートコントラクトの活用が進んでいます。 - スマートコントラクトの開発と実装方法
スマートコントラクトは、Solidityという開発言語で実装します。実装したスマートコントラクトをWeb3向けブロックチェーンにデプロイした上で、それをウェブサイトやアプリ等のフロントエンドから呼び出すことでサービスを開発します。
written by @raq_reezy
スマートコントラクトとは:仕組みをわかりやすく解説
スマートコントラクトとは
スマートコントラクトとは、ブロックチェーン上で動くプログラムを指します。
主にSolidtyというプログラミング言語で書かれたプログラムで、そのプログラムはブロックチェーンに参加しているコンピューターノードによって保存されています。例えば、トークンを売買できるプログラム、トークンを貸し借りできるプログラム、ゲームができるプログラムなど、さまざまなプログラムが開発者によって作られています。
イーサリアムなどのパブリックチェーン(広く公開されたブロックチェーン)であれば、誰でもこうしたプログラムを作成して、ブロックチェーンにデプロイすることができるのがスマートコントラクトの特徴です。
また、それらのプログラムを利用したいユーザーがいた場合は、ブロックチェーンに参加しているコンピューターノードに依頼することで、そのプログラムを実行してもらうことができます。例えば、あるトークンXを買いたい場合は、トークンXを購入するプログラムを実行するようコンピューターノードに依頼することで、トークンXを購入することができます。
もしも、自分でコンピューターノードを運営している場合は、他のコンピューターノードに依頼する必要もなく、プログラムを自身のコンピューターで実行できます。
スマートコントラクトの仕組み
もう少し具体的に、スマートコントラクトの仕組みを見ていきましょう。
(1)開発者がスマートコントラクトを作成する
まずは、開発者がコントラクトをプログラミングしてブロックチェーンにデプロイすることから始まります。
例えば、ある開発者が「XXX TOKEN」というトークンを発行したい場合を考えてみましょう。「XXX TOKEN」のスマートコントラクトには、以下のようなデータや機能(関数)がプログラミングされるでしょう。
ケース:「XXX TOKEN」のコントラクトの内容例
- XXXトークンの残高データ
誰(どのアドレス)が、それぞれいくらXXX TOKENを保有しているかの記録 - XXXトークンの送信機能(関数)
好きな相手にトークンを送れる機能。この機能が実行されると、上のデータが修正される。送られたトークンの量だけ、送信元の保有量が減り、送信先の保有量が増える。
開発が終わったら、このコントラクトをブロックチェーンに参加しているノードに広く共有して、みんなに保存してもらいます。
(2)利用者がスマートコントラクトを実行する
ブロックチェーンに共有されたスマートコントラクトは、みんなが使えるようになります。
XXX TOKENが欲しいAさんが、Bさんに「XXX TOKENを送って」とお願いしたとしましょう。Bさんは、XXXトークンのスマートコントラクト内にプログラミングされている送信機能を実行することで、AさんにXXX TOKENを送る(AさんとBさんのXXX TOKENの残高データを更新する)ことができます。
Bさんが自分自身でブロックチェーンのノードを持っていれば、そのコンピューターからスマートコントラクトを実行できます。自分自身でノードを持っていない場合は、そのブロックチェーン上のノードに依頼することになります。
ノードへの依頼機能を持った「Web3ウォレット」
少し余談ですが、MetamaskなどのWeb3ウォレットを利用している方もいるかもしれません。こうしたWeb3ウォレットは、ブロックチェーン上のノードにスマートコントラクトの実行を依頼する機能を持っています。(超厳密に説明すると、ノードと通信できるAPIをブラウザにインジェクトすることで、ブラウザにノードと通信する機能を付与します)
Metamaskを提供しているConsenSysという会社は自分たちで大量のノードを運用しており、Metamaskはデフォルトでそのノード群に対して、スマートコントラクトの実行を依頼します。その結果、Metamaskの利用者は「ノードへの依頼」を意識することなく、スマートコントラクトを利用できます。
スマートコントラクトが動くWeb3ブロックチェーン
イーサリアム
イーサリアムは、ヴィタリック・ブテリンというエンジニアが開発したブロックチェーンです。
彼は、もともとビットコインのブロックチェーンにスマートコントラクト機能を付与するべきだと主張していましたが、その訴えがコミュニティに受け入れられなかったため、スマートコントラクト機能を持ったブロックチェーンであるイーサリアムを開発しました。
スマートコントラクトの圧倒的な可能性が認識されると、スマートコントラクト機能を持つブロックチェーンが次々と登場するようになりました。
イーサリアムは、2022年現在でもスマートコントラクト機能を持つブロックチェーンの中で最大のシェアを誇っていますが、スケーラビリティの問題を抱えているため、他のブロックチェーンに少しずつシェアを奪われています。
その他
上に書いたように、イーサリアムの他にもスマートコントラクトが動かせるWeb3向けのブロックチェーンが次々と登場しています。
Binanceという世界最大の仮想通貨取引所が運営するBNBチェーン、イーサリアムのサイドチェーンのPolygon、VISA並みの取引数を処理できることを売りにしているSolanaなどがあります。
詳しくは、以下のブロックチェーンの解説記事をご覧ください。
スマートコントラクト事例:Web3アプリケーション(DApps)
Web3アプリケーション(DApps)とは
スマートコントラクトによって動くアプリケーションのことをWeb3アプリケーション、もしくはDAppsといいます。
DAppsは、Decentralized Applications(意味:分散型のアプリケーション)の略称で、分散型のインターネット(=ブロックチェーン)の上で動くアプリケーションであることを示しています。
Web3アプリケーション(DApps)の事例
DeFi(分散型金融)
DEX(取引所)
- DEX(分散型取引所)とは
- 事例:Uniswap
- 事例:CurveFinance
- 事例:PancakeSwap
融資・レンディング
- レンディング・プロトコルとは
- 事例:MakerDAO
- 事例:AAVE
- 事例:Compound
アグリゲーター
- アグリゲーターとは
- 事例:1inch
- 事例:BeefyFinance
クロスチェーン
- クロスチェーンとは
- 事例:Stargate
- 事例:Multichain
ステーキング
- ステーキングサービスとは
- 事例:Lido
- 事例:Rocket Pool
その他
- 準備中
ゲーム・NFT
GameFi(Play2Earn)
- GameFiとは
- 事例:Axie Infinity
NFTマーケットプレイス
- NFTマーケットプレイスとは
- 事例:Opensea
スマートコントラクトの開発と実装
スマートコントラクトの開発言語:Solidity
まとめ
今回は、以下のような内容を解説しました。
- スマートコントラクトとは
スマートコントラクトとは、ブロックチェーンに参加しているコンピューターのリソースを用いて動くプログラムを指します。スマートコントラクトの開発者は、自分でデータベースやサーバーを維持する必要はなく、コードをブロックチェーンにデプロイします。 - スマートコントラクトが動くブロックチェーンは
スマートコントラクトが動くブロックチェーンの中で、最もメジャーなものはイーサリアムです。他にも、BNBチェーンやソラナ、ポリゴンなどのブロックチェーンが有名です。 - スマートコントラクトを活用したアプリケーション事例
スマートコントラクトで動くWeb3アプリケーションは「DApps」と呼ばれます。金融分野(DeFi)やゲーム分野では、特にスマートコントラクトの活用が進んでいます。 - スマートコントラクトの開発と実装方法
スマートコントラクトは、Solidityという開発言語で実装します。実装したスマートコントラクトをWeb3向けブロックチェーンにデプロイした上で、それをウェブサイトやアプリ等のフロントエンドから呼び出すことでサービスを開発します。
以上です。
「Web3の構成要素」に戻る
- Web3の構成要素:ブロックチェーンとは?わかりやすく解説
- Web3の構成要素:スマートコントラクトとは?わかりやすく解説
- Web3の構成要素:Web3ウォレットとは?わかりやすく解説
- Web3の構成要素:トークンとは?わかりやすく解説
コメントを残す