長文記事: 量子チェーンのプロトタイプ設計の詳細を解読 - Qtum 仮想マシン (QVM) の GAS メカニズムの設計 (パート 1)

長文記事: 量子チェーンのプロトタイプ設計の詳細を解読 - Qtum 仮想マシン (QVM) の GAS メカニズムの設計 (パート 1)

序文: Qtum Quantum Chain は、Bitcoin エコシステムと Ethereum エコシステムの間に橋を架けることに取り組んでいます。これは、Qtum のコンセンサス メカニズムとしてインセンティブ ベースのプルーフ オブ ステーク メカニズムを使用し、ビットコインの UTXO モデルに基づいています。チューリング完全な仮想マシン(Qtum VM/EVM/Luaなど)をサポートし、モバイル戦略を通じてブロックチェーン技術DAPPとスマートコントラクトに基づくモバイルアプリケーションを構築します。 DAPPストア(分散型アプリケーションストア)の効率的かつ迅速な配布を通じて、ブロックチェーン技術を一般のインターネットユーザーに普及させます。

さらに、Qtum は、スマート コントラクトを通じてプロトコル層に埋め込まれ、さまざまなユーザー アドレス権限とアドレス タイプ、および World Wide Web の標準の管理を通じて、既存の TCP/IP プロトコルを統合するブロックチェーン支払いプロトコルを実現する Value Transfer Protocol (VTP プロトコル) の概念も革新的に提案しました。この支払いプロトコルは、より多くのインテリジェンスとより多くのビジネスの可能性をもたらします。

この壮大なビジョンを実現するには、無数の開発者の継続的な努力が必要です。 Qtum の開発チームは非常に国際的なチームであり、ブロックチェーン技術の分散特性に沿っています。本稿執筆時点では、合計 29 人の開発者が Qtum プロジェクトの開発プロセスに参加しています。異なる国やタイムゾーンの開発者をどのように調整するかも、ブロックチェーン プロジェクトの開発で直面する難しい問題です。 Qtum チームは、GitHub を介した共同開発に加えて、コード共有、コード テスト、コード環境の移行など、独自に開発した共同作業を含む他の多くの共同ツールも採用しています。

今日は、Qtum チームと一緒に数か月前を振り返り、Qtum 仮想マシン (QVM) の GAS メカニズムの設計プロセスを見直してみましょう。ブロックチェーン技術の開発プロセスと作業方法を皆様にもっとよく理解していただき、ブロックチェーン開発者への理解を深めていただくために、当時のチームのGASメカニズムに関する当初の議論プロセスと、GAS1.0設計完了後のやり直しのプロセスを保存しました。これらの開発詳細の公開が、他のブロックチェーン開発チームやブロックチェーン開発プロジェクトに一定の助けをもたらし、プロジェクトの開発効率を向上させることを願っています。また、関連詳細の公開を通じて、誰もがブロックチェーン開発チームに参加し、Qtum開発チームとより多くの交流を持つことができることを願っています。

GAS機構の設計に関わったチームメンバーは以下のとおりです。左から1列目、2列目

Shuai Chu: Qtum の創設者。Draper 大学 (Hero Academy) と中国科学院を卒業。以前はアリババで働いていました。博士課程在学中はブロックチェーン技術の開発と研究に専念し、ブロックチェーン業界で豊富な開発経験を持っています。
ジョン: フロリダ大学を卒業し、以前は Bitwage や Coinpip などのブロックチェーン企業で働いていました。
欧陽雲奇:北京郵電大学卒業。以前は百度、アジアルービックキューブ選手権で勤務。
ニール: 15 年のソフトウェア開発経験があり、ビットコインとイーサリアムの開発と設計に精通したホワイトハット開発者です。
トップ 100: 北京大学の理論物理学プログラムを中退し、以前は Kingsoft Software および Cheetah Mobile で働いていました。
Jordan.earlz: 13 歳でプログラミングを始め、18 年の開発経験を持ち、コイン レビュー担当者であり、コミュニティ内の 100 を超える仮想通貨の設計をレビューしたセキュリティの専門家であり、北米のビットコイン コミュニティで最も有名な開発者の 1 人です。
Emiliano: コンピュータサイエンスの博士号を持ち、データフィードとデータマイニングを専門としています。
IBai: 暗号の専門家、暗号学博士、ブロックチェーン コミュニティの初期の参加者および開発者

Qtum(中国人メンバー)開発チーム 上海オフィス


·alex:みなさんこんにちは。 GAS メカニズムに関する最終的な設計は何ですか?
earlz:私たちは現在の設計メカニズムを選択し、ビットコインの手数料メカニズム (例: 入力 - 出力 = マイナー手数料) を使用し、MAX_GAS オペコードを完成させました。これにより、マイナーは契約の実行に必要な作業量を事前に決定できます。
MAX_GAS の設計メカニズムはこちらです https://qtumproject.atlassian.net/browse/QTUM-7
ネオ:こんにちは、おはようございます
·earlz:おはようございます、ネオ
·アレックス:ありがとう、もう夜だよ笑
·earlz: Alexさん、このGAS設計メカニズムについてどう思いますか?
·earlz:全員がデザインの目的を定め、そのデザインについて同じ理解を持つ必要があります。
·shuaichu:契約を実行するために新しいトークンを再発行するのが良い考えかどうかわかりませんか?
Earlz:これは新しいトークンではなく、単なるカウントユニットです。 Max gas オペコードは、トランザクションに必要な計算量をマイナーが把握できるようにするためにのみ使用されます。
·アレックス:はい、マックスガスは新しいトークンではありません
·shuaichu:手数料の仕組みと同様に、経済的な設計を通じてオペレータを実装する必要があると思います。また、ネットワーク内のすべてのノードが同じオペレータを実行する必要があることに注意する必要があります。契約の実行が無料の場合、ネットワークに対して DDoS 攻撃を行う者も出てくるかもしれません。
·earlz:この側面を設計して、すべてのトランザクションに一定量のガス料金が含まれるようにすることができます(たとえば、極端な場合、これらの料金は直接失われ、マイナーはこれらの料金を受け取ることができません)が、この場合、通貨自体がデフレにならないようにする必要があります。
このアイデアは大丈夫​​です。この方法では、GAS 手数料の一部をマイナーに渡し、残りをノード手数料として直接使用することができます。この方法により、悪意のあるノードに対するインセンティブが大幅に削減されます。
·shuaichu:ビットコインに似た手数料の仕組みを採用して、各オペレーターがQtum仮想マシンで少額の手数料を支払うようにすべきだと思います。
·earlz:そうですが、私が言いたいのは、マイナーはGASコストとしていくらか支払う必要があるため、取引手数料のすべてを負担することはできないということです。
·shuaichu:トランザクションのトランザクション手数料が十分でない場合は、トランザクションを破棄する必要があります。
また、送信者がより高い手数料を設定できるようにすることで、取引を高速化します。
earlz:はい、マイナーは依然として高い手数料で取引を作成できます
·alex: GAS および MAX_GAS メカニズムと OP_EXEC を使用することの利点と欠点は何ですか?
·earlz: MAX_GAS を使用すると悪い影響が出るかどうかはわかりません。その他のオプションでは、マイナーがトランザクション データのサイズに基づいてトランザクションが高価であるかどうかを判断し、それをブロックにパッケージ化するかどうかの判断に影響を与える可能性があります。
·shuaichu:ガス自体は無料で、qtum自体とは関係がないのが問題だと思います
·earlz:この場合、コードの実装が異なるだけで、Ethereum に似ていると思います。 Ethereum ではすべての GAS がマイナーによって取得されますが、Qtum でも同じです。唯一の違いは、Ethereum では「ガス価格」を通じて実装され、Qtum ではガス量と取引手数料を通じて実装されることです。
·アレックス:はい、私たちも同じ意見です。 GAS は Ethereum ネットワークから提供されるべきであり、その価値は Qtum のコストにも依存すると思います。
·earlz: GAS は単なる数字であり、価値はありません。それは単なる計算単位です。トランザクションを構築する際には、トランザクションに必要な GAS の量 (たとえば、計算に必要な演算子の数) を宣言する必要があります。トランザクションにより多くの GAS がかかる場合、トランザクションは OutOfGasException として分類されます。これはイーサリアムに似ており、マイナーは最終的に取引手数料を見てマイニングする価値があるかどうかを判断できます。
はい、GAS は、ビットコイン ネットワークの取引手数料モデルと同様に、Qtum の価格と Qtum ネットワークの状態に基づいて調整される可能性があります。
·alex: GAS はトランザクション手数料の一部であり、バイトコードの実行時に消費されるべきだと考えています。
·shuaichu:アールズさん、ガスはどこから来るんですか?
·アレックス:ガスは取引手数料から得られるべきだ
·earlz:技術的に言えば、ガスは実際にはどこからも来るわけではなく、マイナーが特定の取引手数料が採掘する価値があるかどうかを判断するための測定方法にすぎません。
·shuaichu:しかし、マイナーがすべてのトランザクションを最大許容ガスに設定した場合、マイナーはすべてのガスを無料で入手できるため、ネットワークに DOS が発生しますか?
earlz: MAX_GAS がマイナー自身ではなく、トランザクションの開始者によって設定されるのもこのためです。 MAX_GAS はトランザクションの一部であり、操作することはできません。
·shuaichu:はい、しかし、トランザクションイニシエーターが毎回非常に高い値を設定すると、何か影響がありますか?
earlz:非常に高い値に設定すると、マイナーは高い取引手数料を支払わない限り取引を受け入れない可能性があります。
·shuaichu:なるほど、結局は取引手数料次第ですね(私の理解では)
·earlz:はい
·shuaichu:では、この部分のメカニズムを取引手数料のみに基づいて設計してみてはいかがでしょうか?
earlz:ガスと最大ガスマークがないので、マイナーはトランザクションに最終的にいくらかかるかわかりませんか?
·shuaichu:例えば、イーサリアムと同様に、固定ガス価格
Alex:トランザクション料金 = 入力 – 出力 – すべてのバイトコード実行のガス料金
·shuaichu:ユーザーが最大ガスを設定すると、最終的な計算コストを決定する方法がないためです。
·earlz:ビットコインシステムでは、取引手数料の設計メカニズムは問題ありませんが、この言語はチューリング完全ではなく、循環演算を実行できません。この場合、トランザクションのサイズは、マイナーがトランザクションを処理するのにかかる時間を示す非常に優れた指標ですが、Qtum の仮想マシンでは、非常に小さなトランザクションでも処理に非常に長い時間がかかる可能性があります。たとえば、このトランザクションに関係する演算子にはループなどが含まれます。
·shuaichu:計算コストは​​、最終的に実行される演算子の数と実行の状態によって異なります。
earlz: max_gas 制限がなければ、攻撃者が Qtum ネットワークを攻撃するのは非常に簡単になります。低い手数料で多くのトランザクションを処理する必要があり、手数料が低すぎるためマイナーは対応するパッケージ化されたトランザクションを実行しない可能性があります。 max_gas を使用すると、トランザクションが高価であるかどうかを判断しやすくなり、マイナーはトランザクションを処理するかどうかを事前に決定できます。
·shuaichu:この方法では、トランザクションの開始者が設定した値を信頼できないため、いくつかの問題が発生します。
earlz: Max_gas の場合、各オペコード演算子は一定量のガスを消費します。トランザクションが要求する最大ガスよりも多くのガスを消費した場合、Qtum 仮想マシン全体の実行がロールバックされ、OutOfGasException を通じてロールバックされます。ただし、トランザクションはブロックチェーン ネットワークによって引き続き受け入れられ、マイナーは対応する手数料を受け取ります。
·shuaichu:そして、Ethと同様に、与えられた手数料が対応する費用をカバーできない場合、仮想マシンの動作が停止します。
earlz:はい、間違った Max-gas を使用すると、トランザクションですべての資金を失うリスクがあり、これは現在の OP_EXEC_ASSIGN 演算子の問題でもあります。 UTXO モデルでは資金を直接返還することは容易ではないため、これも考慮する必要がある状況です。
したがって、OP_EXEC_ASSIGN 演算子の戻りアドレスを設計する必要があるかもしれません。
·shuaichu: outofgas の例では、対応する手数料を請求しながら、残りの資金を送信者のアドレスに送るようにネットワークを設計できると思います。
この場合、outofgasは新しいトランザクションを作成します
earlz:はい、しかし問題は、送信者のアドレスが単純なアドレスではなく、マルチ署名(マルチシグ)アドレスやペイ・トゥ・スクリプト・アドレス(P2SH)である場合があることです。
·shuaichu:しかし、最大ガスモデルでは、Qtum のブロックチェーン ネットワークはどのように手数料を請求するのでしょうか?
·earlz:最大ガスモデルでは、取引手数料の徴収はビットコインの取引手数料モデルに似ています。つまり、入力が出力よりも大きく、中間の差が取引手数料です。
·shuaichu:この場合、取引手数料はブロックに含まれる必要があり、つまり、取引はブロックチェーンネットワークにパッケージ化されます。
·earlz:はい
Shuaichu:拒否された取引はブロックチェーンに含まれないため、手数料を徴収することが難しくなります。
·earlz: EVM トランザクションのガスが不足した場合、トランザクションは引き続き有効であり、ブロックに含まれますが、仮想マシン操作は実行されません。ただし、現在の QVM では、このトランザクションの開始者は資金の一部を失うことになります。これは私たちの設計上の欠点です。この欠点は返信先アドレスを通じて修正する必要があります。
·shuaichu: maxgasのアイデアではこの問題を解決できないと思います。使用料の考え方に似ています。
リターンアドレスを使用するとシステムの複雑さが増すため、これは大きな問題です。もっと簡単な方法が見つかるかもしれません。
·earlz:ビットコインエコシステムのUTXOモデルとの互換性を維持できるように、他の代替方法を見つける必要があります。
·shuaichu:確かにそうですね。この問題について慎重に考える必要がある。
·earlz:そうですね、この問題については真剣に考える必要があります。すべての可能性(エッジケース)をテストしたわけではありません。私の本来の意図は、OutOfGasException が発生した場合、手数料は(マイナーに)支払われるが、その他の資金は失われないというものです。
他の人はこれについてどう思いますか?
·shuaichu:私はこの状況について考えています。寝るときに考えてみるかもしれません。ハハハ
·earlz:はい
·shuaichu:私たちが現在直面しているさまざまな問題をまとめる必要があります
·earlz:マックスガスの考え方は借り入れを継続できると感じますが、ガス切れのときと違って資金がなくなったときに、その資金を目的のコントラクトに送ることはできるのですが、QVMがトランザクションを実行しないという問題があります。
ハハ、EVM のガス処理の仕組みがそれほど悪くなければ、ガス不足のトランザクションは次のように手数料を消費するはずです。つまり、トランザクションを作成し、そのトランザクションをブロックチェーンに追加するということです (入力を使い、新しい出力を作成し、その新しい出力を送信者に渡すことを意味しますが、p2sh の場合、送信者が誰であるかはわかりません)
·earlz: max-gas と warning-gas の部分を設計する必要があり、warning-gas はプログラムをトリガーして仮想マシンの現在の実行状態を予測し、仮想マシンに次に何をすべきかを指示するのでしょうか?
·shuaichu: max-gasの考え方はfeeの考え方に似ていると思います。
·earlz:はい
Max-gas のアイデアは、契約を実行する前にマイナーにもう少し情報を提供して、トランザクションにどれくらいのガスコストがかかるかを予測できるようにすることです。
·shuaichu:しかし、これは問題を引き起こします。つまり、マイナーは実際のコストを実際には知らないのです。たとえば、blockx ではコストは 1 ですが、blockx+1 ではコストは 1000 です。また、コントラクトの一部の値を変更すると、プログラムがより複雑なコントラクトを指す場合があります。
earlz:はい、これもmax-gasが存在する理由です。実行にどれくらい時間がかかるかを予測できるようにするためです。
·shuaichu:私たちは同じことについて話しているわけではないと思います、ハハ。たとえば、このような契約があります。疑似コードを書いてみましょう:
·earlz:はい、一緒に書き込むにはホワイトボードが必要です。
·shuaichu:ちょっと笑ってる顔:
earlz:はい、おっしゃる意味はわかります。同じ契約でも、異なるブロックで実行されるとガスコストが異なります(これは、ブロックチェーン ネットワークのどのステップが受け入れられ、どのように実行されるかによって異なります)。
max-gas は上限を設定し、必要な計算量を見積もることができます。トランザクションを作成するときは、ETHシステムが現在直面している問題を回避するために十分に計画する必要があります(ガスメカニズムの設計により、Ethereumが現在直面しているさまざまな問題を確認できます)
·shuaichu:
整数a=0;
void 増分(){
++;
戻る;
}
void 奇妙な計算(){
もしa==0なら
戻る;
}それ以外{
整数 i;
(i=0;i<10000;i++) の場合、a++;
戻る;
}
}
·shuaichu: weirdcalc() は各回の実行時間に依存します。私の言っている意味は分かると思う
·earlz:はい
·shuaichu:問題は、具体的な上限を決めるのが非常に難しいことです。この場合、消費されるガスの量を判断する唯一の方法は、ブラインド実行です。
·earlz:はい、この場合、すべての契約はガスを予測する方法で記述する必要があります。
·shuaichu:はい、でも他の人が何を書くかを制御する方法はありません。最悪の事態も含め、あらゆる可能性を考慮する必要があります。
earlz:はい、契約に必要なガス量を予測可能な方法で決定できない場合、QVM でも EVM と同じ問題に直面し、Ethereum のガス不足状況と同様に、取引手数料を失うことになります。
·shuaichu:はい、私たちが重点を置くべき主な問題は、1. 対応する料金を徴収すること、2. 対応する入力を返すことだと思います。これが現在の解決策で直面している主な問題です。
アールズ: OK
shuaichu:次に、最大ガス方式とガス方式のどちらを検討しても利点があるかどうかを判断する必要があります。
これを実現する 1 つの方法は、手数料を別のトランザクションに送信することです。EVM を拡張すると、トランザクションは消費されている GAS の量を確認し、それに基づいて動作を変更できることに注意してください。
·shuaichu:拡張EVM?
earlz:はい、リンクはここにあります: https://github.com/bitsegroup/qtum-evm/blob/master/docs/dev-doc.md#opcount
EVMにそのような方法がないのはなぜか不思議です
·shuaichu:はい、これにはいくつかの利点がありますが、まずはクラシック VM に焦点を当て、プロトタイプが完成してからテストすることができます。
料金に関していくつか難しい問題を明確にする必要があると思います。
·earlz:はい、オペコードを追加することは特に難しいことではありません。難しいのは、それを既存の堅牢性と統合し、そのセキュリティを確保する方法にあります。
しかし、どうやっても返還金をどう返すかという問題は解決できない。
明日もこの問題をどう解決するか考え続けることができます。ぐっすり眠って目覚めたら、何か新しいアイデアが浮かぶと思います。
ハハオ(∩_∩)オハハ〜

最近のリリースをフォローしてください:
Qtum 仮想マシン (QVM) における GAS メカニズムの設計 (パート 2)

下の図は、Quantum Chain Virtual Machine の GAS メカニズムの設計スケッチの最初のバージョンです。大幅に変更されました。次の記事では、設計プロセス全体をさらに分析しますので、お楽しみに。


<<:  ETCネットワークには大きなセキュリティ上の問題はなく、ETHの予期せぬフォークの影響を受けていない。

>>:  ブロックチェーン+IoTデバイスがサプライチェーンに劇的な変化をもたらす

推薦する

ビットコイン価格半減期:マイナーが価格上昇の重要な要因

ライトコインの2回目の半減期は8月6日に発生し、ビットコインの次の半減期は1年以内に発生する予定です...

ヴィタリックがビットコイン・マキシマリズムへの支持を投稿(全文添付)

4月1日、イーサリアムの創設者ヴィタリック・ブテリン氏は、ビットコイン・マキシマリズムを支持する「...

MBC コイン - 新しいアルゴリズム power2b アルゴリズム、CPU サーバー マイニング用の新しい仮想通貨

MBCコイン、新しいアルゴリズム、CPUサーバーで採掘される新しい仮想通貨、このコインは2018年に...

ショック! !ビットメインの組織構造は劇的な逆転を遂げた

中国のソーシャルメディアで拡散した電子メールのスクリーンショットには、「ジハン・ウー」が署名し、ビッ...

アナリスト:ビットコインの価格は年末までに800ドルに達し、「通貨戦争」が原動力となる

コインデスクの専門家パネルによる調査によると、ビットコインは今年これまでに75%以上急騰しており、2...

ジュラシック・ワールドでの収入機会

LandLab がリリースした最初のゲーム「Dragon Island」は大成功を収めました。 2 ...

Asset Chain Wanjia: ビットコインにバブルがあるが、だから何?

導入デジタル通貨を使えば、まずは1億ドルを稼ぐという小さな目標を達成できると考える人が増えています。...

春節休暇中に暗号通貨市場に大きな打撃を与えたのは何だったのでしょうか?

暗号通貨市場にとって、これは不安な春節です。トランプ大統領が関税戦争を開始し、暗号通貨市場が急落しま...

「ポルカドットって何?」誰でも理解できるポルカドットに関する科学記事

この記事の著者は、クロアチア出身の開発者でありブロックチェーン科学の普及活動家であるブルーノ・シュク...

Jibit の創設者とは現在連絡が取れません。 LTGは80%急落。鉱山農場は「環状」道路に入る

ウー・ブロックチェーンは複数のチャンネルから、ジビットの創設者である雷太国氏が通報され、一時的に連絡...

寿司はまだ終わっていない、刺身が来る、採掘プロジェクトが多すぎる、お金が少なすぎる

人がいるところには裏社会がある。莫大な利益がある場合には、欺瞞は避けられません。 DeFiマイニング...

ビットコインは金を追い越して急騰し始め、主要な競合通貨から資金が流出した。

ビットコインの価格は過去24時間で約79ドル上昇し、歴史的な1,500ドルの水準を突破した。 CNB...

Filecoin Plus(検証済み顧客データメカニズム)の最新情報を1つの記事で学ぶ

11月11日水曜日午前1時(北京時間)、Protocol LabsはFilecoin plus(検証...