Vincular un espacio de nombres a una dirección

Alias ​​de una dirección con un espacio de nombres para que otros puedan hacer referencia a la cuenta de una manera más amigable al emitir transacciones.

requisitos previos

  • Completar la sección de inicio.

  • Crear un nuevo account.

  • Cargue la cuenta con suficiente bitxor para pagar las tarifas de transacción.

  • Registre un namespace con la cuenta.

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

  1. Haga clic en “Espacios de nombres” en el menú del lado izquierdo.

resources/images/screenshots/desktop-link-address-1.gif
  1. Haga clic en el icono de edición del espacio de nombres que desea vincular a una cuenta. Seleccione “Vincular una dirección” como tipo de alias. Ingrese la dirección de la cuenta que desea vincular al espacio de nombres. Haz clic en “Enviar”.

resources/images/screenshots/desktop-link-address-2.gif
  1. Verifique la información en la página siguiente. Ingrese la contraseña de su billetera. Haga clic en “Confirmar”.

  2. Si vinculó el espacio de nombres a su cuenta de billetera de escritorio, puede verificar yendo a la página “Cuenta” y revisando el “Alias”.

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

Método #02: Usando el SDK

  1. Abra un nuevo archivo y defina el identificador del espacio de nombres y la dirección a la que desea alias.

Note

La cuenta que firma la transacción debe ser propietaria del espacio de nombres.

// replace with namespace name
const namespaceId = new NamespaceId('foo');
// replace with address
const rawAddress = 'BXRBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I';
const address = Address.createFromRawAddress(rawAddress);
// replace with namespace name
const namespaceId = new bitxor_sdk_1.NamespaceId('foo');
// replace with address
const rawAddress = 'BXRBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I';
const address = bitxor_sdk_1.Address.createFromRawAddress(rawAddress);
  1. Luego, anuncie la AliasTransaction que vincula el espacio de nombres y la dirección.

// 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 = bitxor_sdk_1.NetworkType.TEST_NET;
const addressAliasTransaction = bitxor_sdk_1.AliasTransaction.createForAddress(
    bitxor_sdk_1.Deadline.create(epochAdjustment),
    bitxor_sdk_1.AliasAction.Link,
    namespaceId,
    address,
    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(
    addressAliasTransaction,
    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

Si desea desvincular el alias, cambie el tipo de acción de alias a AliasActionType.Unlink.

  1. Ahora puede enviar transacciones al espacio de nombres vinculado a la cuenta en lugar de usar la dirección completa.

// 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 = bitxor_sdk_1.NetworkType.TEST_NET;
// Replace with aliased address
const recipientAddress = new bitxor_sdk_1.NamespaceId('foo');
bitxor_sdk_1.TransferTransaction.create(
  bitxor_sdk_1.Deadline.create(epochAdjustment),
  recipientAddress,
  [],
  bitxor_sdk_1.EmptyMessage,
  networkType,
  bitxor_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();

Método #03: Uso de la CLI

Para vincular un espacio de nombres y una dirección, abra una ventana de terminal y ejecute el siguiente comando. Reemplace BXRBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I con la dirección de la cuenta y foo con el nombre del espacio de nombres que se vinculará.

Note

La cuenta que firma la transacción debe ser propietaria del espacio de nombres.

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