Vincular un espacio de nombres a un token

Alias ​​un token con un espacio de nombres para que otros puedan hacer referencia a él de una manera más amigable al emitir transacciones.

requisitos previos

Método #01: Uso de la billetera de escritorio

  1. Haga clic en �?strong>Espacio de nombres�?en el menú del lado izquierdo.

resources/images/screenshots/desktop-link-token-1.gif
  1. Haga clic en el icono de edición del espacio de nombres que desea vincular a un token. Haga clic en �?strong>Enlace�?

  2. Seleccione �?strong>Vincular un token�?como tipo de alias. Seleccione el ID del token que desea conectar al espacio de nombres. Haz clic en �?strong>Enviar�? Verifique la información en la página siguiente e ingrese la contraseña de su billetera. Haga clic en �?strong>Confirmar�?

resources/images/screenshots/desktop-link-token-2.gif
  1. Puede comprobar que el token se ha vinculado yendo a la página �?strong>Token�? El nombre que se muestra para el token debe ser el espacio de nombres vinculado.

resources/images/screenshots/desktop-link-token-3.gif

Método #02: Usando el SDK

  1. Abra un nuevo archivo y defina el identificador de espacio de nombres y el identificador de token que desea alias.

Note

The account signing the transaction must own the namespace and token being aliased.

// replace with namespace name
const namespaceId = new NamespaceId('foo');
// replace with token id
const tokenId = new TokenId('7cdf3b117a3c40cc');
// replace with namespace name
const namespaceId = new bitxor_sdk_1.NamespaceId('foo');
// replace with token id
const tokenId = new bitxor_sdk_1.TokenId('7cdf3b117a3c40cc');
  1. Luego, anuncie la AliasTransaction que vincula el espacio de nombres y el token.

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

const tokenAliasTransaction = AliasTransaction.createForToken(
  Deadline.create(epochAdjustment),
  AliasAction.Link,
  namespaceId,
  tokenId,
  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(
  tokenAliasTransaction,
  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 networkType
const networkType = bitxor_sdk_1.NetworkType.TEST_NET;
const tokenAliasTransaction = bitxor_sdk_1.AliasTransaction.createForToken(
  bitxor_sdk_1.Deadline.create(epochAdjustment),
  bitxor_sdk_1.AliasAction.Link,
  namespaceId,
  tokenId,
  networkType,
  bitxor_sdk_1.UInt64.fromUint(2000000),
);
// replace with private key
const privateKey =
  '1111111111111111111111111111111111111111111111111111111111111111';
const account = bitxor_sdk_1.Account.createFromPrivateKey(
  privateKey,
  networkType,
);
// replace with meta.networkGenerationHash (nodeUrl + '/node/info')
const networkGenerationHash =
  '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B';
const signedTransaction = account.sign(
  tokenAliasTransaction,
  networkGenerationHash,
);
// replace with node endpoint
const nodeUrl = 'NODE_URL';
const repositoryFactory = new bitxor_sdk_1.RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
transactionHttp.announce(signedTransaction).subscribe(
  (x) => console.log(x),
  (err) => console.error(err),
);

Note

If you want to unlink the alias, change alias action type to AliasActionType.Unlink.

  1. Ahora puede enviar transacciones utilizando el espacio de nombres vinculado al token en lugar de definir el TokenId completo.

// replace with network type
const networkType = NetworkType.TEST_NET;
// replace with aliased tokenId
const tokenId = new NamespaceId('foo');
TransferTransaction.create(
  Deadline.create(epochAdjustment),
  Account.generateNewAccount(networkType).address,
  [new Token(tokenId, UInt64.fromUint(10000000))],
  EmptyMessage,
  networkType,
  UInt64.fromUint(2000000),
);
// replace with network type
const networkType = bitxor_sdk_1.NetworkType.TEST_NET;
// replace with aliased tokenId
const tokenId = new bitxor_sdk_1.NamespaceId('foo');
bitxor_sdk_1.TransferTransaction.create(
  bitxor_sdk_1.Deadline.create(epochAdjustment),
  bitxor_sdk_1.Account.generateNewAccount(networkType).address,
  [new bitxor_sdk_1.Token(tokenId, bitxor_sdk_1.UInt64.fromUint(10000000))],
  bitxor_sdk_1.EmptyMessage,
  networkType,
  bitxor_sdk_1.UInt64.fromUint(2000000),
);
            final NetworkType networkType = repositoryFactory.getNetworkType().toFuture().get();
            // replace with aliased token
            final String namespaceName = "foo";
            final NamespaceId tokenId = NamespaceId.createFromName(namespaceName);

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

Método #03: Uso de la CLI

Para vincular un espacio de nombres y un token, abra una ventana de terminal y ejecute el siguiente comando. Reemplace 7cdf3b117a3c40cc con el identificador del token y foo con el nombre del espacio de nombres que se vinculará.

bitxor-cli transaction tokenalias --action Link --token-id 7cdf3b117a3c40cc --namespace-name foo