bch-slpjs
Version:
Simple Ledger Protocol (SLP) JavaScript Library
49 lines (43 loc) • 1.49 kB
text/typescript
import BITBOX from 'bitbox-sdk/lib/bitbox-sdk';
import axios from 'axios';
import { Slp, SlpProxyValidator } from './slp';
import { SlpAddressUtxoResult } from './slpjs';
export class JsonRpcProxyValidator implements SlpProxyValidator {
validatorUrl: string;
slp: Slp;
constructor(BITBOX: BITBOX, validatorUrl) {
this.validatorUrl = validatorUrl;
this.slp = new Slp(BITBOX);
}
async isValidSlpTxid(txid: string) {
let data = {
jsonrpc: "2.0",
id: "slpvalidate",
method: "slpvalidate",
params: [ txid, false, false ]
}
const result = await axios({
method: "post",
url: this.validatorUrl,
data: data
});
if (result && result.data && result.data.result === "Valid") {
return true
} else {
return false
}
}
async getRawTransactions(txid: string[]): Promise<string[]> {
throw new Error("Not implemented.")
};
async validateSlpTransactions(txids: string[]) {
// Validate each txid
const validatePromises = txids.map(async (txid) => {
const isValid = await this.isValidSlpTxid(txid)
return isValid ? txid : '';
})
// Filter array to only valid txid results
const validateResults = await axios.all(validatePromises)
return validateResults.filter((result) => result.length > 0);
}
}