Get Enough UTXOS
The getEnoughUtxos method retrieves just enough Unspent Transaction Outputs (UTXOs) for a MNEE address to cover a specified token amount. This method is optimized for transfer operations, as it stops fetching UTXOs once the required amount is reached, making it more efficient than fetching all UTXOs.
Usage
Basic Usage
const address = '1G6CB3Ch4zFkPmuhZzEyChQmrQPfi86qk3';
const requiredAmount = 500000; // 5.00000 MNEE in atomic units
try {
const utxos = await mnee.getEnoughUtxos(address, requiredAmount);
console.log('UTXOs for transfer:', utxos);
console.log('Number of UTXOs needed:', utxos.length);
} catch (error) {
console.error('Insufficient balance:', error.message);
}Parameters
address
string
Yes
The MNEE address to fetch UTXOs for
totalAtomicTokenAmount
number
Yes
The required amount in atomic units (1 MNEE = 100,000 atomic units)
Response
The method returns a Promise that resolves to an array of MNEEUtxo objects containing just enough UTXOs to meet or exceed the required amount.
MNEEUtxo Structure
type MNEEUtxo = {
data: {
bsv21: {
amt: number; // Amount in atomic units
dec: number; // Decimal places
icon: string; // Token icon
id: string; // Token ID
op: string; // Operation type
sym: string; // Token symbol
};
cosign: {
address: string; // Cosigner address
cosigner: string; // Cosigner identifier
};
};
height: number; // Block height
idx: number; // Transaction index
outpoint: string; // Transaction outpoint (txid_vout)
satoshis: number; // Satoshi amount
script: string; // Script hex
txid: string; // Transaction ID
vout: number; // Output index
};Error Handling
The method throws an error if there are insufficient MNEE tokens in the address to meet the required amount:
try {
const utxos = await mnee.getEnoughUtxos(address, 1000000);
} catch (error) {
// Error message format: "Insufficient MNEE balance. Max transfer amount: X.XXXXX"
console.error(error.message);
}Performance Considerations
Efficient: Only fetches UTXOs until the required amount is reached
Pagination: Uses 25 UTXOs per page to balance API efficiency and memory usage
Early Exit: Stops immediately when sufficient UTXOs are found
No Sorting: UTXOs are returned in the order they're fetched (newest first by default)
Use Cases
Pre-transfer Validation: Check if an address has enough tokens before attempting a transfer
UTXO Selection: Get the exact UTXOs needed for a specific transaction amount
Balance Verification: Verify sufficient funds while minimizing API calls
Wallet Operations: Prepare UTXOs for transaction construction
See Also
Balance - Get balance without UTXO details (more efficient for balance checks)
Transfer Multi - Use UTXOs for multi-source transfers
Get Enough UTXOs - Get just enough UTXOs for and address and amount
Get All UTXOs - Get all UTXOs for a given address
Last updated