PolySwarmPolySwarmPolySwarmPolySwarm
Help

Participating in the PolySwarm Marketplace

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

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

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

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


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

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

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

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

暗号通貨ウォレット

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

In PolySwarm, as with all cryptocurrency applications, an attacker with access to your wallet's private key can steal all your cryptocurrency (ETH & NCT) and impersonate you in the marketplace. It is absolutely essential that you protect the secrecy of your wallet's private key.

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

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

エンジンをテストする際、--keyfile 引数を polyswarm-client ユーティリティー (つまり、microenginebalancemanager) に渡して、暗号秘密鍵が入っている「キーファイル」の場所をエンジンに教える必要があります。 polyswarm-client (および他の PolySwarm プロジェクト) で配布されているすべてのキーファイルは、単純なパスワード password (--password 引数で指定) を使用して暗号化されています。

The sole purpose of these distributed keyfiles is for testing with fake nct and fake eth. Never use testing keyfiles from polyswarm projects in production or in real communities. Never fund the wallets contained in these testing keyfiles with real nct or real eth. When operating outside of a development testing environment you must create your own production keyfile. You are solely responsible for the security of your production keyfile.

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


ウォレットへの入金

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

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

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

コミュニティーの検索

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

PolySwarm's Lima Community, is a public Community accessible to everyone - it's where you'll want to get started. Lima acts as a sort of "proving ground" for security experts to build a reputation for their engine. セキュリティー専門家は、評判を築き上げた後に、別のコミュニティーに参加できます。 As more communities come online, they'll appear in PolySwarm Portal:

For now, let's proceed under the assumption that we only want to join the Lima Community.

polyswarm-client based engines currently only support communicating with a single Community at a given time. Support for multiple Communities will be included in a future release. In the meantime, please run an instance of your engine (& balancemanager) per Community.


コミュニティーへの NCT のリレー

Recall that each community has a distinct sidechain where PolySwarm transactions occur. In order to participate, you'll need to maintain a balance of NCT (ETH not required) on the Community's sidechain.

We've made this easy: you can use polyswarm-client's balancemanager utility. You'll need to run both your engine and a balancemanager to maintain a balance of NCT on the Community sidechain. Windows users will recall running balancemanager from the integration testing instructions. Linux users had balancemanager handled for them by Docker transparently.

balancemanager can be run in three modes:

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

Most users will want to simply maintain a balance - we'll dive into using this functionality below. Advanced users may want to manually deposit and withdraw funds.


API キー

In order to protect themselves from griefing / Denial of Service (DoS), Communities may elect to issue their members API keys and apply rate limits to these keys. Lima is one such Community, but API keys are available to everyone.

To obtain your API key, sign up on PolySwarm Portal, click your name in the top right corner and select Account. Your API key will be displayed in your Profile.

polyswarm-client ベースのエンジンでの API キーの使用法

Using your API key in polyswarm-client based engines is as simple as populating the --api-key command line argument. We discuss this below.

カスタム・エンジンでの API キーの使用法

If you're building a custom engine, please ensure that all API requests to Community-hosted polyswarmd instances contain your API key in the headers:

Authorization: [API キー]

For more details on the polyswarmd API, please refer to our API specification polyswarmd API Documentation.


最後の作業

To recap, we've:

  1. 実稼働環境で使用するためのウォレットのキーファイルを生成しました
  2. そのウォレットに ETH と NCT の両方を入金しました
  3. コミュニティーを決定しました
  4. コミュニティーの API キーを取得しました

Now we're ready to plug our engine (& balancemanager) into the PolySwarm marketplace!

If you've built your engine on polyswarm-client, (e.g. using our cookiecutter participant-template in the tutorials here), you simply need to specify some command line arguments (can also be specified as environment variables):

# microengine \
  --polyswarmd-addr lima.polyswarm.network \
  --keyfile <path to your self-generated and funded keyfile> \
  --password <encryption password for your keyfile> \
  --api-key <your API key>
  --backend <the name ("slug") of your scan engine (e.g. acme_eicar)>

For the full list of command line arguments, use the --help CLI flag:

# microengine --help
Usage: microengine [OPTIONS]

Entrypoint for the microengine driver

Args:     log (str): Logging level     polyswarmd_addr(str): Address of
  polyswarmd     keyfile (str): Path to private key file to use to sign
  transactions     password (str): Password to decrypt the encrypted private
  key     backend (str): Backend implementation to use     api_key(str): API
  key to use with polyswarmd     testing (int): Mode to process N bounties
  then exit (optional)     insecure_transport (bool): Connect to polyswarmd
  without TLS     log_format (str): Format to output logs in. (「text」または
  「json」)

オプション:
  --log TEXT              ロギング・レベル
  --polyswarmd-addr TEXT  polyswarmd インスタンスのアドレス (ホスト:ポート)
  --keyfile PATH          当該マイクロエンジンで使用する秘密鍵が含まれている
                          鍵ストア・ファイル
  --password TEXT         キーファイルを複合するためのパスワード
  --api-key TEXT          polyswarmd で使用する API キー 
  --backend TEXT          使用するバックエンド
  --testing INTEGER       統合テスト用にテスト・モードをアクティブ化。
                          N 報奨金と N オファーに応答して終了
  --insecure-transport    http:// および ws:// を介して polyswarmd 
                          に接続。--api-key との同時使用不可
  --chains TEXT           動作対象のチェーン
  --log-format TEXT       ログ・フォーマット。 「json」または「text」(デフォルト)
  --help                  このメッセージ (英語) を表示して終了

In addition to your engine, you'll need to run a balancemanager.

balancemanager will also require access to your keyfile:

# balancemanager maintain \
  --polyswarmd-addr lima.polyswarm.network \
  --keyfile <path to your self-generated and funded keyfile> \
  --password <encryption password for your keyfile> \
  --api-key <your API key> \
  --maximum <(optional) the maximum allowable balance in the Community before a withdraw is made>
  <MINIMUM: deposit into the Community when balance drops below this value>
  <REFILL_AMOUNT: the amount of NCT to transfer when Community balance falls below MINIMUM>

For the full list of command line arguments, use the --help CLI flag:

# balancemanager maintain --help
INFO:root:2018-12-28 03:04:11,352 テキスト・フォーマットでロギング
Usage: balancemanager maintain [OPTIONS] MINIMUM REFILL_AMOUNT

Entrypoint to withdraw NCT from a sidechain into the homechain

Args:     minimum (float): Value of NCT on sidechain where you want to
  transfer more NCT     refill-amount (float): Value of NCT to transfer
  anytime the balance falls below the minimum

Options:
  --polyswarmd-addr TEXT   Address (host:port) of polyswarmd instance
  --keyfile PATH           Keystore file containing the private key to use
                           with this microengine
  --password TEXT          Password to decrypt the keyfile with
  --api-key TEXT           API key to use with polyswarmd
  --testing INTEGER        Activate testing mode for integration testing,
                           trigger N balances to the sidechain then exit
  --insecure-transport     Connect to polyswarmd via http:// and ws://,
                           mutually exclusive with --api-key
  --maximum FLOAT          Maximum allowable balance before triggering a
                           withdraw from the sidechain
  --withdraw-target FLOAT  The goal balance of the sidechain after the
                           withdrawal
  --confirmations INTEGER  Number of block confirmations relay requires before
                           approving the transfer
  --help                   Show this message and exit.

Congratulations

With your engine & balancemanager running, you are now plugged into your Community(ies) of choice!