PolySwarmPolySwarmPolySwarmPolySwarm
ヘルプ
ヘルプ

PolySwarm マーケットプレイスへの参加

参加者を詳細にテストした後に、そのエンジンを実際の PolySwarm マーケットプレイスに展開します。

大まかに言うと、PolySwarm マーケットプレイスへの接続は、以下のような単純なタスクです。

  1. 参加する単一または複数のコミュニティーを決定する
  2. ご使用の参加者で、該当するコミュニティーの polyswarmd のホスト・インスタンスを指定する

これを行う際の留意事項がいくつかあります。以下で説明します。


ウォレットとキーファイル

PolySwarm は、イーサ (ETH) というネイティブ暗号通貨で支えられているプログラム可能なワールド・コンピューターであるイーサリアム上に構築されています。 イーサリアム・ユーザーが ETH の送金を実行するか、イーサリアムの「スマート・コントラクト」(例えば、PolySwarm のリレー・コントラクト) の呼び出しを実行する場合、そのユーザーは、そのトランザクションを実行するためにイーサリアム・ネットワークに「ガス」の形式で支払う必要があります。 ガスは、ユーザーの ETH 残高から差し引かれます。

PolySwarm は、イーサリアム上に構築されたアプリケーション層の暗号通貨トークンである Nectar (NCT) を基盤として稼働しています。 NCT は、PolySwarm マーケットプレイスに参加するために必須です。

PolySwarm ネットワークでユーザーに代わって動作する参加者は、ETH と NCT の両方を利用できる必要があります。

暗号通貨ウォレット

すべての暗号通貨 (ビットコインなど) と同様に、資金は「ウォレット」で保持されます。 厳密には、ウォレットは単に、暗号鍵ペアと、鍵ペアの使用法を記述したメタデータです。 ウォレットは、この暗号鍵ペアの公開部分の暗号ハッシュによって一意に識別されます。 ウォレット (およびそこに入っているすべての資金) の所有/管理は、ウォレットの鍵ペアの秘密部分の所有と同義です。

あらゆる暗号通貨アプリケーションと同様に、PolySwarm では、あるユーザーのウォレットの秘密鍵を利用できる攻撃者は、そのユーザーのすべての暗号通貨 (ETH と NCT) を盗んだり、マーケットプレイス内でそのユーザーになりすましたりすることができます。

ウォレットの秘密鍵の機密性を保持することは、非常に重要です。

秘密鍵を保護する手段については、この資料の対象外です。 参加者が PolySwarm マーケットプレイスに参加するには (また、ユーザーに代わってトランザクションを行うには)、参加者がウォレットの秘密鍵を使用してトランザクションに署名できる必要があります。 つまり、参加者は、鍵に直接アクセスできるか (低セキュリティー)、鍵にアクセスできるデバイス/プロセスに署名を要求できる (高セキュリティー) 必要があります。 現在、キーファイルへの直接アクセス方法は、polyswarm-client でサポートされています。 別のデバイスへのトランザクションの署名のオフロードのサポートについては、今後の polyswarm-client リリースで対応する予定です。

PolySwarm でのウォレットの使用方法

統合テスト時に、--keyfile 引数を polyswarm-client プログラム (つまり、microenginebalancemanager) に渡して、暗号秘密鍵が入っている「キーファイル」の場所を参加者に教える必要があります。 polyswarm-client (および他の PolySwarm プロジェクト) で配布されているすべてのキーファイルは、単純なパスワード password (--password 引数で指定) を使用して暗号化されています。 keyfile のパスおよび password は、test-integration.yml に格納されます。

実動/マーケットプレイスのキーファイルは、テストで使用するキーファイルと異なる扱いをする必要があります。

PolySwarm マーケットプレイスに接続する際には、公開 PolySwarm プロジェクトに含まれているキーファイル (例えば、polyswarm-client にある keyfile_microengine) は使用しないでください。

秘密鍵が信頼できない第三者やデバイスに開示された可能性があるウォレットに資金を入れないでください。 polyswarm-client の前述のキーファイルは、誰もがその秘密鍵を利用できるため、この条件に確実に適合しています。

実際の NCT/ETH を保有しているウォレットや PolySwarm マーケットプレイスへの参加時に使用するウォレット (「実動」ウォレット、「マーケットプレイス」ウォレット) は、セキュアに生成する必要があり、また参加者の中で一意のものでなければなりません。

実動ウォレットの秘密鍵は、保存時も使用中も、外部の脅威やインサイダーの脅威から保護する必要があります。

公式のイーサリアム・クライアント (go-ethereum (短縮名は geth)) に、安全なキーファイルの生成に関する説明があります。 geth でのアカウントの管理に関する説明をご覧ください。

信頼できるデバイスでこのガイドに従って、PolySwarm マーケットプレイスへの接続に使用する新しいキーファイルを作成してください。

ウォレットへの入金

独自のキーファイルを生成した後には、ウォレットに ETH と NCT を入れる必要があります。

通常、以下の 3 つの入金方法を利用できます。

  1. 暗号通貨取引所で ETH と NCT を購入し、参加者のウォレットに対応しているアドレスに送金します。 暗号通貨の購入と送金の方法については、この資料の対象外です。
  2. PolySwarm Direct (参加者が常に入金された状態に保つ構成可能な自動再入金機能を備えた近日公開予定のサービス) をサブスクライブします。 このサービスは開発中です。お待ちください。
  3. 初期パートナーの皆様は、公開された配布スケジュールに従って、実動ウォレットで NCT を受け取ります。

コミュニティーの検索

PolySwarm マーケットプレイスは、複数のコミュニティーで構成されています。 コミュニティーは、特定のマルウェアに対する関心を共有している、あるいはコミュニティー内で交換されるアーティファクトの機密性を保持することを相互に合意した個人や企業から成るグループです。

polyswarm-client に基づいている参加者は、オーバーライドしない限り、現行のデフォルト公開コミュニティーに接続します。 別のコミュニティーに接続するには、--polyswarmd-addr 引数または関連する環境値を使用して、このデフォルトをオーバーライドします。

デフォルト公開コミュニティーは一種の実験の場であり、セキュリティー専門家は参加者を介して評判を築き上げることができます。 セキュリティー専門家は、評判を築き上げた後に、別のコミュニティーに参加できます。

コミュニティーが追加されると、PolySwarm コミュニティー・ページに表示されます。

現在、polyswarm-client ベースの参加者では、一度に 1 つのコミュニティーとしか通信できません。

複数のコミュニティーのサポートは、将来のリリースで追加される予定です。

それまでは、コミュニティーごとに参加者の固有のインスタンス (および balancemanager のようなサポート・サービス) を実行してください。


marketplace.env のカスタマイズ

参加者の docker/marketplace.env ファイルをカスタマイズしてから、参加者の docker/marketplace.yml ファイルを使用して PolySwarm マーケットプレイスに接続します。

marketplace.yml および marketplace.env は、2019 年 10 月 12 日participant-template に追加されました。

ご使用の参加者にこれらのファイルがない場合は、最新の participant-template に基づいて参加者を再作成する必要があります。

marketplace.yml は、マーケットプレイスへの接続に必要なすべてのもの (参加者の frontendredis ミドルウェア、worker バックエンド、balancemanager) の起動を処理します。 この YAML は、marketplace.env 内に含まれている値を利用します。これからその値をカスタマイズします。

marketplace.yml は、marketplace.env から以下の情報を取得します。

  1. 参加者のマーケットプレイス keyfile のコンテナー内ファイル・パス。
  2. 参加者のマーケットプレイスの keyfile の復号に使用する password
  3. 参加するコミュニティーの有効な API キー。

KEYFILE

参加者の Docker イメージから起動されたコンテナーがアクセスできる場所に、新たに生成した実動キーファイルを配置します。 説明を簡単にするため、この keyfile を参加者のディレクトリーのルートに配置するものとします (/path/to/your/participant/production_keyfile)。

任意のテキスト・エディターを起動し、marketplace.envKEYFILE= 変数を編集して、参加者の keyfile に選択したコンテナーからアクセス可能なパスを指定します。

marketplace.env 内の変数は、単一引用符/二重引用符で囲まないでください。

正しい設定: KEYFILE=production_keyfile

正しくない設定: KEYFILE="production_keyfile"

PASSWORD

PASSWORD= 変数をカスタマイズし、keyfile の作成時に選択した暗号化パスワードを指定します。

API_KEY

デフォルト公開コミュニティーの API キーを取得するには、PolySwarm に登録し、右上隅にある自分の名前をクリックして、「設定」を選択します。 API キーが「API キー」タブに表示されます。

API_KEY= 変数をカスタマイズし、ご使用の API キーを指定します。


マーケットプレイスへの接続

marketplace.env の構成が終わったら、マーケットプレイスへの接続は非常に簡単であり、参加者のルート・ディレクトリーから以下を実行するだけです。

$ docker-compose -f docker/marketplace.yml up

マーケットプレイスへの接続を示す各種ログが出力されます。

マイクロエンジンを実行している場合は、アーティファクトをマーケットプレイスにアップロードし、スキャン結果セットでご使用のエンジンの keyfile アドレスを探すことで、正常に動作しているかどうかを確認できます。 マイクロエンジンの所有権を要求していない場合は要求して、名前を付けることができます。

これで、PolySwarm マーケットプレイスに接続されました。


コミュニティーへの NCT のリレーに関する注記

各コミュニティーには、PolySwarm トランザクションが行われる固有のサイドチェーンがあることに留意してください。 参加するには、コミュニティーのサイドチェーンで NCT の残高を維持する必要があります (ETH は不要です)。

polyswarm-clientbalancemanager ユーティリティーを使用することで、これは簡単に行うことができます。 コミュニティーのサイドチェーンで NCT の残高を維持するには、参加者と balancemanager の両方を実行する必要があります。 Windows ユーザーは、統合テストの説明にある balancemanager の実行を行います。 Linux ユーザーの場合、balancemanager は Docker によって透過的に処理されます。

balancemanager は、以下の 3 つのモードで実行できます。

  1. deposit: コミュニティーに構成された金額の NCT を預金して終了します
  2. withdraw: コミュニティーから構成された金額の NCT を引き出し、終了します
  3. maintain: コミュニティーで構成可能な NCT の残高を継続的に確保します

ほとんどのユーザーは、残高の維持 (maintain) のみを行います。この機能の使用については、後で詳しく説明します。 上級ユーザーは、預金 (deposit) と資金の引き出し (withdraw) を手動で行えます。