単純な Balance modifier

簡単な Balance modifier を記述するために、別の簡単な導入が必要です。タイプには basic、basic with fee、maximum usage、および dependent があります。

Basic

Basic modifierは、最大 2 つのアカウント残高レコードに対して簡単な変更を実行します。 Coin Core は、Basic modifier のオペレーションを使用して、より複雑な Balance modifier を構築します。Basic modifier が実行された結果、2 つの個別のターゲットに対して少なくとも 2 つの台帳エントリレコードが生成されます。

📘

自分のコインエコノミーで、購入の取引金額に基づいて消費者にボーナスコインを発行したい。Basic modifier を使用してこのオペレーションを実行できます。

プロパティ

Basic modifier の特性は、以下の表に示すプロパティを使用して構成します。

PropertyTypeExampleRequiredDescription
Descriptionstring“Decrease consumer balance”modifierの簡単な説明
DecreaseTargetstring"consumer"減少する残高を指定するターゲット
IncreaseTargetstring“issuer”増加する残高を指定するターゲット
AvailableCoinslist[“regular”, “bonus”]使用可能なコインIDのリスト
UnavailableCoinslist[“red”,”green”]使用できないコインIDのリスト
Amountint20取引中に使用される金額
Percentagefloat10.0取引金額の変更に使用できるパーセンテージ

Basic modifier を正しく構成するには、DecreaseTarget と IncreaseTarget の両方の値を有効なターゲット ID に設定する必要があります。

AvailableCoins または UnavailableCoins プロパティは、modifier のオペレーション中に使用できるコインを制限するために使用できます。AvailableCoins または UnavailableCoins のいずれかを設定するか、あるいはどとらも設定しないことができますが、構成をロードするときに両方を設定することは推奨されません。両方のプロパティが modifier 構成で設定されている場合は、AvailableCoins 値のみが使用されます。どちらのプロパティも設定されていない場合、イベントが実行されるときにすべてのコインが使用可能になります。

Amount および Percentage プロパティは、トランザクションで加算または減算された金額を計算する際に柔軟性を提供します。

Amount プロパティが設定されている場合、残高に対してオペレーションを実行するときに取引金額をオーバーライドするためにその値が使用されます。

📘

自分のコインエコノミーで、取引金額にかかわらず無条件でボーナスを消費者に発行したい。

元の取引金額: [Any]
固定額: 20
発行者に対する減額: 20 ボーナスコイン
消費者に対する増額: 20 ボーナスコイン

設定:
DecreaseTarget: “issuer”
IncreaseTarget: “consumer”
AvailableCoins: [
“bonus”
]
Amount: 20

Percentage プロパティが設定されている場合は、元の取引金額に基づいて新しい取引金額が計算されます。

📘

自分のコインエコノミーで、取引金額の割合ベースで消費者にボーナス額を発行したい。

元の取引金額: 100
トランザクションの割合: 10.0%
発行者に対する減額: 10 ボーナスコイン
消費者に対する増額: 10 ボーナスコイン

設定:
DecreaseTarget: “issuer”
IncreaseTarget: “consumer”
AvailableCoins: [
“bonus”
]
Percentage: 10.0

注意:Coin Core は小数点以下の計算結果を切り捨てます。

🚧

制約

Amount と Percentage の両方のプロパティが modifier 構成で設定されている場合は、Amount 値のみが使用されます。どちらのプロパティも構成に設定されていない場合、Basic modifier は取引金額をそのまま使用して残高レコードに対してオペレーションを実行します。ターゲットに対して金額の変更がない場合でも、トランザクションが記録されます。
DecreaseTarget プロパティが Issuer に設定されている場合、AvailableCoins プロパティリストには 1 つのコインしか指定できません。これは、modifier が発行金額を複数のコインタイプに分割することができないためです。

BasicFee

Basic modifier を基本的な構成要素として使用することで、BasicFee modifier を作成できます。この modifier は FeeTarget と呼ばれる追加の増額ターゲットを追加し、取引金額の一部を fee ターゲットに送信することができます。modifier は、modifier が実行されたときに少なくとも 3 つの台帳エントリレコードを生成します。

プロパティ

BasicFee 修飾子は、Basic modifier のプロパティを継承します。追加のプロパティを以下の表に示します。

プロパティタイプ必須説明
FeeTargetstring"issuer"どのアカウント残高を増額するかを指定するターゲット
FeePercentagefloat5.0手数料を計算するために使用される割合の値。

FeeTarget は手数料を受け取るアカウントを識別し、FeePercentage はその金額を計算するために使用されます。

📘

自分のコインエコノミーで、マーチャントが消費者とのトランザクションを完了したときに 5% の取引手数料を課したい。

元の取引金額: 100
手数料の割合: 5%
消費者に対する減額: 100 コイン
発行者に対する手数料の増額: 5 コイン
マーチャントに対する増額: 95 コイン

設定:
DecreaseTarget: “consumer”
IncreaseTarget: “merchant”
FeeTarget: “issuer”
FeePercentage: 5.0

注意:Coin Core は小数点以下の計算結果を切り捨てます。

MaxUse

MaxUse modifier は、トランザクション中に特定のコインタイプの使用を制限するために使用できます。これは、コインエコノミーにおいていくつかのコインが他のコインよりも「重要」または「価値」のあるシナリオを作り出すことができるので、イベントを構築するための非常に興味深い modifier です。この modifier はまた、Basic modifier にも基づいています。

プロパティ

MaxUse modifier は、Basic modifier のプロパティを継承します。追加のプロパティを以下の表に示します。

プロパティタイプ必須説明
MaxCoinIDstring"green"max-usage のターゲットとなるコインのコイン ID。
MaxAmountint500max-usage の金額として使用される静的金額。
MaxPercentagefloat5.0max-usage の金額の計算に使用できる割合の値。

MaxCoinID は、トランザクションイベント中に制限されるコインタイプを識別します。

MaxAmount プロパティと MaxPercentage プロパティは、Basic modifier の Amount プロパティと Percentage プロパティと同様に動作します。いずれの場合も、MaxAmount または MaxPercentage のいずれかを設定する必要があります。

MaxAmount プロパティが設定されている場合、静的金額が max-usage の制限を決定するために使用されます。

📘

*自分のコインエコノミーで、コイントランザクションイベント中に、green コインの使用を最大 10 枚に制限したい。

  • green コインの最初の残高: 60
    red コインの最初の残高: 100
    元の取引金額: 50
    最大コイン ID: green
    固定額の最大値: 10
    消費者に対する減額: 10 枚の green コインと 40 枚の red コイン
    マーチャントに対する増額: 10 枚の green コインと 40 枚の red コイン
    残りの green コイン残高: 50
    残りの red コイン残高: 60

    設定:
    DecreaseTarget: “consumer”
    IncreaseTarget: “merchant”
    MaxCoinID: green
    MaxAmount:10

MaxPercentage プロパティが設定されている場合、取引金額の割合が計算され、max-usage の制限が決定されます。

📘

自分のコインエコノミーで、コイントランザクションイベント中に、green コインの使用量を取引金額の最大 10% に制限したい。

green コインの最初の残高: 60
red コインの最初の残高: 100
元の取引金額:50
最大コイン ID: green
最大割合: 10%
消費者に対する減額: 5 枚の green コインと 45 枚の red コイン
マーチャントに対する増額: 5 枚の green コインと 45 枚の red コイン
残りの green コイン残高: 55
残りの red コイン残高: 55

設定:
DecreaseTarget: “consumer”
IncreaseTarget: “merchant”
MaxCoinID: green
MaxPercentage: 10.0

🚧

制約

Basic modifier と同様に、MaxAmount と MaxPercentage の両方のプロパティが modifier 構成で設定されている場合、MaxAmount 値だけが使用されます。

Dependent

Dependent modifier は、イベント内の前の modifier 内の特定のコインの使用状況に基づいて、転送するコインの数を計算します。この modifier は以前の残高の変更に依存しているため、正しく機能するには常に別の modifier と組み合わせる必要があります。

プロパティ

Dependent modifier の特性は、Basic modifier のプロパティを継承します。追加のプロパティを以下の表に示します。

プロパティタイプ必須説明
DependentCoinIDstring"blue"従属する変更金額を計算するために使用されるコインのコイン ID。

DependentCoinID は、以前の変更で使用された可能性があるコインタイプを識別します。その変更で転送された金額は、Dependent modifier の金額を計算するために使用されます。

Dependent modifier は、Basic によって提供される Amount および Percentage プロパティを使用して変更の金額を決定します。Amount プロパティが設定されている場合は、変更の金額を決定するためにその値が使用されます。

📘

自分のコインエコノミーで、blue コインを使ってマーチャントに支払う際に、固定金額分のキャッシュバックを消費者に提供したい。

元の取引金額: 100
消費された blue コイン: 100
依存 ID: blue
Amount: 20
blue コインのキャッシュバック: 20

設定:
DecreaseTarget: “issuer”
IncreaseTarget: “consumer”
DependentCoinID: blue
Amount:20

Percentage プロパティが設定されている場合、従属するコインの使用額の割合が計算され、変更の金額が決定されます。

📘

自分のコインエコノミーで、blue コインを使用してマーチャントに支払う際に、消費者に 8% のキャッシュバックを提供したい。

blue コインの残高: 60
green コインの残高: 100
元の取引金額: 100
消費された blue コイン: 60
消費された green コイン: 40
依存 ID: blue
Percentage: 8
blue コインのキャッシュバック: 4

設定:
DecreaseTarget: “issuer”
IncreaseTarget: “consumer”
DependentCoinID: blue
Percentage: 8.0

🚧

制約

Dependent modifier を使用してイベントを構成する場合、Dependent modifier はイベントで実行される最初の modifier であってはなりません。これにより、modifier が実行されたときに変更の金額は常にゼロになります。

Amount と Percentage についても同じ制約が適用されます。両方のプロパティが設定されている場合は、Amount の値のみが使用されます。