オブジェクト
オブジェクトは、コインエコノミーにおける「誰が、何を、どのように」を定義するタイプです。コインは、利用可能なアセットを指定し、ターゲットはそのアセットを使用してトランザクションに参加できる人を定義し、イベントはそのアセットの使用方法を定義します。次のセクションでは、これらのオブジェクトの詳細について説明します。
Coin
Coin は、Coin Core 台帳のアセットを表すオブジェクトタイプです。コインは、発行者のアカウントから発行され、イベントと呼ばれる論理トランザクションタイプを構築するモジュールコンポーネント Balance modifier を使用してアカウント間で転送されます。Balance modifier とイベントについては後のセクションで説明します。
プロパティ
Coin オブジェクトの属性はプロパティを使用して記述されます。以下の表に、一般的なプロパティを示します。
プロパティ | 例 | 必須 | 説明 |
---|---|---|---|
ID | "bonus" | ◎ | Coin を一意に識別する名前。 |
Label | “An incentive coin for active use.” | ✕ | Coin の概要。 |
各 Coin オブジェクトは少なくとも ID プロパティを定義する必要があります。ID は、トランザクション中において Coin オブジェクトへの参照として使用されるため、一意である必要があります。各 Coin オブジェクトにはオプションの Label プロパティもあり、これを使用してコインの簡単な説明を書くことができます。
その他のプロパティは特定のコインの振る舞いから継承され、Coin オブジェクト自体とは別に構成することができます。
振る舞い
振る舞いは、Coin オブジェクトの基本的な機能と存続期間を定義します。有効期限と減価の 2 つに分類されます。
有効期限
有効期限の振る舞いは、コインタイプの有効期間と発行されたコインアセットの存続期間を定義します。期限切れのコインは、そのコインを保有するアカウントが含まれる次回のトランザクションが発生したときに発行者のアカウントに自動的に返されます。これは、コインの有効期限が切れてから回収される (発行者のアカウントに返される) までの間に長い時間がかかる可能性があることを意味します。コインをただちに回収する必要がある場合は、アカウントをトランザクションに含めることによって強制的に回収を行う必要があります。
コインタイプの有効期間を設定して、そのコインを希望の期間にわたり使用可能にすることができます。あるコインタイプの有効期間が終了すると、そのタイプの発行済みコインはすべて期限切れとみなされます。コインタイプの有効期間は、StartDate プロパティと EndDate プロパティの組み合わせを使用して定義されます。StartDate は、コインタイプが有効である最も早い時刻を定義するタイムスタンプです。同様に、EndDate は、コインタイプが有効である最も遅い時刻を定義するタイムスタンプです。有効期間には、バインドされた状態 (StartDate と EndDate の両方を持つ)、またはオープンの状態 (StartDate または EndDate のどちらか 1 つを持つ) があります。
有効期間に加え、コインには ExpirePeriod プロパティを使用して有効期限を割り当てることもできます。ExpirePeriod は発行済みのコインに適用され、StartDate またはコイン発行日のいずれか遅い方を基準に計算されます。ExpirePeriod が設定されていない、または期間が 0 の場合、コインアセットは残りの有効期間の間有効のままになります。
コインの有効期限と有効期間の両方に終了日が設定されている場合、コインはいずれか早い終了日に期限が切れます。
プロパティ | タイプ | 値 | 説明 |
---|---|---|---|
HasStartDate | Boolean | true または false | true は、StartDate プロパティが定義されていることを示します。 false に設定すると StartDate プロパティは無視されます。 |
StartDate | Integer | [0, max_int] | コインの有効期間の開始を示す Unix タイムスタンプ (秒)。 |
HasEndDate | Boolean | true or false | true は、EndDate プロパティが定義されていることを示します。false に設定すると、EndDate プロパティは無視されます。 |
EndDate | Integer | (StartDate, max_int] | コインの有効期間の終わりを示す Unix タイムスタンプ (秒)。 |
ExpirePeriod | Integer | [0, max_int] | 発行済みのコインアセットの存続期間 (秒)。有効期限はゼロ以外の数字にする必要があります。このプロパティがゼロに設定されている場合、コインに有効期限はなく、残りの有効期間の間有効のままになります。 |
減価
期限切れの振る舞いと同様、減価の振る舞いは発行済みのコインを回収するメカニズムを提供します。期限切れとの違いは、コイン残高が設定可能な間隔で段階的に回収されるという点です。期限切れと同様に、減価コインは、設定可能な間隔の後で発生したトランザクションでのみ発行者のアカウントに戻されます。
有効期限が切れ、減価されたコインは、そのアカウントがトランザクションに参加したときにのみアカウントから削除されます。これは、コインの有効期限が切れてから回収される (発行者のアカウントに返される) までの間に長い時間がかかる可能性があることを意味します。コインをただちに回収する必要がある場合は、アカウントをトランザクションに含めることによって強制的に回収を行う必要があります。
減価は、Diminishment プロパティを指定すると有効になります。Diminishment プロパティには、振る舞いのパラメータを定義するいくつかのサブプロパティがあります。
プロパティ | タイプ | 値 | Required | 説明 |
---|---|---|---|---|
Period | Integer | (3600, max_int] | ◎ | 減価を行う間隔 (秒)。 |
Reference | String | “current” または “original” | ✕ | 減額する金額の計算に使用される残高を指定します。以下の説明を参照してください。 |
Percent | Float | (0.0, 100.0) | ◎ | 減額する残高の割合。 |
減価は、コインが発行された時点から設定した間隔で実行されます。これらの間隔は秒単位で測定され、Period プロパティを使用して 1 時間 (3600 秒) より大きい任意の期間に設定できます。
減価の額は、現在の残高または元の残高のいずれかを使用して計算されます。その名前が示すように、現在の残高とは特定の時間にアカウントが所有するコインタイプの残高です。現在の残高を参照として使用する場合の減価の量は、単純に Percent プロパティで指定された現在の残高の割合です。Reference プロパティに現在の残高も元の残高も設定されていない場合、減価は現在の残高に対して計算されます。Reference プロパティが null に設定されていると、正しく実行されずエラーが表示されることに注意してください。
元の残高は、1 時間ごとに発生する特定のコインタイプのコイン残高増額の合計です。次の図は、現在の残高と元の残高の関係を示しています。
上の図では、青色のバーは残高の増加を示し、赤色のバーは残高の減少を示します。残高が増えるたびに、元の残高 (ピンクのライン) と現在の残高の両方が増加します。ただし、残高が減少しても元の残高は変化せず、現在の残高のみが減少します。1 時間の期間の終わりの時点での元の残高と現在の残高の値は、減価を計算するために使用される値です。
Target
Target とは、特定のトランザクションでアカウントが実行するロール (たとえば、“consumer” や “merchant”、“shop” など) を指すオブジェクトです。トランザクションを実行するときに、各ターゲットは特定のアカウントにリンクされます。このマッピングは、Balance modifier によってアカウント残高を更新するために使用されます。
Coin Core は、1 つのターゲット、つまり Issuer ターゲットを暗黙的に定義します。Issuer ターゲットは、常に発行者のアカウントを参照します。目的のユースケースに合わせて、ターゲット構成に追加のターゲットを定義することができます。
アカウントの作成時に希望のターゲットを設定することで、アカウントを特定のロールに制限することができます。たとえば、コインエコノミーが “merchant” ターゲットを持ち、マーチャントが所有するアカウントをトランザクションの merchant ターゲットとしてのみ使用する場合は、そのアカウントの “merchant” ターゲットを Account Core に設定できます。 アカウントとアカウントターゲットを構成する方法の詳細については、こちらを参照してください。
プロパティ
各ターゲットオブジェクトには、ID プロパティという 1 つの必須プロパティがあります。ID はトランザクションを作成するときにターゲットを参照するために使用され、一意でなければなりません。
プロパティ | タイプ | 例 | 説明 |
---|---|---|---|
ID | string | “consumer”, “merchant” | ターゲットを参照するために使用される ID。 |
Event
Event は、トランザクションに含まれるステップ (たとえば “charge” や “transfer”、“payment” など) を記述するオブジェクトです。イベントは、1 つまたは複数の Balance modifier で構成されます。イベントを実行するとき、トランザクションエグゼキュータは各 modifier を順番に適用します。
プロパティ
各イベントにはID、Description、Modifiers という 3 つの主要なプロパティがあります。ID は、トランザクションを作成するときにイベントを参照するために使用される ID です。これは一意でなければなりません。Description は、イベントの概要を設定するためのオプションのプロパティです。Modifiers プロパティは、イベントを構成する Balance modifier のリストです。
プロパティ | タイプ | 例 | 必須 | 説明 |
---|---|---|---|---|
ID | string | “payment” | ◎ | イベントを参照するために使用される ID。 |
Description | string | “Make a payment from a consumer to a merchant” | ✕ | イベントの簡単な説明。 |
Modifiers | Balance modifier のリスト | Balance Modifiersを参照してください。 | ◎ | イベントを構成する Balance modifier の順序付きリスト。 |
Updated about 6 years ago