lightning
Version:
Lightning Network client library
67 lines (62 loc) • 3.07 kB
JavaScript
const bufferAsHex = buffer => buffer.toString('hex');
const minConfs = (isZero, confs) => isZero ? Number() : (confs || undefined);
/** Derive open channel details from an open channel request gRPC message
{
base_fee: <Set Channel Base Fee Millitokens String>
close_address: <Cooperative Close Address String>
fee_rate: <Set Channel Routing Fee Rate Millitoken Per Millitokens String>
fund_max: <Use Maximal Funding Bool>
local_funding_amount: <Channel Capacity Tokens String>
memo: <Channel Description String>
min_htlc_msat: <Minimum HTLC Millitokens String>
node_pubkey: <Node Public Key Buffer Object>
node_pubkey_string: <Node Public Key Hex String>
private: <Channel Is Private Bool>
push_sat: <Gift Tokens String>
remote_csv_delay: <Peer Uncooperative Output CSV Delay Blocks Number>
sat_per_byte: <Tokens Per Virtual Byte String>
sat_per_vbyte: <Tokens Per Virtual Byte String>
spend_unconfirmed: <Spend Unconfirmed UTXOs Bool>
target_conf: <Funding Transaction Confirmation Target Number>
use_base_fee: <Set Base Fee Bool>
use_fee_rate: <Set Fee Rate Bool>
}
@returns
{
[base_fee_mtokens]: <Routing Base Fee Millitokens Charged String>
[chain_fee_tokens_per_vbyte]: <Chain Fee Tokens Per VByte Number>
[cooperative_close_address]: <Restrict Cooperative Close To Address String>
[description]: <Channel Description String>
[fee_rate]: <Routing Fee Rate In Millitokens Per Million Number>
[give_tokens]: <Tokens to Gift To Partner Number>
[is_max_funding]: <Use Maximal Chain Funds For Local Funding Bool>
[is_private]: <Channel is Private Bool>
[local_tokens]: <Local Tokens Number>
[min_confirmations]: <Spend UTXOs With Minimum Confirmations Number>
[min_htlc_mtokens]: <Minimum HTLC Millitokens String>
partner_public_key: <Public Key Hex String>
[partner_csv_delay]: <Peer Output CSV Delay Number>
}
*/
module.exports = args => {
const chainFeeRate = Number(args.sat_per_vbyte) || Number(args.sat_per_byte);
const hasMinHtlc = args.min_htlc_msat !== Number().toString();
const normalFunded = !args.fund_max;
const publicKey = bufferAsHex(args.node_pubkey) || args.node_pubkey_string;
const utxoConfs = minConfs(args.spend_unconfirmed, args.min_confirmations);
return {
base_fee_mtokens: !!args.use_fee_rate ? args.base_fee : undefined,
chain_fee_tokens_per_vbyte: chainFeeRate || undefined,
cooperative_close_address: args.close_address || undefined,
description: args.memo || undefined,
fee_rate: !!args.use_fee_rate ? Number(args.fee_rate) : undefined,
give_tokens: Number(args.push_sat) || undefined,
is_max_funding: !!args.fund_max || undefined,
is_private: args.private || undefined,
local_tokens: normalFunded ? Number(args.local_funding_amount) : undefined,
min_confirmations: utxoConfs,
min_htlc_mtokens: hasMinHtlc ? args.min_htlc_msat : undefined,
partner_public_key: publicKey,
partner_csv_delay: args.remote_csv_delay || undefined,
};
};