UNPKG

scpx-wallet

Version:

Scoop Core Wallet: dual-signature timelock crypto wallet - multi-asset, cross-platform and open-source

55 lines (44 loc) 2.01 kB
// Distributed under AGPLv3 license: see /LICENSE for terms. Copyright 2019-2021 Dominic Morris. const bitcoinJsLib = require('bitcoinjs-lib') const bitgoUtxoLib = require('bitgo-utxo-lib') const bchAddr = require('bchaddrjs') const BigNumber = require('bignumber.js') const _ = require('lodash') const actionsWallet = require('.') const walletExternal = require('./wallet-external') const configWallet = require('../config/wallet') const configExternal = require('../config/wallet-external') const utilsWallet = require('../utils') module.exports = { // // lists all claimable p_op tx's (tx.p_op_weAreBenefactor || (tx.p_op_weAreBeneficiary && date.now > tx.p_op_lockTime)) // claimable_List: (p) => { const { asset } = p if (!asset) throw 'Invalid or missing asset' if (!asset.OP_CLTV) throw `Invalid p_op for ${asset.symbol}` const all_txs = walletExternal.getAll_txs(asset) const p_addrs = asset.addresses .filter(a => a.path.startsWith('~p/')) .filter(a => a.utxos !== undefined && a.utxos.length > 0) .filter(a => { const protect_op_tx = all_txs.find(p2 => p2.txid == a.nonStd_protectOp_txid) return (protect_op_tx.p_op_weAreBenefactor || (protect_op_tx.p_op_weAreBeneficiary && new Date() > protect_op_tx.p_op_unlockDateTime)) }) .map(a => { const protect_op_tx = all_txs.find(p => p.txid == a.nonStd_protectOp_txid) return Object.assign(a, { protect_op_tx }) }) return p_addrs }, // // spends ("reclaims" if we are benefactor, or "claim" if we are beneficiary) a specific p_op txid output // (or, spends all claimable p_op tx's if no txid supplied) // // (all claims output to the first standard address, as a standard UTXO) // claimable_Claim: async (asset) => { //... }, }