UNPKG

@ravenrebels/ravencoin-jswallet

Version:
1 lines 63 kB
{"mappings":"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","sources":["src/ravencoinWallet.ts","src/Types.ts","src/blockchain/sweep.ts","src/blockchain/SendManyTransaction.ts","src/Errors.ts","src/utils.ts","src/blockchain/Transaction.ts","src/getBaseCurrencyByNetwork.ts","src/getBalance.ts","src/contants.ts","src/getAssets.ts"],"sourcesContent":["import { getRPC, methods } from \"@ravenrebels/ravencoin-rpc\";\nimport RavencoinKey from \"@ravenrebels/ravencoin-key\";\nimport Signer from \"@ravenrebels/ravencoin-sign-transaction\";\nimport {\n ChainType,\n IAddressDelta,\n IAddressMetaData,\n IMempoolEntry,\n IOptions,\n ISend,\n ISendManyOptions,\n ISendResult,\n IUTXO,\n SweepResult,\n} from \"./Types\";\nexport * from \"./Types\";\n\nimport { sweep } from \"./blockchain/sweep\";\nimport { Transaction } from \"./blockchain/Transaction\";\nimport { SendManyTransaction } from \"./blockchain/SendManyTransaction\";\nimport { getBaseCurrencyByNetwork } from \"./getBaseCurrencyByNetwork\";\nimport { getBalance } from \"./getBalance\";\nimport { ValidationError } from \"./Errors\";\nimport { getAssets } from \"./getAssets\";\n\nexport { Transaction };\nexport { SendManyTransaction };\nconst URL_RAVENCOIN_MAINNET = \"https://rvn-rpc-mainnet.ting.finance/rpc\";\nconst URL_RAVENCOIN_TESTNET = \"https://rvn-rpc-testnet.ting.finance/rpc\";\nconst URL_EVRMORE_MAINNET = \"https://evr-rpc-mainnet.ting.finance/rpc\";\n\n//Avoid singleton (anti-pattern)\n//Meaning multiple instances of the wallet must be able to co-exist\n\nexport class Wallet {\n rpc = getRPC(\"anonymous\", \"anonymous\", URL_RAVENCOIN_MAINNET);\n _mnemonic = \"\";\n network: ChainType = \"rvn\";\n addressObjects: Array<IAddressMetaData> = [];\n receiveAddress = \"\";\n changeAddress = \"\";\n addressPosition = 0;\n baseCurrency = \"RVN\"; //Default is RVN but it could be EVR\n offlineMode = false;\n setBaseCurrency(currency: string) {\n this.baseCurrency = currency;\n }\n getBaseCurrency() {\n return this.baseCurrency;\n }\n /**\n * Sweeping a private key means to send all the funds the address holds to your your wallet.\n * The private key you sweep does not become a part of your wallet.\n *\n * NOTE: the address you sweep needs to cointain enough RVN to pay for the transaction\n *\n * @param WIF the private key of the address that you want move funds from\n * @returns either a string, that is the transaction id or null if there were no funds to send\n */\n sweep(WIF: string, onlineMode: boolean): Promise<SweepResult> {\n const wallet = this;\n\n return sweep(WIF, wallet, onlineMode);\n }\n getAddressObjects(): IAddressMetaData[] {\n return this.addressObjects;\n }\n getAddresses(): Array<string> {\n const addresses = this.addressObjects.map((obj) => {\n return obj.address;\n });\n return addresses;\n }\n\n async init(options: IOptions) {\n let username = \"anonymous\";\n let password = \"anonymous\";\n let url = URL_RAVENCOIN_MAINNET;\n\n //VALIDATION\n if (!options) {\n throw Error(\"option argument is mandatory\");\n }\n\n if (options.offlineMode === true) {\n this.offlineMode = true;\n }\n if (!options.mnemonic) {\n throw Error(\"option.mnemonic is mandatory\");\n }\n if (options.network === \"rvn-test\") {\n url = URL_RAVENCOIN_TESTNET;\n }\n if (options.network === \"evr\") {\n url = URL_EVRMORE_MAINNET;\n }\n url = options.rpc_url || url;\n password = options.rpc_password || password;\n username = options.rpc_username || username;\n\n if (options.network) {\n this.network = options.network;\n this.setBaseCurrency(getBaseCurrencyByNetwork(options.network));\n }\n\n this.rpc = getRPC(username, password, url);\n this._mnemonic = options.mnemonic;\n\n //Generating the hd key is slow, so we re-use the object\n const hdKey = RavencoinKey.getHDKey(this.network as any, this._mnemonic);\n const coinType = RavencoinKey.getCoinType(this.network as any);\n const ACCOUNT = 0;\n\n const minAmountOfAddresses = Number.isFinite(options.minAmountOfAddresses)\n ? options.minAmountOfAddresses\n : 0;\n\n let doneDerivingAddresses = false;\n while (doneDerivingAddresses === false) {\n //We add new addresses to tempAddresses so we can check history for the last 20\n const tempAddresses = [] as string[];\n\n for (let i = 0; i < 20; i++) {\n const external = RavencoinKey.getAddressByPath(\n this.network as any,\n hdKey,\n `m/44'/${coinType}'/${ACCOUNT}'/0/${this.addressPosition}`\n );\n\n const internal = RavencoinKey.getAddressByPath(\n this.network as any,\n hdKey,\n `m/44'/${coinType}'/${ACCOUNT}'/1/${this.addressPosition}`\n );\n\n this.addressObjects.push(external);\n this.addressObjects.push(internal);\n this.addressPosition++;\n\n tempAddresses.push(external.address + \"\");\n tempAddresses.push(internal.address + \"\");\n }\n\n if (\n minAmountOfAddresses &&\n minAmountOfAddresses >= this.addressPosition\n ) {\n //In case we intend to create extra addresses on startup\n doneDerivingAddresses = false;\n } else if (this.offlineMode === true) {\n //BREAK generation of addresses and do NOT check history on the network\n doneDerivingAddresses = true;\n } else {\n //If no history, break\n doneDerivingAddresses =\n false === (await this.hasHistory(tempAddresses));\n }\n }\n }\n async hasHistory(addresses: Array<string>): Promise<boolean> {\n const includeAssets = true;\n const obj = {\n addresses,\n };\n\n const asdf = (await this.rpc(methods.getaddressbalance, [\n obj,\n includeAssets,\n ])) as any;\n\n //@ts-ignore\n const hasReceived = Object.values(asdf).find((asset) => asset.received > 0);\n\n return !!hasReceived;\n }\n\n async _getFirstUnusedAddress(external: boolean) {\n //First, check if lastReceivedAddress\n if (external === true && this.receiveAddress) {\n const asdf = await this.hasHistory([this.receiveAddress]);\n if (asdf === false) {\n return this.receiveAddress;\n }\n }\n if (external === false && this.changeAddress) {\n const asdf = await this.hasHistory([this.changeAddress]);\n if (asdf === false) {\n return this.changeAddress;\n }\n }\n\n //First make a list of relevant addresses, either external (even) or change (odd)\n const addresses: string[] = [];\n\n this.getAddresses().map(function (address: string, index: number) {\n if (external === true && index % 2 === 0) {\n addresses.push(address);\n } else if (external === false && index % 2 !== 0) {\n addresses.push(address);\n }\n });\n\n //Use BINARY SEARCH\n\n // Binary search implementation to find the first item with `history` set to false\n const binarySearch = async (_addresses: string[]) => {\n let low = 0;\n let high = _addresses.length - 1;\n let result = \"\";\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const addy = _addresses[mid];\n\n const hasHistory = await this.hasHistory([addy]);\n if (hasHistory === false) {\n result = addy;\n high = mid - 1; // Continue searching towards the left\n } else {\n low = mid + 1; // Continue searching towards the right\n }\n }\n\n return result;\n };\n\n const result = await binarySearch(addresses);\n\n if (!result) {\n //IF we have not found one, return the first address\n return addresses[0];\n }\n if (external === true) {\n this.receiveAddress = result;\n } else {\n this.changeAddress = result;\n }\n\n return result;\n }\n\n async getHistory(): Promise<IAddressDelta[]> {\n const assetName = \"\"; //Must be empty string, NOT \"*\"\n const addresses = this.getAddresses();\n const deltas = this.rpc(methods.getaddressdeltas, [\n { addresses, assetName },\n ]);\n //@ts-ignore\n const addressDeltas: IAddressDelta[] = deltas as IAddressDelta[];\n return addressDeltas;\n }\n async getMempool(): Promise<IMempoolEntry[]> {\n const method = methods.getaddressmempool;\n const includeAssets = true;\n const params = [{ addresses: this.getAddresses() }, includeAssets];\n return this.rpc(method, params) as Promise<IMempoolEntry[]>;\n }\n async getReceiveAddress() {\n const isExternal = true;\n return this._getFirstUnusedAddress(isExternal);\n }\n\n async getChangeAddress() {\n const isExternal = false;\n return this._getFirstUnusedAddress(isExternal);\n }\n /**\n *\n * @param assetName if present, only return UTXOs for that asset, otherwise for all assets\n * @returns UTXOs for assets\n */\n async getAssetUTXOs(assetName?: string): Promise<IUTXO[]> {\n //If no asset name, set to wildcard, meaning all assets\n const _assetName = !assetName ? \"*\" : assetName;\n const chainInfo = false;\n const params = [\n { addresses: this.getAddresses(), chainInfo, assetName: _assetName },\n ];\n\n return this.rpc(methods.getaddressutxos, params);\n }\n async getUTXOs() {\n return this.rpc(methods.getaddressutxos, [\n { addresses: this.getAddresses() },\n ]);\n }\n\n getPrivateKeyByAddress(address: string) {\n const f = this.addressObjects.find((a) => a.address === address);\n\n if (!f) {\n return undefined;\n }\n return f.WIF;\n }\n async sendRawTransaction(raw: string): Promise<string> {\n return this.rpc(\"sendrawtransaction\", [raw]);\n }\n\n async send(options: ISend): Promise<ISendResult> {\n //ACTUAL SENDING TRANSACTION\n\n //Important, do not swallow the exceptions/errors of createTransaction, let them fly\n const sendResult: ISendResult = await this.createTransaction(options);\n\n const id = await this.rpc(\"sendrawtransaction\", [\n sendResult.debug.signedTransaction,\n ]);\n sendResult.transactionId = id;\n\n return sendResult;\n }\n\n async sendMany({ outputs, assetName }: ISendManyOptions) {\n const options = {\n wallet: this,\n outputs,\n assetName,\n };\n const sendResult: ISendResult = await this.createSendManyTransaction(\n options\n );\n\n //ACTUAL SENDING TRANSACTION\n //Important, do not swallow the exceptions/errors of createSendManyTransaction, let them fly\n\n try {\n const id = await this.rpc(\"sendrawtransaction\", [\n sendResult.debug.signedTransaction,\n ]);\n sendResult.transactionId = id;\n\n return sendResult;\n } catch (e) {\n throw new Error(\n \"Error while sending, perhaps you have pending transaction? Please try again.\"\n );\n }\n }\n /**\n * Does all the heavy lifting regarding creating a SendManyTransaction\n * but it does not broadcast the actual transaction.\n * Perhaps the user wants to accept the transaction fee?\n * @param options\n * @returns An transaction that has not been broadcasted\n */\n async createTransaction(options: ISend): Promise<ISendResult> {\n const { amount, toAddress } = options;\n let { assetName } = options;\n\n if (!assetName) {\n assetName = this.baseCurrency;\n }\n\n //Validation\n if (!toAddress) {\n throw Error(\"Wallet.send toAddress is mandatory\");\n }\n if (!amount) {\n throw Error(\"Wallet.send amount is mandatory\");\n }\n const changeAddress = await this.getChangeAddress();\n\n if (changeAddress === toAddress) {\n throw new Error(\"Change address cannot be the same as toAddress\");\n }\n const transaction = new Transaction({\n assetName,\n amount,\n toAddress,\n wallet: this,\n /* optional */\n forcedChangeAddressAssets: options.forcedChangeAddressAssets,\n forcedUTXOs: options.forcedUTXOs,\n forcedChangeAddressBaseCurrency: options.forcedChangeAddressBaseCurrency,\n });\n\n await transaction.loadData();\n\n const inputs = transaction.getInputs();\n const outputs = await transaction.getOutputs();\n\n const privateKeys = transaction.getPrivateKeys();\n\n const raw = await this.rpc(\"createrawtransaction\", [inputs, outputs]);\n const signed = Signer.sign(\n this.network as any,\n raw,\n transaction.getUTXOs(),\n privateKeys\n );\n\n try {\n // const id = await this.rpc(\"sendrawtransaction\", [signed]);\n const sendResult: ISendResult = {\n transactionId: null,\n debug: {\n amount,\n assetName,\n fee: transaction.getFee(),\n inputs,\n outputs,\n privateKeys,\n rawUnsignedTransaction: raw,\n rvnChangeAmount: transaction.getBaseCurrencyChange(),\n rvnAmount: transaction.getBaseCurrencyAmount(),\n signedTransaction: signed,\n UTXOs: transaction.getUTXOs(),\n walletMempool: transaction.getWalletMempool(),\n },\n };\n return sendResult;\n } catch (e) {\n throw new Error(\n \"Error while sending, perhaps you have pending transaction? Please try again.\"\n );\n }\n }\n\n /**\n * Does all the heavy lifting regarding creating a transaction\n * but it does not broadcast the actual transaction.\n * Perhaps the user wants to accept the transaction fee?\n * @param options\n * @returns An transaction that has not been broadcasted\n */\n async createSendManyTransaction(options: {\n assetName?: string;\n outputs: { [key: string]: number };\n }): Promise<ISendResult> {\n let { assetName } = options;\n\n if (!assetName) {\n assetName = this.baseCurrency;\n }\n\n //Validation\n if (!options.outputs) {\n throw Error(\"Wallet.createSendManyTransaction outputs is mandatory\");\n } else if (Object.keys(options.outputs).length === 0) {\n throw new ValidationError(\n \"outputs is mandatory, shoud be an object with address as keys and amounts (numbers) as values\"\n );\n }\n const changeAddress = await this.getChangeAddress();\n\n const toAddresses = Object.keys(options.outputs);\n if (toAddresses.includes(changeAddress)) {\n throw new Error(\"You cannot send to your current change address\");\n }\n const transaction = new SendManyTransaction({\n assetName,\n outputs: options.outputs,\n wallet: this,\n });\n\n await transaction.loadData();\n\n const inputs = transaction.getInputs();\n const outputs = await transaction.getOutputs();\n\n const privateKeys = transaction.getPrivateKeys();\n\n const raw = await this.rpc(\"createrawtransaction\", [inputs, outputs]);\n const signed = Signer.sign(\n this.network as any,\n raw,\n transaction.getUTXOs(),\n privateKeys\n );\n\n try {\n const sendResult: ISendResult = {\n transactionId: null,\n debug: {\n amount: transaction.getAmount(),\n assetName,\n fee: transaction.getFee(),\n inputs,\n outputs,\n privateKeys,\n rawUnsignedTransaction: raw,\n rvnChangeAmount: transaction.getBaseCurrencyChange(),\n rvnAmount: transaction.getBaseCurrencyAmount(),\n signedTransaction: signed,\n UTXOs: transaction.getUTXOs(),\n walletMempool: transaction.getWalletMempool(),\n },\n };\n return sendResult;\n } catch (e) {\n throw new Error(\n \"Error while sending, perhaps you have pending transaction? Please try again.\"\n );\n }\n }\n\n /**\n * This method checks if an UTXO is being spent in the mempool.\n * rpc getaddressutxos will list available UTXOs on the chain.\n * BUT an UTXO can be being spent by a transaction in mempool.\n *\n * @param utxo\n * @returns boolean true if utxo is being spent in mempool, false if not\n */\n async isSpentInMempool(utxo: IUTXO) {\n const details = await this.rpc(\"gettxout\", [utxo.txid, utxo.outputIndex]);\n return details === null;\n }\n async getAssets() {\n return getAssets(this, this.getAddresses());\n }\n async getBalance() {\n const a = this.getAddresses();\n return getBalance(this, a);\n }\n async convertMempoolEntryToUTXO(mempoolEntry: IMempoolEntry): Promise<IUTXO> {\n //Mempool items might not have the script attbribute, we need it\n const out = await this.rpc(\"gettxout\", [\n mempoolEntry.txid,\n mempoolEntry.index,\n true,\n ]);\n\n const utxo = {\n ...mempoolEntry,\n script: out.scriptPubKey.hex,\n outputIndex: mempoolEntry.index,\n value: mempoolEntry.satoshis / 1e8,\n };\n return utxo;\n }\n\n /**\n * Get list of spendable UTXOs in mempool.\n * Note: a UTXO in mempool can already be \"being spent\"\n * @param mempool (optional)\n * @returns list of UTXOs in mempool ready to spend\n */\n async getUTXOsInMempool(mempool?: IMempoolEntry[]) {\n //If no mempool argument, fetch mempool\n let _mempool = mempool;\n if (!_mempool) {\n const m = await this.getMempool();\n _mempool = m;\n }\n const mySet = new Set();\n for (let item of _mempool) {\n if (!item.prevtxid) {\n continue;\n }\n const value = item.prevtxid + \"_\" + item.prevout;\n mySet.add(value);\n }\n\n const spendable = _mempool.filter((item) => {\n if (item.satoshis < 0) {\n return false;\n }\n const value = item.txid + \"_\" + item.index;\n return mySet.has(value) === false;\n });\n\n const utxos: IUTXO[] = [];\n\n for (let s of spendable) {\n const u = await this.convertMempoolEntryToUTXO(s);\n utxos.push(u);\n }\n return utxos;\n }\n}\n\nexport default {\n createInstance,\n getBaseCurrencyByNetwork,\n};\nexport async function createInstance(options: IOptions): Promise<Wallet> {\n const wallet = new Wallet();\n await wallet.init(options);\n return wallet;\n}\n","import { Wallet } from \"./ravencoinWallet\";\nimport RavencoinKey, { Network } from \"@ravenrebels/ravencoin-key\";\n\nexport interface ISettings {\n assets?: Array<string>;\n baseCurrency: \"RVN\"; //TODO is this really needed? do we not get that info from the network attribute?\n mode: \"RAVENCOIN_AND_ASSETS\" | \"ASSETS\" | \"SOME_ASSETS\";\n\n subTagline?: string;\n tagline: string;\n headline: string;\n}\nexport interface ISend {\n amount: number;\n assetName?: string;\n toAddress: string;\n\n forcedUTXOs?: IForcedUTXO[];\n forcedChangeAddressAssets?: string;\n forcedChangeAddressBaseCurrency?: string;\n}\nexport type ChainType = Network | (string & {});\nexport interface IAddressDelta {\n address: string;\n assetName: string;\n blockindex: number;\n height: number;\n index: number;\n satoshis: number;\n txid: string;\n\n prevtxid?: string;\n}\nexport interface ISendManyOptions {\n assetName?: string;\n outputs: { [key: string]: number };\n}\n\nexport interface ISendManyTransactionOptions {\n assetName?: string;\n outputs: { [key: string]: number };\n wallet: Wallet;\n forcedUTXOs?: IForcedUTXO[];\n forcedChangeAddressAssets?: string;\n forcedChangeAddressBaseCurrency?: string;\n}\nexport interface ITransactionOptions {\n amount: number;\n assetName: string;\n toAddress: string;\n wallet: Wallet;\n\n forcedUTXOs?: IForcedUTXO[];\n forcedChangeAddressAssets?: string;\n forcedChangeAddressBaseCurrency?: string;\n}\n\nexport interface SweepResult {\n errorDescription?: string;\n fromAddress?: string;\n inputs?: Array<IInput>;\n outputs?: any;\n rawTransaction?: string;\n toAddresses?: string[];\n transactionId?: string;\n UTXOs?: Array<IUTXO>;\n}\nexport type TPrivateKey = {\n [key: string]: string;\n};\n\nexport interface ISendResult {\n transactionId: string | null;\n debug: {\n amount: number;\n assetName: string;\n error?: any;\n fee: number;\n inputs: Array<IVout_when_creating_transactions>;\n outputs: any;\n privateKeys?: TPrivateKey;\n rawUnsignedTransaction?: string;\n rvnAmount: number;\n rvnChangeAmount: number;\n signedTransaction?: string;\n UTXOs: IUTXO[];\n walletMempool: any;\n };\n}\nexport interface Asset {\n name: string;\n amount: number;\n}\n\nexport interface IHistory {\n inputs: Array<IHistoryTransaction>;\n outputs: Array<IHistoryTransaction>;\n}\nexport interface IHistoryTransaction {\n blockhash: string;\n time: number;\n vout: IVout[];\n vin: Vin[];\n\n txid: string;\n}\nexport interface ITransaction {\n c_asset?: string;\n c_amount_satoshis?: number;\n asset?: Asset;\n amount?: number;\n blockhash?: string;\n blocktime?: number;\n hex?: string;\n locktime: number;\n vin: Vin[];\n hash: string;\n size: number;\n vsize: number;\n time?: number;\n txid: string;\n vout: IVout[];\n version?: number;\n}\nexport interface ISendInternalProps {\n amount: number;\n assetName: string;\n baseCurrency: string;\n changeAddress: string;\n changeAddressAssets?: string;\n fromAddressObjects: Array<IAddressMetaData>;\n network: ChainType;\n readOnly?: boolean;\n rpc: RPCType;\n toAddress: string;\n}\n\nexport interface Vin {\n c_index?: number;\n address?: string;\n\n scriptSig: ScriptSig;\n sequence: number;\n txid: string;\n value: number;\n valueSat: number;\n vout: number;\n}\n\nexport interface ScriptSig {\n asm: string;\n hex: string;\n}\nexport interface IVout_when_creating_transactions {\n txid: string;\n vout: number;\n address: string;\n}\nexport interface IVout {\n c_index?: number;\n value: number;\n n: number;\n scriptPubKey: ScriptPubKey;\n valueSat: number;\n}\n\nexport interface ScriptPubKey {\n asm: string;\n hex: string;\n reqSigs: number;\n type: string;\n addresses: string[];\n asset?: Asset;\n}\n\nexport type IBalance = BalanceRoot[] | null;\n\nexport interface BalanceRoot {\n assetName: string;\n balance: number;\n received: number;\n}\n\nexport interface IValidateAddressResponse {\n isvalid: boolean;\n address: string;\n scriptPubKey: string;\n ismine: boolean;\n iswatchonly: boolean;\n isscript: boolean;\n}\nexport interface IUTXO {\n address: string;\n assetName: string;\n height?: number;\n outputIndex: number;\n script: string;\n satoshis: number;\n txid: string;\n value: number;\n //custom property\n forced?: boolean;\n}\nexport interface IAssetMetaData {\n assetName: string;\n}\nexport type IAddressMetaData = ReturnType<typeof RavencoinKey.getAddressByPath>;\nexport interface IUser {\n lastKnownUsedPosition?: number;\n id: string;\n mnemonic: string;\n displayName?: string;\n profileImageURL?: string;\n}\nexport interface IConfig {\n raven_username: string;\n raven_password: string;\n raven_url: string;\n network: string;\n}\n\nexport interface IInput {\n txid: string;\n vout: number;\n address?: string;\n}\n\nexport type RPCType = (arg1: string, arg2: any[]) => any;\n\n\n\nexport interface ITransactionOptions {\n amount: number;\n assetName: string;\n toAddress: string;\n wallet: Wallet;\n}\n\nexport interface IOptions {\n mnemonic: string;\n minAmountOfAddresses?: number;\n network?: ChainType;\n rpc_username?: string;\n rpc_password?: string;\n rpc_url?: string;\n\n offlineMode?: boolean;\n}\n\nexport interface IMempoolEntry {\n address: string;\n assetName: string;\n txid: string;\n index: number;\n satoshis: number;\n timestamp: number;\n prevtxid: string;\n prevout: number;\n}\n\nexport interface IForcedUTXO {\n utxo: IUTXO;\n privateKey: string;\n address: string;\n}\n","import RavencoinKey, { Network } from \"@ravenrebels/ravencoin-key\";\nimport Signer from \"@ravenrebels/ravencoin-sign-transaction\";\n\n!!Signer.sign; //\"Idiocracy\" but prevents bundle tools such as PARCEL to strip this dependency out on build.\n\nimport { Wallet } from \"../ravencoinWallet\";\nimport { IInput, IUTXO, SweepResult } from \"../Types\";\nimport { shortenNumber } from \"./SendManyTransaction\";\n\n//sight rate burger maid melody slogan attitude gas account sick awful hammer\n//OH easter egg ;)\n\n/**\n *\n * @param WIF the private key in wallet import format that you want to sweep/empty\n * @param wallet your wallet\n * @returns a string of a signed transaction, you have to broad cast it\n */\nexport async function sweep(\n WIF: string,\n wallet: Wallet,\n onlineMode: boolean\n): Promise<SweepResult> {\n const privateKey = RavencoinKey.getAddressByWIF(wallet.network as any, WIF);\n\n const result: SweepResult = {};\n const rpc = wallet.rpc;\n const obj = {\n addresses: [privateKey.address],\n };\n const baseCurrencyUTXOs = await rpc(\"getaddressutxos\", [obj]);\n const obj2 = {\n addresses: [privateKey.address],\n assetName: \"*\",\n };\n\n const assetUTXOs = await rpc(\"getaddressutxos\", [obj2]);\n const UTXOs = assetUTXOs.concat(baseCurrencyUTXOs);\n result.UTXOs = UTXOs;\n //Create a raw transaction with ALL UTXOs\n\n if (UTXOs.length === 0) {\n result.errorDescription = \"Address \" + privateKey.address + \" has no funds\";\n return result;\n }\n const balanceObject: Record<string, number> = {};\n\n UTXOs.map((utxo: IUTXO) => {\n if (!balanceObject[utxo.assetName]) {\n balanceObject[utxo.assetName] = 0;\n }\n balanceObject[utxo.assetName] += utxo.satoshis;\n });\n\n const keys = Object.keys(balanceObject);\n\n //Start simple, get the first addresses from the wallet\n\n const outputs: Record<string, any> = {};\n\n const fixedFee = 0.02; // should do for now\n keys.map((assetName, index) => {\n const address = wallet.getAddresses()[index];\n const amount = balanceObject[assetName] / 1e8;\n\n if (assetName === wallet.baseCurrency) {\n outputs[address] = shortenNumber(amount - fixedFee);\n } else {\n outputs[address] = {\n transfer: {\n [assetName]: amount,\n },\n };\n }\n });\n result.outputs = outputs;\n\n //Convert from UTXO format to INPUT fomat\n const inputs: Array<IInput> = UTXOs.map((utxo: IUTXO, index: number) => {\n /* {\n \"txid\":\"id\", (string, required) The transaction id\n \"vout\":n, (number, required) The output number\n \"sequence\":n (number, optional) The sequence number\n } \n */\n\n const input: IInput = {\n txid: utxo.txid,\n vout: utxo.outputIndex,\n };\n return input;\n });\n //Create raw transaction\n const rawHex = await rpc(\"createrawtransaction\", [inputs, outputs]);\n\n const privateKeys = {\n [privateKey.address]: WIF,\n };\n const signedHex = Signer.sign(wallet.network as any, rawHex, UTXOs, privateKeys);\n result.rawTransaction = signedHex;\n if (onlineMode === true) {\n result.transactionId = await rpc(\"sendrawtransaction\", [signedHex]);\n }\n\n return result;\n}\n","import { InsufficientFundsError, ValidationError } from \"../Errors\";\nimport { Wallet } from \"../ravencoinWallet\";\nimport {\n IForcedUTXO,\n IMempoolEntry,\n ISendManyTransactionOptions,\n IUTXO,\n} from \"../Types\";\nimport { removeDuplicates } from \"../utils\";\n/**\n * SendManyTransaction Class\n *\n * This class is responsible for calculating the necessary steps to broadcast a Ravencoin transaction:\n * 1) Identify available UTXOs that are not already spent in the mempool.\n * 2) Determine the required number of UTXOs for creating this transaction.\n * 3) Define the transaction's inputs and outputs.\n * 4) Sign the transaction.\n *\n * Note: this class does not do the actual broadcasting; it is up to the user.\n *\n * How does it work?\n * 1) Create an instance:\n * const transaction = new SendManyTransaction({\n * assetName,\n * outputs: options.outputs,\n * wallet: this,\n * });\n *\n * 2) Load data from the network:\n * transaction.loadData();\n */\n\nexport class SendManyTransaction {\n _allUTXOs: IUTXO[] = []; //all UTXOs that we know of\n\n private assetName: string;\n feerate = 1; //When loadData is called, this attribute is updated from the blockchain wallet = null;\n\n private wallet: Wallet;\n private outputs: any;\n private walletMempool: IMempoolEntry[] = [];\n private forcedUTXOs: IForcedUTXO[] = [];\n private forcedChangeAddressBaseCurrency: string | undefined = \"\";\n private forcedChangeAddressAssets: string | undefined = \"\";\n constructor(options: ISendManyTransactionOptions) {\n const { wallet, outputs, assetName } = options;\n this.assetName = !assetName ? wallet.baseCurrency : assetName;\n this.wallet = wallet;\n this.outputs = outputs;\n this.forcedChangeAddressAssets = options.forcedChangeAddressAssets;\n this.forcedChangeAddressBaseCurrency =\n options.forcedChangeAddressBaseCurrency;\n //Tag forced UTXOs with the \"force\" flag\n if (options.forcedUTXOs) {\n options.forcedUTXOs.map((f) => (f.utxo.forced = true));\n this.forcedUTXOs = options.forcedUTXOs;\n }\n }\n /**\n *\n * @returns forced UTXOs for this transaction, that means \"no matter want, spend this UTXO\"\n */\n getForcedUTXOs() {\n return this.forcedUTXOs;\n }\n getWalletMempool() {\n return this.walletMempool;\n }\n getSizeInKB() {\n // We need to estimate the size of the transaction to calculate the fee,\n // which in turn affects the transaction size itself.\n // This is a chicken-and-egg situation, requiring an initial size estimate.\n\n const utxos = this.predictUTXOs();\n\n const baseSize = 400;\n const assumedSizePerUTXO = 320; //Add 320 bytes to the size per UTXO we use\n const assumedSizePerOutput = 160;\n\n const bytes =\n (utxos.length + 1) * assumedSizePerUTXO +\n Object.keys(this.outputs).length * assumedSizePerOutput;\n\n const kb = (baseSize + bytes) / 1024;\n\n return kb;\n }\n async loadData() {\n //Load blockchain information async, and wait for it\n const mempoolPromise = this.wallet.getMempool();\n const assetUTXOsPromise = this.wallet.getAssetUTXOs();\n const baseCurencyUTXOsPromise = this.wallet.getUTXOs();\n const feeRatePromise = this.getFeeRate();\n\n this.walletMempool = await mempoolPromise;\n const assetUTXOs = await assetUTXOsPromise;\n const baseCurrencyUTXOs = await baseCurencyUTXOsPromise;\n this.feerate = await feeRatePromise;\n\n const mempoolUTXOs = await this.wallet.getUTXOsInMempool(\n this.walletMempool\n );\n\n const _allUTXOsTemp = assetUTXOs\n .concat(baseCurrencyUTXOs)\n .concat(mempoolUTXOs);\n\n //add forced UTXO to the beginning of the array\n //method getUTXOs will remove all duplicates\n if (this.forcedUTXOs) {\n for (let f of this.forcedUTXOs) {\n const utxo = f.utxo;\n _allUTXOsTem