ネームスペースをアドレスへリンクする

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

前提条件

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

  1. 左側のメニューの "ネームスペース" をクリックします。

../../_images/desktop-link-address-1.gif
  1. アカウントにリンクするネームスペースの編集アイコンをクリックします。エイリアスタイプとして "アドレスをリンク" を選択します。ネームスペースにリンクするアカウントのアドレスを入力します。 "送信" をクリックします。

../../_images/desktop-link-address-2.gif
  1. 次のページで情報を確認し、ウォレットのパスワードを入力します。 "確認" をクリックします。

  2. ネームスペースをデスクトップのウォレットアカウントにリンクした場合は、 "アカウント " ページに移動して "エイリアス" で確認できます。

../../_images/desktop-link-address-3.gif

方法 #02: SDK を使用する

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

注釈

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

// replace with namespace name
const namespaceId = new NamespaceId('foo');
// replace with address
const rawAddress = 'TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I';
const address = Address.createFromRawAddress(rawAddress);
// replace with namespace name
const namespaceId = new symbol_sdk_1.NamespaceId('foo');
// replace with address
const rawAddress = 'TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I';
const address = symbol_sdk_1.Address.createFromRawAddress(rawAddress);
  1. 次に、ネームスペースとアドレスをリンクする AliasTransaction をアナウンスします。

// replace with network type
const networkType = NetworkType.TEST_NET;

const addressAliasTransaction = AliasTransaction.createForAddress(
  Deadline.create(epochAdjustment),
  AliasAction.Link,
  namespaceId,
  address,
  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(
  addressAliasTransaction,
  networkGenerationHash,
);
// replace with node endpoint
const nodeUrl = 'NODE_URL';
const repositoryFactory = new RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();

transactionHttp.announce(signedTransaction).subscribe(
  (x) => console.log(x),
  (err) => console.error(err),
);
// replace with network type
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
const addressAliasTransaction = symbol_sdk_1.AliasTransaction.createForAddress(symbol_sdk_1.Deadline.create(epochAdjustment), symbol_sdk_1.AliasAction.Link, namespaceId, address, 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(addressAliasTransaction, networkGenerationHash);
// replace with node endpoint
const nodeUrl = 'NODE_URL';
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. これで、完全なアドレスを使用する代わりにネームスペースでトランザクションを送信することができるようになりました。

// Replace with network type
const networkType = NetworkType.TEST_NET;
// Replace with aliased address
const recipientAddress = new NamespaceId('foo');

TransferTransaction.create(
  Deadline.create(epochAdjustment),
  recipientAddress,
  [],
  EmptyMessage,
  networkType,
  UInt64.fromUint(2000000),
);
// Replace with network type
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
// Replace with aliased address
const recipientAddress = new symbol_sdk_1.NamespaceId('foo');
symbol_sdk_1.TransferTransaction.create(symbol_sdk_1.Deadline.create(epochAdjustment), recipientAddress, [], symbol_sdk_1.EmptyMessage, networkType, symbol_sdk_1.UInt64.fromUint(2000000));
            final NetworkType networkType = repositoryFactory.getNetworkType().toFuture().get();
            // replace with aliased address
            final String namespaceName = "foo";
            final UnresolvedAddress recipientAddress = NamespaceId.createFromName(namespaceName);

            TransferTransactionFactory
                    .create(
                            networkType,
                            recipientAddress,
                            Collections.emptyList(),
                            PlainMessage.Empty)
                    .maxFee(BigInteger.valueOf(2000000)).build();

方法 #03: CLI を使用する

ネームスペースとアドレスをリンクするには、ターミナルウィンドウを開き、次のコマンドを実行します。 TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I をアカウントのアドレスに、 foo をリンクするネームスペース名に置き換えます。

注釈

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

symbol-cli transaction addressalias --action Link --address TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I --namespace-name foo