ネームスペースをモザイクへリンクする

トランザクションを発行するとき、他の人がよりわかりやすい方法でモザイクを参照できるように、ネームスペースをモザイクにエイリアスとして設定します。

前提条件

方法 #01: デスクトップウォレットを使用する

  1. 左側のメニューの 「ネームスペース」 をクリックします。
../../_images/desktop-link-mosaic-1.gif
  1. モザイクにリンクするネームスペースの編集アイコンをクリックします。 「リンク」 をクリックします。
  2. エイリアスタイプとして 「モザイクをリンク」 を選択します。ネームスペースに接続するモザイクのIDを選択します。 「送信」 をクリックします。次のページの情報を確認し、ウォレットのパスワードを入力します。 「確認」 をクリックします。
../../_images/desktop-link-mosaic-2.gif
  1. モザイクがリンクされているかどうかは、 「モザイク」 ページで確認できます。モザイクに表示される名前はリンクされたネームスペースです。
../../_images/desktop-link-mosaic-3.gif

方法 #02: SDK を使用する

  1. 新しいファイルを開き、ネームスペース識別子とリンクしたいモザイク識別子を定義します。

注釈

トランザクションに署名するアカウントはネームスペースとエイリアスをつけるモザイクを所有している必要があります。

// replace with namespace name
const namespaceId = new NamespaceId('foo');
// replace with mosaic id
const mosaicId = new MosaicId('7cdf3b117a3c40cc');
// replace with namespace name
const namespaceId = new symbol_sdk_1.NamespaceId('foo');
// replace with mosaic id
const mosaicId = new symbol_sdk_1.MosaicId('7cdf3b117a3c40cc');
  1. 次に、ネームスペースとモザイクをリンクする AliasTransaction をアナウンスします。
// replace with networkType
const networkType = NetworkType.TEST_NET;

const mosaicAliasTransaction = AliasTransaction.createForMosaic(
  Deadline.create(epochAdjustment),
  AliasAction.Link,
  namespaceId,
  mosaicId,
  networkType,
  UInt64.fromUint(2000000),
);

// replace with private key
const privateKey =
  '1111111111111111111111111111111111111111111111111111111111111111';
const account = Account.createFromPrivateKey(privateKey, networkType);
// replace with meta.networkGenerationHash (nodeUrl + '/node/info')
const networkGenerationHash =
  '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B';
const signedTransaction = account.sign(
  mosaicAliasTransaction,
  networkGenerationHash,
);
// replace with node endpoint
const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000';
const repositoryFactory = new RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();

transactionHttp.announce(signedTransaction).subscribe(
  (x) => console.log(x),
  (err) => console.error(err),
);
// replace with networkType
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
const mosaicAliasTransaction = symbol_sdk_1.AliasTransaction.createForMosaic(
  symbol_sdk_1.Deadline.create(epochAdjustment),
  symbol_sdk_1.AliasAction.Link,
  namespaceId,
  mosaicId,
  networkType,
  symbol_sdk_1.UInt64.fromUint(2000000),
);
// replace with private key
const privateKey =
  '1111111111111111111111111111111111111111111111111111111111111111';
const account = symbol_sdk_1.Account.createFromPrivateKey(
  privateKey,
  networkType,
);
// replace with meta.networkGenerationHash (nodeUrl + '/node/info')
const networkGenerationHash =
  '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B';
const signedTransaction = account.sign(
  mosaicAliasTransaction,
  networkGenerationHash,
);
// replace with node endpoint
const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000';
const repositoryFactory = new symbol_sdk_1.RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
transactionHttp.announce(signedTransaction).subscribe(
  (x) => console.log(x),
  (err) => console.error(err),
);

注釈

エイリアスをアンリンクしたい場合は、タイプを AliasActionType.Unlink に変えてください。

  1. これで、モザイク ID の代わりにネームスペースでトランザクションを送信することができるようになりました。
// replace with network type
const networkType = NetworkType.TEST_NET;
// replace with aliased mosaicId
const mosaicId = new NamespaceId('foo');
TransferTransaction.create(
  Deadline.create(epochAdjustment),
  Account.generateNewAccount(networkType).address,
  [new Mosaic(mosaicId, UInt64.fromUint(10000000))],
  EmptyMessage,
  networkType,
  UInt64.fromUint(2000000),
);
// replace with network type
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
// replace with aliased mosaicId
const mosaicId = new symbol_sdk_1.NamespaceId('foo');
symbol_sdk_1.TransferTransaction.create(
  symbol_sdk_1.Deadline.create(epochAdjustment),
  symbol_sdk_1.Account.generateNewAccount(networkType).address,
  [new symbol_sdk_1.Mosaic(mosaicId, symbol_sdk_1.UInt64.fromUint(10000000))],
  symbol_sdk_1.EmptyMessage,
  networkType,
  symbol_sdk_1.UInt64.fromUint(2000000),
);
            final NetworkType networkType = repositoryFactory.getNetworkType().toFuture().get();
            // replace with aliased mosaic
            final String namespaceName = "foo";
            final NamespaceId mosaicId = NamespaceId.createFromName(namespaceName);

            TransferTransactionFactory
                    .create(
                            networkType,
                            Account.generateNewAccount(networkType).getAddress(),
                            Collections.singletonList(
                                    new Mosaic(mosaicId, BigInteger.valueOf(10000000))),
                            PlainMessage.Empty)
                    .maxFee(BigInteger.valueOf(2000000)).build();

方法 #03: CLI を使用する

ネームスペースとモザイクをリンクするには、ターミナルウィンドウを開き、次のコマンドを実行します。 7cdf3b117a3c40cc をモザイク識別子に、 foo をリンクするネームスペース名に置き換えます。

symbol-cli transaction mosaicalias --action Link --mosaic-id 7cdf3b117a3c40cc --namespace-name foo