Turing Completeとは何ですか?
Turing Completeは、十分な時間とメモリがあれば任意のアルゴリズムを表現できる計算システムを意味します。暗号資産の分野では、単にトークンをAからBに送るだけでなく、複雑なロジックを実行できるチェーンを指します。材料と忍耐さえあればどんな料理でも作れる台所のようなものだと考えてください。
'Turing Completeは常に優れている'というわけではありません。柔軟性は得られますが、不注意だとバグや追加のコスト、新たな攻撃経路を生む可能性があります。
Turing Completeの仕組み
完全にプログラム可能なチェーンでは、分岐やループ、データの保存ができるスマートコントラクトを記述してデプロイします。簡単な流れは次の通りです:
- ステップ1:ユーザーがコントラクト関数を呼び出すトランザクションを提出する。
- ステップ2:コントラクトが入力と状態を読み取り、if文、ループ、計算などのロジックを実行する。
- ステップ3:結果が残高や変数を更新し、アプリが監視するイベントを発行することがある。
- ステップ4:ガスメータリングが無限ループなどの暴走コードを抑制し、チェーンが停止しないようにする。
- ステップ5:オラクルのような追加要素が価格やタイムスタンプなどのデータを供給し、ロジックがそれに反応することもある。
以上が流れです。シンプルで意外に強力です。
Turing Completeが重要な理由
金融やゲームなどのために、ブロックチェーンを汎用の計算レイヤーに変えるから関心がある。
- 利点:取引を自動化したり、複雑な支払い条件をプログラムしたり、管理者に許可を求めずに機能を提供したりできる。
- 見方:表現力の高いコードは実行コストが高くなり、アクティビティが急増したときにネットワーク混雑を招く可能性がある。
- 関連性:DeFi、NFT、DAO、チェーン上のロジックを必要とするあらゆる用途で見られる。
チェーンがTuring Completeだと言われたら、ガードレールについて確認してください:ガス上限、監査の慣行、コードがアップグレード可能かどうか。これらの点が構築や資金預け入れ時の安全性を示します。
Turing Completeの主な特徴
バズワードではなく構成要素として考えてください:
- オープン:分散型ネットワーク上の誰でも、他者が呼び出せるコードをデプロイできる。
- 分岐:if文により、入力や状態に応じて契約が異なる経路を選べる。
- ループ:繰り返し処理により分割支払いやオークション、利息の累積などが可能になる。
- メモリ:永続的なストレージによりコードが過去の操作や残高を記憶できる。
- 停止:ガスメータリングと制限により、終わらない実行がブロックを詰まらせるのを防ぐ。
バリエーション
すべてのチェーンが同じようにプログラム可能性を扱うわけではありません。大きく分けると次のタイプがあります:
- 制限あり:スクリプトの機能が制限されており、単純な送金や検証に適している。攻撃対象面が小さい。
- フル:豊富な言語機能を持つ汎用計算で、複雑なアプリやプロトコルに向く。
- 上限あり:汎用計算だが厳しい資源上限を設け、コストを予測しやすくしている。
Turing Completeは表現力に関するもので、速度や低コストを意味するわけではありません。単純なシステムの方が高速な場合があり、表現力が高いシステムは機能が豊富だが実行コストが高くなることがある。
例
分散型アプリケーション(dApps)の一つとしての貸付アプリは、利息を算出し、清算のスケジュールを設定し、返済をルーティングできる。これはチェーンがTuring Completeであるためだ。
豆知識
この用語はアラン・チューリングと、任意の計算を模倣できると考えられた彼の概念的な機械に由来します。Ethereumがブロックチェーンにこの考えを広め、その後ガスを導入して無限ループがネットワークを永久に枯渇させないようにした。
まとめ
手短に言うと:Turing Completeはブロックチェーンを、資金をネイティブ機能として扱える汎用コンピュータに変える。
