アートテクノロジー企業のスタートバーン株式会社がブロックチェーンインフラ「Startrail(スタートレイル)」を9月11日にイーサリアムメインネットへ公開したことを発表しました。
7月から現在に至るまで分散型金融(DeFi)市場が盛り上がり、イーサリアムメインネットのトランザクション手数料(ガス代/gas Fee)の高騰は、多くの開発者の課題となっています。
そのな最中に「Startrail」をイーサリアムメインネットローンチをしたスタートバーンは、ガス代を下げるために数多くの対策を講じたようです。
この記事はスタートバーン株式会社 取締役最高技術責任者(CTO) 中村智浩氏に「Startail」の概要と具体的なgas代高騰への対策法について寄稿いただきました。
アート情報の共通管理プラットフォーム「Startrail」
「Startrail(スタートレイル)」は、私たちが「Startrail Registry Record(SRR/スタートレイル・レジストリー・レコード)」と呼んでいる作品登録証を表す、イーサリアムの標準規格「ERC721」に準拠したNFT(Non Fungible Token)を発行・移転するプロダクトです。
「Startrail」によってこれまできちんと管理されていなかったアート作品の来歴(所有歴)や展示・販売歴などの情報をブロックチェーンを用いて管理できるようになります。
具体的な「Startrail」の利用方法としては、各個人がイーサリアムのアドレス(EOA)を持ち、自身で電子署名をして「SRR」の発行や移転を行います。そして発行したイーサリアムアドレスに紐づくアーティストやアート事業者を一つのコントラクトとして定義し、マルチシグの仕組みを利用した処理やユーザーがブロックチェーンの難しさを意識しないで済むように、e-mail addressをキーにした「SRR」の移転を行えるようにしています。
ちなみにe-mail address自体が「Startrail」で公開されるわけではなく、e-mail addressをハッシュ化したものが公開されます。
また、「Startrail」は実装を更新可能にすること(スマートコントラクトがアップグレーダビリティーを持つこと)にも気を遣って開発をしています。
これらの事情から、コントラクト上で行われる処理は、単純にNFTを発行、移転するという処理と比べて大きく複雑なものになっていて、その結果として消費されるgas量も大きくなっています。
gas代高騰に関する4つの対策
gas代の構成要素はgas量とgas priceの2つがあります。gas量はそのトランザクションがどれだけの計算を要するかを表し、gas priceは計算1単位にどれだけのコストを払うか、つまりレートを表します。「gas代が高騰した」と言われているのは後者の相場が高騰したということになります。
「Startrail」をイーサリアムのメインネットへリリースする1ヶ月ほど前には、ある事業者コントラクトの生成に2,183,649のgas量が消費されていました。これはgas priceを100 Gweiとすると、0.22ETHほどです。つまり現在のレートで8,000円を超えるようなトランザクションになっていました。
これはプロダクトを実運用する企業として当然許容できる事態ではありません。なぜならユーザーが「Startrail」を利用し、トランザクションが発生する度、プロダクト開発企業は多額のgas代を支払わなければならないからです。
そこで私たちは大きく分けて4つの対策を打っています。
- 払うgas priceを最小限にする。
- コストが高い処理の削減。
- 処理をオフチェーンに寄せる。
- 第三者が開発する2nd Layerの利用。
1.払うgas priceを最小限にする
もともとはスタートバーンがサーバを通してメタトランザクション(トランザクションの発行を代行する仕組み)でコントラクトを呼び出す場合には、ユーザの署名を含むリクエストがサーバにたどり着いたときのgas priceのリアルタイム相場をチェックしてその値を利用していました。
この仕様を変えて、長い時間トランザクションプール(マイニング前のトランザクションが溜まる場所)で保留されることを許容するようにしました。
背景としては、SRRはアート作品そのものではなく、所有権・著作権などの権利を表すトークンなので、そこに直接短期的に変化する金銭的価値がひもづいているわけではありません。なので、トランザクションが即時マイニングされる必要性が低いのです。
そこで、しばらくマイニングされないことを許容し、それでいてマイニングを待っている間もユーザ体験を損なわないようWebサービス側で努力する方向に舵を切りました。gas priceは1日の間でも相当変化しますので、安いタイミングにマイニングされるような仕組みになっています。
2.コストが高い処理の削減
これは本当に地道な削減方法です。マシンスペックが低かった90年代に戻ったような気持ちでコツコツと削っていきます。具体的には、ストレージ(storage)への保存は本当にそれが必要か精査する、string(文字列型)ではなくてuint8(数値型)を使う、利用度合いが低いライブラリを削る、プロキシレイヤー(proxy layer)の処理を削る、storageのスロットを決め打ちして他コントラクトの呼び出しを安くするなどを行いました。
3.処理をオフチェーンに寄せる
処理をオフチェーンに寄せるというのは、オンチェーンで行われる処理を減らしサーバで行う処理、保存する情報を増やすということです。例えばEIP2477などを活用したトークンのメタデータ保存の仕組みや、マルチシグにおけるガスレスシグネチャー(gas-less signature)の利用などが挙げられます。
このプロセスで大事なのは、オフチェーンで処理を行うサーバが悪意を持った行動を起こせないという一線を守ることだと考えています。
サーバが何か悪いことをしていないかを、オンチェーンの履歴を追うことで検証できることが大事です。またオフチェーンで処理を行うにしろ、ユーザ自身が行った署名を改ざんすることはできません。
セカンドレイヤー(2nd Layer)もそうですが、この一線を守っていれば、オフチェーンでの処理を増やすことは悪いことではありません。多くの処理をオフチェーンに寄せることで、手数料を節約しながらでも、パブリックブロックチェーンを使うという哲学の方が大事かなと思っています。
4.第三者が開発するセカンドレイヤー(2nd Layer)の利用
プラズマ(Plasma)やロールアップ(Rollup)などを用いた2nd Layerのソリューションが段々と実用的になってきていますので、その利用を考えております。
ただし、「Startrail」はアート作品の現在の所有者が誰かだけではなく、それまでにどういった歴史があったのか、という情報をとても大切にしています。
ですのでイーサリアムのメインチェーンと2nd Layerに情報が分散することにより状況が複雑化することが考えられ、慎重にデザインしなければいけないと思っています。2nd Layerに関しては、焦りすぎずに判断をしたいと思いますので、1から3のプロセスと同時並行で進めていきます。
最後に
実際に私たちは上記の1から4の事項を考慮して開発を進めたところ、リリース1ヶ月前と比べてgas代を半分以下に削ることができました。さらにgas代を80%、90%を削減するために、様々な改善を検証、実証中です。
スタートバーン株式会社 取締役最高技術責任者(CTO) 中村智浩
編集:竹田匡宏(あたらしい経済)
(images:iStock/hqrloveq・incohre-)