Linking namespace to account
Link a namespace to an account .
Prerequisites
- XPX-Chain-SDK or XPX-Chain-CLI.
- A text editor or IDE.
- Have one namespace registered.
- Have one account with the name
XPX
. - Have namespace with name
foo
.
Getting into some code
An account can link a registered name (namespace or subnamespace) with an account .
- 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)
}
address, err := sdk.NewAddressFromRaw(os.Getenv("ADDRESS"))
if err != nil {
panic(err)
}
namespace, err := sdk.NewNamespaceIdFromName("foo")
if err != nil {
panic(err)
}
const namespaceId = new NamespaceId('foo');
const address = Address.createFromRawAddress('VD5DT3-CH4BLA-BL5HIM-EKP2TA-PUKF4N-Y3L5HR-IR54');
const transactionHttp = new TransactionHttp('http://bctestnet1.brimstone.xpxsirius.io:3000');
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 namespaceId = new NamespaceId('foo');
const address = Address.createFromRawAddress('VD5DT3-CH4BLA-BL5HIM-EKP2TA-PUKF4N-Y3L5HR-IR54');
const transactionHttp = new TransactionHttp('http://bctestnet1.brimstone.xpxsirius.io:3000');
const privateKey = process.env.PRIVATE_KEY;
const account = Account.createFromPrivateKey(privateKey, NetworkType.TEST_NET);
const networkGenerationHash = process.env.NETWORK_GENERATION_HASH;
- Announce the alias transaction.
transaction, err := client.NewAddressAliasTransaction(
sdk.NewDeadline(time.Hour),
address,
namespace,
sdk.AliasLink,
)
if err != nil {
panic(err)
}
signedTransaction, err := account.Sign(transaction)
if err != nil {
panic(err)
}
_, err = client.Transaction.Announce(context.Background(), signedTransaction)
if err != nil {
panic(err)
}
const addressAliasTransaction = AliasTransaction.createForAddress(
Deadline.create(),
AliasActionType.Link,
namespaceId,
address,
NetworkType.TEST_NET
);
const signedTransaction = account.sign(addressAliasTransaction, networkGenerationHash);
transactionHttp
.announce(signedTransaction)
.subscribe(x => console.log(x), err => console.error(err));
const addressAliasTransaction = AliasTransaction.createForAddress(
Deadline.create(),
AliasActionType.Link,
namespaceId,
address,
NetworkType.TEST_NET
);
const signedTransaction = account.sign(addressAliasTransaction, networkGenerationHash);
transactionHttp
.announce(signedTransaction)
.subscribe(x => console.log(x), err => console.error(err));
If you want to unlink the alias, change alias action type toAliasActionType.Unlink
.
What’s next?
Now you can send transactions to the namespace linked to the account instead of using the complete address.
namespace, err := sdk.NewNamespaceIdFromName("foo")
if err != nil {
panic(err)
}
transferTransaction, err := client.NewTransferTransactionWithNamespace(
sdk.NewDeadline(time.Hour),
namespace,
[]*sdk.Mosaic{},
sdk.NewPlainMessage("Test"),
)
if err != nil {
panic(err)
}
const namespaceId = new NamespaceId('foo');
const transferTransaction = TransferTransaction.create(
Deadline.create(),
namespaceId,
[],
PlainMessage.create('Test'),
NetworkType.TEST_NET);