本記事は下記の翻訳となります。
『Demystifying the SmartWeave Contract Logic』(by Community Labs)
スマートコントラクトの理解: Arweave 上での構築
Arweave でのスマートコントラクトの構文を見たことがありますか?今日はそれを理解していきます!
はじめに
まずは、ユーザーが Arweave 上でスマートコントラクトを記述できる標準を定めるプロトコルについて簡単に理解しましょう。
SmartWeaveは、開発者が分散型アプリケーション(dApp)のためにスマートコントラクトを記述し、ブロックチェーンのセキュリティ、信頼性、透明性を提供しながら、Ethereum のようなプラットフォームに関連する計算制限や高い取引手数料を排除することができます。
Arweave の上に構築されているため、Arweave が提供する永続性と分散化の利点を活用することができます。
評価メカニズム
SmartWeave は、Lazy Evaluationというメカニズムに依存しているため、特にユニークです。
SmartWeave コントラクトはステートを持つものであり、ステートとそのステートを変更するためのロジックが保存されます。したがって、各コントラクトには次の 2 つが必要です:
- 初期ステート
- ステートを変更するためのコントラクトロジック
コントラクトには、関連するアクション(相互作用)の順序付きリストもあります。これらのアクションはすべてユーザーがそのステートを変更するためにリクエストしたものです。
コントラクトとそのトランザクションの評価は、ユーザーが新しいリクエストを投稿したいときにのみ必要です。加えて、負担はノードからユーザー側にシフトされます。
初期ステートから、ユーザーはアクションを順番に評価し、コントラクトロジックを参照して現在のステートを導き出します。
関数型プログラミングに関して言えば、評価方法は reduce 操作に基づいています。
reduce は 2 つの引数を取ります:累積子(accumulator)と現在の要素(currentElement)であり、現在の要素に基づいて累積子にロジックを適用して更新された累積子の値を返します。
次の例を見てみましょう:
const numbers = [1, 2, 3, 4, 5];
// Reducer関数
const sum = (accumulator, currentValue) => accumulator + currentValue;
// reduceを使って配列の全ての値を合計
const totalSum = numbers.reduce(sum, 0); // 0は累積子の初期値
// totalSumの出力: 15
ここで、sum
という reduce 関数が、accumulator
とcurrentValue
を受け取り、各ステップでcurrentValue
をaccumulator
に加算して更新します。
すべての要素が処理された後、reduce()
関数は最終的な累積子の値(合計)を返します。つまり、要素の配列を、提供された reducer 関数に基づいて 1 つの値に縮小します。
同様に、SmartWeave コントラクトは次のようにステートと現在のアクションを受け取ります:
// 初期値としてsum変数を0に設定
initState = { sum: 0 };
// 合計計算用のコントラクトロジック
export async function handle(state, action) {
state.sum = state.sum + action.input.value;
}
ユーザーがスマートコントラクトにトランザクションリクエストを投稿する場合、最初にこれまでのすべての相互作用を処理し、ステートを 1 つの値、つまり現在のステートに縮小しなければなりません。
現在のステートを受け取った後、ユーザーは自分のアクションリクエストを評価して提出することができます。
SmartWeave コントラクトの利点
SmartWeave が Arweave エコシステムにもたらす特徴的な利点をいくつか見てみましょう:
- ノードからユーザーに評価の負担が移るため、高い取引手数料(ガス代)を経験することなく、取引手数料を排除できます。他のチェーンのように計算リソースを巡って競争する必要はありません!
- コントラクトは、reduce 操作の速さで実行し、現在のステートを返すことができます。ユーザーは、他のチェーンが直面する計算制限に依存することなく、必要に応じて複雑さを定義できます。
- ユーザー側での評価のもう 1 つの利点は、任意のスケーラビリティでコントラクトを作成できる点です。
- ユーザーはコントラクトの評価に使用する実行環境を選択でき、サポートする言語でコントラクトを書く自由を享受できます。
- reduce 操作はさまざまな操作(条件分岐、マッピング、フィルタリングなど)を実装でき、これによりコントラクトがシナリオに応じて異なるロジック(サブ関数)を選択する際に役立ちます。
- SmartWeave 標準から進化した関数型パターンとして、ステートを変更するロジックを持つ親コントラクトを参照できる、各コントラクトインスタンスが独自の初期ステートと相互作用を持つことができます。
- コントラクトの初期ステートは不変です。コントラクトの相互作用は評価され、現在のステートのみが返されます(必要な場合)。これはコンテキストの保存に役立ちます。
まとめると、SmartWeave 標準のスマートコントラクト構築は、任意の複雑さのコントラクトを自由に構築でき、必要な言語で記述でき、シンプルなアーキテクチャと手数料なしでオンチェーン実行できる点で、他のチェーンと差別化されています。
Arweave でスマートコントラクトを構築してみようと思ったことはありますか?今がそのチャンスです。
自分のビルドを共有するか、Twitterでサポートを求めてください :)
楽しい構築を!
【Arweave Japan とは】
Arweave Japan は Arweave / AO の日本語ビルダーエコシステム構築を目的とした分散型組織です。
【Arweave / AO とは?】
Arweave は無制限にスケール可能な分散型ストレージであり、AO は Arweave 上に構築された無制限にスケール可能な分散型スーパーコンピュータです。Arweave と AO を使って既存のブロックチェーンでは実現不可能であった実用的なプロダクトが開発できます。
イーサリアム L1 のリステーキングによってセキュリティが担保され、TVL はローンチ数ヶ月で 1000 億円近くまで上がり、今後数兆円規模の市場が期待されます。完全フェアローンチされた AO のトークン設計によって、この流動性は AO 上のプロジェクトが活用することができ、ビットコインと同じ半減スケジュールでミントされる AO トークンは開発者やプロジェクトが受け取れる仕組みとなっています。
Web2 を置き換えるレベルで実用的なプロジェクトが構築できる唯一無二の分散型プロトコル AO で開発することはグローバルの第一線で活躍する非常に大きなチャンスとなっています。
【Social Links】
【Blog】