Wavesプラットフォームでのアセットの作成 / ICOテスト

Creation of assets on the Waves platformTest ICO on the Waves platformの日本語訳です

Wavesプラットフォームでのアセットの作成

火曜日にWavesチームは新バージョンのフルノードをテストネットにリリースしました。 この新リリースにはアセット作成機能が含まれています。 現在この機能にはドキュメントが足りていませんが、slackの#testnet-maintainersチャンネルの有志の助けにより、その動作を把握することができました。 アセット作成と転送のテストを行う際の出発点を提供するために、これからまず新規のアセット作成の方法を、次にアセット作成の成功を確認するための方法を、3つ目にアセットを他のユーザーに転送する方法を説明します。

アセットの作成

あなたのノードのSwagger UIへ移動すれば、/assets で始まる新規のエンドポイントが見つかるはずです。 最初のエンドポイントは /assets/issue で、これは新規のアセットを作成します。 使用するためにはアセットに関するJSONデータを準備する必要があります。次のように:

{
“name”: “DtasCCmi3uVMUAsBNUzbo9”,
“quantity”: 1000000,
“description”: “AhuKyNZ1eFb8kGbYy89WvPqqf4unhhPuu”,
“sender”: “3Mvtz6QNaxBgS2o8nBkJLhaeDKE38U8V68Y”,
“decimals”: 8,
“reissuable”: false,
“fee”: 100000000
}

アセット作成に関するパラメータの特性を説明します:

name: アセット名 — コードによると(scorex.transaction.assets.IssueTransaction)、これはBase58エンコード可能な文字列である必要があります。 従って、”.”や空白のような文字は使用できません。
quantity: 新規アセットで作成されるトークンの数 — コードによると(scorex.transaction.assets.IssueTransaction)、これはBase58エンコード可能な文字列である必要があります。 従って、”.”や空白のような文字は使用できません。
sender: トークンの作成者となるアドレスを指定 — このアドレスは、アセット作成に必要なトークン残高を保持していなければなりません。
decimals: 新規アセットの少数部の桁数を指定 — 従って、このパラメータを使用してトークンの分割可能な粒度を定義することになります この値は0〜8の間で指定します
reissuable: ドキュメントによると、トークンの追加発行が可能かどうかを指定するようです
fee: ブロック生成者に支払う手数料をwavelets単位で指定し — 最小手数料は100,000,000です

これらのパラメータを指定した後、新規のアセットを発行可能です。 結果は次のようになるはずです:

{
“type”: 3,
“id”: “84w5GaQfGrceYwdXuPTBgLKz7WccWiJUHJbe6oP53XQ5”,
“sender”: “3Mvtz6QNaxBgS2o8nBkJLhaeDKE38U8V68Y”,
“assetId”: “84w5GaQfGrceYwdXuPTBgLKz7WccWiJUHJbe6oP53XQ5”,
“name”: “DtasCCmi3uVMUAsBNUzbo9”,
“description”: “AhuKyNZ1eFb8kGbYy89WvPqqf4unhhPuu”,
“quantity”: 1000000,
“decimals”: 8,
“reissuable”: false,
“fee”: 100000000,
“timestamp”: 1475859483143,
“signature”: “4DFpobWp27a9q9reR4YbLtaw2UjA12MVSEMDKaejSpGdNBsRpYfxgNxznzGwJYH8jZPgLVUN5Ln4wH9waVz1d5FA”
}

基本的に、指定したパラメータの繰り返しにプラスして、シグネイチャーのような情報が加わります。 全てがプラン通りに進めば、新規のアセットが作成され、作成者のアドレスへ指定した量のトークンが保持されているはずです。

トークンが存在しているか確認してください。

トークンが存在しアセットの作成に成功したなら、次のエンドポイント /assets/balance/{address}/{assetId} が使用できます。 もちろん、このエンドポイントを実行するためには、アドレスがトークンを保持しており、アセットIdが提供されていなければなりません。 上記の例でアドレス 3Mvtz6QNaxBgS2o8nBkJLhaeDKE38U8V68Y と、アセットId 84w5GaQfGrceYwdXuPTBgLKz7WccWiJUHJbe6oP53XQ5 が提供されているので、結果は次のようになります:

{
“address”: “3Mvtz6QNaxBgS2o8nBkJLhaeDKE38U8V68Y”,
“assetId”: “84w5GaQfGrceYwdXuPTBgLKz7WccWiJUHJbe6oP53XQ5”,
“balance”: 600000
}

ここでのバランスは最初に作成したトークンの数より少なくなっています。既にいくらかのトークンを転送したからです。 転送しなかった場合は、作成した時の数と同じになるはずです。

トークンの転送

最後に、新規アセットのトークンは他のユーザに転送できるはずです。 このユースケースでは3つ目のエンドポイント /assets/transfer が使用できます。 再び転送を表すJSONデータを準備します:

{
“recipient”:”3Mow5eB2vAKP5E5WutiURYPFhRqp8mAHKvY”,
“assetIdOpt”:”84w5GaQfGrceYwdXuPTBgLKz7WccWiJUHJbe6oP53XQ5",
“amount”: 10,
“feeAmount”: 10000,
“attachment”: “test”,
“sender”: “3Mvtz6QNaxBgS2o8nBkJLhaeDKE38U8V68Y”
}

これは宛先アドレスへ作成したアセットを10トークン転送します。 結果は次のようになるはずです:

{
“type”: 4,
“id”: “BwzcLz7H9GAckcxhA7QwWq6nHoJBKtnmWj9sakakskp9”,
“sender”: “3Mvtz6QNaxBgS2o8nBkJLhaeDKE38U8V68Y”,
“recipient”: “3Mow5eB2vAKP5E5WutiURYPFhRqp8mAHKvY”,
“assetId”: “84w5GaQfGrceYwdXuPTBgLKz7WccWiJUHJbe6oP53XQ5”,
“amount”: 10,
“feeAsset”: null,
“feeAmount”: 10000,
“timestamp”: 1475922237050,
“attachment”: “test”,
“signature”: “4gcJrB6PU1omQJEjmxygBbnft8ftDZaGMEa743yr9bn7scCSEBEaZLKWJ45kd5RZiVgQq1CuHiqNthJJSVtEShpb”
}

ここまでで、Wavesプラットフォームのアセットメカニズムが上手く機能していることを確認できました。 いくつかのウェブサービスエンドポイント、例えばアドレスを指定してアセットを照会するなど、他にも利便性を高める理由でエンドポイントが必要になるでしょう。 これは将来のリリースで実装されると思われます。 加えて、アセットの作成はライトクライアントからも可能になる予定です。将来的には、JSONデータとエンドポイントに直接触れる必要はなくなるでしょう。

WavesプラットフォームでのICOテスト

実際にICOシナリオをテストするために、皆さんをテストICOへ招待したいと思います。 アイデアは次の通りです:

新規のWavesアドレス(テストネット)を用意しています: 3N3svwjxmG5A1AohycgRREguJ7q5aBeDoE1

このテストに参加頂ける方は、このアドレスへテストトークンを送信してください。 次の金曜、2016年10月14日に新規アセットを分配します。送信したテストトークンのシェアに応じて、テストトークンを送信したアドレスへと分配します。

参加者はテストトークンの残高を次のウェブページで確認できます: http://check.wavesnode.net/ico/