LoginSignup
24
5

More than 1 year has passed since last update.

Symbol Mosaic Revocation Transaction In Metaverse モザイク回収トランザクションについて

Last updated at Posted at 2021-12-02

こちらはAnthonyLawさんが2021年12月2日に、nem Advent Calendar2021に投稿されたSymbol Mosaic Revocation Transaction In Metaverseをざっくり日本語にした記事になります。

はじめに

これはSymbolキプロスハードフォーク時の新しいカタパルトクライアントv1.0.3.0で新たに追加されたトランザクションタイプです。

この新たなモザイク回収トランザクション(Mosaic Supply Revocation )の機能を使うことで、モザイク作成者は回収可能モザイクフラグ(Revokable mosaic flag)のついたモザイクをいつでも誰からでも回収することができます。

機能

モザイク回収トランザクション(Mosaic Supply Revocation )の仕組みは、回収可能モザイク(Revokable Mosaics)に対してのみ機能します。

ここでは、XYM CityのメタバースにあるBull Fight Clubという私有地を例として解説しています。そのBull Fight Clubに入るには所有者の許可が必要です。

ユーザーはクラブに入るために BFC.daily-pass モザイクを所有する必要があり、これは販売窓口で購入することができます。
image.png

Bull Fight Clubは、10XYM支払ったユーザーに、回収可能(revokable)な BFC.daily-pass を発行します。
image.png

Bull Fight Club一日入場券の有効期限が切れると、発行元であるBull Fight Clubは、 モザイク回収トランザクション(Mosaic Supply Revocation)を発行することで、ユーザーに操作をして貰わなくても BFC.daily-pass を回収することができます。
image.png

回収可能(Revokable)モザイクを作成する場合、Transferable=falseの設定にして、受取人がモザイクを別のアカウントに転送できないようにすることをお勧めします。そうしないとモザイクの回収が難しくなります。コードサンプルの完全な例はこちら

コード例

この新しいコードを以下に記します。より詳細な例はこちら

const BFC_Operator = Account.createFromPrivateKey(privateKey, networkType);

const isSupplyMutable = true;
const isTransferable = false; <-- prevert recipient trasfer to other
const isRestrictable = true;
const isRevokable = true; <--- New flag

const nonce = MosaicNonce.createRandom();
const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create(
  Deadline.create(epochAdjustment),
  nonce,
  MosaicId.createFromNonce(nonce, BFC_Operator.address),
  MosaicFlags.create(isSupplyMutable, isTransferable, isRestrictable, isRevokable),
  0, // divisibility
  UInt64.fromUint(0), // duration
  networkType,
);

モザイク回収トランザクション (Mosaic Supply Revocation transaction)

モザイク回収トランザクション(Mosaic Supply Revocation transaction)はモザイクの所有者が、指定された保有者から回収可能なモザイクを回収するためのトランザクションです。

const mosaicSupplyRevocationTransaction = MosaicSupplyRevocationTransaction.create(
  Deadline.create(epochAdjustment),
  holderAddress,
  new Symbol.Mosaic(new 
    Symbol.MosaicId('revokable_mosaic_id'), 
    Symbol.UInt64.fromUint(1)), // mosaic unit 
  networkType,
  maxFee,
)

最後に

この 回収可能モザイクフラグ(Revokable mosaic flag)と モザイク回収トランザクション(Mosaic supply revocation transaction)は、発行したモザイクの供給をコントロールしたり、回収して再利用するような場合にとても便利な機能です。

また、ユーザーに手数料を負担させることなく、発行者がモザイクを回収できることです。ただし、モザイクを保有しているユーザーは回収についてのコントロールはできません。

注意点としては、回収可能モザイク(Revokable mosaic)は、通貨やトークン、株式として使うには適していません。このモザイクを取り扱う際には、回収可能モザイクフラグとその目的を理解することが重要です。受け取った回収可能モザイク(Revokable mosaic)は、保有しているユーザーの同意無しにいつでも発行者が回収することができることが特徴です。

24
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
5