mirror of
https://github.com/Permissionless-Software-Foundation/bch-js.git
synced 2026-09-22 17:12:01 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70743876d2 | ||
|
|
ab51afb2a8 |
+65
-19
@@ -1047,11 +1047,15 @@ class Utils {
|
||||
*
|
||||
* (async () => {
|
||||
* try {
|
||||
* const utxos = await bchjs.Electrumx.utxos(`bitcoincash:qpcqs0n5xap26un2828n55gan2ylj7wavvzeuwdx05`)
|
||||
* const utxos = await bchjs.Electrumx.utxo([
|
||||
* "bitcoincash:qq6mvsm7l92d77zpymmltvaw09p5uzghyuyx7spygg",
|
||||
* "bitcoincash:qpjdrs8qruzh8xvusdfmutjx62awcepnhyperm3g89",
|
||||
* "bitcoincash:qzygn28zpgeemnptkn26xzyuzzfu9l8f9vfvq7kptk"
|
||||
* ])
|
||||
*
|
||||
* const utxoInfo = await bchjs.SLP.Utils.hydrateUtxos(utxos)
|
||||
* const utxoInfo = await bchjs.SLP.Utils.hydrateUtxos(utxos.utxos)
|
||||
*
|
||||
* console.log(`utxoInfo: ${JSON.stringify(utxoInfo, null, 2)}`)
|
||||
* console.log(`${JSON.stringify(utxoInfo, null, 2)}`)
|
||||
* } catch (error) {
|
||||
* console.error(error)
|
||||
* }
|
||||
@@ -1059,23 +1063,65 @@ class Utils {
|
||||
*
|
||||
* // returns
|
||||
* {
|
||||
* "txid": "fde117b1f176b231e2fa9a6cb022e0f7c31c288221df6bcb05f8b7d040ca87cb",
|
||||
* "vout": 1,
|
||||
* "amount": 0.00000546,
|
||||
* "satoshis": 546,
|
||||
* "height": 596089,
|
||||
* "confirmations": 748,
|
||||
* "utxoType": "token",
|
||||
* "tokenId": "497291b8a1dfe69c8daea50677a3d31a5ef0e9484d8bebb610dac64bbc202fb7",
|
||||
* "tokenTicker": "TOK-CH",
|
||||
* "tokenName": "TokyoCash",
|
||||
* "tokenDocumentUrl": "",
|
||||
* "tokenDocumentHash": "",
|
||||
* "decimals": 8,
|
||||
* "tokenQty": 2,
|
||||
* "isValid": true,
|
||||
* "tokenType": 1
|
||||
* "slpUtxos": [
|
||||
* {
|
||||
* "utxos": [
|
||||
* {
|
||||
* "height": 654522,
|
||||
* "tx_hash": "516e763932061f9e868652d727045b714db1ecac459e84cd52b5b4cb39572ecc",
|
||||
* "tx_pos": 0,
|
||||
* "value": 6000,
|
||||
* "satoshis": 6000,
|
||||
* "txid": "516e763932061f9e868652d727045b714db1ecac459e84cd52b5b4cb39572ecc",
|
||||
* "vout": 0,
|
||||
* "isValid": false
|
||||
* }
|
||||
* ],
|
||||
* "address": "bitcoincash:qq6mvsm7l92d77zpymmltvaw09p5uzghyuyx7spygg"
|
||||
* },
|
||||
* {
|
||||
* "utxos": [
|
||||
* {
|
||||
* "height": 654522,
|
||||
* "tx_hash": "8ec01d851d9df9fb4b4331275e2ff680257c224100d0081cec6fbeedf982f738",
|
||||
* "tx_pos": 1,
|
||||
* "value": 546,
|
||||
* "satoshis": 546,
|
||||
* "txid": "8ec01d851d9df9fb4b4331275e2ff680257c224100d0081cec6fbeedf982f738",
|
||||
* "vout": 1,
|
||||
* "isValid": false
|
||||
* }
|
||||
* ],
|
||||
* "address": "bitcoincash:qpjdrs8qruzh8xvusdfmutjx62awcepnhyperm3g89"
|
||||
* },
|
||||
* {
|
||||
* "utxos": [
|
||||
* {
|
||||
* "height": 654522,
|
||||
* "tx_hash": "072a1e2c2d5f1309bf4eef7f88684e4ecd544a903b386b07f3e04b91b13d8af1",
|
||||
* "tx_pos": 0,
|
||||
* "value": 6999,
|
||||
* "satoshis": 6999,
|
||||
* "txid": "072a1e2c2d5f1309bf4eef7f88684e4ecd544a903b386b07f3e04b91b13d8af1",
|
||||
* "vout": 0,
|
||||
* "isValid": false
|
||||
* },
|
||||
* {
|
||||
* "height": 654522,
|
||||
* "tx_hash": "a72db6a0883ecb8e379f317231b2571e41e041b7b1107e3e54c2e0b3386ac6ca",
|
||||
* "tx_pos": 1,
|
||||
* "value": 546,
|
||||
* "satoshis": 546,
|
||||
* "txid": "a72db6a0883ecb8e379f317231b2571e41e041b7b1107e3e54c2e0b3386ac6ca",
|
||||
* "vout": 1,
|
||||
* "isValid": false
|
||||
* }
|
||||
* ],
|
||||
* "address": "bitcoincash:qzygn28zpgeemnptkn26xzyuzzfu9l8f9vfvq7kptk"
|
||||
* }
|
||||
* ]
|
||||
* }
|
||||
*
|
||||
*/
|
||||
// Same as tokenUtxoDetails(), but reduces API calls by having bch-api server
|
||||
// do the heavy lifting.
|
||||
|
||||
+68
-42
@@ -510,22 +510,26 @@ describe(`#SLP`, () => {
|
||||
it("should hydrate UTXOs", async () => {
|
||||
const utxos = [
|
||||
{
|
||||
txid:
|
||||
"d56a2b446d8149c39ca7e06163fe8097168c3604915f631bc58777d669135a56",
|
||||
vout: 3,
|
||||
value: "6816",
|
||||
height: 606848,
|
||||
confirmations: 13,
|
||||
satoshis: 6816
|
||||
},
|
||||
{
|
||||
txid:
|
||||
"d56a2b446d8149c39ca7e06163fe8097168c3604915f631bc58777d669135a56",
|
||||
vout: 2,
|
||||
value: "546",
|
||||
height: 606848,
|
||||
confirmations: 13,
|
||||
satoshis: 546
|
||||
utxos: [
|
||||
{
|
||||
txid:
|
||||
"d56a2b446d8149c39ca7e06163fe8097168c3604915f631bc58777d669135a56",
|
||||
vout: 3,
|
||||
value: "6816",
|
||||
height: 606848,
|
||||
confirmations: 13,
|
||||
satoshis: 6816
|
||||
},
|
||||
{
|
||||
txid:
|
||||
"d56a2b446d8149c39ca7e06163fe8097168c3604915f631bc58777d669135a56",
|
||||
vout: 2,
|
||||
value: "546",
|
||||
height: 606848,
|
||||
confirmations: 13,
|
||||
satoshis: 546
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -534,36 +538,58 @@ describe(`#SLP`, () => {
|
||||
|
||||
// Test the general structure of the output.
|
||||
assert.isArray(result.slpUtxos)
|
||||
assert.equal(result.slpUtxos.length, 2)
|
||||
assert.equal(result.slpUtxos.length, 1)
|
||||
assert.equal(result.slpUtxos[0].utxos.length, 2)
|
||||
|
||||
// Test the non-slp UTXO.
|
||||
assert.property(result.slpUtxos[0], "txid")
|
||||
assert.property(result.slpUtxos[0], "vout")
|
||||
assert.property(result.slpUtxos[0], "value")
|
||||
assert.property(result.slpUtxos[0], "height")
|
||||
assert.property(result.slpUtxos[0], "confirmations")
|
||||
assert.property(result.slpUtxos[0], "satoshis")
|
||||
assert.property(result.slpUtxos[0], "isValid")
|
||||
assert.equal(result.slpUtxos[0].isValid, false)
|
||||
assert.property(result.slpUtxos[0].utxos[0], "txid")
|
||||
assert.property(result.slpUtxos[0].utxos[0], "vout")
|
||||
assert.property(result.slpUtxos[0].utxos[0], "value")
|
||||
assert.property(result.slpUtxos[0].utxos[0], "height")
|
||||
assert.property(result.slpUtxos[0].utxos[0], "confirmations")
|
||||
assert.property(result.slpUtxos[0].utxos[0], "satoshis")
|
||||
assert.property(result.slpUtxos[0].utxos[0], "isValid")
|
||||
assert.equal(result.slpUtxos[0].utxos[0].isValid, false)
|
||||
|
||||
// Test the slp UTXO.
|
||||
assert.property(result.slpUtxos[1], "txid")
|
||||
assert.property(result.slpUtxos[1], "vout")
|
||||
assert.property(result.slpUtxos[1], "value")
|
||||
assert.property(result.slpUtxos[1], "height")
|
||||
assert.property(result.slpUtxos[1], "confirmations")
|
||||
assert.property(result.slpUtxos[1], "satoshis")
|
||||
assert.property(result.slpUtxos[1], "isValid")
|
||||
assert.equal(result.slpUtxos[1].isValid, true)
|
||||
assert.property(result.slpUtxos[1], "transactionType")
|
||||
assert.property(result.slpUtxos[1], "tokenId")
|
||||
assert.property(result.slpUtxos[1], "tokenTicker")
|
||||
assert.property(result.slpUtxos[1], "tokenName")
|
||||
assert.property(result.slpUtxos[1], "tokenDocumentUrl")
|
||||
assert.property(result.slpUtxos[1], "tokenDocumentHash")
|
||||
assert.property(result.slpUtxos[1], "decimals")
|
||||
assert.property(result.slpUtxos[1], "tokenType")
|
||||
assert.property(result.slpUtxos[1], "tokenQty")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "txid")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "vout")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "value")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "height")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "confirmations")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "satoshis")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "isValid")
|
||||
assert.equal(result.slpUtxos[0].utxos[1].isValid, true)
|
||||
assert.property(result.slpUtxos[0].utxos[1], "transactionType")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenId")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenTicker")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenName")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenDocumentUrl")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenDocumentHash")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "decimals")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenType")
|
||||
assert.property(result.slpUtxos[0].utxos[1], "tokenQty")
|
||||
})
|
||||
|
||||
it("should process data directly from Electrumx", async () => {
|
||||
const addrs = [
|
||||
"bitcoincash:qq6mvsm7l92d77zpymmltvaw09p5uzghyuyx7spygg",
|
||||
"bitcoincash:qpjdrs8qruzh8xvusdfmutjx62awcepnhyperm3g89",
|
||||
"bitcoincash:qzygn28zpgeemnptkn26xzyuzzfu9l8f9vfvq7kptk"
|
||||
]
|
||||
|
||||
const utxos = await bchjs.Electrumx.utxo(addrs)
|
||||
// console.log(`utxos: ${JSON.stringify(utxos, null, 2)}`)
|
||||
|
||||
const result = await bchjs.SLP.Utils.hydrateUtxos(utxos.utxos)
|
||||
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||||
|
||||
// Test the general structure of the output.
|
||||
assert.isArray(result.slpUtxos)
|
||||
assert.equal(result.slpUtxos.length, 3)
|
||||
assert.equal(result.slpUtxos[0].utxos.length, 1)
|
||||
assert.equal(result.slpUtxos[1].utxos.length, 1)
|
||||
assert.equal(result.slpUtxos[2].utxos.length, 2)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user