スマートコントラクトについての短いメモ
スマートコントラクトとは、追加のブロックチェーン機能を持った契約です。これは、契約条件に従って合法的に関連する行動やイベントを自動的に実行したり、管理したり、文書化したりするためのコンピュータープログラムまたはトランザクションプロトコルです。
何を解決するの?
- 信頼できる仲介者の必要性
- 偶発的な例外
- 悪意のある攻撃
- 詐欺による損失
- 仲裁と執行のコスト
- コスト削減(仲介者なし)
- 速さ(仲介者なし)
自動販売機のたとえ
スマートコントラクトは自動販売機のようなものです。コインを入れて欲しいものを選ぶだけで、おやつを手に入れるための仲介者が不要になります。
スマートコントラクトは「バーチャルでオンラインの」自動販売機です。
法律
一部の法律学者は、スマートコントラクトは法的な合意ではないと言っています。
スマートコントラクトは必ずしも契約として法的に執行可能とは限りません。しかし、スマート法的コントラクトには、適用される管轄区域での法的に拘束力のある契約の全ての要素があります。
スマート法的コントラクトは法廷で執行することができます。
- スマートコントラクトは任意のコンピュータープログラムになることができます。ブロックチェーン上で暗号化された取引を使用してデプロイされたコードとデータの集まりとして見ることができます。
- データベースの専門家にとって、スマートコントラクトはセキュアなストアドプロシージャとして見ることができます。
- スマートコントラクトはトランザクション後(ブロックチェーンに格納された後)変更することはできません。
スマートコントラクトはどのように機能するのですか?
ウォレットからトランザクションを送信することによってスマートコントラクトは行われます。トランザクションにはスマートコントラクトのコンパイル済みコードと受信者アドレスが含まれます
スマートコントラクトは任意の状態を保存し、任意の計算を実行することができます。
デプロイされると更新することはできません。
ブロックチェーンのトランザクションとは何ですか?
- トランザクションはブロックチェーンブロックに含まれていなければなりません。
- エンドユーザーはトランザクションを通じてスマートコントラクトとやり取りします。
- トランザクションは他のスマートコントラクトを呼び出すことができます。
- トランザクションは状態を変更し、一方のアカウントから他方へコインを送るかもしれません。
スマートコントラクトのプログラミング言語
ETHブロックチェーン:
- Solidity
- Vyper
Solanaブロックチェーン:
- Rust(はい、Rustです!!!)
他のプログラミング言語:
- JavaScript(Hyperledger Fabric)
- Ivy
- Scilla
- Bitcoin Script
セキュリティ問題
ブロックチェーンベースのスマートコントラクトはすべてのブロックチェーンユーザーに対して可視的です。これにより、バグ(セキュリティホールを含む)がすべての人に見える状態になりますが、容易に修正することはできません。
Ethereumの問題点
- 既知の脆弱性を文書化する中央リソースがない
- ブロックチェーンネットワーク攻撃
- バグの不変性(一度デプロイされると、スマートコントラクトは変更できない)
- コンパイラのバグ
- EVM(Ethereum Virtual Machine)のバグ
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/josethz00/quick-notes-on-smart-contracts-1e5c