https://medium.com/feed/milkomeda%E6%97%A5%E6%9C%AC
top of page

アルゴランドの新しい無制限スマートコントラクト・ストレージ



アルゴランドの新しい無制限スマートコントラクト・ストレージ

アルゴランドでBoxesをどう使うか?


私が一緒に仕事をしている開発者たちは、「何でも作ることができる」と言うことがあります。これはソフトウェア開発のスリリングな側面であり、人々がプログラミングに夢中になる大きな理由の1つです - 想像できるものなら何でも作ることができるのです。


残念ながら、ブロックチェーン・エンジニアは「何でも作ることができる...」と言う傾向が強いです。


...でも、難しい。

...でも、リスクがある。

...でも、運用にお金がかかりそう。


ブロックチェーンにおけるスマートコントラクトは、新進気鋭の技術です。分散型アプリケーションを構築できるようにするという第一の目標は達成していますが、真の成功への道はまだ険しいものです。


こうした理由から、ブロックチェーンにおける分散型アプリケーションとされるものの多くは、残念ながらその実装の一部をオフチェーン・サービスに依存しているのが現状です。世界が真の分散化に向けて歩みを進める中で「Web3.0」ならぬ「Web2.5」の誕生です。


アルゴランドでは、この課題を最優先に考え、アルゴランド仮想マシン(AVM)のすべてのアップデートは、私たちのブロックチェーンの上に構築する開発者のためにあります。私たちの目標は、安全でパフォーマンスの高い、完全な分散型アプリケーションを簡単に開発できるようにすることです。フルストップです。



AVM 8のリリース


私たちのAVMの最新リリースも例外ではありません。私たちは、スマートコントラクトのための新しい柔軟なストレージの形式を導入しました。Boxesです。スマートコントラクトは、必要なときに必要な数だけ、必要なサイズ(最大32K)のBoxesを作成することができます。


例えば、アリスがトークン価格のオラクル・サービスを提供したいとします。彼女は、ユーザーがトークンの現在の価格を取得するために呼び出すことができるスマートコントラクトを作成します。


アルゴランドで利用できるトークンは、ネイティブであれブリッジされたものであれ、どんどん増えていくので、アリスのオラクル・コントラクトには、時間とともに大量の永続的ストレージが必要になってくるでしょう。


Boxesは完璧なソリューションです。アリスのスマートコントラクトは、追跡するトークンごとに一つのBoxを割り当てます。


CoolCoinが作られると、新しい「CoolCoin」Boxがオラクル・コントラクトによって作られます。このBoxはCoolCoinの価格を保存します。この値は以後アリスのオラクル・コントラクトによって読み取られ、更新されます。CoolCoinの価格を知りたいユーザはオラクル・コントラクトを呼び出して価格を取得します。


これが実際と同じくらい簡単に聞こえるといいのですが。Boxesは、すべてのKey-Valueペアを格納するマップを実装する直接的な方法を提供します。


Boxesができる前は、スマートコントラクトの開発者がより多くのストレージを必要とする場合、状態を使用できるようにダミーのアプリケーションやアカウントを作成し、その過程で脆弱性が生じないようにパーミッションを慎重に管理するといったハッキングに頼らざるを得ませんでした。



Boxesの料金は?


もちろん、デジタル・ストレージにはコストがかかります。ブロックチェーンでは、分散型(および複製型)であるため、より高価になります。


簡単な説明の例です。アリスとボブは結婚したばかりで、結婚式の小さな写真をオンチェーンに保存したいと思います。彼らはストレージを管理するスマートコントラクトを作成し、Boxを作成してその中に写真を保存することができます。彼らはスマートコントラクトを自分のアカウントの1つにRekeyすることで、彼らだけがBoxをコントロールできるようにすることができます。


最大サイズの写真(32K)を保存する場合、約13Algo、つまり執筆時点ではおよそ3〜4ドルのコストがかかるります。


アルゴランドのストレージは、アカウントの最低必要残高の増加によって賄われます。つまり、アリスが画像を保存し続けるには、コントラクト・アカウントに少なくとも13Algoを維持する必要があるのです。もし将来アリスとボブが離婚して、アリスが結婚式の写真をデジタルでバーンしたいと思えば、彼女はそれを削除して13Algoを他の用途に解放することができるのです。



Boxesを使って他に何ができるのでしょうか?


ほとんど何でもできます。Boxesは柔軟で強力なパラダイムを提供するので、今後スマートコントラクトの大部分はBoxesを使用することになると思われます。


Boxesの使用例として、ブリッジのリプレイ保護が挙げられます。クリプト・ブリッジは、ブロックチェーン間での価値の移動を可能にする強力な技術であり、クリプトの世界を真にボーダーレスにしています。しかし、複数のチェーンを扱う複雑さから、ブリッジはハッキングの対象にならないよう慎重に設計する必要があります。ブリッジのハッキングの一種にリプレイ攻撃があります。


リプレイ攻撃とは、攻撃者が同じトランザクションを2度送信することです。複製されたメッセージは正しく見えますが、通過するのは1つだけであるべきです。


高いレベルでは、ブリッジは送信側ブロックチェーン上のアセットをロックし、受信側ブロックチェーン上の対応するアセットをミントします。ブリッジへのリプレイ攻撃が成功すると、送信側ブロックチェーンのロックされた1つのアセットに対して、受信側ブロックチェーンのミントされたアセットが複製されることになります。


リプレイ攻撃から保護するために、受信側ブロックチェーンのミント・スマートコントラクトは、すでに処理したすべてのトランザクションを追跡し、新しい取引をすべての古いトランザクションと照合して、重複していないことを確認する必要があります。既に実行されたものを記憶することで、攻撃は打ち破られます。


すべてのトランザクションを追跡するには、ブリッジが処理するトランザクションの数に比例したストレージが必要です。ブリッジが成功した場合、これは膨大な数になる可能性があります。Boxesは、このような無制限のストレージのニーズに完全に適しています。1つのトランザクションに1つのBoxです。


Boxesのもう一つの興味深いユースケースは、xBackedで採用が予定されているガバナンス・システムです。


例えば、あるプロトコルがガバナーによって管理され、ガバナーがアップデートを提案し、ガバナー全員の投票によって決定されるとする。ガバナーは多数存在し、一人のガバナーが複数の提案を行うこともあるため、常に多くのアクティブな提案が存在する可能性があります。


このような状況のデータは、当然ながらローカル状態やグローバル状態にマッピングされることはありません。アプリのグローバル状態にはサイズが限られているため、すべての提案を格納することは不可能でしょう。提案者のローカル状態には、各提案を格納できません。提案者は、ローカル状態のサイズを超えるような複数の提案を行う可能性があるからです。


たとえば、「アンのDo Good提案」というように、1つの提案に1つのBoxが必要です。Boxの中には、提案の文言と投票オプションが入っています。


しかし、投票そのものはどこに保存すべきでしょうか。コントラクトは、誰がすでに投票したかを追跡し、彼らが再び投票しないことを確認する必要があります。したがって、たとえば「アリスのアンのDo Good提案への投票」というように、投票ごとにひとつのBoxを作成することができます。これはとても小さなBoxで、たくさん (投票数と同じ数だけ) あることでしょう。


Boxesがなければ、開発者は妥協して、一度に1つのオープンな投票しかできないようにすることを余儀なくされたでしょう - コントラクトのグローバル状態に情報が適合するように。このような制約がなくなり、Boxesが切り開く技術的な可能性が、エコシステム全体の新しいアイデアを刺激しています。


Boxesは、既存のDappsのアーキテクチャをシンプルにして強化するだけでなく、新しいユースケースやセキュアな相互運用を可能にします。Boxesはアルゴランドにとってゲームチェンジャーなのです。Boxesはいつリリースされるのかと執拗にドアを叩いてくるプロジェクトの数は、最新の指標に過ぎません。


AVMは、安全で高性能なスマートコントラクトの開発を念頭に置いて最初から作られています:ネイティブの原子スワップ、アセット、スマートコントラクト、そして今や無制限のスマートコントラクト・ストレージです。AVMは、この業界で最も強力で汎用性の高いスマートコントラクト・プラットフォームの1つになっています。


Boxesに関するすべての技術的な詳細とその使用方法については、開発者ポータルの記事(https://developer.algorand.org/articles/smart-contract-storage-boxes/)を参照してください。



元記事:https://medium.com/algorand/what-are-you-putting-in-your-box-fea2f3f4520b


Comments


bottom of page