importjsonimportosimporttimeimporturllib.requestfromsymbolchain.CryptoTypesimportPrivateKeyfromsymbolchain.facade.SymbolFacadeimportSymbolFacadefromsymbolchain.scimportNamespaceIdfromsymbolchain.symbol.IdGeneratorimport(generate_mosaic_alias_id,generate_namespace_path)fromsymbolchain.symbol.NetworkimportAddressNODE_URL=os.getenv('NODE_URL','https://reference.symboltest.net:3001')print(f'Using node {NODE_URL}')# Helper function to announce a transactiondefannounce_transaction(payload,label):print(f'Announcing {label} to /transactions')request=urllib.request.Request(f'{NODE_URL}/transactions',data=payload.encode(),headers={'Content-Type':'application/json'},method='PUT')withurllib.request.urlopen(request)asannounce_response:print(f' Response: {announce_response.read().decode()}')# Helper function to wait for transaction confirmationdefwait_for_confirmation(tx_hash,label):print(f'Waiting for {label} confirmation...')forattemptinrange(60):time.sleep(1)try:url=f'{NODE_URL}/transactionStatus/{tx_hash}'withurllib.request.urlopen(url)asconfirm_response:status=json.loads(confirm_response.read().decode())print(f" Transaction status: {status['group']}")ifstatus['group']=='confirmed':print(f'{label} confirmed in {attempt} seconds')returnifstatus['group']=='failed':raiseRuntimeError(f"{label} failed: {status['code']}")excepturllib.error.HTTPError:print(' Transaction status: unknown')raiseTimeoutError(f'{label} not confirmed after 60 seconds')SIGNER_PRIVATE_KEY=os.getenv('SIGNER_PRIVATE_KEY','0000000000000000000000000000000000000000000000000000000000000000')signer_key_pair=SymbolFacade.KeyPair(PrivateKey(SIGNER_PRIVATE_KEY))facade=SymbolFacade('testnet')signer_address=facade.network.public_key_to_address(signer_key_pair.public_key)print(f'Signer address: {signer_address}')namespace_name=os.getenv('NAMESPACE_NAME','my_namespace')print(f'Namespace name: {namespace_name}')namespace_id=generate_namespace_path(namespace_name)[-1]print(f'Namespace ID: {namespace_id} (0x{namespace_id:016X})')# Target address to link the namespace totarget_address=Address(os.getenv('TARGET_ADDRESS','TCWYXKVYBMO4NBCUF3AXKJMXCGVSYQOS7ZG2TLI'))print(f'Target address: {target_address}')try:# Fetch recommended feesfee_path='/network/fees/transaction'print(f'Fetching recommended fees from {fee_path}')withurllib.request.urlopen(f'{NODE_URL}{fee_path}')asresponse:response_json=json.loads(response.read().decode())median_multiplier=response_json['medianFeeMultiplier']minimum_multiplier=response_json['minFeeMultiplier']fee_multiplier=max(median_multiplier,minimum_multiplier)print(f' Fee multiplier: {fee_multiplier}')# Build the alias transactiontransaction=facade.create_transaction_from_descriptor({'type':'address_alias_transaction_v1','namespace_id':namespace_id,'address':target_address,'alias_action':'link'},signer_key_pair.public_key,fee_multiplier,2*60*60)# Sign transaction and generate final payloadjson_payload=facade.transaction_factory.attach_signature(transaction,facade.sign_transaction(signer_key_pair,transaction))print('Address alias transaction:')print(json.dumps(transaction.to_json(),indent=2))transaction_hash=facade.hash_transaction(transaction)print(f'Transaction hash: {transaction_hash}')# Announce and confirm transactionannounce_transaction(json_payload,'address alias transaction')wait_for_confirmation(transaction_hash,'address alias transaction')# Retrieve the namespace to verify the aliasnamespace_path=f'/namespaces/{namespace_id:016X}'print(f'Fetching namespace information from {namespace_path}')withurllib.request.urlopen(f'{NODE_URL}{namespace_path}')asresponse:response_json=json.loads(response.read().decode())namespace_info=response_json['namespace']print('Alias information:')alias_type=namespace_info['alias']['type']print(f' Alias type: {alias_type}')ifalias_type==2:# ADDRESS typealiased_address=Address.from_decoded_address_hex_string(namespace_info['alias']['address'])print(f' Linked address: {aliased_address}')# Send a transfer using the alias instead of a raw addressprint(f'Using alias in transfer: {namespace_name}')# Encode the namespace ID as a recipient addressrecipient_id=generate_namespace_path(namespace_name)[-1]recipient_address=Address.from_namespace_id(NamespaceId(recipient_id),facade.network.identifier)print(f'Recipient address (alias): {recipient_address}')test_transaction=facade.create_transaction_from_descriptor({'type':'transfer_transaction_v1','recipient_address':recipient_address,'mosaics':[{'mosaic_id':generate_mosaic_alias_id('symbol.xym'),'amount':1_000_000# 1 XYM}]},signer_key_pair.public_key,fee_multiplier,2*60*60)test_json_payload=facade.transaction_factory.attach_signature(test_transaction,facade.sign_transaction(signer_key_pair,test_transaction))print('Test transaction:')print(json.dumps(test_transaction.to_json(),indent=2))test_transaction_hash=facade.hash_transaction(test_transaction)print(f'Transaction hash: {test_transaction_hash}')announce_transaction(test_json_payload,'test transaction')wait_for_confirmation(test_transaction_hash,'test transaction')exceptExceptionase:print(e)
import{PrivateKey}from'symbol-sdk';import{Address,SymbolFacade,descriptors,generateMosaicAliasId,generateNamespacePath,models}from'symbol-sdk/symbol';constNODE_URL=process.env.NODE_URL||'https://reference.symboltest.net:3001';console.log('Using node',NODE_URL);// Helper function to announce a transactionasyncfunctionannounceTransaction(payload,label){console.log(`Announcing ${label} to /transactions`);constresponse=awaitfetch(`${NODE_URL}/transactions`,{method:'PUT',headers:{'Content-Type':'application/json'},body:payload});console.log(' Response:',awaitresponse.text());}// Helper function to wait for transaction confirmationasyncfunctionwaitForConfirmation(transactionHash,label){console.log(`Waiting for ${label} confirmation...`);for(letattempt=0;60>attempt;attempt++){awaitnewPromise(resolve=>{setTimeout(resolve,1000);});constresponse=awaitfetch(`${NODE_URL}/transactionStatus/${transactionHash}`);if(!response.ok){if(404===response.status){console.log(' Transaction status: unknown');continue;}thrownewError(`HTTP ${response.status}`);}conststatus=awaitresponse.json();console.log(' Transaction status:',status.group);if('confirmed'===status.group){console.log(`${label} confirmed in`,attempt,'seconds');return;}if('failed'===status.group)thrownewError(`${label} failed: ${status.code}`);}thrownewError(`${label} not confirmed after 60 seconds`);}constSIGNER_PRIVATE_KEY=process.env.SIGNER_PRIVATE_KEY||'0000000000000000000000000000000000000000000000000000000000000000';constsignerKeyPair=newSymbolFacade.KeyPair(newPrivateKey(SIGNER_PRIVATE_KEY));constfacade=newSymbolFacade('testnet');constsignerAddress=facade.network.publicKeyToAddress(signerKeyPair.publicKey);console.log('Signer address:',signerAddress.toString());constnamespaceName=process.env.NAMESPACE_NAME||'my_namespace';console.log('Namespace name:',namespaceName);constnsPath=generateNamespacePath(namespaceName);constnamespaceId=nsPath[nsPath.length-1];constnamespaceIdHex=namespaceId.toString(16).toUpperCase().padStart(16,'0');console.log('Namespace ID:',`${namespaceId} (0x${namespaceIdHex})`);// Target address to link the namespace toconsttargetAddress=newSymbolFacade.Address(process.env.TARGET_ADDRESS||'TCWYXKVYBMO4NBCUF3AXKJMXCGVSYQOS7ZG2TLI');console.log('Target address:',targetAddress.toString());try{// Fetch recommended feesconstfeePath='/network/fees/transaction';console.log('Fetching recommended fees from',feePath);constfeeResponse=awaitfetch(`${NODE_URL}${feePath}`);constfeeJSON=awaitfeeResponse.json();constmedianMultiplier=feeJSON.medianFeeMultiplier;constminimumMultiplier=feeJSON.minFeeMultiplier;constfeeMultiplier=Math.max(medianMultiplier,minimumMultiplier);console.log(' Fee multiplier:',feeMultiplier);// Build the alias transactionconsttransaction=facade.createTransactionFromTypedDescriptor(newdescriptors.AddressAliasTransactionV1Descriptor(newmodels.NamespaceId(namespaceId),targetAddress,models.AliasAction.LINK),signerKeyPair.publicKey,feeMultiplier,2*60*60);// Sign transaction and generate final payloadconstjsonPayload=facade.transactionFactory.static.attachSignature(transaction,facade.signTransaction(signerKeyPair,transaction));console.log('Built transaction:');console.dir(transaction.toJson(),{colors:true});consttransactionHash=facade.hashTransaction(transaction).toString();console.log('Transaction hash:',transactionHash);// Announce and confirm transactionawaitannounceTransaction(jsonPayload,'address alias transaction');awaitwaitForConfirmation(transactionHash,'address alias transaction');// Retrieve the namespace to verify the aliasconstnamespacePath=`/namespaces/${namespaceIdHex}`;console.log('Fetching namespace information from',namespacePath);constnamespaceResponse=awaitfetch(`${NODE_URL}${namespacePath}`);constnamespaceJSON=awaitnamespaceResponse.json();constnamespaceInfo=namespaceJSON.namespace;console.log('Alias information:');console.log(' Alias type:',namespaceInfo.alias.type);if(2===namespaceInfo.alias.type){// ADDRESS typeconstaliasedAddress=Address.fromDecodedAddressHexString(namespaceInfo.alias.address);console.log(' Linked address:',aliasedAddress.toString());}// Send a transfer using the alias instead of a raw addressconsole.log('Using alias in transfer:',namespaceName);// Encode the namespace ID as a recipient addressconstrecipientPath=generateNamespacePath(namespaceName);constrecipientId=recipientPath[recipientPath.length-1];constrecipientAddress=Address.fromNamespaceId(newmodels.NamespaceId(recipientId),facade.network.identifier);console.log(' Recipient address (alias):',recipientAddress.toString());consttest_transaction=facade.createTransactionFromTypedDescriptor(newdescriptors.TransferTransactionV1Descriptor(recipientAddress,[newdescriptors.UnresolvedMosaicDescriptor(generateMosaicAliasId('symbol.xym'),newmodels.Amount(1_000_000n))// 1 XYM],undefined),signerKeyPair.publicKey,feeMultiplier,2*60*60);consttestJsonPayload=facade.transactionFactory.static.attachSignature(test_transaction,facade.signTransaction(signerKeyPair,test_transaction));console.log('Test transaction:');console.dir(test_transaction.toJson(),{colors:true});consttestTransactionHash=facade.hashTransaction(test_transaction).toString();console.log('Transaction hash:',testTransactionHash);awaitannounceTransaction(testJsonPayload,'test transaction');awaitwaitForConfirmation(testTransactionHash,'test transaction');}catch(e){console.error(e.message);}
//JAVA 21+//DEPS org.symbol:symbol-sdk:3.3.1importjava.io.IOException;importjava.net.URI;importjava.net.http.HttpClient;importjava.net.http.HttpRequest;importjava.net.http.HttpResponse;importjava.net.http.HttpResponse.BodyHandlers;importjava.util.List;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.symbol.sdk.CryptoTypes;importorg.symbol.sdk.facade.SymbolFacade;importorg.symbol.sdk.symbol.Address;importorg.symbol.sdk.symbol.IdGenerator;importorg.symbol.sdk.symbol.KeyPair;importorg.symbol.sdk.symbol.SymbolTransactionFactory;importorg.symbol.sdk.symbol.descriptors.*;importorg.symbol.sdk.symbol.models.*;publicfinalclassLinkNamespaceToAddress{privatestaticfinalObjectMapperJSON_MAPPER=newObjectMapper();privatestaticfinalHttpClientHTTP_CLIENT=HttpClient.newHttpClient();privatefinalStringnodeUrl=System.getenv().getOrDefault("NODE_URL","https://reference.symboltest.net:3001");privatefinalSymbolFacadefacade=newSymbolFacade("testnet");privatevoidannounceTransaction(finalStringpayload,finalStringlabel)throwsIOException,InterruptedException{System.out.printf("Announcing %s to /transactions%n",label);finalHttpRequestrequest=HttpRequest.newBuilder(URI.create(nodeUrl+"/transactions")).header("Content-Type","application/json").PUT(HttpRequest.BodyPublishers.ofString(payload)).build();finalHttpResponse<String>response=HTTP_CLIENT.send(request,BodyHandlers.ofString());System.out.printf(" Response: %s%n",response.body());}privatevoidwaitForConfirmation(finalStringtransactionHash,finalStringlabel)throwsIOException,InterruptedException{System.out.printf("Waiting for %s confirmation...%n",label);for(intattempt=0;60>attempt;++attempt){Thread.sleep(1000);finalStringstatusPath="/transactionStatus/"+transactionHash;finalHttpRequeststatusRequest=HttpRequest.newBuilder(URI.create(nodeUrl+statusPath)).GET().build();finalHttpResponse<String>statusResponse=HTTP_CLIENT.send(statusRequest,BodyHandlers.ofString());if(404==statusResponse.statusCode()){System.out.println(" Transaction status: unknown");continue;}if(2!=statusResponse.statusCode()/100)thrownewIOException("HTTP "+statusResponse.statusCode());finalJsonNodestatus=JSON_MAPPER.readTree(statusResponse.body());finalStringgroup=status.get("group").asText();System.out.printf(" Transaction status: %s%n",group);if("confirmed".equals(group)){System.out.printf("%s confirmed in %d seconds%n",label,attempt);return;}if("failed".equals(group))thrownewIOException(String.format("%s failed: %s",label,status.get("code").asText()));}thrownewIOException(String.format("%s not confirmed after 60 seconds",label));}publicstaticvoidmain(finalString[]args){try{newLinkNamespaceToAddress().run();}catch(finalExceptionex){System.out.println(null==ex.getMessage()?ex.toString():ex.getMessage());}}privatevoidrun()throwsIOException,InterruptedException{System.out.printf("Using node %s%n",nodeUrl);finalStringsignerPrivateKey=System.getenv().getOrDefault("SIGNER_PRIVATE_KEY","0".repeat(64));finalKeyPairsignerKeyPair=newKeyPair(newCryptoTypes.PrivateKey(signerPrivateKey));finalAddresssignerAddress=facade.network.publicKeyToAddress(signerKeyPair.getPublicKey());System.out.printf("Signer address: %s%n",signerAddress);finalStringnamespaceName=System.getenv().getOrDefault("NAMESPACE_NAME","my_namespace");System.out.printf("Namespace name: %s%n",namespaceName);finalList<Long>nsPath=IdGenerator.generateNamespacePath(namespaceName);finallongnamespaceId=nsPath.get(nsPath.size()-1);System.out.printf("Namespace ID: %s (0x%016X)%n",Long.toUnsignedString(namespaceId),namespaceId);// Target address to link the namespace tofinalAddresstargetAddress=newAddress(System.getenv().getOrDefault("TARGET_ADDRESS","TCWYXKVYBMO4NBCUF3AXKJMXCGVSYQOS7ZG2TLI"));System.out.printf("Target address: %s%n",targetAddress);// Fetch recommended feesfinalStringfeePath="/network/fees/transaction";System.out.printf("Fetching recommended fees from %s%n",feePath);finalJsonNodefeeJson=getJson(feePath);finallongfeeMultiplier=Math.max(feeJson.get("medianFeeMultiplier").asLong(),feeJson.get("minFeeMultiplier").asLong());System.out.printf(" Fee multiplier: %d%n",feeMultiplier);// Build the alias transactionfinalTransactiontransaction=facade.createTransactionFromTypedDescriptor(newAddressAliasTransactionV1Descriptor(newNamespaceId(namespaceId),targetAddress,AliasAction.LINK),signerKeyPair.getPublicKey(),feeMultiplier,2*60*60);// Sign transaction and generate final payloadfinalStringjsonPayload=SymbolTransactionFactory.attachSignature(transaction,facade.signTransaction(signerKeyPair,transaction));System.out.println("Address alias transaction:");System.out.println(JSON_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(transaction.toJson()));finalStringtransactionHash=facade.hashTransaction(transaction).toString();System.out.printf("Transaction hash: %s%n",transactionHash);// Announce and confirm transactionannounceTransaction(jsonPayload,"address alias transaction");waitForConfirmation(transactionHash,"address alias transaction");// Retrieve the namespace to verify the aliasfinalStringnamespacePath="/namespaces/%016X".formatted(namespaceId);System.out.printf("Fetching namespace information from %s%n",namespacePath);finalJsonNodenamespaceInfo=getJson(namespacePath).get("namespace");System.out.println("Alias information:");finalintaliasType=namespaceInfo.get("alias").get("type").asInt();System.out.printf(" Alias type: %d%n",aliasType);if(2==aliasType){// ADDRESS typefinalAddressaliasedAddress=Address.fromDecodedAddressHexString(namespaceInfo.get("alias").get("address").asText());System.out.printf(" Linked address: %s%n",aliasedAddress);}// Send a transfer using the alias instead of a raw addressSystem.out.printf("Using alias in transfer: %s%n",namespaceName);// Encode the namespace ID as a recipient addressfinallongrecipientId=IdGenerator.generateNamespacePath(namespaceName).get(nsPath.size()-1);finalAddressrecipientAddress=Address.fromNamespaceId(newNamespaceId(recipientId),facade.network.identifier);System.out.printf("Recipient address (alias): %s%n",recipientAddress);finalTransactiontestTransaction=facade.createTransactionFromTypedDescriptor(newTransferTransactionV1Descriptor(recipientAddress,List.of(newUnresolvedMosaicDescriptor(newUnresolvedMosaicId(IdGenerator.generateMosaicAliasId("symbol.xym")),newAmount(1_000_000))),// 1 XYMnull),signerKeyPair.getPublicKey(),feeMultiplier,2*60*60);finalStringtestJsonPayload=SymbolTransactionFactory.attachSignature(testTransaction,facade.signTransaction(signerKeyPair,testTransaction));System.out.println("Test transaction:");System.out.println(JSON_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(testTransaction.toJson()));finalStringtestTransactionHash=facade.hashTransaction(testTransaction).toString();System.out.printf("Transaction hash: %s%n",testTransactionHash);announceTransaction(testJsonPayload,"test transaction");waitForConfirmation(testTransactionHash,"test transaction");}privateJsonNodegetJson(finalStringpath)throwsIOException,InterruptedException{finalHttpRequestrequest=HttpRequest.newBuilder(URI.create(nodeUrl+path)).GET().build();finalHttpResponse<String>response=HTTP_CLIENT.send(request,BodyHandlers.ofString());returnJSON_MAPPER.readTree(response.body());}}
namespace_name=os.getenv('NAMESPACE_NAME','my_namespace')print(f'Namespace name: {namespace_name}')namespace_id=generate_namespace_path(namespace_name)[-1]print(f'Namespace ID: {namespace_id} (0x{namespace_id:016X})')# Target address to link the namespace totarget_address=Address(os.getenv('TARGET_ADDRESS','TCWYXKVYBMO4NBCUF3AXKJMXCGVSYQOS7ZG2TLI'))print(f'Target address: {target_address}')
constnamespaceName=process.env.NAMESPACE_NAME||'my_namespace';console.log('Namespace name:',namespaceName);constnsPath=generateNamespacePath(namespaceName);constnamespaceId=nsPath[nsPath.length-1];constnamespaceIdHex=namespaceId.toString(16).toUpperCase().padStart(16,'0');console.log('Namespace ID:',`${namespaceId} (0x${namespaceIdHex})`);// Target address to link the namespace toconsttargetAddress=newSymbolFacade.Address(process.env.TARGET_ADDRESS||'TCWYXKVYBMO4NBCUF3AXKJMXCGVSYQOS7ZG2TLI');console.log('Target address:',targetAddress.toString());
finalStringnamespaceName=System.getenv().getOrDefault("NAMESPACE_NAME","my_namespace");System.out.printf("Namespace name: %s%n",namespaceName);finalList<Long>nsPath=IdGenerator.generateNamespacePath(namespaceName);finallongnamespaceId=nsPath.get(nsPath.size()-1);System.out.printf("Namespace ID: %s (0x%016X)%n",Long.toUnsignedString(namespaceId),namespaceId);// Target address to link the namespace tofinalAddresstargetAddress=newAddress(System.getenv().getOrDefault("TARGET_ADDRESS","TCWYXKVYBMO4NBCUF3AXKJMXCGVSYQOS7ZG2TLI"));System.out.printf("Target address: %s%n",targetAddress);
# Build the alias transactiontransaction=facade.create_transaction_from_descriptor({'type':'address_alias_transaction_v1','namespace_id':namespace_id,'address':target_address,'alias_action':'link'},signer_key_pair.public_key,fee_multiplier,2*60*60)
// Build the alias transactionconsttransaction=facade.createTransactionFromTypedDescriptor(newdescriptors.AddressAliasTransactionV1Descriptor(newmodels.NamespaceId(namespaceId),targetAddress,models.AliasAction.LINK),signerKeyPair.publicKey,feeMultiplier,2*60*60);
// Build the alias transactionfinalTransactiontransaction=facade.createTransactionFromTypedDescriptor(newAddressAliasTransactionV1Descriptor(newNamespaceId(namespaceId),targetAddress,AliasAction.LINK),signerKeyPair.getPublicKey(),feeMultiplier,2*60*60);
# Sign transaction and generate final payloadjson_payload=facade.transaction_factory.attach_signature(transaction,facade.sign_transaction(signer_key_pair,transaction))print('Address alias transaction:')print(json.dumps(transaction.to_json(),indent=2))transaction_hash=facade.hash_transaction(transaction)print(f'Transaction hash: {transaction_hash}')# Announce and confirm transactionannounce_transaction(json_payload,'address alias transaction')wait_for_confirmation(transaction_hash,'address alias transaction')
// Sign transaction and generate final payloadconstjsonPayload=facade.transactionFactory.static.attachSignature(transaction,facade.signTransaction(signerKeyPair,transaction));console.log('Built transaction:');console.dir(transaction.toJson(),{colors:true});consttransactionHash=facade.hashTransaction(transaction).toString();console.log('Transaction hash:',transactionHash);// Announce and confirm transactionawaitannounceTransaction(jsonPayload,'address alias transaction');awaitwaitForConfirmation(transactionHash,'address alias transaction');
// Sign transaction and generate final payloadfinalStringjsonPayload=SymbolTransactionFactory.attachSignature(transaction,facade.signTransaction(signerKeyPair,transaction));System.out.println("Address alias transaction:");System.out.println(JSON_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(transaction.toJson()));finalStringtransactionHash=facade.hashTransaction(transaction).toString();System.out.printf("Transaction hash: %s%n",transactionHash);// Announce and confirm transactionannounceTransaction(jsonPayload,"address alias transaction");waitForConfirmation(transactionHash,"address alias transaction");
# Retrieve the namespace to verify the aliasnamespace_path=f'/namespaces/{namespace_id:016X}'print(f'Fetching namespace information from {namespace_path}')withurllib.request.urlopen(f'{NODE_URL}{namespace_path}')asresponse:response_json=json.loads(response.read().decode())namespace_info=response_json['namespace']print('Alias information:')alias_type=namespace_info['alias']['type']print(f' Alias type: {alias_type}')ifalias_type==2:# ADDRESS typealiased_address=Address.from_decoded_address_hex_string(namespace_info['alias']['address'])print(f' Linked address: {aliased_address}')
// Retrieve the namespace to verify the aliasconstnamespacePath=`/namespaces/${namespaceIdHex}`;console.log('Fetching namespace information from',namespacePath);constnamespaceResponse=awaitfetch(`${NODE_URL}${namespacePath}`);constnamespaceJSON=awaitnamespaceResponse.json();constnamespaceInfo=namespaceJSON.namespace;console.log('Alias information:');console.log(' Alias type:',namespaceInfo.alias.type);if(2===namespaceInfo.alias.type){// ADDRESS typeconstaliasedAddress=Address.fromDecodedAddressHexString(namespaceInfo.alias.address);console.log(' Linked address:',aliasedAddress.toString());}
// Retrieve the namespace to verify the aliasfinalStringnamespacePath="/namespaces/%016X".formatted(namespaceId);System.out.printf("Fetching namespace information from %s%n",namespacePath);finalJsonNodenamespaceInfo=getJson(namespacePath).get("namespace");System.out.println("Alias information:");finalintaliasType=namespaceInfo.get("alias").get("type").asInt();System.out.printf(" Alias type: %d%n",aliasType);if(2==aliasType){// ADDRESS typefinalAddressaliasedAddress=Address.fromDecodedAddressHexString(namespaceInfo.get("alias").get("address").asText());System.out.printf(" Linked address: %s%n",aliasedAddress);}
# Send a transfer using the alias instead of a raw addressprint(f'Using alias in transfer: {namespace_name}')# Encode the namespace ID as a recipient addressrecipient_id=generate_namespace_path(namespace_name)[-1]recipient_address=Address.from_namespace_id(NamespaceId(recipient_id),facade.network.identifier)print(f'Recipient address (alias): {recipient_address}')test_transaction=facade.create_transaction_from_descriptor({'type':'transfer_transaction_v1','recipient_address':recipient_address,'mosaics':[{'mosaic_id':generate_mosaic_alias_id('symbol.xym'),'amount':1_000_000# 1 XYM}]},signer_key_pair.public_key,fee_multiplier,2*60*60)test_json_payload=facade.transaction_factory.attach_signature(test_transaction,facade.sign_transaction(signer_key_pair,test_transaction))print('Test transaction:')print(json.dumps(test_transaction.to_json(),indent=2))test_transaction_hash=facade.hash_transaction(test_transaction)print(f'Transaction hash: {test_transaction_hash}')announce_transaction(test_json_payload,'test transaction')wait_for_confirmation(test_transaction_hash,'test transaction')
// Send a transfer using the alias instead of a raw addressconsole.log('Using alias in transfer:',namespaceName);// Encode the namespace ID as a recipient addressconstrecipientPath=generateNamespacePath(namespaceName);constrecipientId=recipientPath[recipientPath.length-1];constrecipientAddress=Address.fromNamespaceId(newmodels.NamespaceId(recipientId),facade.network.identifier);console.log(' Recipient address (alias):',recipientAddress.toString());consttest_transaction=facade.createTransactionFromTypedDescriptor(newdescriptors.TransferTransactionV1Descriptor(recipientAddress,[newdescriptors.UnresolvedMosaicDescriptor(generateMosaicAliasId('symbol.xym'),newmodels.Amount(1_000_000n))// 1 XYM],undefined),signerKeyPair.publicKey,feeMultiplier,2*60*60);consttestJsonPayload=facade.transactionFactory.static.attachSignature(test_transaction,facade.signTransaction(signerKeyPair,test_transaction));console.log('Test transaction:');console.dir(test_transaction.toJson(),{colors:true});consttestTransactionHash=facade.hashTransaction(test_transaction).toString();console.log('Transaction hash:',testTransactionHash);awaitannounceTransaction(testJsonPayload,'test transaction');awaitwaitForConfirmation(testTransactionHash,'test transaction');
// Send a transfer using the alias instead of a raw addressSystem.out.printf("Using alias in transfer: %s%n",namespaceName);// Encode the namespace ID as a recipient addressfinallongrecipientId=IdGenerator.generateNamespacePath(namespaceName).get(nsPath.size()-1);finalAddressrecipientAddress=Address.fromNamespaceId(newNamespaceId(recipientId),facade.network.identifier);System.out.printf("Recipient address (alias): %s%n",recipientAddress);finalTransactiontestTransaction=facade.createTransactionFromTypedDescriptor(newTransferTransactionV1Descriptor(recipientAddress,List.of(newUnresolvedMosaicDescriptor(newUnresolvedMosaicId(IdGenerator.generateMosaicAliasId("symbol.xym")),newAmount(1_000_000))),// 1 XYMnull),signerKeyPair.getPublicKey(),feeMultiplier,2*60*60);finalStringtestJsonPayload=SymbolTransactionFactory.attachSignature(testTransaction,facade.signTransaction(signerKeyPair,testTransaction));System.out.println("Test transaction:");System.out.println(JSON_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(testTransaction.toJson()));finalStringtestTransactionHash=facade.hashTransaction(testTransaction).toString();System.out.printf("Transaction hash: %s%n",testTransactionHash);announceTransaction(testJsonPayload,"test transaction");waitForConfirmation(testTransactionHash,"test transaction");