diff --git a/source/guides/monitor/turning-the-asynchronous-transaction-announcement-into-synchronous.rst b/source/guides/monitor/turning-the-asynchronous-transaction-announcement-into-synchronous.rst index 090bfef13..561f817fb 100644 --- a/source/guides/monitor/turning-the-asynchronous-transaction-announcement-into-synchronous.rst +++ b/source/guides/monitor/turning-the-asynchronous-transaction-announcement-into-synchronous.rst @@ -36,32 +36,44 @@ Sending a synchronous transaction Alice is developing an app to send 10 |privatenetworkcurrency| to Bob and wants to know if the transaction has reached the network before sending Bob an email. -1. Create a new ``.ts`` file. Then, define and sign a :doc:`TransferTransaction <../../concepts/transfer-transaction>`. +1. Create a new source file, define and sign a :doc:`TransferTransaction <../../concepts/transfer-transaction>`. .. example-code:: - .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.ts + .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.ts :language: typescript :start-after: /* start block 01 */ :end-before: /* end block 01 */ - .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.js + .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.js :language: javascript :start-after: /* start block 01 */ :end-before: /* end block 01 */ -2. Once signed, :doc:`announce the transaction <../../concepts/transaction>` using ``TransactionService.announce`` instead of ``TransactionHttp.announce``. +2. Once signed, announce the transaction using a ``TransactionService`` instead of a ``TransactionFactory``. This service connects the necessary listeners so your code can just focus on the transaction's result. For example, using promises: .. example-code:: - .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.ts + .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.ts :language: typescript :start-after: /* start block 02 */ :end-before: /* end block 02 */ - .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.js + .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.js :language: javascript :start-after: /* start block 02 */ :end-before: /* end block 02 */ -.. note:: The function ``TransactionService.announce()`` will respond successfully if the transaction reaches the network and does not have validation errors. You might still need to :doc:`wait for several confirmations <../../concepts/transaction>` before executing additional actions. +3. You can also connect the listeners yourself to get notified of more events. For example: + +.. example-code:: + + .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.ts + :language: typescript + :start-after: /* start block 02 */ + :end-before: /* end block 02 */ + + .. viewsource:: ../../resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.js + :language: javascript + :start-after: /* start block 02 */ + :end-before: /* end block 02 */ diff --git a/source/guides/namespace/link-a-namespace-to-a-mosaic.rst b/source/guides/namespace/link-a-namespace-to-a-mosaic.rst index 2960030e7..aee572dea 100644 --- a/source/guides/namespace/link-a-namespace-to-a-mosaic.rst +++ b/source/guides/namespace/link-a-namespace-to-a-mosaic.rst @@ -78,7 +78,7 @@ Method #02: Using the SDK :start-after: /* start block 02 */ :end-before: /* end block 02 */ -.. note:: If you want to unlink the alias, change alias action type to ``AliasActionType.Unlink``. +.. note:: If you want to unlink the alias, change alias action type to ``AliasAction.Unlink``. .. _sending-a-transfer-transaction-with-an-aliased-mosaic: diff --git a/source/resources/examples/typescript/aggregate/AddingCosignaturesAggregateComplete.ts b/source/resources/examples/typescript/aggregate/AddingCosignaturesAggregateComplete.ts index 1f77fe4f4..49491dd6d 100644 --- a/source/resources/examples/typescript/aggregate/AddingCosignaturesAggregateComplete.ts +++ b/source/resources/examples/typescript/aggregate/AddingCosignaturesAggregateComplete.ts @@ -8,7 +8,6 @@ import { Mosaic, NamespaceId, NetworkCurrencies, - NetworkType, PlainMessage, PublicAccount, RepositoryFactoryHttp, @@ -17,102 +16,111 @@ import { UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + // Retrieve from node's /network/properties or RepositoryFactory + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); -/* start block 01 */ -const networkType = NetworkType.TEST_NET; + /* start block 01 */ + const networkType = await repositoryFactory.getNetworkType().toPromise(); -// replace with alice private key -const alicePrivatekey = ''; -const aliceAccount = Account.createFromPrivateKey(alicePrivatekey, networkType); + // replace with alice private key + const alicePrivatekey = ''; + const aliceAccount = Account.createFromPrivateKey( + alicePrivatekey, + networkType, + ); -// replace with bob public key -const bobPublicKey = ''; -const bobPublicAccount = PublicAccount.createFromPublicKey( - bobPublicKey, - networkType, -); + // replace with bob public key + const bobPublicKey = ''; + const bobPublicAccount = PublicAccount.createFromPublicKey( + bobPublicKey, + networkType, + ); -const aliceTransferTransaction = TransferTransaction.create( - Deadline.create(epochAdjustment), - bobPublicAccount.address, - [NetworkCurrencies.PUBLIC.currency.createRelative(1000)], - PlainMessage.create('payout'), - networkType, -); + const aliceTransferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + bobPublicAccount.address, + [NetworkCurrencies.PUBLIC.currency.createRelative(1000)], + PlainMessage.create('payout'), + networkType, + ); -const bobTransferTransaction = TransferTransaction.create( - Deadline.create(epochAdjustment), - aliceAccount.address, - [new Mosaic(new NamespaceId('collectible'), UInt64.fromUint(1))], - PlainMessage.create('payout'), - networkType, -); + const bobTransferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + aliceAccount.address, + [new Mosaic(new NamespaceId('collectible'), UInt64.fromUint(1))], + PlainMessage.create('payout'), + networkType, + ); -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [ - aliceTransferTransaction.toAggregate(aliceAccount.publicAccount), - bobTransferTransaction.toAggregate(bobPublicAccount), - ], - networkType, - [], - UInt64.fromUint(2000000), -); -/* end block 01 */ + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [ + aliceTransferTransaction.toAggregate(aliceAccount.publicAccount), + bobTransferTransaction.toAggregate(bobPublicAccount), + ], + networkType, + [], + UInt64.fromUint(2000000), + ); + /* end block 01 */ -/* start block 02 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const generationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; + /* start block 02 */ + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const generationHash = + '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransactionNotComplete = aliceAccount.sign( - aggregateTransaction, - generationHash, -); -console.log(signedTransactionNotComplete.payload); -/* end block 02 */ + const signedTransactionNotComplete = aliceAccount.sign( + aggregateTransaction, + generationHash, + ); + console.log(signedTransactionNotComplete.payload); + /* end block 02 */ -/* start block 03 */ -// replace with bob private key -const bobPrivateKey = ''; -const bobAccount = Account.createFromPrivateKey(bobPrivateKey, networkType); -const cosignedTransactionBob = CosignatureTransaction.signTransactionPayload( - bobAccount, - signedTransactionNotComplete.payload, - generationHash, -); -console.log(cosignedTransactionBob.signature); -console.log(cosignedTransactionBob.parentHash); -/* end block 03 */ + /* start block 03 */ + // replace with bob private key + const bobPrivateKey = ''; + const bobAccount = Account.createFromPrivateKey(bobPrivateKey, networkType); + const cosignedTransactionBob = CosignatureTransaction.signTransactionPayload( + bobAccount, + signedTransactionNotComplete.payload, + generationHash, + ); + console.log(cosignedTransactionBob.signature); + console.log(cosignedTransactionBob.parentHash); + /* end block 03 */ -/* start block 04 */ -const cosignatureSignedTransactions = [ - new CosignatureSignedTransaction( - cosignedTransactionBob.parentHash, - cosignedTransactionBob.signature, - cosignedTransactionBob.signerPublicKey, - ), -]; -const rectreatedAggregateTransactionFromPayload = TransactionMapping.createFromPayload( - signedTransactionNotComplete.payload, -) as AggregateTransaction; + /* start block 04 */ + const cosignatureSignedTransactions = [ + new CosignatureSignedTransaction( + cosignedTransactionBob.parentHash, + cosignedTransactionBob.signature, + cosignedTransactionBob.signerPublicKey, + ), + ]; + const rectreatedAggregateTransactionFromPayload = TransactionMapping.createFromPayload( + signedTransactionNotComplete.payload, + ) as AggregateTransaction; -const signedTransactionComplete = aliceAccount.signTransactionGivenSignatures( - rectreatedAggregateTransactionFromPayload, - cosignatureSignedTransactions, - generationHash, -); -console.log(signedTransactionComplete.hash); + const signedTransactionComplete = aliceAccount.signTransactionGivenSignatures( + rectreatedAggregateTransactionFromPayload, + cosignatureSignedTransactions, + generationHash, + ); + console.log(signedTransactionComplete.hash); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + // replace with node endpoint -transactionHttp.announce(signedTransactionComplete).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 04 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + + transactionHttp.announce(signedTransactionComplete).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 04 */ +}; +example().then(); diff --git a/source/resources/examples/typescript/aggregate/CreatingAnEscrowContractWithAggregateBondedTransaction.ts b/source/resources/examples/typescript/aggregate/CreatingAnEscrowContractWithAggregateBondedTransaction.ts index 310d9bcac..4e11e79d2 100644 --- a/source/resources/examples/typescript/aggregate/CreatingAnEscrowContractWithAggregateBondedTransaction.ts +++ b/source/resources/examples/typescript/aggregate/CreatingAnEscrowContractWithAggregateBondedTransaction.ts @@ -23,7 +23,6 @@ import { HashLockTransaction, Mosaic, MosaicId, - NetworkType, PlainMessage, PublicAccount, RepositoryFactoryHttp, @@ -32,118 +31,131 @@ import { UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with alice private key -const alicePrivateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const aliceAccount = Account.createFromPrivateKey(alicePrivateKey, networkType); -// replace with ticket distributor public key -const ticketDistributorPublicKey = - '20330294DC18D96BDEEF32FB02338A6462A0469CB451A081DE2F05B4302C0C0A'; -const ticketDistributorPublicAccount = PublicAccount.createFromPublicKey( - ticketDistributorPublicKey, - networkType, -); -// replace with ticket mosaic id -const ticketMosaicId = new MosaicId('7cdf3b117a3c40cc'); -// replace with ticket mosaic id divisibility -const ticketDivisibility = 0; -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; + // Retrieve from node's /network/properties or RepositoryFactory + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); -const aliceToTicketDistributorTx = TransferTransaction.create( - Deadline.create(epochAdjustment), - ticketDistributorPublicAccount.address, - [ - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(100 * Math.pow(10, networkCurrencyDivisibility)), - ), - ], - PlainMessage.create('send 100 symbol.xym to distributor'), - networkType, -); + /* start block 01 */ + // replace with network type + const networkType = await repositoryFactory.getNetworkType().toPromise(); + // replace with alice private key + const alicePrivateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const aliceAccount = Account.createFromPrivateKey( + alicePrivateKey, + networkType, + ); + // replace with ticket distributor public key + const ticketDistributorPublicKey = + '20330294DC18D96BDEEF32FB02338A6462A0469CB451A081DE2F05B4302C0C0A'; + const ticketDistributorPublicAccount = PublicAccount.createFromPublicKey( + ticketDistributorPublicKey, + networkType, + ); + // replace with ticket mosaic id + const ticketMosaicId = new MosaicId('7cdf3b117a3c40cc'); + // replace with ticket mosaic id divisibility + const ticketDivisibility = 0; + // replace with symbol.xym id + const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); + // replace with network currency divisibility + const networkCurrencyDivisibility = 6; -const ticketDistributorToAliceTx = TransferTransaction.create( - Deadline.create(epochAdjustment), - aliceAccount.address, - [ - new Mosaic( - ticketMosaicId, - UInt64.fromUint(1 * Math.pow(10, ticketDivisibility)), - ), - ], - PlainMessage.create('send 1 museum ticket to customer'), - networkType, -); -/* end block 01 */ + const aliceToTicketDistributorTx = TransferTransaction.create( + Deadline.create(epochAdjustment), + ticketDistributorPublicAccount.address, + [ + new Mosaic( + networkCurrencyMosaicId, + UInt64.fromUint(100 * Math.pow(10, networkCurrencyDivisibility)), + ), + ], + PlainMessage.create('send 100 symbol.xym to distributor'), + networkType, + ); -/* start block 02 */ -const aggregateTransaction = AggregateTransaction.createBonded( - Deadline.create(epochAdjustment), - [ - aliceToTicketDistributorTx.toAggregate(aliceAccount.publicAccount), - ticketDistributorToAliceTx.toAggregate(ticketDistributorPublicAccount), - ], - networkType, - [], - UInt64.fromUint(2000000), -); + const ticketDistributorToAliceTx = TransferTransaction.create( + Deadline.create(epochAdjustment), + aliceAccount.address, + [ + new Mosaic( + ticketMosaicId, + UInt64.fromUint(1 * Math.pow(10, ticketDivisibility)), + ), + ], + PlainMessage.create('send 1 museum ticket to customer'), + networkType, + ); + /* end block 01 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = aliceAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log('Aggregate Transaction Hash:', signedTransaction.hash); -/* end block 02 */ + /* start block 02 */ + const aggregateTransaction = AggregateTransaction.createBonded( + Deadline.create(epochAdjustment), + [ + aliceToTicketDistributorTx.toAggregate(aliceAccount.publicAccount), + ticketDistributorToAliceTx.toAggregate(ticketDistributorPublicAccount), + ], + networkType, + [], + UInt64.fromUint(2000000), + ); + + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const networkGenerationHash = + '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; + const signedTransaction = aliceAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log('Aggregate Transaction Hash:', signedTransaction.hash); + /* end block 02 */ + + /* start block 03 */ + const hashLockTransaction = HashLockTransaction.create( + Deadline.create(epochAdjustment), + new Mosaic( + networkCurrencyMosaicId, + UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), + ), + UInt64.fromUint(480), + signedTransaction, + networkType, + UInt64.fromUint(2000000), + ); -/* start block 03 */ -const hashLockTransaction = HashLockTransaction.create( - Deadline.create(epochAdjustment), - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - UInt64.fromUint(480), - signedTransaction, - networkType, - UInt64.fromUint(2000000), -); + const signedHashLockTransaction = aliceAccount.sign( + hashLockTransaction, + networkGenerationHash, + ); -const signedHashLockTransaction = aliceAccount.sign( - hashLockTransaction, - networkGenerationHash, -); + // replace with node endpoint -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const listener = repositoryFactory.createListener(); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); + const listener = repositoryFactory.createListener(); + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, + ); -listener.open().then(() => { - transactionService - .announceHashLockAggregateBonded( - signedHashLockTransaction, - signedTransaction, - listener, - ) - .subscribe( - (x) => console.log(x), - (err) => console.log(err), - () => listener.close(), - ); -}); -/* end block 03 */ + listener.open().then(() => { + transactionService + .announceHashLockAggregateBonded( + signedHashLockTransaction, + signedTransaction, + listener, + ) + .subscribe( + (x) => console.log(x), + (err) => console.log(err), + () => listener.close(), + ); + }); + /* end block 03 */ +}; +example().then(); diff --git a/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateBonded.ts b/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateBonded.ts index 114830b26..099b21710 100644 --- a/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateBonded.ts +++ b/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateBonded.ts @@ -24,7 +24,6 @@ import { HashLockTransaction, Mosaic, MosaicId, - NetworkType, PlainMessage, PublicAccount, RepositoryFactoryHttp, @@ -33,101 +32,109 @@ import { UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + // Retrieve from node's /network/properties or RepositoryFactory + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); -// replace network type -const networkType = NetworkType.TEST_NET; -// replace with cosignatory private key -const cosignatoryPrivateKey = - '0000000000000000000000000000000000000000000000000000000000000000'; -const cosignatoryAccount = Account.createFromPrivateKey( - cosignatoryPrivateKey, - networkType, -); -// replace with multisig account public key -const multisigAccountPublicKey = - '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; -const multisigAccount = PublicAccount.createFromPublicKey( - multisigAccountPublicKey, - networkType, -); -// replace with recipient address -const recipientRawAddress = 'TCWYXK-VYBMO4-NBCUF3-AXKJMX-CGVSYQ-OS7ZG2-TLI'; -const recipientAddress = Address.createFromRawAddress(recipientRawAddress); -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; + // replace network type + const networkType = await repositoryFactory.getNetworkType().toPromise(); + // replace with cosignatory private key + const cosignatoryPrivateKey = + '0000000000000000000000000000000000000000000000000000000000000000'; + const cosignatoryAccount = Account.createFromPrivateKey( + cosignatoryPrivateKey, + networkType, + ); + // replace with multisig account public key + const multisigAccountPublicKey = + '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; + const multisigAccount = PublicAccount.createFromPublicKey( + multisigAccountPublicKey, + networkType, + ); + // replace with recipient address + const recipientRawAddress = 'TCWYXK-VYBMO4-NBCUF3-AXKJMX-CGVSYQ-OS7ZG2-TLI'; + const recipientAddress = Address.createFromRawAddress(recipientRawAddress); + // replace with symbol.xym id + const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); + // replace with network currency divisibility + const networkCurrencyDivisibility = 6; -const transferTransaction = TransferTransaction.create( - Deadline.create(epochAdjustment), - recipientAddress, - [ + const transferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + recipientAddress, + [ + new Mosaic( + networkCurrencyMosaicId, + UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), + ), + ], + PlainMessage.create('sending 10 symbol.xym'), + networkType, + ); + + /* start block 01 */ + const aggregateTransaction = AggregateTransaction.createBonded( + Deadline.create(epochAdjustment), + [transferTransaction.toAggregate(multisigAccount)], + networkType, + UInt64.fromUint(2000000), + ); + + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const networkGenerationHash = + '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; + const signedTransaction = cosignatoryAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log(signedTransaction.hash); + /* end block 01 */ + + /* start block 02 */ + const hashLockTransaction = HashLockTransaction.create( + Deadline.create(epochAdjustment), new Mosaic( networkCurrencyMosaicId, UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), ), - ], - PlainMessage.create('sending 10 symbol.xym'), - networkType, -); - -/* start block 01 */ -const aggregateTransaction = AggregateTransaction.createBonded( - Deadline.create(epochAdjustment), - [transferTransaction.toAggregate(multisigAccount)], - networkType, - UInt64.fromUint(2000000), -); - -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = cosignatoryAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); -/* end block 01 */ - -/* start block 02 */ -const hashLockTransaction = HashLockTransaction.create( - Deadline.create(epochAdjustment), - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - UInt64.fromUint(480), - signedTransaction, - networkType, - UInt64.fromUint(2000000), -); + UInt64.fromUint(480), + signedTransaction, + networkType, + UInt64.fromUint(2000000), + ); -const signedHashLockTransaction = cosignatoryAccount.sign( - hashLockTransaction, - networkGenerationHash, -); + const signedHashLockTransaction = cosignatoryAccount.sign( + hashLockTransaction, + networkGenerationHash, + ); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const listener = repositoryFactory.createListener(); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); + // replace with node endpoint + const listener = repositoryFactory.createListener(); + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, + ); -listener.open().then(() => { - transactionService - .announceHashLockAggregateBonded( - signedHashLockTransaction, - signedTransaction, - listener, - ) - .subscribe( - (x) => console.log(x), - (err) => console.log(err), - () => listener.close(), - ); -}); -/* end block 02 */ + listener.open().then(() => { + transactionService + .announceHashLockAggregateBonded( + signedHashLockTransaction, + signedTransaction, + listener, + ) + .subscribe( + (x) => console.log(x), + (err) => console.log(err), + () => listener.close(), + ); + }); + /* end block 02 */ +}; +example().then(); diff --git a/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateComplete.ts b/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateComplete.ts index ae1815636..63e54f983 100644 --- a/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateComplete.ts +++ b/source/resources/examples/typescript/aggregate/SendingAMultisigTransactionAggregateComplete.ts @@ -23,7 +23,6 @@ import { Deadline, Mosaic, MosaicId, - NetworkType, PlainMessage, PublicAccount, RepositoryFactoryHttp, @@ -31,74 +30,79 @@ import { UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); -/* start block 01 */ -// replace network type -const networkType = NetworkType.TEST_NET; -// replace with cosignatory private key -const cosignatoryPrivateKey = - '0000000000000000000000000000000000000000000000000000000000000000'; -const cosignatoryAccount = Account.createFromPrivateKey( - cosignatoryPrivateKey, - networkType, -); -// replace with multisig account public key -const multisigAccountPublicKey = - '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; -const multisigAccount = PublicAccount.createFromPublicKey( - multisigAccountPublicKey, - networkType, -); -// replace with recipient address -const recipientRawAddress = 'TCWYXK-VYBMO4-NBCUF3-AXKJMX-CGVSYQ-OS7ZG2-TLI'; -const recipientAddress = Address.createFromRawAddress(recipientRawAddress); -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; -/* end block 01 */ + /* start block 01 */ + // replace with cosignatory private key + const cosignatoryPrivateKey = + '0000000000000000000000000000000000000000000000000000000000000000'; + const cosignatoryAccount = Account.createFromPrivateKey( + cosignatoryPrivateKey, + networkType, + ); + // replace with multisig account public key + const multisigAccountPublicKey = + '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; + const multisigAccount = PublicAccount.createFromPublicKey( + multisigAccountPublicKey, + networkType, + ); + // replace with recipient address + const recipientRawAddress = 'TCWYXK-VYBMO4-NBCUF3-AXKJMX-CGVSYQ-OS7ZG2-TLI'; + const recipientAddress = Address.createFromRawAddress(recipientRawAddress); + // replace with symbol.xym id + const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); + // replace with network currency divisibility + const networkCurrencyDivisibility = 6; + /* end block 01 */ -/* start block 02 */ -const transferTransaction = TransferTransaction.create( - Deadline.create(epochAdjustment), - recipientAddress, - [ - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - ], - PlainMessage.create('sending 10 symbol.xym'), - networkType, -); -/* end block 02 */ + /* start block 02 */ + const transferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + recipientAddress, + [ + new Mosaic( + networkCurrencyMosaicId, + UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), + ), + ], + PlainMessage.create('sending 10 symbol.xym'), + networkType, + ); + /* end block 02 */ -/* start block 03 */ -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [transferTransaction.toAggregate(multisigAccount)], - networkType, - [], - UInt64.fromUint(2000000), -); -/* end block 03 */ + /* start block 03 */ + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [transferTransaction.toAggregate(multisigAccount)], + networkType, + [], + UInt64.fromUint(2000000), + ); + /* end block 03 */ -/* start block 04 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = cosignatoryAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 04 */ + /* start block 04 */ + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const networkGenerationHash = + '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; + const signedTransaction = cosignatoryAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + // replace with node endpoint + + const transactionHttp = repositoryFactory.createTransactionRepository(); + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 04 */ +}; + +example().then(); diff --git a/source/resources/examples/typescript/blockchain/GettingBlockByHeight.ts b/source/resources/examples/typescript/blockchain/GettingBlockByHeight.ts index 146817423..598f58694 100644 --- a/source/resources/examples/typescript/blockchain/GettingBlockByHeight.ts +++ b/source/resources/examples/typescript/blockchain/GettingBlockByHeight.ts @@ -19,7 +19,7 @@ import { RepositoryFactoryHttp, UInt64 } from 'symbol-sdk'; /* start block 01 */ -// replace with node endpoint +// Replace with node endpoint const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); const blockHttp = repositoryFactory.createBlockRepository(); diff --git a/source/resources/examples/typescript/blockchain/GettingBlockchainHeight.ts b/source/resources/examples/typescript/blockchain/GettingBlockchainHeight.ts index becc6496a..5af665cc2 100644 --- a/source/resources/examples/typescript/blockchain/GettingBlockchainHeight.ts +++ b/source/resources/examples/typescript/blockchain/GettingBlockchainHeight.ts @@ -19,7 +19,7 @@ import { ChainInfo, RepositoryFactoryHttp } from 'symbol-sdk'; /* start block 01 */ -// replace with node endpoint +// Replace with node endpoint const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); const chainHttp = repositoryFactory.createChainRepository(); diff --git a/source/resources/examples/typescript/blockchain/GettingTheCurrentMosaicIdentifierBehindANamespace.ts b/source/resources/examples/typescript/blockchain/GettingTheCurrentMosaicIdentifierBehindANamespace.ts index cbb024f4c..dff8385c8 100644 --- a/source/resources/examples/typescript/blockchain/GettingTheCurrentMosaicIdentifierBehindANamespace.ts +++ b/source/resources/examples/typescript/blockchain/GettingTheCurrentMosaicIdentifierBehindANamespace.ts @@ -19,10 +19,10 @@ import { NamespaceId, RepositoryFactoryHttp } from 'symbol-sdk'; /* start block 01 */ -// replace with namespace name +// Replace with namespace name const namespaceId = new NamespaceId('symbol.xym'); -// replace with node endpoint +// Replace with node endpoint const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); const namespaceHttp = repositoryFactory.createNamespaceRepository(); diff --git a/source/resources/examples/typescript/blockchain/GettingTheMosaicIdentifierBehindANamespaceWithReceipts.ts b/source/resources/examples/typescript/blockchain/GettingTheMosaicIdentifierBehindANamespaceWithReceipts.ts index fd8de9a9f..2f915a680 100644 --- a/source/resources/examples/typescript/blockchain/GettingTheMosaicIdentifierBehindANamespaceWithReceipts.ts +++ b/source/resources/examples/typescript/blockchain/GettingTheMosaicIdentifierBehindANamespaceWithReceipts.ts @@ -23,7 +23,6 @@ import { Deadline, Mosaic, NamespaceId, - NetworkType, PlainMessage, RepositoryFactoryHttp, TransactionService, @@ -31,66 +30,87 @@ import { UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -const aliasedMosaic = new Mosaic( - new NamespaceId('symbol.xym'), - UInt64.fromUint(1000000), -); -/* end block 01 */ - -/* start block 02 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -const transferTransaction = TransferTransaction.create( - Deadline.create(epochAdjustment), - Address.createFromRawAddress('TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I'), - [aliasedMosaic], - PlainMessage.create('Test aliased mosaic'), - networkType, - UInt64.fromUint(2000000), -); + /* start block 01 */ + const aliasedMosaic = new Mosaic( + new NamespaceId('symbol.xym'), + UInt64.fromUint(1000000), + ); + /* end block 01 */ -// replace with sender 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( - transferTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); -/* end block 02 */ + /* start block 02 */ + const maxFee = UInt64.fromUint(2000000); + const transferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + Address.createFromRawAddress( + 'TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I', + ), + [aliasedMosaic], + PlainMessage.create('Test aliased mosaic'), + networkType, + maxFee, + ); -/* start block 03 */ -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const listener = repositoryFactory.createListener(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); + // Replace with sender private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); + const signedTransaction = account.sign( + transferTransaction, + networkGenerationHash, + ); + console.log('Transaction hash: ' + signedTransaction.hash); + /* end block 02 */ -listener.open().then(() => { - transactionService - .announce(signedTransaction, listener) - .pipe( - mergeMap((transaction) => - transactionService.resolveAliases([transaction.transactionInfo!.hash!]), - ), - map((transactions) => transactions[0] as TransferTransaction), - ) - .subscribe( - (transaction) => { - console.log('Resolved MosaicId: ', transaction.mosaics[0].id.toHex()); - listener.close(); - }, - (err) => console.log(err), + /* start block 03 */ + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const listener = repositoryFactory.createListener(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, ); -}); -/* end block 03 */ + + listener.open().then(() => { + transactionService + .announce(signedTransaction, listener) + .pipe( + mergeMap((transaction) => + transactionService.resolveAliases([ + transaction.transactionInfo!.hash!, + ]), + ), + map((transactions) => transactions[0] as TransferTransaction), + ) + .subscribe( + (transaction) => { + console.log( + 'Resolved MosaicId: ', + transaction.mosaics[0].id.toHex(), + ); + listener.close(); + }, + (err) => { + console.log(err); + listener.close(); + }, + ); + }); + /* end block 03 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/blockchain/ListeningNewBlocks.ts b/source/resources/examples/typescript/blockchain/ListeningNewBlocks.ts index 42a3a27dd..f3e0ac947 100644 --- a/source/resources/examples/typescript/blockchain/ListeningNewBlocks.ts +++ b/source/resources/examples/typescript/blockchain/ListeningNewBlocks.ts @@ -19,17 +19,24 @@ import { RepositoryFactoryHttp } from 'symbol-sdk'; /* start block 01 */ +// Replace with node endpoint const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); const listener = repositoryFactory.createListener(); -listener.open().then(() => { - listener.newBlock().subscribe( - (block) => { - console.log(block); - listener.close(); - }, - (err) => console.error(err), - ); -}); +listener + .open() + .then(() => { + console.log('Waiting for new block to be harvested...'); + listener.newBlock().subscribe( + (block) => { + console.log(block); + listener.close(); + }, + (err) => console.error(err), + ); + }) + .catch((e) => { + console.log(e); + }); /* end block 01 */ diff --git a/source/resources/examples/typescript/metadata/AssigningMetadataToAMosaic.ts b/source/resources/examples/typescript/metadata/AssigningMetadataToAMosaic.ts index 4afdabea2..4dfe33444 100644 --- a/source/resources/examples/typescript/metadata/AssigningMetadataToAMosaic.ts +++ b/source/resources/examples/typescript/metadata/AssigningMetadataToAMosaic.ts @@ -23,83 +23,89 @@ import { KeyGenerator, MosaicMetadataTransaction, NamespaceId, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + // Retrieve from node's /network/properties or RepositoryFactory + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with company private key -const companyPrivateKey = - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; -const companyAccount = Account.createFromPrivateKey( - companyPrivateKey, - networkType, -); -// replace with mosaic id -const mosaicId = new NamespaceId('cc.shares'); + /* start block 01 */ + // replace with network type + const networkType = await repositoryFactory.getNetworkType().toPromise(); + // replace with company private key + const companyPrivateKey = + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; + const companyAccount = Account.createFromPrivateKey( + companyPrivateKey, + networkType, + ); + // replace with mosaic id + const mosaicId = new NamespaceId('cc.shares'); -const isin = 'US00000000'; -const isinMetadataTransaction = MosaicMetadataTransaction.create( - Deadline.create(epochAdjustment), - companyAccount.address, - KeyGenerator.generateUInt64Key('ISIN'), - mosaicId, - isin.length, - isin, - networkType, -); -/* end block 01 */ + const isin = 'US00000000'; + const isinMetadataTransaction = MosaicMetadataTransaction.create( + Deadline.create(epochAdjustment), + companyAccount.address, + KeyGenerator.generateUInt64Key('ISIN'), + mosaicId, + isin.length, + isin, + networkType, + ); + /* end block 01 */ -/* start block 02 */ -const name = 'ComfyClothingCompany'; -const nameMetadataTransaction = MosaicMetadataTransaction.create( - Deadline.create(epochAdjustment), - companyAccount.address, - KeyGenerator.generateUInt64Key('NAME'), - mosaicId, - name.length, - name, - networkType, -); -/* end block 02 */ + /* start block 02 */ + const name = 'ComfyClothingCompany'; + const nameMetadataTransaction = MosaicMetadataTransaction.create( + Deadline.create(epochAdjustment), + companyAccount.address, + KeyGenerator.generateUInt64Key('NAME'), + mosaicId, + name.length, + name, + networkType, + ); + /* end block 02 */ -/* start block 03 */ -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [ - isinMetadataTransaction.toAggregate(companyAccount.publicAccount), - nameMetadataTransaction.toAggregate(companyAccount.publicAccount), - ], - networkType, - [], - UInt64.fromUint(2000000), -); + /* start block 03 */ + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [ + isinMetadataTransaction.toAggregate(companyAccount.publicAccount), + nameMetadataTransaction.toAggregate(companyAccount.publicAccount), + ], + networkType, + [], + UInt64.fromUint(2000000), + ); -/* end block 03 */ + /* end block 03 */ -/* start block 04 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = companyAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); + /* start block 04 */ + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + const signedTransaction = companyAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log(signedTransaction.hash); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + // replace with node endpoint -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 04 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 04 */ +}; +example().then(); diff --git a/source/resources/examples/typescript/metadata/AssigningMetadataToANamespace.ts b/source/resources/examples/typescript/metadata/AssigningMetadataToANamespace.ts index a85ff13fe..c9f112928 100644 --- a/source/resources/examples/typescript/metadata/AssigningMetadataToANamespace.ts +++ b/source/resources/examples/typescript/metadata/AssigningMetadataToANamespace.ts @@ -23,103 +23,108 @@ import { KeyGenerator, NamespaceId, NamespaceMetadataTransaction, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + // Retrieve from node's /network/properties or RepositoryFactory + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with company private key -const companyPrivateKey = - 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; -const companyAccount = Account.createFromPrivateKey( - companyPrivateKey, - networkType, -); -// replace with namespace name -const namespaceId = new NamespaceId('cc'); -const name = 'ComfyClothingCompany'; -const email = 'info@comfyclothingcompany'; -const address = 'ComfyClothingCompany HQ'; -const phone = '000-0000'; + /* start block 01 */ + // replace with network type + const networkType = await repositoryFactory.getNetworkType().toPromise(); + // replace with company private key + const companyPrivateKey = + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; + const companyAccount = Account.createFromPrivateKey( + companyPrivateKey, + networkType, + ); + // replace with namespace name + const namespaceId = new NamespaceId('cc'); + const name = 'ComfyClothingCompany'; + const email = 'info@comfyclothingcompany'; + const address = 'ComfyClothingCompany HQ'; + const phone = '000-0000'; -const nameMetadataTransaction = NamespaceMetadataTransaction.create( - Deadline.create(epochAdjustment), - companyAccount.address, - KeyGenerator.generateUInt64Key('NAME'), - namespaceId, - name.length, - name, - networkType, -); + const nameMetadataTransaction = NamespaceMetadataTransaction.create( + Deadline.create(epochAdjustment), + companyAccount.address, + KeyGenerator.generateUInt64Key('NAME'), + namespaceId, + name.length, + name, + networkType, + ); -const emailMetadataTransaction = NamespaceMetadataTransaction.create( - Deadline.create(epochAdjustment), - companyAccount.address, - KeyGenerator.generateUInt64Key('EMAIL'), - namespaceId, - email.length, - email, - networkType, -); + const emailMetadataTransaction = NamespaceMetadataTransaction.create( + Deadline.create(epochAdjustment), + companyAccount.address, + KeyGenerator.generateUInt64Key('EMAIL'), + namespaceId, + email.length, + email, + networkType, + ); -const addressMetadataTransaction = NamespaceMetadataTransaction.create( - Deadline.create(epochAdjustment), - companyAccount.address, - KeyGenerator.generateUInt64Key('ADDRESS'), - namespaceId, - address.length, - address, - networkType, -); + const addressMetadataTransaction = NamespaceMetadataTransaction.create( + Deadline.create(epochAdjustment), + companyAccount.address, + KeyGenerator.generateUInt64Key('ADDRESS'), + namespaceId, + address.length, + address, + networkType, + ); -const phoneMetadataTransaction = NamespaceMetadataTransaction.create( - Deadline.create(epochAdjustment), - companyAccount.address, - KeyGenerator.generateUInt64Key('PHONE'), - namespaceId, - phone.length, - phone, - networkType, -); -/* end block 01 */ + const phoneMetadataTransaction = NamespaceMetadataTransaction.create( + Deadline.create(epochAdjustment), + companyAccount.address, + KeyGenerator.generateUInt64Key('PHONE'), + namespaceId, + phone.length, + phone, + networkType, + ); + /* end block 01 */ -/* start block 02 */ -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [ - nameMetadataTransaction.toAggregate(companyAccount.publicAccount), - emailMetadataTransaction.toAggregate(companyAccount.publicAccount), - addressMetadataTransaction.toAggregate(companyAccount.publicAccount), - phoneMetadataTransaction.toAggregate(companyAccount.publicAccount), - ], - networkType, - [], - UInt64.fromUint(2000000), -); -/* end block 02 */ + /* start block 02 */ + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [ + nameMetadataTransaction.toAggregate(companyAccount.publicAccount), + emailMetadataTransaction.toAggregate(companyAccount.publicAccount), + addressMetadataTransaction.toAggregate(companyAccount.publicAccount), + phoneMetadataTransaction.toAggregate(companyAccount.publicAccount), + ], + networkType, + [], + UInt64.fromUint(2000000), + ); + /* end block 02 */ -/* start block 03 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = companyAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); + /* start block 03 */ + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + const signedTransaction = companyAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log(signedTransaction.hash); -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 03 */ + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 03 */ +}; +example().then(); diff --git a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.js b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.js deleted file mode 100644 index aa6a3a899..000000000 --- a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.js +++ /dev/null @@ -1,97 +0,0 @@ -'use strict'; -/* - * - * Copyright 2018-present NEM - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -Object.defineProperty(exports, '__esModule', { value: true }); -const rxjs_1 = require('rxjs'); -const operators_1 = require('rxjs/operators'); -const symbol_sdk_1 = require('symbol-sdk'); -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; -/* start block 01 */ -// replace with recipient address -const rawRecipientAddress = 'TB6Q5E-YACWBP-CXKGIL-I6XWCH-DRFLTB-KUK34I-YJQ'; -const recipientAddress = symbol_sdk_1.Address.createFromRawAddress( - rawRecipientAddress, -); -// replace with network type -const networkType = symbol_sdk_1.NetworkType.TEST_NET; -// replace with symbol.xym id -const networkCurrencyMosaicId = new symbol_sdk_1.MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; -const transferTransaction = symbol_sdk_1.TransferTransaction.create( - symbol_sdk_1.Deadline.create(epochAdjustment), - recipientAddress, - [ - new symbol_sdk_1.Mosaic( - networkCurrencyMosaicId, - symbol_sdk_1.UInt64.fromUint( - 10 * Math.pow(10, networkCurrencyDivisibility), - ), - ), - ], - symbol_sdk_1.EmptyMessage, - networkType, - symbol_sdk_1.UInt64.fromUint(2000000), -); -// replace with sender private key -const privateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const account = symbol_sdk_1.Account.createFromPrivateKey( - privateKey, - networkType, -); -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = account.sign( - transferTransaction, - networkGenerationHash, -); -/* end block 01 */ -/* start block 02 */ -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new symbol_sdk_1.RepositoryFactoryHttp(nodeUrl); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const listener = repositoryFactory.createListener(); -const transactionService = new symbol_sdk_1.TransactionService( - transactionHttp, - receiptHttp, -); -listener.open().then(() => { - rxjs_1 - .merge( - transactionService.announce(signedTransaction, listener), - listener.status(account.address).pipe( - operators_1.filter((error) => error.hash === signedTransaction.hash), - operators_1.tap((error) => { - throw new Error(error.code); - }), - ), - ) - .subscribe( - (transaction) => { - console.log(transaction); - // TODO: send email to recipient - listener.close(); - }, - (err) => console.error(err), - ); -}); -/* end block 02 */ diff --git a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.ts b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.ts deleted file mode 100644 index 6232d86ee..000000000 --- a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronous.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* - * - * Copyright 2018-present NEM - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { merge } from 'rxjs'; -import { filter, tap } from 'rxjs/operators'; -import { - Account, - Address, - Deadline, - EmptyMessage, - Mosaic, - MosaicId, - NetworkType, - RepositoryFactoryHttp, - TransactionService, - TransferTransaction, - UInt64, -} from 'symbol-sdk'; - -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; - -/* start block 01 */ -// replace with recipient address -const rawRecipientAddress = 'TB6Q5E-YACWBP-CXKGIL-I6XWCH-DRFLTB-KUK34I-YJQ'; -const recipientAddress = Address.createFromRawAddress(rawRecipientAddress); -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; - -const transferTransaction = TransferTransaction.create( - Deadline.create(epochAdjustment), - recipientAddress, - [ - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - ], - EmptyMessage, - networkType, - UInt64.fromUint(2000000), -); - -// replace with sender 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( - transferTransaction, - networkGenerationHash, -); -/* end block 01 */ - -/* start block 02 */ -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const listener = repositoryFactory.createListener(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); - -listener.open().then(() => { - merge( - transactionService.announce(signedTransaction, listener), - listener.status(account.address).pipe( - filter((error) => error.hash === signedTransaction.hash), - tap((error) => { - throw new Error(error.code); - }), - ), - ).subscribe( - (transaction) => { - console.log(transaction); - // TODO: send email to recipient - listener.close(); - }, - (err) => console.error(err), - ); -}); -/* end block 02 */ diff --git a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.js b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.js new file mode 100644 index 000000000..156d42c43 --- /dev/null +++ b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.js @@ -0,0 +1,97 @@ +'use strict'; +/* + * + * Copyright 2018-present NEM + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +Object.defineProperty(exports, '__esModule', { value: true }); +const symbol_sdk_1 = require('symbol-sdk'); +const example = async () => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.0.10.0.x.symboldev.network:3000'; + const repositoryFactory = new symbol_sdk_1.RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); + /* start block 01 */ + // Replace with recipient's address + const rawRecipientAddress = 'TB6Q5E-YACWBP-CXKGIL-I6XWCH-DRFLTB-KUK34I-YJQ'; + const recipientAddress = symbol_sdk_1.Address.createFromRawAddress( + rawRecipientAddress, + ); + const maxFee = symbol_sdk_1.UInt64.fromUint(2000000); + const transferTransaction = symbol_sdk_1.TransferTransaction.create( + symbol_sdk_1.Deadline.create(epochAdjustment), + recipientAddress, + [currency.createRelative(10)], + symbol_sdk_1.EmptyMessage, + networkType, + maxFee, + ); + // Replace with sender's private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = symbol_sdk_1.Account.createFromPrivateKey( + privateKey, + networkType, + ); + const signedTransaction = account.sign( + transferTransaction, + networkGenerationHash, + ); + /* end block 01 */ + console.log('Sender address: ' + account.address.pretty()); + console.log('Recipient address: ' + recipientAddress.pretty()); + console.log( + 'Amount (absolute): ' + + transferTransaction.mosaics[0].amount.compact().toLocaleString(), + ); + /* start block 02 */ + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const listener = repositoryFactory.createListener(); + const transactionService = new symbol_sdk_1.TransactionService( + transactionHttp, + receiptHttp, + ); + console.log('Waiting for confirmation...'); + listener.open().then(() => { + listener + .unconfirmedAdded(account.address, signedTransaction.hash) + .subscribe(() => console.log('Unconfirmed...')); + transactionService.announce(signedTransaction, listener).subscribe( + () => { + console.log('Confirmed!'); + listener.close(); + }, + (error) => { + console.log(error); + listener.close(); + }, + ); + }); + /* end block 02 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.ts b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.ts new file mode 100644 index 000000000..ae6e672d5 --- /dev/null +++ b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaListener.ts @@ -0,0 +1,107 @@ +/* + * + * Copyright 2018-present NEM + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import { + Account, + Address, + Deadline, + EmptyMessage, + RepositoryFactoryHttp, + TransactionService, + TransferTransaction, + UInt64, +} from 'symbol-sdk'; + +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); + + /* start block 01 */ + // Replace with recipient's address + const rawRecipientAddress = 'TB6Q5E-YACWBP-CXKGIL-I6XWCH-DRFLTB-KUK34I-YJQ'; + const recipientAddress = Address.createFromRawAddress(rawRecipientAddress); + + const maxFee = UInt64.fromUint(2000000); + const transferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + recipientAddress, + [currency.createRelative(10)], + EmptyMessage, + networkType, + maxFee, + ); + + // Replace with sender's private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); + const signedTransaction = account.sign( + transferTransaction, + networkGenerationHash, + ); + /* end block 01 */ + + console.log('Sender address: ' + account.address.pretty()); + console.log('Recipient address: ' + recipientAddress.pretty()); + console.log( + 'Amount (absolute): ' + + transferTransaction.mosaics[0].amount.compact().toLocaleString(), + ); + + /* start block 02 */ + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const listener = repositoryFactory.createListener(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, + ); + + console.log('Waiting for confirmation...'); + listener.open().then(() => { + listener + .unconfirmedAdded(account.address, signedTransaction.hash) + .subscribe(() => console.log('Unconfirmed...')); + transactionService.announce(signedTransaction, listener).subscribe( + () => { + console.log('Confirmed!'); + listener.close(); + }, + (error) => { + console.log(error); + listener.close(); + }, + ); + }); + /* end block 02 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.js b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.js new file mode 100644 index 000000000..98ce9948c --- /dev/null +++ b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.js @@ -0,0 +1,89 @@ +'use strict'; +/* + * + * Copyright 2018-present NEM + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +Object.defineProperty(exports, '__esModule', { value: true }); +const symbol_sdk_1 = require('symbol-sdk'); +const example = async () => { + try { + // Network information + const nodeUrl = 'http://192.168.253.3:3000'; + const repositoryFactory = new symbol_sdk_1.RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); + /* start block 01 */ + // Replace with recipient's address + const rawRecipientAddress = 'TB6Q5E-YACWBP-CXKGIL-I6XWCH-DRFLTB-KUK34I-YJQ'; + const recipientAddress = symbol_sdk_1.Address.createFromRawAddress( + rawRecipientAddress, + ); + const maxFee = symbol_sdk_1.UInt64.fromUint(2000000); + const transferTransaction = symbol_sdk_1.TransferTransaction.create( + symbol_sdk_1.Deadline.create(epochAdjustment), + recipientAddress, + [currency.createRelative(10)], + symbol_sdk_1.EmptyMessage, + networkType, + maxFee, + ); + // Replace with sender's private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = symbol_sdk_1.Account.createFromPrivateKey( + privateKey, + networkType, + ); + const signedTransaction = account.sign( + transferTransaction, + networkGenerationHash, + ); + /* end block 01 */ + console.log('Sender address: ' + account.address.pretty()); + console.log('Recipient address: ' + recipientAddress.pretty()); + console.log( + 'Amount (absolute): ' + + transferTransaction.mosaics[0].amount.compact().toLocaleString(), + ); + /* start block 02 */ + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const listener = repositoryFactory.createListener(); + const transactionService = new symbol_sdk_1.TransactionService( + transactionHttp, + receiptHttp, + ); + console.log('Waiting for confirmation...'); + await listener.open(); + await transactionService + .announce(signedTransaction, listener) + .toPromise() + .then(() => console.log('Confirmed!')) + .catch((err) => console.log(err)) + .finally(() => listener.close()); + /* end block 02 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.ts b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.ts new file mode 100644 index 000000000..8d5c83a2e --- /dev/null +++ b/source/resources/examples/typescript/monitor/TurningTheAsynchronousTransactionAnnouncementIntoSynchronousViaPromise.ts @@ -0,0 +1,99 @@ +/* + * + * Copyright 2018-present NEM + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import { + Account, + Address, + Deadline, + EmptyMessage, + RepositoryFactoryHttp, + TransactionService, + TransferTransaction, + UInt64, +} from 'symbol-sdk'; + +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); + + /* start block 01 */ + // Replace with recipient's address + const rawRecipientAddress = 'TB6Q5E-YACWBP-CXKGIL-I6XWCH-DRFLTB-KUK34I-YJQ'; + const recipientAddress = Address.createFromRawAddress(rawRecipientAddress); + + const maxFee = UInt64.fromUint(2000000); + const transferTransaction = TransferTransaction.create( + Deadline.create(epochAdjustment), + recipientAddress, + [currency.createRelative(10)], + EmptyMessage, + networkType, + maxFee, + ); + + // Replace with sender's private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); + const signedTransaction = account.sign( + transferTransaction, + networkGenerationHash, + ); + /* end block 01 */ + + console.log('Sender address: ' + account.address.pretty()); + console.log('Recipient address: ' + recipientAddress.pretty()); + console.log( + 'Amount (absolute): ' + + transferTransaction.mosaics[0].amount.compact().toLocaleString(), + ); + + /* start block 02 */ + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const listener = repositoryFactory.createListener(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, + ); + + console.log('Waiting for confirmation...'); + await listener.open(); + await transactionService + .announce(signedTransaction, listener) + .toPromise() + .then(() => console.log('Confirmed!')) + .catch((err) => console.log(err)) + .finally(() => listener.close()); + /* end block 02 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/mosaic/CreatingAMosaic.ts b/source/resources/examples/typescript/mosaic/CreatingAMosaic.ts index 9d29980b7..0e9fd8d69 100644 --- a/source/resources/examples/typescript/mosaic/CreatingAMosaic.ts +++ b/source/resources/examples/typescript/mosaic/CreatingAMosaic.ts @@ -26,81 +26,86 @@ import { MosaicNonce, MosaicSupplyChangeAction, MosaicSupplyChangeTransaction, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + // Retrieve from node's /network/properties or RepositoryFactory + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with private key -const privateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const account = Account.createFromPrivateKey(privateKey, networkType); -// replace with duration (in blocks) -const duration = UInt64.fromUint(0); -// replace with custom mosaic flags -const isSupplyMutable = true; -const isTransferable = true; -const isRestrictable = true; -// replace with custom divisibility -const divisibility = 0; + /* start block 01 */ + // replace with network type + const networkType = await repositoryFactory.getNetworkType().toPromise(); + // replace with private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); + // replace with duration (in blocks) + const duration = UInt64.fromUint(0); + // replace with custom mosaic flags + const isSupplyMutable = true; + const isTransferable = true; + const isRestrictable = true; + // replace with custom divisibility + const divisibility = 0; -const nonce = MosaicNonce.createRandom(); -const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create( - Deadline.create(epochAdjustment), - nonce, - MosaicId.createFromNonce(nonce, account.address), - MosaicFlags.create(isSupplyMutable, isTransferable, isRestrictable), - divisibility, - duration, - networkType, -); -/* end block 01 */ + const nonce = MosaicNonce.createRandom(); + const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create( + Deadline.create(epochAdjustment), + nonce, + MosaicId.createFromNonce(nonce, account.address), + MosaicFlags.create(isSupplyMutable, isTransferable, isRestrictable), + divisibility, + duration, + networkType, + ); + /* end block 01 */ -/* start block 02 */ -// replace with mosaic units to increase -const delta = 1000000; + /* start block 02 */ + // replace with mosaic units to increase + const delta = 1000000; -const mosaicSupplyChangeTransaction = MosaicSupplyChangeTransaction.create( - Deadline.create(epochAdjustment), - mosaicDefinitionTransaction.mosaicId, - MosaicSupplyChangeAction.Increase, - UInt64.fromUint(delta * Math.pow(10, divisibility)), - networkType, -); -/* end block 02 */ + const mosaicSupplyChangeTransaction = MosaicSupplyChangeTransaction.create( + Deadline.create(epochAdjustment), + mosaicDefinitionTransaction.mosaicId, + MosaicSupplyChangeAction.Increase, + UInt64.fromUint(delta * Math.pow(10, divisibility)), + networkType, + ); + /* end block 02 */ -/* start block 03 */ -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [ - mosaicDefinitionTransaction.toAggregate(account.publicAccount), - mosaicSupplyChangeTransaction.toAggregate(account.publicAccount), - ], - networkType, - [], - UInt64.fromUint(2000000), -); + /* start block 03 */ + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [ + mosaicDefinitionTransaction.toAggregate(account.publicAccount), + mosaicSupplyChangeTransaction.toAggregate(account.publicAccount), + ], + networkType, + [], + UInt64.fromUint(2000000), + ); -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = account.sign( - aggregateTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + // replace with meta.networkGenerationHash (nodeUrl + '/node/info') + const networkGenerationHash = + '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; + const signedTransaction = account.sign( + aggregateTransaction, + networkGenerationHash, + ); + // replace with node endpoint -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 03 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 03 */ +}; +example().then(); diff --git a/source/resources/examples/typescript/multisig/ConvertingAnAccountToMultisig.ts b/source/resources/examples/typescript/multisig/ConvertingAnAccountToMultisig.ts index 9ea8206cb..f7fc2f7ce 100644 --- a/source/resources/examples/typescript/multisig/ConvertingAnAccountToMultisig.ts +++ b/source/resources/examples/typescript/multisig/ConvertingAnAccountToMultisig.ts @@ -21,116 +21,129 @@ import { AggregateTransaction, Deadline, HashLockTransaction, - Mosaic, - MosaicId, MultisigAccountModificationTransaction, - NetworkType, PublicAccount, RepositoryFactoryHttp, TransactionService, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with candidate multisig private key -const privateKey = - 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; -const account = Account.createFromPrivateKey(privateKey, networkType); -// replace with cosignatory 1 public key -const cosignatory1PublicKey = - 'D04AB232742BB4AB3A1368BD4615E4E6D0224AB71A016BAF8520A332C9778737'; -const cosignatory1 = PublicAccount.createFromPublicKey( - cosignatory1PublicKey, - networkType, -); -// replace with cosignatory 2 public key -const cosignatory2PublicKey = - '462EE976890916E54FA825D26BDD0235F5EB5B6A143C199AB0AE5EE9328E08CE'; -const cosignatory2 = PublicAccount.createFromPublicKey( - cosignatory2PublicKey, - networkType, -); -/* end block 01 */ - -/* start block 02 */ -const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 1, - 1, - [cosignatory1.address, cosignatory2.address], - [], - networkType, -); -/* end block 02 */ - -/* start block 03 */ -const aggregateTransaction = AggregateTransaction.createBonded( - Deadline.create(epochAdjustment), - [multisigAccountModificationTransaction.toAggregate(account.publicAccount)], - networkType, - [], - UInt64.fromUint(2000000), -); -/* end block 03 */ + /* start block 01 */ + // Replace with candidate multisig private key + const privateKey = + 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; + const account = Account.createFromPrivateKey(privateKey, networkType); + // Replace with cosignatory 1 public key + const cosignatory1PublicKey = + 'D04AB232742BB4AB3A1368BD4615E4E6D0224AB71A016BAF8520A332C9778737'; + const cosignatory1 = PublicAccount.createFromPublicKey( + cosignatory1PublicKey, + networkType, + ); + // Replace with cosignatory 2 public key + const cosignatory2PublicKey = + '462EE976890916E54FA825D26BDD0235F5EB5B6A143C199AB0AE5EE9328E08CE'; + const cosignatory2 = PublicAccount.createFromPublicKey( + cosignatory2PublicKey, + networkType, + ); + /* end block 01 */ -/* start block 04 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = account.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); -/* end block 04 */ + /* start block 02 */ + const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 1, + 1, + [cosignatory1.address, cosignatory2.address], + [], + networkType, + ); + /* end block 02 */ -/* start block 05 */ -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; + /* start block 03 */ + const maxFee = UInt64.fromUint(2000000); + const aggregateTransaction = AggregateTransaction.createBonded( + Deadline.create(epochAdjustment), + [ + multisigAccountModificationTransaction.toAggregate( + account.publicAccount, + ), + ], + networkType, + [], + maxFee, + ); + /* end block 03 */ -const hashLockTransaction = HashLockTransaction.create( - Deadline.create(epochAdjustment), - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - UInt64.fromUint(480), - signedTransaction, - networkType, - UInt64.fromUint(2000000), -); + /* start block 04 */ + const signedTransaction = account.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log('Aggregate transaction hash: ' + signedTransaction.hash); + /* end block 04 */ -const signedHashLockTransaction = account.sign( - hashLockTransaction, - networkGenerationHash, -); + /* start block 05 */ + const hashLockTransaction = HashLockTransaction.create( + Deadline.create(epochAdjustment), + currency.createRelative(10), + UInt64.fromUint(480), + signedTransaction, + networkType, + maxFee, + ); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const listener = repositoryFactory.createListener(); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); + const signedHashLockTransaction = account.sign( + hashLockTransaction, + networkGenerationHash, + ); + console.log('Hashlock transaction hash: ' + signedHashLockTransaction.hash); -listener.open().then(() => { - transactionService - .announceHashLockAggregateBonded( - signedHashLockTransaction, - signedTransaction, - listener, - ) - .subscribe( - (x) => console.log(x), - (err) => console.log(err), - () => listener.close(), + const listener = repositoryFactory.createListener(); + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, ); -}); -/* end block 05 */ + + console.log('Waiting for confirmation...'); + listener.open().then(() => { + transactionService + .announceHashLockAggregateBonded( + signedHashLockTransaction, + signedTransaction, + listener, + ) + .subscribe( + () => { + console.log('Confirmed!'); + listener.close(); + }, + (err) => { + console.log(err); + listener.close(); + }, + ); + }); + /* end block 05 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/multisig/CreatingAMultilevelMultisigAccount.ts b/source/resources/examples/typescript/multisig/CreatingAMultilevelMultisigAccount.ts index 198739373..0fc55f089 100644 --- a/source/resources/examples/typescript/multisig/CreatingAMultilevelMultisigAccount.ts +++ b/source/resources/examples/typescript/multisig/CreatingAMultilevelMultisigAccount.ts @@ -21,186 +21,195 @@ import { AggregateTransaction, Deadline, HashLockTransaction, - Mosaic, - MosaicId, MultisigAccountModificationTransaction, - NetworkType, PublicAccount, RepositoryFactoryHttp, TransactionService, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with private key -const multisig2PrivateKey = - 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; -const multisigAccount2 = Account.createFromPrivateKey( - multisig2PrivateKey, - networkType, -); -// replace with public key -const cosignatoryAccount5PublicKey = - '17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0'; -const cosignatory5 = PublicAccount.createFromPublicKey( - cosignatoryAccount5PublicKey, - networkType, -); -// replace with public key -const cosignatoryAccount6PublicKey = - 'D04AB232742BB4AB3A1368BD4615E4E6D0224AB71A016BAF8520A332C9778737'; -const cosignatory6 = PublicAccount.createFromPublicKey( - cosignatoryAccount6PublicKey, - networkType, -); - -const convertMultisigAccount2Transaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 1, - 1, - [cosignatory5.address, cosignatory6.address], - [], - networkType, -); -/* end block 01 */ + /* start block 01 */ + // Replace with private key + const multisig2PrivateKey = + 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; + const multisigAccount2 = Account.createFromPrivateKey( + multisig2PrivateKey, + networkType, + ); + // Replace with public key + const cosignatoryAccount5PublicKey = + '17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0'; + const cosignatory5 = PublicAccount.createFromPublicKey( + cosignatoryAccount5PublicKey, + networkType, + ); + // Replace with public key + const cosignatoryAccount6PublicKey = + 'D04AB232742BB4AB3A1368BD4615E4E6D0224AB71A016BAF8520A332C9778737'; + const cosignatory6 = PublicAccount.createFromPublicKey( + cosignatoryAccount6PublicKey, + networkType, + ); -/* start block 02 */ -// replace with private key -const multisig3PrivateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const multisigAccount3 = Account.createFromPrivateKey( - multisig3PrivateKey, - networkType, -); -// replace with public key -const cosignatoryAccount7PublicKey = - '38C22255DE39952C5D18803EC305A888D5DDE2C59BF3D4EFFAE6FC5FFCBF4F5D'; -const cosignatory7 = PublicAccount.createFromPublicKey( - cosignatoryAccount7PublicKey, - networkType, -); -// replace with public key -const cosignatoryAccount8PublicKey = - '9F784BF20318AE3CA6246C0EC2207FE095FFF7A84B6787E7E3C2CE4C3B92A2EA'; -const cosignatory8 = PublicAccount.createFromPublicKey( - cosignatoryAccount8PublicKey, - networkType, -); -// replace with public key -const cosignatoryAccount4PublicKey = - 'EB2B065D27C6A6FB322F2E568E1AAD9CD6C0F155675E2837058D4811F5C0247D'; -const cosignatory4 = PublicAccount.createFromPublicKey( - cosignatoryAccount4PublicKey, - networkType, -); + const convertMultisigAccount2Transaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 1, + 1, + [cosignatory5.address, cosignatory6.address], + [], + networkType, + ); + /* end block 01 */ -const convertMultisigAccount3Transaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 2, - 1, - [cosignatory7.address, cosignatory8.address, cosignatory4.address], - [], - networkType, -); -/* end block 02 */ + /* start block 02 */ + // Replace with private key + const multisig3PrivateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const multisigAccount3 = Account.createFromPrivateKey( + multisig3PrivateKey, + networkType, + ); + // Replace with public key + const cosignatoryAccount7PublicKey = + '38C22255DE39952C5D18803EC305A888D5DDE2C59BF3D4EFFAE6FC5FFCBF4F5D'; + const cosignatory7 = PublicAccount.createFromPublicKey( + cosignatoryAccount7PublicKey, + networkType, + ); + // Replace with public key + const cosignatoryAccount8PublicKey = + '9F784BF20318AE3CA6246C0EC2207FE095FFF7A84B6787E7E3C2CE4C3B92A2EA'; + const cosignatory8 = PublicAccount.createFromPublicKey( + cosignatoryAccount8PublicKey, + networkType, + ); + // Replace with public key + const cosignatoryAccount4PublicKey = + 'EB2B065D27C6A6FB322F2E568E1AAD9CD6C0F155675E2837058D4811F5C0247D'; + const cosignatory4 = PublicAccount.createFromPublicKey( + cosignatoryAccount4PublicKey, + networkType, + ); -/* start block 03 */ -// replace with private key -const multisig1PrivateKey = - '0000000000000000000000000000000000000000000000000000000000000000'; -const multisigAccount1 = Account.createFromPrivateKey( - multisig1PrivateKey, - networkType, -); + const convertMultisigAccount3Transaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 2, + 1, + [cosignatory7.address, cosignatory8.address, cosignatory4.address], + [], + networkType, + ); + /* end block 02 */ -const convertMultisigAccount1Transaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 3, - 1, - [ - multisigAccount2.publicAccount.address, - multisigAccount3.publicAccount.address, - cosignatory4.address, - ], - [], - networkType, -); -/* end block 03 */ + /* start block 03 */ + // Replace with private key + const multisig1PrivateKey = + '0000000000000000000000000000000000000000000000000000000000000000'; + const multisigAccount1 = Account.createFromPrivateKey( + multisig1PrivateKey, + networkType, + ); -/* start block 04 */ -const aggregateTransaction = AggregateTransaction.createBonded( - Deadline.create(epochAdjustment), - [ - convertMultisigAccount2Transaction.toAggregate( - multisigAccount2.publicAccount, - ), - convertMultisigAccount3Transaction.toAggregate( - multisigAccount3.publicAccount, - ), - convertMultisigAccount1Transaction.toAggregate( - multisigAccount1.publicAccount, - ), - ], - networkType, - [], - UInt64.fromUint(2000000), -); + const convertMultisigAccount1Transaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 3, + 1, + [ + multisigAccount2.publicAccount.address, + multisigAccount3.publicAccount.address, + cosignatory4.address, + ], + [], + networkType, + ); + /* end block 03 */ -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = multisigAccount1.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); + /* start block 04 */ + const maxFee = UInt64.fromUint(2000000); + const aggregateTransaction = AggregateTransaction.createBonded( + Deadline.create(epochAdjustment), + [ + convertMultisigAccount2Transaction.toAggregate( + multisigAccount2.publicAccount, + ), + convertMultisigAccount3Transaction.toAggregate( + multisigAccount3.publicAccount, + ), + convertMultisigAccount1Transaction.toAggregate( + multisigAccount1.publicAccount, + ), + ], + networkType, + [], + maxFee, + ); -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; + const signedTransaction = multisigAccount1.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log('Aggregate transaction hash: ' + signedTransaction.hash); -const hashLockTransaction = HashLockTransaction.create( - Deadline.create(epochAdjustment), - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - UInt64.fromUint(480), - signedTransaction, - networkType, - UInt64.fromUint(2000000), -); + const hashLockTransaction = HashLockTransaction.create( + Deadline.create(epochAdjustment), + currency.createRelative(10), + UInt64.fromUint(480), + signedTransaction, + networkType, + maxFee, + ); -const signedHashLockTransaction = multisigAccount1.sign( - hashLockTransaction, - networkGenerationHash, -); + const signedHashLockTransaction = multisigAccount1.sign( + hashLockTransaction, + networkGenerationHash, + ); + console.log('Hashlock transaction hash: ' + signedHashLockTransaction.hash); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const listener = repositoryFactory.createListener(); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); + const listener = repositoryFactory.createListener(); + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, + ); -listener.open().then(() => { - transactionService - .announceHashLockAggregateBonded( - signedHashLockTransaction, - signedTransaction, - listener, - ) - .subscribe( - (x) => console.log(x), - (err) => console.log(err), - () => listener.close(), - ); -}); -/* end block 04 */ + console.log('Waiting for confirmation...'); + listener.open().then(() => { + transactionService + .announceHashLockAggregateBonded( + signedHashLockTransaction, + signedTransaction, + listener, + ) + .subscribe( + () => { + console.log('Confirmed!'); + listener.close(); + }, + (err) => { + console.log(err); + listener.close(); + }, + ); + }); + /* end block 04 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/multisig/GettingMultisigAccountCosignatories.ts b/source/resources/examples/typescript/multisig/GettingMultisigAccountCosignatories.ts index 2a692c0fc..e7f3457b1 100644 --- a/source/resources/examples/typescript/multisig/GettingMultisigAccountCosignatories.ts +++ b/source/resources/examples/typescript/multisig/GettingMultisigAccountCosignatories.ts @@ -20,7 +20,7 @@ import { Address, RepositoryFactoryHttp } from 'symbol-sdk'; /* start block 01 */ // replace with multisig address -const rawAddress = 'TAEG6L-KWXRA7-PSWUEE-ILQPG4-3V5CYZ-S5652T-JTUU'; +const rawAddress = 'TAEG6LKWXRA7PSWUEEILQPG43V5CYZS5652TJTU'; const address = Address.createFromRawAddress(rawAddress); // replace with node endpoint diff --git a/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountAddCosignatory.ts b/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountAddCosignatory.ts index 9abf41616..1a0084f5a 100644 --- a/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountAddCosignatory.ts +++ b/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountAddCosignatory.ts @@ -21,117 +21,127 @@ import { AggregateTransaction, Deadline, HashLockTransaction, - Mosaic, - MosaicId, MultisigAccountModificationTransaction, - NetworkType, PublicAccount, RepositoryFactoryHttp, TransactionService, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); + // Returns the network main currency, symbol.xym + const { currency } = await repositoryFactory.getCurrencies().toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with multisig public key -const multisigAccountPublicKey = - '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; -const multisigAccount = PublicAccount.createFromPublicKey( - multisigAccountPublicKey, - networkType, -); -// replace with new cosignatory public key -const newCosignatoryPublicKey = - '17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0'; -const newCosignatoryAccount = PublicAccount.createFromPublicKey( - newCosignatoryPublicKey, - networkType, -); -/* end block 01 */ - -/* start block 02 */ -const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 0, - 0, - [newCosignatoryAccount.address], - [], - networkType, -); -/* end block 02 */ - -/* start block 03 */ -const aggregateTransaction = AggregateTransaction.createBonded( - Deadline.create(epochAdjustment), - [multisigAccountModificationTransaction.toAggregate(multisigAccount)], - networkType, - [], - UInt64.fromUint(2000000), -); + /* start block 01 */ + // Replace with multisig public key + const multisigAccountPublicKey = + '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; + const multisigAccount = PublicAccount.createFromPublicKey( + multisigAccountPublicKey, + networkType, + ); + // Replace with new cosignatory public key + const newCosignatoryPublicKey = + '17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0'; + const newCosignatoryAccount = PublicAccount.createFromPublicKey( + newCosignatoryPublicKey, + networkType, + ); + /* end block 01 */ -// replace with cosignatory private key -const cosignatoryPrivateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const cosignatoryAccount = Account.createFromPrivateKey( - cosignatoryPrivateKey, - networkType, -); -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = cosignatoryAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -console.log(signedTransaction.hash); -/* end block 03 */ + /* start block 02 */ + const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 0, + 0, + [newCosignatoryAccount.address], + [], + networkType, + ); + /* end block 02 */ -/* start block 04 */ -// replace with symbol.xym id -const networkCurrencyMosaicId = new MosaicId('5E62990DCAC5BE8A'); -// replace with network currency divisibility -const networkCurrencyDivisibility = 6; + /* start block 03 */ + const maxFee = UInt64.fromUint(2000000); + const aggregateTransaction = AggregateTransaction.createBonded( + Deadline.create(epochAdjustment), + [multisigAccountModificationTransaction.toAggregate(multisigAccount)], + networkType, + [], + maxFee, + ); -const hashLockTransaction = HashLockTransaction.create( - Deadline.create(epochAdjustment), - new Mosaic( - networkCurrencyMosaicId, - UInt64.fromUint(10 * Math.pow(10, networkCurrencyDivisibility)), - ), - UInt64.fromUint(480), - signedTransaction, - networkType, - UInt64.fromUint(2000000), -); + // Replace with cosignatory private key + const cosignatoryPrivateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const cosignatoryAccount = Account.createFromPrivateKey( + cosignatoryPrivateKey, + networkType, + ); + console.log(cosignatoryAccount.address.plain()); + const signedTransaction = cosignatoryAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log('Aggregate transaction hash: ' + signedTransaction.hash); + /* end block 03 */ -const signedHashLockTransaction = cosignatoryAccount.sign( - hashLockTransaction, - networkGenerationHash, -); + /* start block 04 */ + const hashLockTransaction = HashLockTransaction.create( + Deadline.create(epochAdjustment), + currency.createRelative(10), + UInt64.fromUint(480), + signedTransaction, + networkType, + maxFee, + ); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const listener = repositoryFactory.createListener(); -const receiptHttp = repositoryFactory.createReceiptRepository(); -const transactionHttp = repositoryFactory.createTransactionRepository(); -const transactionService = new TransactionService(transactionHttp, receiptHttp); + const signedHashLockTransaction = cosignatoryAccount.sign( + hashLockTransaction, + networkGenerationHash, + ); + console.log('Transaction Hash:', signedHashLockTransaction.hash); -listener.open().then(() => { - transactionService - .announceHashLockAggregateBonded( - signedHashLockTransaction, - signedTransaction, - listener, - ) - .subscribe( - (x) => console.log(x), - (err) => console.log(err), - () => listener.close(), + const listener = repositoryFactory.createListener(); + const receiptHttp = repositoryFactory.createReceiptRepository(); + const transactionHttp = repositoryFactory.createTransactionRepository(); + const transactionService = new TransactionService( + transactionHttp, + receiptHttp, ); -}); -/* end block 04 */ + + console.log('Waiting for confirmation...'); + listener.open().then(() => { + transactionService + .announceHashLockAggregateBonded( + signedHashLockTransaction, + signedTransaction, + listener, + ) + .subscribe( + () => { + console.log('Confirmed!'); + listener.close(); + }, + (err) => { + console.log(err); + listener.close(); + }, + ); + }); + /* end block 04 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountIncreaseMinApproval.ts b/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountIncreaseMinApproval.ts index 0b3f1d4f5..3d901572d 100644 --- a/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountIncreaseMinApproval.ts +++ b/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountIncreaseMinApproval.ts @@ -21,68 +21,76 @@ import { AggregateTransaction, Deadline, MultisigAccountModificationTransaction, - NetworkType, PublicAccount, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with cosignatory private key -const cosignatoryPrivateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const cosignatoryAccount = Account.createFromPrivateKey( - cosignatoryPrivateKey, - networkType, -); -// replace with multisig account private key -const multisigAccountPublicKey = - '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; -const multisigAccount = PublicAccount.createFromPublicKey( - multisigAccountPublicKey, - networkType, -); -/* end block 01 */ + /* start block 01 */ + // Replace with cosignatory private key + const cosignatoryPrivateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const cosignatoryAccount = Account.createFromPrivateKey( + cosignatoryPrivateKey, + networkType, + ); + // Replace with multisig account private key + const multisigAccountPublicKey = + '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; + const multisigAccount = PublicAccount.createFromPublicKey( + multisigAccountPublicKey, + networkType, + ); + /* end block 01 */ -/* start block 02 */ -const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 1, - 0, - [], - [], - networkType, -); -/* end block 02 */ + /* start block 02 */ + const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 1, + 0, + [], + [], + networkType, + ); + /* end block 02 */ -/* start block 03 */ -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [multisigAccountModificationTransaction.toAggregate(multisigAccount)], - networkType, - [], - UInt64.fromUint(2000000), -); + /* start block 03 */ + const maxFee = UInt64.fromUint(2000000); + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [multisigAccountModificationTransaction.toAggregate(multisigAccount)], + networkType, + [], + maxFee, + ); -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = cosignatoryAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + const signedTransaction = cosignatoryAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + console.log('Transaction Hash:', signedTransaction.hash); + const transactionHttp = repositoryFactory.createTransactionRepository(); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 03 */ + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 03 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountRemoveCosignatory.ts b/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountRemoveCosignatory.ts index a5b1a717d..1ef539d06 100644 --- a/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountRemoveCosignatory.ts +++ b/source/resources/examples/typescript/multisig/ModifyingAMultisigAccountRemoveCosignatory.ts @@ -21,71 +21,79 @@ import { AggregateTransaction, Deadline, MultisigAccountModificationTransaction, - NetworkType, PublicAccount, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -// replace with network type -const networkType = NetworkType.TEST_NET; -// replace with multisig public key -const multisigAccountPublicKey = - '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; -const multisigAccount = PublicAccount.createFromPublicKey( - multisigAccountPublicKey, - networkType, -); -// replace with cosignatory public key -const cosignatoryToRemovePublicKey = - '17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0'; -const cosignatoryToRemove = PublicAccount.createFromPublicKey( - cosignatoryToRemovePublicKey, - networkType, -); -// replace with cosignatory private key -const cosignatoryPrivateKey = - '1111111111111111111111111111111111111111111111111111111111111111'; -const cosignatoryAccount = Account.createFromPrivateKey( - cosignatoryPrivateKey, - networkType, -); + /* start block 01 */ + // Replace with multisig public key + const multisigAccountPublicKey = + '3A537D5A1AF51158C42F80A199BB58351DBF3253C4A6A1B7BD1014682FB595EA'; + const multisigAccount = PublicAccount.createFromPublicKey( + multisigAccountPublicKey, + networkType, + ); + // Replace with cosignatory public key + const cosignatoryToRemovePublicKey = + '17E42BDF5B7FF5001DC96A262A1141FFBE3F09A3A45DE7C095AAEA14F45C0DA0'; + const cosignatoryToRemove = PublicAccount.createFromPublicKey( + cosignatoryToRemovePublicKey, + networkType, + ); + // Replace with cosignatory private key + const cosignatoryPrivateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const cosignatoryAccount = Account.createFromPrivateKey( + cosignatoryPrivateKey, + networkType, + ); -const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( - Deadline.create(epochAdjustment), - 0, - 0, - [], - [cosignatoryToRemove.address], - networkType, -); + const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create( + Deadline.create(epochAdjustment), + 0, + 0, + [], + [cosignatoryToRemove.address], + networkType, + ); -const aggregateTransaction = AggregateTransaction.createComplete( - Deadline.create(epochAdjustment), - [multisigAccountModificationTransaction.toAggregate(multisigAccount)], - networkType, - [], - UInt64.fromUint(2000000), -); + const maxFee = UInt64.fromUint(2000000); + const aggregateTransaction = AggregateTransaction.createComplete( + Deadline.create(epochAdjustment), + [multisigAccountModificationTransaction.toAggregate(multisigAccount)], + networkType, + [], + maxFee, + ); -// replace with meta.networkGenerationHash (nodeUrl + '/node/info') -const networkGenerationHash = - '1DFB2FAA9E7F054168B0C5FCB84F4DEB62CC2B4D317D861F3168D161F54EA78B'; -const signedTransaction = cosignatoryAccount.sign( - aggregateTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + const signedTransaction = cosignatoryAccount.sign( + aggregateTransaction, + networkGenerationHash, + ); + const transactionHttp = repositoryFactory.createTransactionRepository(); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 01 */ + console.log('Transaction Hash:', signedTransaction.hash); + const response = await transactionHttp + .announce(signedTransaction) + .toPromise(); + console.log(response); + /* end block 01 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/namespace/GettingNamespaceInformation.ts b/source/resources/examples/typescript/namespace/GettingNamespaceInformation.ts index b05103b58..76a9744e6 100644 --- a/source/resources/examples/typescript/namespace/GettingNamespaceInformation.ts +++ b/source/resources/examples/typescript/namespace/GettingNamespaceInformation.ts @@ -19,9 +19,9 @@ import { NamespaceId, RepositoryFactoryHttp } from 'symbol-sdk'; /* start block 01 */ -// replace with namespace name +// Replace with namespace name const namespaceId = new NamespaceId('foo'); -// replace with node endpoint +// Replace with node endpoint const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); const namespaceHttp = repositoryFactory.createNamespaceRepository(); diff --git a/source/resources/examples/typescript/namespace/GettingNamespaceRentalFee.ts b/source/resources/examples/typescript/namespace/GettingNamespaceRentalFee.ts index 5c55a8614..61adb1724 100644 --- a/source/resources/examples/typescript/namespace/GettingNamespaceRentalFee.ts +++ b/source/resources/examples/typescript/namespace/GettingNamespaceRentalFee.ts @@ -19,6 +19,7 @@ import { RepositoryFactoryHttp } from 'symbol-sdk'; /* start block 01 */ +// Replace with node endpoint const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; const repositoryHttp = new RepositoryFactoryHttp(nodeUrl); diff --git a/source/resources/examples/typescript/namespace/LinkingANamespaceToAMosaic.ts b/source/resources/examples/typescript/namespace/LinkingANamespaceToAMosaic.ts index 575b833e5..7c6c6326b 100644 --- a/source/resources/examples/typescript/namespace/LinkingANamespaceToAMosaic.ts +++ b/source/resources/examples/typescript/namespace/LinkingANamespaceToAMosaic.ts @@ -23,52 +23,59 @@ import { Deadline, MosaicId, NamespaceId, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -// replace with namespace name -const namespaceId = new NamespaceId('foo'); -// replace with mosaic id -const mosaicId = new MosaicId('7cdf3b117a3c40cc'); -/* end block 01 */ + /* start block 01 */ + // Replace with namespace name + const namespaceId = new NamespaceId('foo'); + // Replace with mosaic id + const mosaicId = new MosaicId('7cdf3b117a3c40cc'); + /* end block 01 */ -/* start block 02 */ -// replace with networkType -const networkType = NetworkType.TEST_NET; + /* start block 02 */ + const mosaicAliasTransaction = AliasTransaction.createForMosaic( + Deadline.create(epochAdjustment), + AliasAction.Link, + namespaceId, + mosaicId, + networkType, + UInt64.fromUint(2000000), + ); -const mosaicAliasTransaction = AliasTransaction.createForMosaic( - Deadline.create(epochAdjustment), - AliasAction.Link, - namespaceId, - mosaicId, - networkType, - UInt64.fromUint(2000000), -); + // Replace with private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); -// 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( - mosaicAliasTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + const signedTransaction = account.sign( + mosaicAliasTransaction, + networkGenerationHash, + ); + console.log('Signed transaction hash: ' + signedTransaction.hash); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 02 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 02 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/namespace/LinkingANamespaceToAnAddress.ts b/source/resources/examples/typescript/namespace/LinkingANamespaceToAnAddress.ts index d3027a4a2..626600435 100644 --- a/source/resources/examples/typescript/namespace/LinkingANamespaceToAnAddress.ts +++ b/source/resources/examples/typescript/namespace/LinkingANamespaceToAnAddress.ts @@ -23,53 +23,60 @@ import { AliasTransaction, Deadline, NamespaceId, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -// replace with namespace name -const namespaceId = new NamespaceId('foo'); -// replace with address -const rawAddress = 'TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I'; -const address = Address.createFromRawAddress(rawAddress); -/* end block 01 */ + /* start block 01 */ + // Replace with namespace name + const namespaceId = new NamespaceId('foo'); + // Replace with address + const rawAddress = 'TCHBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I'; + const address = Address.createFromRawAddress(rawAddress); + /* end block 01 */ -/* start block 02 */ -// replace with network type -const networkType = NetworkType.TEST_NET; + /* start block 02 */ + const addressAliasTransaction = AliasTransaction.createForAddress( + Deadline.create(epochAdjustment), + AliasAction.Link, + namespaceId, + address, + networkType, + UInt64.fromUint(2000000), + ); -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 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 = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + const signedTransaction = account.sign( + addressAliasTransaction, + networkGenerationHash, + ); + console.log('Signed transaction hash: ' + signedTransaction.hash); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 02 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 02 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/namespace/RegisteringANamespace.ts b/source/resources/examples/typescript/namespace/RegisteringANamespace.ts index 2ad0436d3..f0b6f3cc2 100644 --- a/source/resources/examples/typescript/namespace/RegisteringANamespace.ts +++ b/source/resources/examples/typescript/namespace/RegisteringANamespace.ts @@ -20,48 +20,55 @@ import { Account, Deadline, NamespaceRegistrationTransaction, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -// replace with namespace name -const namespaceName = 'foo'; -// replace with duration (in blocks) -const duration = UInt64.fromUint(172800); -// replace with network type -const networkType = NetworkType.TEST_NET; + /* start block 01 */ + // Replace with namespace name + const namespaceName = 'foo'; + // Replace with duration (in blocks) + const duration = UInt64.fromUint(172800); -const namespaceRegistrationTransaction = NamespaceRegistrationTransaction.createRootNamespace( - Deadline.create(epochAdjustment), - namespaceName, - duration, - networkType, - UInt64.fromUint(2000000), -); + const namespaceRegistrationTransaction = NamespaceRegistrationTransaction.createRootNamespace( + Deadline.create(epochAdjustment), + namespaceName, + duration, + 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( - namespaceRegistrationTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + // Replace with private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); + const signedTransaction = account.sign( + namespaceRegistrationTransaction, + networkGenerationHash, + ); + console.log('Signed transaction hash: ' + signedTransaction.hash); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 01 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 01 */ + } catch (e) { + console.log(e); + } +}; +example().then(); diff --git a/source/resources/examples/typescript/namespace/RegisteringASubnamespace.ts b/source/resources/examples/typescript/namespace/RegisteringASubnamespace.ts index b39c6b931..a3979d4c8 100644 --- a/source/resources/examples/typescript/namespace/RegisteringASubnamespace.ts +++ b/source/resources/examples/typescript/namespace/RegisteringASubnamespace.ts @@ -20,48 +20,55 @@ import { Account, Deadline, NamespaceRegistrationTransaction, - NetworkType, RepositoryFactoryHttp, UInt64, } from 'symbol-sdk'; -// Retrieve from node's /network/properties or RepositoryFactory -const epochAdjustment = 123456789; +const example = async (): Promise => { + try { + // Network information + const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; + const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); + const epochAdjustment = await repositoryFactory + .getEpochAdjustment() + .toPromise(); + const networkType = await repositoryFactory.getNetworkType().toPromise(); + const networkGenerationHash = await repositoryFactory + .getGenerationHash() + .toPromise(); -/* start block 01 */ -// replace with root namespace name -const rootNamespaceName = 'foo'; -// replace with root subnamespace name -const subnamespaceName = 'bar'; -// replace with network type -const networkType = NetworkType.TEST_NET; + /* start block 01 */ + // Replace with root namespace name + const rootNamespaceName = 'foo'; + // Replace with root subnamespace name + const subnamespaceName = 'bar'; -const namespaceRegistrationTransaction = NamespaceRegistrationTransaction.createSubNamespace( - Deadline.create(epochAdjustment), - subnamespaceName, - rootNamespaceName, - networkType, - UInt64.fromUint(2000000), -); + const namespaceRegistrationTransaction = NamespaceRegistrationTransaction.createSubNamespace( + Deadline.create(epochAdjustment), + subnamespaceName, + rootNamespaceName, + 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( - namespaceRegistrationTransaction, - networkGenerationHash, -); -// replace with node endpoint -const nodeUrl = 'http://api-01.us-east-1.testnet.symboldev.network:3000'; -const repositoryFactory = new RepositoryFactoryHttp(nodeUrl); -const transactionHttp = repositoryFactory.createTransactionRepository(); + // Replace with private key + const privateKey = + '1111111111111111111111111111111111111111111111111111111111111111'; + const account = Account.createFromPrivateKey(privateKey, networkType); + const signedTransaction = account.sign( + namespaceRegistrationTransaction, + networkGenerationHash, + ); + console.log('Signed transaction hash: ' + signedTransaction.hash); -transactionHttp.announce(signedTransaction).subscribe( - (x) => console.log(x), - (err) => console.error(err), -); -/* end block 01 */ + const transactionHttp = repositoryFactory.createTransactionRepository(); + transactionHttp.announce(signedTransaction).subscribe( + (x) => console.log(x), + (err) => console.error(err), + ); + /* end block 01 */ + } catch (e) { + console.log(e); + } +}; +example().then();