このセクションでは、@blocklet/did-space-js SDKを支える基本原則とアーキテクチャパターンについて詳しく解説します。これらのコンセプトを理解することで、ライブラリをより効果的に使用し、自信を持って問題をトラブルシューティングできるようになります。このSDKは、堅牢なコマンドパターン、柔軟な認証方法、そして安全なリクエスト署名メカニズムという3つの主要な柱に基づいています。
コマンドパターン
SDKは、メインのSpaceClientオブジェクトに多数のメソッドを持たせる代わりに、コマンドパターンを採用しています。この設計の選択により、クリーンでスケーラブルなアーキテクチャが提供されます。
仕組み:
カプセル化
個別の操作(ファイルのアップロードやディレクトリの一覧表示など)は、それぞれ独自の
Commandクラスにカプセル化されます。例えば、ファイルをアップロードするにはPutObjectCommandを使用します。標準化
各コマンドは標準化された構造を持ち、パラメータとして
inputオブジェクトを受け入れ、構造化されたoutputオブジェクトを返します。実行
SpaceClientは汎用的な実行役として機能します。コマンドのインスタンスを作成し、それをclient.send()メソッドに渡すと、このメソッドが認証、リクエスト署名、HTTP通信といった基盤となるロジックを処理します。
コマンドが何を行うかを定義し、クライアントがどのようにそれを行うかを処理するという、この関心の分離により、SDKは予測可能で拡張しやすいものになっています。

クライアントの初期化と認証
コマンドを送信する前に、適切な設定と認証情報でSpaceClientインスタンスを初期化する必要があります。このSDKは柔軟に設計されており、サーバーサイドアプリケーションからクライアントサイドコンポーネントまで、さまざまなユースケースに合わせて複数の認証戦略をサポートしています。
クライアントを設定する主な方法は、コンストラクタに渡されるSpaceClientOptionsオブジェクトを使用することです。このオブジェクトは、ターゲットとなるDID Spaceとそれにアクセスするために必要な認証情報を指定します。
クライアントの初期化と認証
ウォレット、シークレットキー、または認証トークンを使用するなど、SpaceClientを初期化するさまざまな方法について学びます。
セキュアバイデザイン:リクエスト署名
セキュリティはDID Spacesの礎です。SDKによって送信されるすべてのAPIリクエストは、その真正性と完全性を保証するために暗号技術によって署名されます。これにより、不正アクセスや転送中のデータの改ざんを防ぎます。
以下にプロセスの概要を示します:
client.send(command)を呼び出すと、SDKは完全なHTTPリクエストを構築します。- 次に、そのコンテンツ(URL、メソッド、ボディ)をハッシュ化し、ウォレットの秘密鍵でハッシュに署名することで、その特定のリクエストに対して一意のデジタル署名を作成します。
- この署名は、公開鍵と共にリクエストヘッダーの一部として送信されます。
- DID Spaceサーバーはリクエストを受信し、サーバー側で署名を再計算し、あなたの公開鍵を使用して送信された署名と照合します。
署名が一致すれば、サーバーはリクエストが本物であり、あなたから来たものであることを認識します。一致しない場合、リクエストは拒否されます。
リクエスト署名
リクエストがどのように暗号技術によって署名・検証され、データの完全性を保証するのかを探り、セキュリティモデルをより深く掘り下げます。
次のステップ
これでコアコンセプトの概要を理解できたので、さらに詳しく探求するか、実践的なガイドに進むことができます。