私は「DuskEVMはSolidityをサポートしている」という意味を、既存のEthereumツールでそのまま開発者が来て作業を終えられる、ということだと解釈しました。ところが、Dusk自身のクイックスタートドキュメントは、ほとんどの人が見落とす追加の手順を、ひっそりと書き加えています。それは「ソースの検証」です。
デプロイは簡単な方です。DuskEVMはエクスプローラーとしてBlockscoutを使っており、そこでコントラクトを検証するには「Verify & Publish」を行います。すると、該当するビルド設定、コンパイラのバージョン、オプティマイザ設定、ソースファイル、コンストラクタ引数などを、実際にデプロイされたバイトコードと一致するように再現する必要があります。
それは「EVM互換」とは別の基準です。デプロイは、そのコードが実行できることを証明します。検証は、別の誰かが実際に動いているものが何かを確認できるようにします。コントラクトはデプロイされ、機能していても、未検証のままにすることができます。その場合、他の人は、公開されたソースが実際に稼働しているものと本当に一致しているかを、独力で確認できなくなります。
つまり「EVM-compatible」と「developer-ready」は、まったく同じ主張ではありません。前者は「ここでコードが動くかどうか」の話です。後者は「監査人、機関、または利用者が、実際に動いているものが主張どおりであることを確認できるかどうか」の話です。
「チェーンがあなたのSolidityコントラクトを動かせても、そのコントラクトが実際に何であるかを証明できないままにすることはできる。」
次に見たいのは、標準的なSolidity/Hardhatの手順でデプロイしたコントラクトが、単にデプロイできるだけでなく、デプロイされたバイトコードに対して確実に検証できるのかどうかです。
#dusk $DUSK @Dusk
デプロイは簡単な方です。DuskEVMはエクスプローラーとしてBlockscoutを使っており、そこでコントラクトを検証するには「Verify & Publish」を行います。すると、該当するビルド設定、コンパイラのバージョン、オプティマイザ設定、ソースファイル、コンストラクタ引数などを、実際にデプロイされたバイトコードと一致するように再現する必要があります。
それは「EVM互換」とは別の基準です。デプロイは、そのコードが実行できることを証明します。検証は、別の誰かが実際に動いているものが何かを確認できるようにします。コントラクトはデプロイされ、機能していても、未検証のままにすることができます。その場合、他の人は、公開されたソースが実際に稼働しているものと本当に一致しているかを、独力で確認できなくなります。
つまり「EVM-compatible」と「developer-ready」は、まったく同じ主張ではありません。前者は「ここでコードが動くかどうか」の話です。後者は「監査人、機関、または利用者が、実際に動いているものが主張どおりであることを確認できるかどうか」の話です。
「チェーンがあなたのSolidityコントラクトを動かせても、そのコントラクトが実際に何であるかを証明できないままにすることはできる。」
次に見たいのは、標準的なSolidity/Hardhatの手順でデプロイしたコントラクトが、単にデプロイできるだけでなく、デプロイされたバイトコードに対して確実に検証できるのかどうかです。
#dusk $DUSK @Dusk
