ネームスペース登録期限の延長

このガイドでは、ネームスペース期限の延長の仕方を示します。

前提条件

  • ネームスペースの取得 ガイドを完了している
  • ネームスペースを持ったアカウント
  • アカウントに手数料と更新料を支払うために十分な symbol.xym を持たせてください。

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

  1. 左側のメニューの “ネームスペース” をクリックします。
  2. 期間を延長したいネームスペースの 「編集」 ボタン (ペンのアイコン) をクリックします。そして 「延長期間」 をクリックします。
../../_images/extend-namespace-1.gif
  1. ネームスペースの延長する期間のブロック数を入力します。費やす手数料を選択してください。 「送信」 をクリックします。
  2. 情報を確認します。ウォレットパスワードを入力して 「確認」 をクリックします。
../../_images/extend-namespace-2.gif

方法 #02: SDK を使用する

1. Get your namespace information, and inspect the value of the property endHeight. The guide uses the namespace foo, but you should follow along with the namespace name you have registered and want to extend its duration.

symbol-cli namespace info --name foo

Namespace: foo
--------------

hexadecimal:    82a9d1ac587ec054
uint:           [ 1484701780, 2192167340 ]
type:           Root namespace
owner:          TBULEA...IPS4
startHeight:    52000
endHeight:      53000

CLI はネームスペースがブロック高 5300 で非アクティブになることを返却します。次のステップは現在のチェーン高を把握し、ネームスペースが非アクティブになるまでに残っているブロック数を計算することです。

  1. 現在のブロック高を確認する。
symbol-cli blockchain height

52500

ご覧のとおり、ネームスペースは 500 ブロック(53000-52500)で期限切れになります。foo にリンクしているすべてのサブネームスペースとエイリアスが失われないようにするためにネームスペースの期間を延長します。

  1. ネームスペース期間を 172800 ブロック延長します。
// replace with namespace name
const namespaceName = 'foo';
// replace with duration (in blocks)
const duration = UInt64.fromUint(172800);
// replace with network type
const networkType = NetworkType.TEST_NET;

const namespaceRegistrationTransaction = NamespaceRegistrationTransaction.createRootNamespace(
  Deadline.create(epochAdjustment),
  namespaceName,
  duration,
  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(
  namespaceRegistrationTransaction,
  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 namespace name
const namespaceName = 'foo';
// replace with duration (in blocks)
const duration = symbol_sdk_1.UInt64.fromUint(172800);
// replace with network type
const networkType = symbol_sdk_1.NetworkType.TEST_NET;
const namespaceRegistrationTransaction = symbol_sdk_1.NamespaceRegistrationTransaction.createRootNamespace(
  symbol_sdk_1.Deadline.create(epochAdjustment),
  namespaceName,
  duration,
  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(
  namespaceRegistrationTransaction,
  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),
);

注釈

この公式 duration numberOfDays * 86400 / blockGenerationTargetTime を使っておよその日数をブロックに変換します。

RegisterNamespaceTransaction が承認されたら、ネームスペースの期限が延長されたことも確認してください。

  1. endHeight が ブロック単位で 172800 増加していることを確認してください。
symbol-cli namespace info --namespace-name foo

Namespace: foo
--------------

hexadecimal:    82a9d1ac587ec054
uint:           [ 1484701780, 2192167340 ]
type:           Root namespace
owner:          TCHBDE...32I
startHeight:    52000
endHeight:      225800

方法 #03: CLI を使用する

ターミナルを開き、次のコマンドを実行します。

foo をネームスペース名に、 172800 を延長するブロック数に置き換えます。

symbol-cli transaction namespace --name foo --rootnamespace --duration 172800