mirror of
https://github.com/Permissionless-Software-Foundation/bch-js.git
synced 2026-09-22 00:52:01 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a08a4236d6 | ||
|
|
e700a22560 | ||
|
|
4573c63ca3 | ||
|
|
bd18e8a755 | ||
|
|
cf8f48ffe1 | ||
|
|
fc96b04a64 | ||
|
|
661a759f80 | ||
|
|
ba915e84cf | ||
|
|
eae7172e3d | ||
|
|
6dd2a0590f | ||
|
|
3152e87b5d | ||
|
|
4b66f3841d | ||
|
|
9f98a47682 | ||
|
|
0833e8ca78 | ||
|
|
e01a18b65e | ||
|
|
055cd7feca |
Generated
+7612
-7636
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -40,7 +40,7 @@
|
||||
"@chris.troutner/bip32-utils": "1.0.5",
|
||||
"@psf/bip21": "2.0.1",
|
||||
"@psf/bitcoincash-ops": "2.0.0",
|
||||
"@psf/bitcoincashjs-lib": "4.0.2",
|
||||
"@psf/bitcoincashjs-lib": "4.0.3",
|
||||
"@psf/coininfo": "4.0.0",
|
||||
"axios": "0.26.1",
|
||||
"bc-bip68": "1.0.5",
|
||||
|
||||
+5
-3
@@ -289,12 +289,12 @@ class ElectrumX {
|
||||
* }
|
||||
*
|
||||
*/
|
||||
async transactions (address, usrObj = null) {
|
||||
async transactions (address, usrObj = null, allTxs = false) {
|
||||
try {
|
||||
// Handle single address.
|
||||
if (typeof address === 'string') {
|
||||
const response = await axios.get(
|
||||
`${this.restURL}electrumx/transactions/${address}`,
|
||||
`${this.restURL}electrumx/transactions/${address}/${allTxs}`,
|
||||
this.axiosOptions
|
||||
)
|
||||
return response.data
|
||||
@@ -305,7 +305,8 @@ class ElectrumX {
|
||||
`${this.restURL}electrumx/transactions`,
|
||||
{
|
||||
addresses: address,
|
||||
usrObj // pass user data when making an internal call.
|
||||
usrObj, // pass user data when making an internal call.
|
||||
allTxs
|
||||
},
|
||||
this.axiosOptions
|
||||
)
|
||||
@@ -315,6 +316,7 @@ class ElectrumX {
|
||||
|
||||
throw new Error('Input address must be a string or array of strings.')
|
||||
} catch (error) {
|
||||
// console.log('Error in transactions(): ', error)
|
||||
if (error.response && error.response.data) throw error.response.data
|
||||
else throw error
|
||||
}
|
||||
|
||||
@@ -32,6 +32,28 @@ class Encryption {
|
||||
_this = this
|
||||
}
|
||||
|
||||
/**
|
||||
* @api encryption.getPubKey() getPubKey()
|
||||
* @apiName Encryption getPubKey()
|
||||
* @apiGroup Encryption
|
||||
* @apiDescription Get the public key for an address
|
||||
* Given an address, the command will search the blockchain for a public
|
||||
* key associated with that address. The address needs to have made at least
|
||||
* one spend transaction, in order for its public key to be retrievable.
|
||||
*
|
||||
* @apiExample Example usage:
|
||||
*(async () => {
|
||||
* try {
|
||||
* const addr = 'bitcoincash:qqlrzp23w08434twmvr4fxw672whkjy0py26r63g3d'
|
||||
* const pubkey = await bchjs.encryption.getPubKey(addr);
|
||||
* console.log(pubkey);
|
||||
* } catch(err) {
|
||||
* console.error(err)
|
||||
* }
|
||||
*})()
|
||||
*
|
||||
*/
|
||||
|
||||
// Search the blockchain for a public key associated with a BCH address.
|
||||
async getPubKey (addr) {
|
||||
try {
|
||||
|
||||
@@ -514,7 +514,7 @@ class PsfSlpIndexer {
|
||||
* }
|
||||
*
|
||||
*/
|
||||
async getTokenData2 (tokenId) {
|
||||
async getTokenData2 (tokenId, updateCache = false) {
|
||||
try {
|
||||
const url = `${this.restURL}psf/slp/token/data2`
|
||||
// console.log(`url: ${url}`)
|
||||
@@ -524,7 +524,7 @@ class PsfSlpIndexer {
|
||||
const response = await axios.post(
|
||||
// 'https://bchn.fullstack.cash/v5/psf/slp/token/data/',
|
||||
url,
|
||||
{ tokenId },
|
||||
{ tokenId, updateCache },
|
||||
this.axiosOptions
|
||||
)
|
||||
return response.data
|
||||
|
||||
@@ -407,6 +407,7 @@ class RawTransactions {
|
||||
// pass back the raw transaction data.
|
||||
/* exit quietly */
|
||||
}
|
||||
// console.log(`txDetails: ${JSON.stringify(txDetails, null, 2)}`)
|
||||
|
||||
return txDetails
|
||||
} catch (error) {
|
||||
|
||||
+9
-1
@@ -177,8 +177,15 @@ class UTXO {
|
||||
// Hydrate the UTXOs with additional token data.
|
||||
type1TokenUtxos = await this.hydrateTokenData(type1TokenUtxos)
|
||||
|
||||
// Collect BCH UTXOs above 1000 sats
|
||||
const bchUtxos = utxos.filter(x => x.isSlp === false && x.value > 1000)
|
||||
|
||||
// Collect all BCH UTXOs at 1000 sats or smaller
|
||||
// The prevents SLP tokens, BCMR, and other 'colored' UTXOs from being
|
||||
// accidentally included into normal BCH transactions.
|
||||
const infoUtxos = utxos.filter(x => x.isSlp === false && x.value <= 1000)
|
||||
|
||||
// Collect and hydrate any type1 baton UTXOs
|
||||
const bchUtxos = utxos.filter(x => x.isSlp === false)
|
||||
let type1BatonUtxos = utxos.filter(
|
||||
x => x.isSlp === true && x.type === 'baton' && x.tokenType === 1
|
||||
)
|
||||
@@ -208,6 +215,7 @@ class UTXO {
|
||||
const outObj = {
|
||||
address: addr,
|
||||
bchUtxos,
|
||||
infoUtxos,
|
||||
slpUtxos: {
|
||||
type1: {
|
||||
tokens: type1TokenUtxos,
|
||||
|
||||
@@ -318,7 +318,9 @@ describe('#blockchain', () => {
|
||||
it('should get info about the blockchain', async () => {
|
||||
const result = await bchjs.Blockchain.getBlockchainInfo()
|
||||
|
||||
console.log(`blockchain info: ${JSON.stringify(result, null, 2)}`)
|
||||
// console.log(`blockchain info: ${JSON.stringify(result, null, 2)}`)
|
||||
|
||||
assert.property(result, 'blocks')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -126,7 +126,7 @@ describe('#UTXO', () => {
|
||||
describe('#isValid', () => {
|
||||
it('should return true for valid UTXO with fullnode properties', async () => {
|
||||
const utxo = {
|
||||
txid: 'b94e1ff82eb5781f98296f0af2488ff06202f12ee92b0175963b8dba688d1b40',
|
||||
txid: '260d4fb4006a330660c805327c840d569d7547b7e3e9659fb423b3a041c2e254',
|
||||
vout: 0
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ describe('#UTXO', () => {
|
||||
|
||||
it('should return true for valid UTXO with fulcrum properties', async () => {
|
||||
const utxo = {
|
||||
tx_hash: 'b94e1ff82eb5781f98296f0af2488ff06202f12ee92b0175963b8dba688d1b40',
|
||||
tx_hash: '260d4fb4006a330660c805327c840d569d7547b7e3e9659fb423b3a041c2e254',
|
||||
tx_pos: 0
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ describe('#UTXO', () => {
|
||||
})
|
||||
|
||||
it('should process output of Utxo.get()', async () => {
|
||||
const utxo = await bchjs.Utxo.get('bitcoincash:qr4yscpw9jgq8ltajfeknpj32kamkf9knujffcdhyq')
|
||||
const utxo = await bchjs.Utxo.get('bitcoincash:qqgahqa5zkknmhmvsc98jndpwn3r77gqgc02x03jce')
|
||||
// console.log(`utxo: ${JSON.stringify(utxo, null, 2)}`)
|
||||
|
||||
const result = await bchjs.Utxo.isValid(utxo.bchUtxos[0])
|
||||
|
||||
@@ -15,7 +15,7 @@ describe('#control', () => {
|
||||
describe('#getNetworkInfo', () => {
|
||||
it('should get info on the full node', async () => {
|
||||
const result = await bchjs.Control.getNetworkInfo()
|
||||
console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||||
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||||
|
||||
assert.property(result, 'version')
|
||||
})
|
||||
|
||||
@@ -371,8 +371,13 @@ describe('#ElectrumX', () => {
|
||||
})
|
||||
})
|
||||
|
||||
/*
|
||||
CT 3/14/23 - This test is frequently failing in BVT due to 429 errors.
|
||||
describe('#sortAllTxs', () => {
|
||||
it('should GET transaction history for a single address', async () => {
|
||||
// Add delay for this endpoint.
|
||||
await sleep(6000)
|
||||
|
||||
const addr = 'bitcoincash:qpdh9s677ya8tnx7zdhfrn8qfyvy22wj4qa7nwqa5v'
|
||||
|
||||
const txs = await bchjs.Electrumx.transactions(addr)
|
||||
@@ -386,6 +391,7 @@ describe('#ElectrumX', () => {
|
||||
assert.isAbove(sortedTransactions[0].height, sortedTransactions[1].height)
|
||||
})
|
||||
})
|
||||
*/
|
||||
})
|
||||
|
||||
function sleep (ms) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const assert = require('chai').assert
|
||||
// const assert = require('chai').assert
|
||||
|
||||
const BCHJS = require('../../src/bch-js')
|
||||
const bchjs = new BCHJS()
|
||||
// const BCHJS = require('../../src/bch-js')
|
||||
// const bchjs = new BCHJS()
|
||||
|
||||
describe('#Encryption', () => {
|
||||
beforeEach(async () => {
|
||||
@@ -9,7 +9,12 @@ describe('#Encryption', () => {
|
||||
})
|
||||
|
||||
describe('#getPubKey', () => {
|
||||
// Commenting out these tests since they are failing in BVT due to 429 errors
|
||||
/*
|
||||
it('should get a public key', async () => {
|
||||
// Add delay for this endpoint.
|
||||
await sleep(8000)
|
||||
|
||||
const addr = 'bitcoincash:qpf8jv9hmqcda0502gjp7nm3g24y5h5s4unutghsxq'
|
||||
|
||||
const result = await bchjs.encryption.getPubKey(addr)
|
||||
@@ -21,6 +26,9 @@ describe('#Encryption', () => {
|
||||
})
|
||||
|
||||
it('should report when public key can not be found', async () => {
|
||||
// Add delay for this endpoint.
|
||||
await sleep(8000)
|
||||
|
||||
const addr = 'bitcoincash:qrgqqkky28jdkv3w0ctrah0mz3jcsnsklc34gtukrh'
|
||||
|
||||
const result = await bchjs.encryption.getPubKey(addr)
|
||||
@@ -31,6 +39,7 @@ describe('#Encryption', () => {
|
||||
assert.property(result, 'publicKey')
|
||||
assert.equal(result.publicKey, 'not found')
|
||||
})
|
||||
*/
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -204,7 +204,9 @@ describe('#rawtransaction', () => {
|
||||
const result = await bchjs.RawTransactions.decodeScript(hex)
|
||||
// console.log(`result ${JSON.stringify(result, null, 2)}`)
|
||||
|
||||
assert.hasAllKeys(result, ['asm', 'type', 'p2sh'])
|
||||
assert.property(result, 'asm')
|
||||
assert.property(result, 'type')
|
||||
assert.property(result, 'p2sh')
|
||||
})
|
||||
|
||||
// CT 2/20/19 - Waiting for this PR to be merged complete the test:
|
||||
|
||||
@@ -142,7 +142,8 @@ describe('#utxo', () => {
|
||||
assert.property(result.slpUtxos, 'nft')
|
||||
assert.property(result, 'nullUtxos')
|
||||
|
||||
assert.equal(result.bchUtxos.length, 4)
|
||||
assert.equal(result.bchUtxos.length, 1)
|
||||
assert.equal(result.infoUtxos.length, 3)
|
||||
assert.equal(result.slpUtxos.type1.tokens.length, 1)
|
||||
assert.equal(result.slpUtxos.type1.mintBatons.length, 1)
|
||||
assert.equal(result.nullUtxos.length, 0)
|
||||
|
||||
Reference in New Issue
Block a user