今週の注目トピック
Tomoaki Kitaoka(@tapioca_pudd)より
こんにちは、最近朝の有酸素運動を始めた北岡です。冬の朝は冷え込みますが、凛と張り詰めた空気に差し込む柔らかい朝日がなんとも心地良くて最高です。さて、今週のLayerX Newsletter Tech編ではTEEクラスタに対する監視アプローチの提案「TEEMon」、プライバシー保護の分散型アプリケーションプラットフォームであるSecret NetworkとEthereumのブリッジのローンチ、Solidityのバージョン0.8.0のリリースをピックアップしました。
リスト編と合わせてご覧ください。
Section1: PickUp
● TEEクラスタに対する監視アプローチの提案「TEEMon」
Middleware2020にTEEベースのアプリケーションに対して監視を行い、パフォーマンスのボトルネックを分析する論文「TEEMon: A continuous performance monitoring framework for TEEs」が採択された。
テスト環境ではなく運用環境での監視を前提としている点、通常のシステムメトリクスなどと統合し、複数のマシンが存在するクラスタ環境でのメトリクス集約とビジュアライズをしている点が既存の研究と比較して特徴的である。
これを実現するために、下図のようにコンポーネントを分割し、PrometheusとGrafanaを用いている。特に、TEEに関するメトリクスを取得するためにTEEドライバの特定のhookをキャプチャするExporterを実装し、prometheusに集約している。これにより、保護領域の使用されていない物理メモリ量(sgx_nr_free_pages)などを取得することができる。加えて、システムコールやページフォールトに関するメトリクスはeBPF-Exporter(をベースに)、一般的なCPUやメモリに関するシステムメトリクスをNode-Exporter、dockerコンテナごとのメトリクスはcAdvisorを用いている。
そして、このような監視アーキテクチャで、以下のように具体的なメトリクスを様々なLibrary OSベースのIntel SGXフレームワークに対してモニタリングし評価している。
例えば、下図はRedisをSGXで運用した時のコネクションに対するスループットとレンテンシーの比較である。Grapheneでは、頻繁なcontext switchが原因でコネクションが増えると、レンテンシーが比較的増加することがTEEMonにより分かる。(100 GETリクエストにつき、Graphene: 304, Native: 37, SCONE/SGX-LKL: 125)
Intel SGXを用いた秘匿化処理を特徴の一つとするブロックチェーンであるOasis Networkがメインネットローンチするなど本番商用環境でIntel SGXが用いられ始めた2020年であったと感じる。2021年は当論文のような実運用を見据えた課題解決に我々も取り組んでいきたい。(文責・osuke)
●プライバシー保護の分散型アプリケーションプラットフォームSecret NetworkとEthereumのブリッジがローンチ
15日、Secret NetworkとEthereum間でETH及びERC-20トークンをやり取りするブリッジ「Secret Ethereum Bridge」がメインネットにローンチされた。
Secret Networkは、Trusted Execution Environment (TEE)を用いることで、プライバシーを保護した分散型アプリケーションを実行できるブロックチェーンである。暗号化したデータを入力し、TEE内で復号して処理し、その結果を暗号化して出力することでプライバシーをもたらす。Secret Networkは、Cosmos SDKを用いて開発されており、コンセンサスアルゴリズムはTendermintがベースになっている。シビルコントロールは、delegated proof-of-stake (DPoS)であり、ネイティブ通貨Secret (SCRT)をステークすることでバリデータになれる。SCRTは、ステーク以外にもガバナンスやネットワークの手数料として利用できる。スマートコントラクトの実行環境は、Ethereum Virtual Machineではなく、CosmWasmである。
今回ローンチされたSecret Ethereum Bridgeによって、ETHあるいはERC-20トークンをEthereum上のブリッジコントラクトにデポジットすることで、Secret Network上にラップしたトークンを生成できるようになった。これにより、ETH及びERC-20トークンをSecret Network上でプライバシーを保護したまま利用できる。現在、Secret Network上で動作するUniswapのようなAutomated Market Maker (AMM)などのDeFiアプリケーションの開発が進められている。特徴的なのは、Secret Network上のDeFiは、プライバシー保護によってフロントランニング耐性がある点である。
また、Secret Ethereum Bridgeの普及とプライバシー強化のためにブリッジマイニングが1月に開始される予定である。ブリッジマイニングとは、Secret Ethereum Bridgeを介して、ETHあるいはERC-20トークンをEthereum上にロックし、Secret Networkでラップしたトークンを発行し所持することで、SCRTを報酬として得る仕組みである。一般的なファーミングと異なるのは、単一のトークンをロックすれば良いためAMMの流動性提供などで見られるimpermanent loss(提供通貨間の価格変動による損失)がなく、さらに、ラップしたトークンSecret Network上で自由に使用できる点である(例えば、Secret Network上のAMMへ流動性を提供できる)。
Secret Networkの比較対象としては、Tornado.cashやプライバシー保護のRollupがあるが、Secret Networkは柔軟に分散型アプリケーションを実行できる点と手数料が安い点を強みとして挙げている。
Secret NetworkはLayer 1でプライバシーを保護した分散型アプリケーションを実行できるプラットフォームのパイオニアであり、ゼロ知識証明や準同型暗号ではなくTEEを使用して秘匿化をもたらす技術的な側面でも面白く、今後も注目したい。(文責・岡南)
●Solidityのバージョン0.8.0がリリース
Ethereumのスマートコントラクト開発言語であるSolidityがバージョン0.8.0をリリースした。大きな変更点として下記のものが取り上げられている。
ABI coder v2がデフォルトで有効化
算術演算の不具合検出(オーバーフロー、アンダーフローエラー)
インターフェース変更
新しい制約
Yul改善
グローバル関数一部削除
上記のいくつかについて説明すると
ABI coder v2がデフォルトで有効化について
以前のバージョンでは、Solidityの外部に構造体やネストされた配列などを返す場合はABI encoder v2を指定する必要があり、それがまだ実験的なものだったのが今回のバージョンアップで正式にサポートされるようになった。また、pragma abicoder v1もそのまま使用することが可能なため、開発者は場合によって必要なバージョンを選択することができる。
算術演算の不具合検出について
今までのSolidityには数式でのオーバーフロー、アンダーフローエラーを検出する機能がなく、開発者はOpenzepplinなどのライブラリを用いてそれらを対応する必要があった。それが今回のバージョンアップでデフォルトでオーバーフローやアンダーフローの発生を検知することができ、さらにrevertを発生するようになった。また、ユースケースによっては算術演算の不具合検出機能を無効化したい時もあるだろう。その時は、uncheckedを利用してこの機能をoffにすることも可能だ。下記はuncheckedの使い方の例である。
ただし、uncheckedにはいくつかの制限があり、一つ目はuncheckedブロックの中でmodifierを使用する場合、_;は使用できない。理由は、プロパティが継承されているかどうかの混乱を招く可能性があるからだ。二つ目は、ブロックの代替としては使用できない。例えば、以下のコードスニペットはどちらも無効である。
新しい制約についていくつか新しい制約が追加され、代表的には明示的な型変換制約が追加された。例えばint8からuint16への変換したい場合、先にuint8またはint16に変換し、uint16変換する必要がある。また、以前のバージョンではアドレスリテラルは暗黙的にaddress payableに変換可能だったが、今回のバージョンではpayable()関数を用いて支払い可能なアドレスに変換する必要がある。
その他にも無効なオペコードに対する改善も行われた。ゼロ値による除算、assertion失敗、範囲外配列アクセスなどの内部エラーは、無効なオペコードを実行させる。無効なオペコードの問題点は、revertと対照的に利用可能な全てのガスを消費することである。それを避けるために、なんかしらのエラーが発生した場合、元の状態に戻すオペコードを使用し、revertを実行する。その時にオプションでエラー内容が追加される。エラーは二つに区分されており、クリティカルなエラーとassertionエラーなどの通常のエラーに分けられる。エラーによるrevertが実行されると、クリティカルなエラーの場合は0x4e487b71を、通常のエラーの場合は0x08c379a0というメッセージがrevertの中に含まれる。これによって開発者はrevertに関する対応をもっと柔軟にできるであろう。
正式なバージョンのリリースまではまだ課題や改善すべき部分が多いが、着実に成長していくSolidityの今後の動向に注目していきたい(文責・金)
LayerXではエンタープライズ向けブロックチェーン基盤を基本設計、プライバシー、インターオペラビリティーの観点から比較したレポートを執筆し、公開しています。
基本編のダウンロードはこちら
Section2: ListUp
1. Bitcoin
●(特になし)
2. Ethereum
●(特になし)
3. Smart Contract・Oracle
●Chainlinkのオラクル情報を用いてパラメトリック農作物保険プロダクトをつくるチュートリアル
4. DeFi
●Compound、独自チェーンCompound Chainのホワイトペーパー発表
5. Enterprise Blockchain Infrastructure
●Corda Enterpriseを利用するコンソーシアム向けクラウドソリューションCorda Managed Servicesが発表
6. Other Chain
7. DID
8. 統計・論考
お問い合わせ・ご相談に向けたコンタクトは、こちらの「LayerX Inc. Contact Form」よりお願いします
Disclaimers
This newsletter is not financial advice. So do your own research and due diligence.