見出し画像

[和訳] Bitcoin vs Ethereum Smart Contracts - Smartphone vs pocket calculator

ビットコイン vs イーサリアム

スマートコントラクト - スマートフォン vs ポケット電卓

原著:https://xiaohuiliu.medium.com/bitcoin-vs-ethereum-smart-contracts-921e0a12b043

We compare two smart contract blockchains, Bitcoin and Ethereum, side by side. We find Bitcoin offers superior performance, security, and cost-effectiveness, due to its skillfully constructed fundamental design. This articles focuses on their technical differences. Economic, philosophical, legal, and environmental differences are beyond the scope of the article.

ビットコインとイーサリアムという2つのスマートコントラクトブロックチェーンを並べて比較してみました。その結果、ビットコインは、その巧みな基本設計により、パフォーマンス、セキュリティ、コスト効率に優れていることがわかりました。この記事では、両者の技術的な違いに焦点を当てています。経済的、哲学的、法的、環境的な違いは記事の範囲外です。

Scalability / スケーラビリティ

Ethereum: account model and vertical scaling

イーサリアム:アカウントモデルと直列のスケーリング

画像1

参照:https://hackernoon.com/getting-deep-into-evm-how-ethereum-works-backstage-ac7efa1f0015

In Ethereum, each smart contracts resides in an account. It has its own storage that persists across contract execution. To see how, let us examine the core smart-contract engine of Ethereum: the Ethereum Virtual Machine (EVM). It is stack based and stores data in three places: stack, memory, and storage. The former two are volatile and ephemeral, meaning they are reset when the EVM starts to run a new contract call. The storage is not reset and is part of the world/global state.

イーサリアムでは、各スマートコントラクトはアカウントに存在します。アカウントには、コントラクトの実行中に持続する独自のストレージがあります。その仕組みを知るために、Ethereumのスマートコントラクトエンジンの中核であるEthereum Virtual Machine(EVM)を見てみましょう。EVMはスタックベースで、スタック、メモリ、ストレージの3つの場所にデータを保存します。前者2つは揮発性かつ一時的なもので、EVMが新しいコントラクトコールの実行を開始するとリセットされます。ストレージはリセットされず、ワールド/グローバル・ステートの一部となっています。

As a consequence, each contract can depend on another one since they may read/write the same storage. Each contract execution sees the world state as it was left by the previous contract execution. There is no concurrency and contracts must be executed sequentially. A single contract is executed at a time to avoid racing conditions.

その結果、各コントラクトは同じストレージを読み書きすることができるので、他のコントラクトに依存することができます。各コントラクトの実行は、前のコントラクトの実行によって残された世界の状態を見ることになります。並行性はなく、コントラクトは連続して実行されなければなりません。競合状態を避けるため、一度に一つのコントラクトが実行されます。

Ethereum can be considered to be a single-threaded machine, which is limited by the capacity of that machine. In another word, it uses vertical scaling, which is fundamentally flawed for any system designed to support millions of users.

イーサリアムはシングルスレッドのマシンと考えることができ、そのマシンの容量によって制限されます。別の言葉で言えば、直列のスケーリングを使用していますが、これは何百万人ものユーザーをサポートするように設計されたシステムでは、根本的に欠陥があります。

Bitcoin: UTXO model and horizontal scaling / Bitcoin: UTXOモデルと並列スケーリング

In Bitcoin, smart contracts reside in the so-called Unspent Transaction Outputs (UTXOs). Bitcoin also uses a virtual machine called Bitcoin Virtual Machine (BVM) to process smart contracts that is also stack based. The crucial difference is there is no persistent storage and thus no single global state in BVM. Instead, the global state consists of separate UTXOs, which are independent of each other. Consequently, UTXO is maximally parallel by design.

ビットコインでは、スマートコントラクトはUTXO(Unspent Transaction Outputs)と呼ばれる場所に存在します。また、ビットコインでは、スマートコントラクトを処理するために、Bitcoin Virtual Machine(BVM)と呼ばれる仮想マシンを使用しており、これもスタックベースです。決定的な違いは、BVMには永続的なストレージがないため、単一のグローバルな状態がないことです。その代わり、グローバルな状態は、互いに独立した個別のUTXOで構成されています。その結果、UTXOは最大限に並列化された設計になっています。

Bitcoin can be regarded as a pool of machines, all running in parallel. It is horizontally scalable and can scale infinitely by simply adding any number of machines to the existing pool. That is how Google, Facebook, Amazon have proven to scale to support billions of users.

ビットコインは、すべてのマシンが並行して稼働しているマシンのプールと考えることができます。ビットコインは水平方向の拡張性があり、既存のプールに任意の数のマシンを追加するだけで無限に拡張することができます。GoogleやFacebook、Amazonが何十億人ものユーザーをサポートするためにスケールアップしてきたのはこのためです。

画像2

参照:http://pudgylogic.blogspot.com/2016/01/horizontal-vs-vertical-scaling.html

Bitcoin can process 3000 transaction per seconds (tps) on the mainnet today. On the testnet, 9000 tps has been achieved. With the introduction of Teranode in the coming months, 50,000 tps is expected to be reached. Teranode is supposed to handle terabyte blocks, equivalent to tps at millions level. Ethereum, by contrast, has been stuck at a mere 15 tps for years, with a history of repeated broken promises and no improvement in sight.

ビットコインは現在、メインネットで1秒あたり3000トランザクション(tps)を処理できます。テストネットでは9000tpsを達成しています。今後数ヶ月の間にTeranodeが導入されれば、50,000tpsに到達すると予想されています。Teranodeはテラバイトブロックを扱うことを想定しており、これは数百万レベルのtpsに相当します。これに対してイーサリアムは、何年も前からわずか15TPSにとどまっており、約束を破っては改善の見通しが立たないという歴史を繰り返してきました。

画像3

Security / セキュリティ

Smart contracts deal with assets of real financial value and security is of paramount importance.

スマートコントラクトは、実際に金銭的価値のある資産を扱うため、セキュリティが最重要視されます。

画像4

参照:https://twitter.com/_unwriter/status/1032674102081925121

Bitcoin’s UTXO model is like functional programming. A contract execution is pure and stateless. It is close to functions in mathematics (e.g., f(x) = x * x). Given the same inputs, a function always yields the same outputs and creates no side effects. This design makes Bitcoin smart contracts much easier to reason and thus less error-prone. Also they can tested accurately off chain since they behave the same, regardless of how, when, and where they are executed.

ビットコインのUTXOモデルは、関数型プログラミングのようなものです。コントラクトの実行は純粋でステートレスである。それは、数学における関数に近い(例えば、f(x)=x * x)。同じ入力があれば、関数は常に同じ出力を出し、副作用も生じません。この設計により、ビットコインのスマートコントラクトは、推論が非常に簡単になり、エラーが発生しにくくなります。また、いつ、どこで、どのように実行されても同じ動作をするため、オフチェーンでも正確にテストすることができます。

In contrast, Ethereum’s account model is akin to imperative programming. Each contract call can create side effects affecting another call, making contracts difficult to reason, especially when they become complex. Due to this vulnerable design choice, it has been plagued by tens, if not hundreds, types of attacks, resulting in loss of hundreds of millions of dollars.

対照的に、Ethereumのアカウントモデルは、命令型プログラミングに似ています。コントラクトを呼び出すたびに、別の呼び出しに影響を与える副作用が発生するため、特にコントラクトが複雑になると、推論が難しくなります。このような脆弱な設計のため、数百とは言わないまでも数十種類の攻撃に悩まされ、数億ドルの損失を出しています。

画像5

参照:https://bitinfocharts.com/comparison/transactionfees-eth-bsv.html#log&3m

Thanks largely to its unbounded scalability, smart contracts running on Bitcoin enjoy 1000X cheaper transaction fees than same ones running on Ethereum¹.

ビットコインの持つ無限のスケーラビリティにより、ビットコイン上で動作するスマートコントラクトは、イーサリアム上で動作するスマートコントラクトに比べて、1000倍も安い取引手数料を実現しています¹。

Ecosystem maturity / 生態系の成熟度

Bitcoin has only re-enabled smart contracting capabilities in 2020 over a year ago, while smart contracts on Ethereum have been developed since 2015. Given its 5-year head start, it is no surprise that the ecosystem on Ethereum is more mature today, in terms of developer tools, libraries, and applications. However, many developer tools in Bitcoin are quickly catching up to and sometimes even surpassing their counterparts in Ethereum. For example, the most popular IDE in Bitcoin supports debugging, deploying and testing, while its counterpart in Ethereum supports none. It is only a matter of time for Bitcoin ecosystem to catch up and flippen Ethereum, given the latter’s inability to scale.

ビットコインが2020年にスマートコントラクト機能を再有効化したのは1年以上前ですが、イーサリアムのスマートコントラクトは2015年から開発されています。5年間の先行投資を考えると、開発者ツール、ライブラリ、アプリケーションの面で、イーサリアムのエコシステムが現在よりも成熟しているのは当然のことです。しかし、ビットコインの多くの開発者ツールは、イーサリアムの開発者ツールにすぐに追いつき、時には追い越すこともあります。例えば、ビットコインで最も人気のあるIDEは、デバッグ、デプロイ、テストをサポートしていますが、イーサリアムの対応ツールは何もサポートしていません。イーサリアムが拡張性に欠けることを考えると、ビットコインのエコシステムがイーサリアムに追いつき、逆転するのは時間の問題です。

Summary / 概要

We conclude Bitcoin is a better platform to build smart contracts on.

スマートコントラクトを構築するプラットフォームとしては、ビットコインの方が優れていると結論づけています。

画像6

[1] This assumes a typical smart contract transaction is ~10x the size of a normal bitcoin transfer transaction.

[1] これは、典型的なスマートコントラクトのトランザクションが、通常のビットコイン送金のトランザクションの10倍のサイズであることを想定しています。

あとがき

著者は現在もっともビットコイン作者の近くで、ビットコインスクリプトに触れている一人です。分かりにくいビットコインスクリプトをjavascriptのように記述し、コンバートするETHで言うところのSolidityのようなサービスを構築しています。本和訳はDeepLで簡単に翻訳したものですが、日本のかた向けに読んでもらえる機会が増えたらいいなと思い、noteにて掲載しております。文中のリンクなどが細かく設定されているので、詳細が気になる方は原書をご確認ください。

※ 本記事はBTC,ETH,BSVなどの投機に関する記事ではなく、当然ETHが今後下落するといった類の示唆ではありません。
※ あくまでスマコンの将来性に対して現状の設計を評価したものを和訳しただけです。

この記事が気に入ったらサポートをしてみませんか?