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.