チューリング完了

チューリング完了

チューリング完全性の概念はソフトウェア エンジニアリングでよく議論されますが、おそらく予想よりも頻繁に議論されます。特にソフトウェア エンジニアリングの文脈において、チューリング完全性が正確に何を意味するかについては、若干の混乱があるようです。

チューリング完全性は計算システムに起因する特性であり、チューリング マシンと同じ計算能力を備えていることを意味します。しかし、これは実際には何を意味するのでしょうか?この概念をさらに深く掘り下げてみましょう。

チューリング完全なシステムとは、十分な時間とメモリが必要な命令とともに与えられ、その複雑さに関係なく、あらゆる計算問題を解決できる能力を備えたシステムのことです。 C++、Python、JavaScript などを含むほとんどのプログラミング言語はチューリング完全版であるため、この用語は一般的に現代のプログラミング言語に適用されます。これは、必要なリソースと命令が与えられれば、これらの言語は理論的にはあらゆるアルゴリズムを実行できることを意味します。

チューリング完全性とは何ですか?

チューリング完全性は、アラン チューリングによって最初に定義されたコンピューティング分野の基本的な概念です。これは、任意のコンピュータが実行できるあらゆるタスクを実行する、一部のコンピューティング マシンの機能を説明します。この原則はソフトウェアおよびアプリケーション開発の中心であり、機能を事前に検証することなくコードを作成できます。これは、プログラマが実行時の制限を気にせずにプログラムを作成できることを意味します。

この用語は、英国の数学者で暗号学者のアラン チューリングによって作成された理論モデルであるチューリング マシンに由来します。チューリング マシンは物理的な装置ではありませんが、重要な数学的概念です。十分な時間とメモリがあれば、理論的には計算可能なあらゆる問題を解決できます。システムがチューリング マシンの機能をシミュレートできれば、そのシステムはチューリングが完了したとみなされます。

Solidity、Python、C++、Java などの最新のプログラミング言語のほとんどはチューリング完全版であり、チューリング マシンの動作をシミュレートできることを意味します。これは、特定のタスクに限定される単純な計算機のようなチューリングの不完全なシステムとは対照的です。

チューリング完全性の概念は、ブロックチェーン テクノロジーにおいて重要な意味を持ちます。たとえば、Solidity プログラミング言語とイーサリアム仮想マシン (EVM)によって実現されるイーサリアムのチューリング完全性により、開発者は複雑で多面的なプログラムを作成および実行できます。これは、スクリプト プログラミング言語が意図的に不完全なチューリングであり、より単純で特定の操作に制限されているビットコインとはまったく対照的です。

本質的に、チューリング完全性はシステムの計算能力の範囲を定義します。システムが実行できる計算タスクが増えるほど、システムのチューリングはより完全になります。この区別は、さまざまなブロックチェーン プラットフォームで実行可能なタスクの範囲と複雑さを理解する上で重要です。

ブロックチェーンにおけるチューリング完全とは何を意味しますか?

通常、チューリングの完全性は次の特性によって定義されます。

  1. 論理ループ: これには、関数または一連の命令を繰り返し実行するシステムの機能が必要です。
  2. 入出力操作: データの読み取りと書き込みを行うシステムの機能。つまり、入力を処理し、このデータに基づいて出力を生成できます。
  3. 計算能力: システムは、チューリング マシンが対処できる解決可能な問題を計算できなければなりません。
  4. 条件分岐: システムのアクションは、処理するデータ値に応じて異なります。

ブロックチェーンの文脈では、これらの基準を満たすものはチューリング完全とみなされます。これは、これらのブロックチェーン上でスマート コントラクトを開発するために使用されるプログラミング言語が、あらゆる計算上の課題に対処できることを意味します。イーサリアムを例に挙げると、ネイティブ コーディングとスマート コントラクトにSolidityが採用されています。この機能は、将来発生する可能性のあるスマート コントラクトの条件をブロックチェーンが理解して実装するために非常に重要です。基本的に、イーサリアムのチューリング完全性により、正しい命令と時間や計算能力などの十分なリソースがあれば、ほぼすべてのタスクを実行できます。

対照的に、Script として知られるビットコインのスクリプト言語は、チューリング完全性の基準を満たしていません。スクリプトは、値の転送や単純なスマート コントラクトの実行などの基本的な機能を管理するように意図的に設計されています。チューリング完全性を回避して、ループによるネットワークのノードへの過負荷を防ぎ、ネットワークの整合性を保護します。ビットコインのチューリング完全性は、任意のコードの実行を許可することでさらなるセキュリティ リスクをもたらし、ネットワークを新たな種類の攻撃にさらす可能性があります。

イーサリアム – 最初のチューリング完全ブロックチェーン

イーサリアムは、チューリングの完全性を導入する先駆的なブロックチェーン プラットフォームとして登場し、スマート コントラクトと分散型アプリケーション (dApps) の領域に革命をもたらしました。この画期的な進歩は、次の 2 つの主要なコンポーネントによって達成されました。

  • Solidity のスマート コントラクト: イーサリアムのスマート コントラクトは、イーサリアムのエコシステム専用に調整された多用途のチューリング完全プログラミング言語である Solidity を使用して作成されています。
  • イーサリアム仮想マシン (EVM) : この計算エンジンはスマート コントラクトを実行し、チューリングの完全なエンティティとして機能します。

EVM の堅牢な設計により、目的がまだ想定されていないものであっても、あらゆるスマート コントラクト構成を処理できます。最初のチューリング完全ブロックチェーンとしてのイーサリアムのこの立ち上げは、ブロックチェーン技術の範囲を所定のアプリケーションを超えて無限の可能性へと広げる極めて重要な進歩を表しました。

理論的にはチューリングが完全であるにもかかわらず、イーサリアムは現実世界のアプリケーションでは実際的な制限に直面します。ブロックチェーンの運用メカニズムにより、すべてのトランザクションには「ガス」料金が発生することが規定されています。したがって、スマート コントラクトが無限ループに入ると (チューリング マシンで起こり得るシナリオですが)、最終的にはガスの供給が枯渇してしまいます。

イーサリアムのチューリング完全性に対するこの制約は意図的なものです。多数のスマート コントラクトを無限ループで動作させることは、処理リソースが限られているパブリック ブロックチェーン ネットワークでは非現実的です。これに対処するために、イーサリアムは各トランザクションにガス制限を適用し、利用可能な最大計算能力を制限します。この制限内で完了できないトランザクションは自動的に終了します。

ただし、イーサリアムのスマート コントラクトの大部分は、再帰ループやチューリング完全性に関連するその他の複雑な機能をほとんど活用していないことは注目に値します。この機能はイーサリアムの理論的な力と多用途性を強調していますが、実際には、洗練された機能の必要性とブロックチェーンリソース管理の現実のバランスを考慮して、ほとんどのアプリケーションではよりシンプルで効率的なコントラクト構造が好まれています。

ブロックチェーンアプリケーションにおけるチューリング完全性の限界

チューリング完全システムの無限のプログラマビリティは最大の資産ですが、同時に、特にコードがオープンにアクセスできるパブリック ブロックチェーンでは、顕著な脆弱性をもたらします。このオープン性により、スマート コントラクトのバグや意図しない目的での悪用など、コードがさまざまな混乱にさらされ、プロトコルの意図した動作が中断される可能性があります。あらゆる計算をプログラムする機能により、広範囲にわたる潜在的な結果が生み出されますが、その多くは予測不可能である可能性があります。

集中型システムでは、所有会社が即時パッチを適用することで予期せぬ問題に迅速に対処できます。対照的に、ブロックチェーンベースのシステムでは、予期せぬ操作が重大な混乱を引き起こす可能性があります。たとえば、個人が抜け穴を悪用して予期せぬ結果をもたらした場合、重大な問題が発生する可能性があります。ソフトウェアの更新にはコミュニティの合意が必要であり、多くの場合プロセスが長引くため、ブロックチェーンの分散型の性質がこれをさらに複雑にします。

この課題を示す顕著な例は、2016 年のイーサリアム ブロックチェーンにおけるDAO事件です。この分散型 VC ファンドのようなスマート コントラクトは、ハッキングと誤ってラベル付けされることが多いイベントに直面しました。ユーザーはスマート コントラクトのコードの脆弱性を悪用し、現在ではリエントラント攻撃として知られる攻撃を実行し、ファンドから 1 億 5,000 万ドル以上を吸い上げました。これにより、イーサリアム ブロックチェーンを元に戻すという議論の多い決定が生じ、イーサリアム クラシックのフォークが発生しました。

ただし、このイベントは従来のハッキングではなく、当時知られていなかったコードの脆弱性の悪用であることに注意することが重要です。攻撃者は、資金を引き出すためのリエントラント攻撃で信頼できないコントラクトを使用しました。

DAO 以降、開発者はこのような脆弱性に対処するためにプログラミング手法を洗練してきました。それにもかかわらず、新しいコードが常に開発されているチューリング完全システムの性質上、新たな脆弱性が依然として出現する可能性があります。これは、そのようなエクスプロイトに対する堅牢性を確保するために、ブロックチェーン技術における継続的な警戒と適応型セキュリティ対策の必要性を浮き彫りにしています。

Plisio では以下のサービスも提供しています。

2 クリックで暗号化請求書を作成 and 暗号通貨の寄付を受け入れる

12 統合

6 最も人気のあるプログラミング言語のライブラリ

19 暗号通貨と 12 ブロックチェーン

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.