Linking a namespace to a mosaic
Link a namespace to a mosaic .
Prerequisites
- XPX-Chain-SDK or XPX-Chain-CLI.
- A text editor or IDE.
- Have one namespace registered.
- Have one mosaic registered.
- Have one account with
XPX.
Getting into some code
An account can link a registered name (namespace or subnamespace) with a mosaic.
- Define the namespaceId and the address you want to link.
conf, err := sdk.NewConfig(context.Background(), []string{"http://bctestnet1.brimstone.xpxsirius.io:3000"})
if err != nil {
panic(err)
}
// Use the default http client
client := sdk.NewClient(nil, conf)
account, err := client.NewAccountFromPrivateKey(os.Getenv("PRIVATE_KEY"))
if err != nil {
panic(err)
}
mosaicId, err := sdk.NewMosaicIdFromNonceAndOwner(nonce, account.PublicAccount.PublicKey)
if err != nil {
panic(err)
}
namespace, _ := sdk.NewNamespaceIdFromName("foo")
if err != nil {
panic(err)
}
transaction, err := client.NewMosaicAliasTransaction(
sdk.NewDeadline(time.Hour),
mosaicId,
namespace,
sdk.AliasLink,
)
if err != nil {
panic(err)
}
const namespaceId = new NamespaceId('foo');
const mosaicId = new MosaicId('7cdf3b117a3c40cc');
const mosaicAliasTransaction = AliasTransaction.createForMosaic(
Deadline.create(),
AliasActionType.Link,
namespaceId,
mosaicId,
NetworkType.TEST_NET
);
const privateKey = process.env.PRIVATE_KEY as string;
const account = Account.createFromPrivateKey(privateKey, NetworkType.TEST_NET);
const networkGenerationHash = process.env.NETWORK_GENERATION_HASH as string;
const signedTransaction = account.sign(mosaicAliasTransaction, networkGenerationHash);
const namespaceId = new NamespaceId('foo');
const mosaicId = new MosaicId('7cdf3b117a3c40cc');
const mosaicAliasTransaction = AliasTransaction.createForMosaic(
Deadline.create(),
AliasActionType.Link,
namespaceId,
mosaicId,
NetworkType.TEST_NET
);
const privateKey = process.env.PRIVATE_KEY;
const account = Account.createFromPrivateKey(privateKey, NetworkType.TEST_NET);
const networkGenerationHash = process.env.NETWORK_GENERATION_HASH;
const signedTransaction = account.sign(mosaicAliasTransaction, networkGenerationHash);
- Announce the alias transaction.
signedTransaction, err := account.Sign(transaction)
if err != nil {
panic(err)
}
_, err = client.Transaction.Announce(context.Background(), signedTransaction)
if err != nil {
panic(err)
}
const transactionHttp = new TransactionHttp('http://bctestnet1.brimstone.xpxsirius.io:3000');
transactionHttp
.announce(signedTransaction)
.subscribe(x => console.log(x), err => console.error(err));
const transactionHttp = new TransactionHttp('http://bctestnet1.brimstone.xpxsirius.io:3000');
transactionHttp
.announce(signedTransaction)
.subscribe(x => console.log(x), err => console.error(err));
If you want to unlink the alias, change alias action type to AliasActionType.Unlink.
What’s next?
Now you can send transactions using the namespace linked to the mosaic instead of defining the complete mosaicId.