From 0ade873b7f8a31169733b69532ece42e4f548ef7 Mon Sep 17 00:00:00 2001 From: Momchil Date: Tue, 10 Mar 2020 16:42:05 +0200 Subject: [PATCH 1/2] #CRYPTOAPIS-2387 4.3.0 - ZIL added (under development), getUnconfirmedByAddress and getTransactionSizeForHDWallet to BTC-based --- CHANGELOG.md | 21 +++++ README.md | 24 +++++- package-lock.json | 2 +- package.json | 5 +- src/common/blockchain/base-address.js | 21 +++++ src/common/blockchain/base-transaction.js | 25 ++++++ src/rest-apis/blockchain/ETH/index.js | 2 +- src/rest-apis/blockchain/ETH/transaction.js | 4 +- src/rest-apis/blockchain/ZIL/address.js | 58 ++++++++++++++ src/rest-apis/blockchain/ZIL/index.js | 28 +++++++ src/rest-apis/blockchain/ZIL/transaction.js | 78 +++++++++++++++++++ src/rest-apis/blockchain/index.js | 2 + tests/index.js | 2 + .../rest-apis/blockchains/ZIL/address.test.js | 9 +++ .../blockchains/ZIL/blockchain.test.js | 11 +++ tests/rest-apis/blockchains/ZIL/index.js | 9 +++ .../blockchains/ZIL/transaction.test.js | 15 ++++ tests/rest-apis/blockchains/ZIL/zil.test.js | 13 ++++ 18 files changed, 322 insertions(+), 7 deletions(-) create mode 100644 src/rest-apis/blockchain/ZIL/address.js create mode 100644 src/rest-apis/blockchain/ZIL/index.js create mode 100644 src/rest-apis/blockchain/ZIL/transaction.js create mode 100644 tests/rest-apis/blockchains/ZIL/address.test.js create mode 100644 tests/rest-apis/blockchains/ZIL/blockchain.test.js create mode 100644 tests/rest-apis/blockchains/ZIL/index.js create mode 100644 tests/rest-apis/blockchains/ZIL/transaction.test.js create mode 100644 tests/rest-apis/blockchains/ZIL/zil.test.js diff --git a/CHANGELOG.md b/CHANGELOG.md index ff286d3..a0c1d61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## 2020-03-10, Version 4.3.0 + +#### Added: +* Zilliqa (ZIL) - new blockchain (under development) + * `mainnet` only, `testnet` coming soon + * exposed endpoints so far: + * caClient.BC.ZIL.blockchain.getInfo + * caClient.BC.ZIL.blockchain.getBlockByHash + * caClient.BC.ZIL.blockchain.getBlockByHeight + * caClient.BC.ZIL.blockchain.getLatestBlock + * caClient.BC.ZIL.address.getInfo + * caClient.BC.ZIL.address.getTransactionsByAddress + * caClient.BC.ZIL.address.generateAddress + * caClient.BC.ZIL.transaction.getTransaction + * caClient.BC.ZIL.transaction.getTransactionsByBlock + * caClient.BC.ZIL.transaction.getTransactionByBlockNumber + * caClient.BC.ZIL.transaction.getTransactionByBlockHash +* XXX (BTC / BCH / LTC / DASH / DOGE) + * caClient.BC.XXX.address.getUnconfirmedByAddress + * caClient.BC.XXX.transaction.getTransactionSizeForHDWallet + ## 2019-12-27, Version 4.2.2 #### Notable changes: diff --git a/README.md b/README.md index 82ae7fb..a8e55b8 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ It will print the following: ## List of all methods available NOTES: -* XXX - blockchain (BTC / BCH / LTC / DOGE / DASH / ETH / ETC) +* XXX - blockchain (BTC / BCH / LTC / DOGE / DASH / ETH / ETC / ZIL) * doc links target BTC / ETH in our documentation to avoid repetition. For other blockchains refer to the corresponding parts in our [documentation](https://docs.cryptoapis.io/) ### BTC / BCH / LTC / DOGE / DASH methods @@ -90,6 +90,7 @@ NOTES: * caClient.BC.XXX.address.generateAddress ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-address-generate-address-endpoint)) * caClient.BC.XXX.address.getAddressTransactions ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-address-transactions-endpoint)) * caClient.BC.XXX.address.multipleAddressesInfo ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-multiple-addresses-info-endpoint)) +* caClient.BC.XXX.address.getUnconfirmedByAddress ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-address-unconfirmed-transactions-endpoint)) #### Wallets methods * caClient.BC.XXX.wallet.createWallet ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-wallet-create-wallet-endpoint)) @@ -122,6 +123,7 @@ NOTES: * caClient.BC.XXX.transaction.getTransactionsFee ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-transactions-fee-endpoint)) * caClient.BC.XXX.transaction.getTransactionSize ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-transactions-size)) * caClient.BC.XXX.transaction.refund ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-refund-transaction)) +* caClient.BC.XXX.transaction.getTransactionSizeForHDWallet ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-hd-wallet-transactions-size)) #### Payment Forwarding methods * caClient.BC.XXX.paymentForwarding.createPaymentForwarding ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/btc/index#btc-payment-forwarding-create-payment-endpoint)) @@ -218,6 +220,26 @@ NOTES: * caClient.BC.XXX.webhook.deleteAllMyWebhooks ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/eth/index#eth-delete-all-webhooks-endpoints)) +### ZIL methods + +#### Blockchain methods +* caClient.BC.XXX.blockchain.getInfo ([docs]()) +* caClient.BC.XXX.blockchain.getBlockByHash ([docs]()) +* caClient.BC.XXX.blockchain.getBlockByHeight ([docs]()) +* caClient.BC.XXX.blockchain.getLatestBlock ([docs]()) + +#### Addresses methods +* caClient.BC.XXX.address.getInfo ([docs]()) +* caClient.BC.XXX.address.getTransactionsByAddress ([docs]()) +* caClient.BC.XXX.address.generateAddress ([docs]()) + +#### Transaction methods +* caClient.BC.XXX.transaction.getTransaction ([docs]()) +* caClient.BC.XXX.transaction.getTransactionsByBlock ([docs]()) +* caClient.BC.XXX.transaction.getTransactionByBlockNumber ([docs]()) +* caClient.BC.XXX.transaction.getTransactionByBlockHash ([docs]()) + + # Crypto Market Data APIs #### Metadata diff --git a/package-lock.json b/package-lock.json index 39ee481..9636559 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { "name": "cryptoapis.io", - "version": "4.2.3", + "version": "4.3.0", "lockfileVersion": 1 } diff --git a/package.json b/package.json index f45b1a1..824272e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cryptoapis.io", - "version": "4.2.3", + "version": "4.3.0", "description": "Crypto APIs SDK", "main": "src/index.js", "scripts": { @@ -25,6 +25,7 @@ "cryptocurrency", "coinmarketcap", "coinapi", - "omni" + "omni", + "zil" ] } diff --git a/src/common/blockchain/base-address.js b/src/common/blockchain/base-address.js index 5443762..1c3b049 100644 --- a/src/common/blockchain/base-address.js +++ b/src/common/blockchain/base-address.js @@ -53,6 +53,27 @@ class BaseAddress extends BaseChainComponent { return this.request.get(this.basePath + this.getSelectedNetwork() + '/address/' + address + '/transactions', combinedQueryParams); } + /** + * Get Unconfirmed Transactions By Address + * + * @async + * @desc The Address Unconfirmed Transactions Endpoint returns all information available about a particular address, including an array of unconfirmed transactions. + * + * @param {string} address - Address in blockchain. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getUnconfirmedByAddress(address, queryParams = {}) { + const combinedQueryParams = { + index: 0, // First index of returned results. + limit: 50, // Sets the number of returned results. + ...queryParams, + }; + + return this.request.get(this.basePath + this.getSelectedNetwork() + '/address/' + address + '/unconfirmed-transactions', combinedQueryParams); + } + /** * Multiple Addresses Info Endpoint * diff --git a/src/common/blockchain/base-transaction.js b/src/common/blockchain/base-transaction.js index bd2178b..93b3217 100644 --- a/src/common/blockchain/base-transaction.js +++ b/src/common/blockchain/base-transaction.js @@ -299,6 +299,31 @@ class BaseTransaction extends BaseChainComponent { return this.request.post(this.basePath + this.getSelectedNetwork() + '/txs/refund', data, queryParams); } + /** + * Transaction Size for HD Wallet + * + * @async + * @desc Using this endpoint you can get the approximate size of a transaction in HD wallet. + * + * @param {string} walletName + * @param {string} password + * @param {array} outputs + * @param {object} [optData] - Optional data. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise|Promise} + */ + getTransactionSizeForHDWallet(walletName, password, outputs, optData = {}, queryParams = {}) { + const data = { + ...optData, + walletName, + password, + outputs, + }; + + return this.request.post(this.basePath + this.getSelectedNetwork() + '/wallets/hd/txs/size ', data, queryParams); + } + } module.exports = BaseTransaction; diff --git a/src/rest-apis/blockchain/ETH/index.js b/src/rest-apis/blockchain/ETH/index.js index 351b631..f769339 100644 --- a/src/rest-apis/blockchain/ETH/index.js +++ b/src/rest-apis/blockchain/ETH/index.js @@ -5,9 +5,9 @@ const Blockchain = require('../../../common/blockchain/base-blockchain'); const Contract = require('../../../common/blockchain/eth-base-contract'); const Address = require('../../../common/blockchain/eth-base-address'); const PaymentForwarding = require('../../../common/blockchain/eth-base-payment-forwarding'); -const Transaction = require('../../../common/blockchain/eth-base-transaction'); const Token = require('./token'); +const Transaction = require('./transaction'); const Webhook = require('./webhook'); const ID = 'eth'; diff --git a/src/rest-apis/blockchain/ETH/transaction.js b/src/rest-apis/blockchain/ETH/transaction.js index 5751927..92b5ec8 100644 --- a/src/rest-apis/blockchain/ETH/transaction.js +++ b/src/rest-apis/blockchain/ETH/transaction.js @@ -1,6 +1,6 @@ const EthBaseTransaction = require('../../../common/blockchain/eth-base-transaction'); -class ETHransaction extends EthBaseTransaction { +class ETHTransaction extends EthBaseTransaction { /** * Get Internal Transactions Endpoint @@ -19,4 +19,4 @@ class ETHransaction extends EthBaseTransaction { } -module.exports = ETHransaction; +module.exports = ETHTransaction; diff --git a/src/rest-apis/blockchain/ZIL/address.js b/src/rest-apis/blockchain/ZIL/address.js new file mode 100644 index 0000000..abbd20b --- /dev/null +++ b/src/rest-apis/blockchain/ZIL/address.js @@ -0,0 +1,58 @@ +const BaseChainComponent = require('../../../common/blockchain/base-chain-component'); + +class ZILAddress extends BaseChainComponent { + + /** + * Address Endpoint + * + * @async + * @desc The default Address Endpoint strikes a general information about addresses. + * + * @param {string} address - Address in blockchain. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getInfo(address, queryParams = {}) { + return this.request.get(this.basePath + this.getSelectedNetwork() + '/address/' + address, queryParams); + } + + /** + * Generate Address Endpoint + * + * @async + * @desc The Generate Address endpoint allows you to generate private-public key-pairs along with an associated public address. + * + * @param {object} [optData] - Optional data. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + generateAddress(optData = {}, queryParams = {}) { + return this.request.post(this.basePath + this.getSelectedNetwork() + '/address', optData, queryParams); + } + + /** + * Address Transactions Endpoint + * + * @async + * @desc The Address Transactions Endpoint returns all information available about a particular address, including an array of complete transactions. + * + * @param {string} address - Address in blockchain. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getAddressTransactions(address, queryParams = {}) { + const combinedQueryParams = { + index: 0, // First index of returned results. + limit: 50, // Sets the number of returned results. + ...queryParams, + }; + + return this.request.get(this.basePath + this.getSelectedNetwork() + '/address/' + address + '/transactions', combinedQueryParams); + } + +} + +module.exports = ZILAddress; diff --git a/src/rest-apis/blockchain/ZIL/index.js b/src/rest-apis/blockchain/ZIL/index.js new file mode 100644 index 0000000..e7f19b8 --- /dev/null +++ b/src/rest-apis/blockchain/ZIL/index.js @@ -0,0 +1,28 @@ +const BlockchainNetwork = require('../../../common/blockchain/blockchain-network'); + +const Blockchain = require('../../../common/blockchain/base-blockchain'); + +const Address = require('./address'); +const Transaction = require('./transaction'); + +const ID = 'zil'; +const NETWORKS = { + MAINNET: 'mainnet', +}; + +class ZIL extends BlockchainNetwork { + + constructor(...props) { + super(...props, ID, NETWORKS, NETWORKS.MAINNET); + + this.address = new Address(...props, ID); + this.blockchain = new Blockchain(...props, ID); + this.transaction = new Transaction(...props, ID); + } + +} + +module.exports = { + ZIL, + NETWORKS, +}; diff --git a/src/rest-apis/blockchain/ZIL/transaction.js b/src/rest-apis/blockchain/ZIL/transaction.js new file mode 100644 index 0000000..7bda647 --- /dev/null +++ b/src/rest-apis/blockchain/ZIL/transaction.js @@ -0,0 +1,78 @@ +const BaseChainComponent = require('../../../common/blockchain/base-chain-component'); + +class ZILTransaction extends BaseChainComponent { + + /** + * Transaction Hash Endpoint + * + * @async + * @desc The Transaction Hash Endpoint returns detailed information about a given transaction based on its hash. + * + * @param {string} txHash - Hash of the transaction in blockchain. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getTransaction(txHash, queryParams = {}) { + return this.request.get(this.basePath + this.getSelectedNetwork() + '/txs/hash/' + txHash, queryParams); + } + + /** + * Transactions Index Endpoint by Index, Limit and Block Number + * + * @async + * @desc The Transaction Index Endpoint by Index, Limit and Block Number returns detailed information about + * transactions for the block height defined, starting from the index defined up to the limit defined. + * + * @param {number} block - Block number. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getTransactionsByBlock(block, queryParams = {}) { + const combinedQueryParams = { + index: 0, // Index - start from. + limit: 50, // Limit - up to. + ...queryParams, + }; + + return this.request.get(this.basePath + this.getSelectedNetwork() + '/txs/block/' + block, combinedQueryParams); + } + + /** + * Transactions Index Endpoint by Block Number + * + * @async + * @desc The Transaction Index Endpoint by Block Number returns detailed information about a given transaction based + * on its index and block height. + * + * @param {number} blockNumber - Block height. + * @param {number} txIndex - Index of the transaction in block. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getTransactionByBlockNumber(blockNumber, txIndex, queryParams = {}) { + return this.request.get(this.basePath + this.getSelectedNetwork() + '/txs/block/' + blockNumber + '/' + txIndex, queryParams); + } + + /** + * Transactions Index Endpoint by Block Hash + * + * @async + * @desc The Transaction Index Endpoint by Block Hash returns detailed information about a given transaction based + * on its index and block hash. + * + * @param {string} blockHash - Block hash. + * @param {number} txIndex - Index of the transaction in block. + * @param {object} [queryParams] - Additional query parameters. + * + * @returns {*|Promise} + */ + getTransactionByBlockHash(blockHash, txIndex, queryParams = {}) { + return this.request.get(this.basePath + this.getSelectedNetwork() + '/txs/block/' + blockHash + '/' + txIndex, queryParams); + } + +} + +module.exports = ZILTransaction; diff --git a/src/rest-apis/blockchain/index.js b/src/rest-apis/blockchain/index.js index 2b30fd2..1eeb18b 100644 --- a/src/rest-apis/blockchain/index.js +++ b/src/rest-apis/blockchain/index.js @@ -5,6 +5,7 @@ const {DOGE} = require('./DOGE'); const {ETC} = require('./ETC'); const {ETH} = require('./ETH'); const {LTC} = require('./LTC'); +const {ZIL} = require('./ZIL'); class Blockchain { @@ -16,6 +17,7 @@ class Blockchain { this.ETC = new ETC(...props); this.ETH = new ETH(...props); this.LTC = new LTC(...props); + this.ZIL = new ZIL(...props); } /** diff --git a/tests/index.js b/tests/index.js index dc0290d..eff6249 100644 --- a/tests/index.js +++ b/tests/index.js @@ -11,6 +11,7 @@ const DOGE = require('./rest-apis/blockchains/DOGE'); const ETC = require('./rest-apis/blockchains/ETC'); const ETH = require('./rest-apis/blockchains/ETH'); const LTC = require('./rest-apis/blockchains/LTC'); +const ZIL = require('./rest-apis/blockchains/ZIL'); (async function () { if (!process.argv[2]) { @@ -32,4 +33,5 @@ const LTC = require('./rest-apis/blockchains/LTC'); await ETC(caClient); await ETH(caClient); await LTC(caClient); + await ZIL(caClient); })(); diff --git a/tests/rest-apis/blockchains/ZIL/address.test.js b/tests/rest-apis/blockchains/ZIL/address.test.js new file mode 100644 index 0000000..a91e7df --- /dev/null +++ b/tests/rest-apis/blockchains/ZIL/address.test.js @@ -0,0 +1,9 @@ +async function Address(caClient) { + console.log('\n::ZIL Address'); + + const newAddress = await caClient.BC.ZIL.address.generateAddress().then(response => response.payload.bechAddress); + await caClient.BC.ZIL.address.getInfo(newAddress); + await caClient.BC.ZIL.address.getAddressTransactions(newAddress); +} + +module.exports = Address; diff --git a/tests/rest-apis/blockchains/ZIL/blockchain.test.js b/tests/rest-apis/blockchains/ZIL/blockchain.test.js new file mode 100644 index 0000000..07096cf --- /dev/null +++ b/tests/rest-apis/blockchains/ZIL/blockchain.test.js @@ -0,0 +1,11 @@ +async function Blockchain(caClient) { + console.log('\n::ZIL Blockchain'); + + const chainInfo = await caClient.BC.ZIL.blockchain.getInfo().then(response => response.payload); + const block = await caClient.BC.ZIL.blockchain.getBlockByHeight(chainInfo.height - 12).then(response => response.payload); + + await caClient.BC.ZIL.blockchain.getBlockByHash(block.hash); + await caClient.BC.ZIL.blockchain.getLatestBlock(); +} + +module.exports = Blockchain; diff --git a/tests/rest-apis/blockchains/ZIL/index.js b/tests/rest-apis/blockchains/ZIL/index.js new file mode 100644 index 0000000..068eda6 --- /dev/null +++ b/tests/rest-apis/blockchains/ZIL/index.js @@ -0,0 +1,9 @@ +const ZIL = require('./zil.test'); + +async function middleware(caClient, next, network = caClient.BC.ZIL.NETWORKS.MAINNET) { + caClient.BC.ZIL.switchNetwork(network); + + await next(caClient); +} + +module.exports = (caClient, network) => middleware(caClient, ZIL, network); diff --git a/tests/rest-apis/blockchains/ZIL/transaction.test.js b/tests/rest-apis/blockchains/ZIL/transaction.test.js new file mode 100644 index 0000000..cf3d302 --- /dev/null +++ b/tests/rest-apis/blockchains/ZIL/transaction.test.js @@ -0,0 +1,15 @@ +async function Transaction(caClient) { + console.log('\n::ZIL Transaction'); + + const txHash = '0xf620ab8c2b5af189c5ad74cf6943b6ff6b94d780330d3dc139c6b59d08d7c410'; + + const transaction = await caClient.BC.ZIL.transaction.getTransaction(txHash).then(response => response ? response.payload : null); + + if (transaction) { + await caClient.BC.ZIL.transaction.getTransactionsByBlock(transaction.block_number); + await caClient.BC.ZIL.transaction.getTransactionByBlockNumber(transaction.block_number, transaction.index); + await caClient.BC.ZIL.transaction.getTransactionByBlockHash(transaction.block_hash, transaction.index); + } +} + +module.exports = Transaction; diff --git a/tests/rest-apis/blockchains/ZIL/zil.test.js b/tests/rest-apis/blockchains/ZIL/zil.test.js new file mode 100644 index 0000000..e35f3fd --- /dev/null +++ b/tests/rest-apis/blockchains/ZIL/zil.test.js @@ -0,0 +1,13 @@ +const Address = require('./address.test'); +const Blockchain = require('./blockchain.test'); +const Transaction = require('./transaction.test'); + +async function ZIL(caClient) { + console.log('\n::ZIL'); + + await Address(caClient); + await Blockchain(caClient); + await Transaction(caClient); +} + +module.exports = caClient => ZIL(caClient); From f37aed58545a740fcbb9e80edc1f00842c3eb2be Mon Sep 17 00:00:00 2001 From: Momchil Date: Tue, 10 Mar 2020 16:46:43 +0200 Subject: [PATCH 2/2] #CRYPTOAPIS-2387 README links --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a8e55b8..a2e9ff8 100644 --- a/README.md +++ b/README.md @@ -223,21 +223,21 @@ NOTES: ### ZIL methods #### Blockchain methods -* caClient.BC.XXX.blockchain.getInfo ([docs]()) -* caClient.BC.XXX.blockchain.getBlockByHash ([docs]()) -* caClient.BC.XXX.blockchain.getBlockByHeight ([docs]()) -* caClient.BC.XXX.blockchain.getLatestBlock ([docs]()) +* caClient.BC.XXX.blockchain.getInfo ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-chain-endpoint)) +* caClient.BC.XXX.blockchain.getBlockByHash ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-block-hash-endpoint)) +* caClient.BC.XXX.blockchain.getBlockByHeight ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-block-height-endpoint)) +* caClient.BC.XXX.blockchain.getLatestBlock ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-latest-block-endpoint)) #### Addresses methods -* caClient.BC.XXX.address.getInfo ([docs]()) -* caClient.BC.XXX.address.getTransactionsByAddress ([docs]()) -* caClient.BC.XXX.address.generateAddress ([docs]()) +* caClient.BC.XXX.address.getInfo ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-address-endpoint)) +* caClient.BC.XXX.address.getTransactionsByAddress ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-transactions-address-endpoint)) +* caClient.BC.XXX.address.generateAddress ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-generate-address-endpoint)) #### Transaction methods -* caClient.BC.XXX.transaction.getTransaction ([docs]()) -* caClient.BC.XXX.transaction.getTransactionsByBlock ([docs]()) -* caClient.BC.XXX.transaction.getTransactionByBlockNumber ([docs]()) -* caClient.BC.XXX.transaction.getTransactionByBlockHash ([docs]()) +* caClient.BC.XXX.transaction.getTransaction ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-transaction-hash-endpoint)) +* caClient.BC.XXX.transaction.getTransactionsByBlock ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-transaction-index-endpoint-by-index-limit-block-number)) +* caClient.BC.XXX.transaction.getTransactionByBlockNumber ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-transaction-index-endpoint-by-block-number)) +* caClient.BC.XXX.transaction.getTransactionByBlockHash ([docs](https://docs.cryptoapis.io/rest-apis/blockchain-as-a-service-apis/zil/index#zil-transaction-index-endpoint-by-block-hash)) # Crypto Market Data APIs