見出し画像

zkSync Era翻訳(トランザクションについて)

この記事は、こちらの記事を翻訳したものです。

0 はじめに

イーサリアムにおける取引は、外部所有アカウント(コードではなく、ユーザーが所有するアカウント)による暗号署名付きの指示です。

これらの指示はブロックチェーンに保存され、ブロックに追加されます。

トランザクションが開始されると、イーサリアムの仮想マシン(EVM)の状態が変化します。

トランザクションは、ETHを別のアカウントに送ることから、スマートコントラクトの機能を呼び出すことまで、あらゆることが可能です。

1 前提条件

このページを理解するために、まずアカウントを読むことをお勧めします。

2 トランザクションの仕組み

ユーザーがイーサリアムでトランザクションを開始すると、いくつかの特定のデータが作成されます。

① 受取人

受取人は、トランザクションを受信するためのアカウントのアドレスです。受取人は、コントラクトアカウントまたはEOAになります。
各取引は、特定の受取人を対象としています。

② Nonce

このフィールドには、アカウントのカウンター(何回取引を行ったかを記録しておく)に基づく最新の取引が表示されます。

ネットワークは、トランザクションが正しい順序で完了することを保証するために、トランザクションnonceを使用します。

③ ガス料金

ほとんどのトランザクションでは、トランザクションの作成者から手数料を支払うことが必要です。

このコストは、ガスの単位ごとに計算されます。単位はWeiで、より小さいEtherの単位です。

④ ガスの上限

トランザクションの作成者は、そのトランザクションに使用するガスの単位数を指定します。これは消費可能なガスの総量です。

⑤ 値

送信者アカウントが受信者に送信したいWeiまたはEtherの量は、値によって表されます。


⑥データ

取引受信者がスマートコントラクトの場合、データには、コントラクトの機能を実行するための情報が含まれます。

これは、様々な長さのデータで構成されます。

⑦ 署名(Signature)

署名は、通信の送信者を示すものです。

署名は、EOAがトランザクションを確認し、その秘密鍵で署名することで作成されます。

3 トランザクションの種類

① Simple or asset transfers(コントラクトのデプロイ以外)

これは、あるアカウントから別のアカウントへEtherの形で通常のトークンを転送することを指します。

②コントラクトのデプロイのトランザクション

zkSyncのコントラクトデプロイメントは、イーサリアムとは全く異なります。

②-1イーサリアムの場合

コントラクトデプロイは、ユーザーがゼロアドレス(0x000...000)にトランザクションを送信し、トランザクションのデータフィールドが、コンストラクタのパラメータ連結したコントラクトバイトコードに等しいときに発生します。

"Data"フィールドにはスマートコントラクトのバイトコードと、スマートコントラクトのコンストラクタパラメータ(スマートコントラクトが初めて実行されるときに実行される特別な関数のパラメータ)が連結されたものが設定されます。

chatGPT-4

②-2 zkSync Era

zkSyncにコントラクトをデプロイするには、ユーザーはContractDeployercreate関数を呼び出し、発行するコントラクトのハッシュコンストラクタ引数を提供します。

コントラクトのバイトコード自体は、EIP712トランザクションのfactory_depsフィールドに供給されます。

コントラクトがファクトリーである場合(つまり、他のコントラクトをデプロイできる場合)、コントラクトのバイトコードはfactory_depsに含まれる必要があります。

コントラクトのデプロイメントについて詳しくはこちらをご覧ください。

Tip
zkSyncは、Ethereumの「古い」(EIP2718以前)トランザクションタイプ、EIP1559トランザクションタイプ、およびそのEIP712トランザクションをサポートしています。
このタイプのトランザクションは、アカウントの抽象化などのzkSync固有の機能にアクセスするために使用することができます。さらに、スマートコントラクトはこの種のトランザクションでのみデプロイすることができます。
zkSyncのSDKを利用するためにトランザクション形式を理解する必要はありませんが、興味がある方はこちらで詳細をご確認ください。

4 取引はいつ確定とみなされるのですか?

トランザクションのファイナリティとは、ブロックチェーンネットワークのコンテキストにおいて、トランザクションを取り消したり、変更したり、変異させたりすることができないという約束のことを指します。

プルーフ・オブ・ステークでは、イーサリアムの取引は通常の条件下で平均2.5エポック(16分)でファイナライズされます。

ブロックがzkロールアップで埋められ、封印されると、その状態はメインのイーサリアムチェーンにコミットされます。

その後、証明段階が開始され、各ブロック取引についてSNARKの有効性証明が構築されます。

完成すると、SNARKL1スマートコントラクトでの検証のために送信され、検証後に取引状態が最終的に確定されます。

zkSyncの立場では、L1でトランザクション(SNARKの検証)が実行された時点で確定となります。

この時点で、保証は同じL1ブロック内の他のL1取引と同じであり、最初のブロックが処理された後に発行されるL1ブロックが多ければ多いほど、この取引が覆る可能性は低くなります。

ユーザーがトランザクションを送信する際、zkSyncは現在ブロック全体が埋まるのを待つため、zkSync経由で送信されるトランザクションの量によってはファイナリティタイムが長くなることがあります。

スループットが上がれば、ファイナリティタイムは短縮されるでしょう。

5 オペレーターとは一体何ですか?

オペレーターは、ZKロールアップの必須機能を実行するアクターです。

ブロックを生成し、トランザクションをパッケージングし、計算を行い、検証のためにデータをメインのイーサリアムチェーンに提出する役割を担っています。

以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊