mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-20 02:27:51 +01:00
376e6f8bd1
Using a 'feestep' is more restrictive than you'd want, instead we enforce that the next feerate must be at least 1/64th more than the last, but put no upper limit on it Includes update to lnprototest changes Contributed-By: Vincenzo Palazzo <vincenzopalazzodev@gmail.com> Changelog-EXPERIMENTAL: Protocol: Replaces init_rbf's `fee_step` for RBF of v2 opens with `funding_feerate_perkw`, breaking change
952 lines
28 KiB
JSON
952 lines
28 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "peers" ],
|
|
"properties": {
|
|
"peers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"required": [ "id", "connected", "channels" ],
|
|
"properties": {
|
|
"id": {
|
|
"type": "pubkey",
|
|
"description": "the public key of the peer"
|
|
},
|
|
"connected": {
|
|
"type": "boolean",
|
|
"description": "True if the peer is currently connected"
|
|
},
|
|
"log": {
|
|
"type": "array",
|
|
"description": "if *level* is specified, logs for this peer",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"required": [ "type" ],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [ "SKIPPED", "BROKEN", "UNUSUAL", "INFO", "DEBUG", "IO_IN", "IO_OUT" ]
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"enum": [ "SKIPPED" ]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "num_skipped" ],
|
|
"properties": {
|
|
"type": { },
|
|
"num_skipped": {
|
|
"type": "u32",
|
|
"description": "number of deleted/omitted entries"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"enum": [ "BROKEN", "UNUSUAL", "INFO", "DEBUG" ]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "time", "source", "log", "node_id" ],
|
|
"properties": {
|
|
"type": { },
|
|
"time": {
|
|
"type": "string",
|
|
"description": "UNIX timestamp with 9 decimal places"
|
|
},
|
|
"source": {
|
|
"type": "string",
|
|
"description": "The particular logbook this was found in"
|
|
},
|
|
"log": {
|
|
"type": "string",
|
|
"description": "The actual log message"
|
|
},
|
|
"node_id": {
|
|
"type": "pubkey",
|
|
"description": "The peer this is associated with"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"type": {
|
|
"enum": [ "IO_IN", "IO_OUT" ]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "time", "source", "log", "node_id", "data" ],
|
|
"properties": {
|
|
"type": { },
|
|
"time": {
|
|
"type": "string",
|
|
"description": "UNIX timestamp with 9 decimal places"
|
|
},
|
|
"source": {
|
|
"type": "string",
|
|
"description": "The particular logbook this was found in"
|
|
},
|
|
"log": {
|
|
"type": "string",
|
|
"description": "The actual log message"
|
|
},
|
|
"node_id": {
|
|
"type": "pubkey",
|
|
"description": "The peer this is associated with"
|
|
},
|
|
"data": {
|
|
"type": "hex",
|
|
"description": "The IO which occurred"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"required": [ "state", "opener", "features" ],
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [ "OPENINGD", "CHANNELD_AWAITING_LOCKIN", "CHANNELD_NORMAL", "CHANNELD_SHUTTING_DOWN", "CLOSINGD_SIGEXCHANGE", "CLOSINGD_COMPLETE", "AWAITING_UNILATERAL", "FUNDING_SPEND_SEEN", "ONCHAIN", "DUALOPEND_OPEN_INIT", "DUALOPEND_AWAITING_LOCKIN" ],
|
|
"description": "the channel state, in particular \"CHANNELD_NORMAL\" means the channel can be used normally"
|
|
},
|
|
"scratch_txid": {
|
|
"type": "txid",
|
|
"description": "The txid we would use if we went onchain now"
|
|
},
|
|
"feerate": {
|
|
"type": "object",
|
|
"description": "Feerates for the current tx",
|
|
"additionalProperties": false,
|
|
"required": [ "perkw", "perkb" ],
|
|
"properties": {
|
|
"perkw": {
|
|
"type": "u32",
|
|
"description": "Feerate per 1000 weight (i.e kSipa)"
|
|
},
|
|
"perkb": {
|
|
"type": "u32",
|
|
"description": "Feerate per 1000 virtual bytes"
|
|
}
|
|
}
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"description": "The current subdaemon controlling this connection"
|
|
},
|
|
"short_channel_id": {
|
|
"type": "short_channel_id",
|
|
"description": "The short_channel_id (once locked in)"
|
|
},
|
|
"channel_id": {
|
|
"type": "hex",
|
|
"description": "The full channel_id",
|
|
"minLength": 64,
|
|
"maxLength": 64
|
|
},
|
|
"funding_txid": {
|
|
"type": "txid",
|
|
"description": "ID of the funding transaction"
|
|
},
|
|
"initial_feerate": {
|
|
"type": "string",
|
|
"description": "For inflight opens, the first feerate used to initiate the channel open"
|
|
},
|
|
"last_feerate": {
|
|
"type": "string",
|
|
"description": "For inflight opens, the most recent feerate used on the channel open"
|
|
},
|
|
"next_feerate": {
|
|
"type": "string",
|
|
"description": "For inflight opens, the next feerate we'll use for the channel open"
|
|
},
|
|
"next_fee_step": {
|
|
"type": "u32",
|
|
"description": "For inflight opens, the next feerate step we'll use for the channel open"
|
|
},
|
|
"inflight": {
|
|
"type": "array",
|
|
"description": "Current candidate funding transactions (only for dual-funding)",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "funding_txid", "funding_outnum", "feerate", "total_funding_msat", "our_funding_msat", "scratch_txid" ],
|
|
"properties": {
|
|
"funding_txid": {
|
|
"type": "txid",
|
|
"description": "ID of the funding transaction"
|
|
},
|
|
"funding_outnum": {
|
|
"type": "u32",
|
|
"description": "The 0-based output number of the funding transaction which opens the channel"
|
|
},
|
|
"feerate": {
|
|
"type": "string",
|
|
"description": "The feerate for this funding transaction in per-1000-weight, with \"kpw\" appended"
|
|
},
|
|
"total_funding_msat": {
|
|
"type": "msat",
|
|
"description": "total amount in the channel"
|
|
},
|
|
"our_funding_msat": {
|
|
"type": "msat",
|
|
"description": "amount we have in the channel"
|
|
},
|
|
"scratch_txid": {
|
|
"type": "txid",
|
|
"description": "The commitment transaction txid we would use if we went onchain now"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"close_to": {
|
|
"type": "hex",
|
|
"description": "scriptPubkey which we have to close to if we mutual close"
|
|
},
|
|
"private": {
|
|
"type": "boolean",
|
|
"description": "if False, we will not announce this channel"
|
|
},
|
|
"opener": {
|
|
"type": "string",
|
|
"enum": [ "local", "remote" ],
|
|
"description": "Who initiated the channel"
|
|
},
|
|
"closer": {
|
|
"FIXME": "deprecated_apis turns off null!",
|
|
"type": [ "string", "null" ],
|
|
"enum": [ "local", "remote", null ],
|
|
"description": "Who initiated the channel close (`null` is deprecated!)"
|
|
},
|
|
"features": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [ "option_static_remotekey", "option_anchor_outputs" ],
|
|
"description": "BOLT #9 features which apply to this channel"
|
|
}
|
|
},
|
|
"funding": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "local_msat", "remote_msat" ],
|
|
"properties": {
|
|
"local_msat": {
|
|
"type": "msat",
|
|
"description": "Amount of channel we funded"
|
|
},
|
|
"remote_msat": {
|
|
"type": "msat",
|
|
"description": "Amount of channel they funded"
|
|
}
|
|
}
|
|
},
|
|
"funding_allocation_msat": {
|
|
"deprecated": true
|
|
},
|
|
"funding_msat": {
|
|
"deprecated": true
|
|
},
|
|
"to_us_msat": {
|
|
"type": "msat",
|
|
"description": "how much of channel is owed to us"
|
|
},
|
|
"min_to_us_msat": {
|
|
"type": "msat",
|
|
"description": "least amount owed to us ever"
|
|
},
|
|
"max_to_us_msat": {
|
|
"type": "msat",
|
|
"description": "most amount owed to us ever"
|
|
},
|
|
"total_msat": {
|
|
"type": "msat",
|
|
"description": "total amount in the channel"
|
|
},
|
|
"fee_base_msat": {
|
|
"type": "msat",
|
|
"description": "amount we charge to use the channel"
|
|
},
|
|
"fee_proportional_millionths": {
|
|
"type": "u32",
|
|
"description": "amount we charge to use the channel in parts-per-million"
|
|
},
|
|
"dust_limit_msat": {
|
|
"type": "msat",
|
|
"description": "minimum amount for an output on the channel transactions"
|
|
},
|
|
"max_total_htlc_in_msat": {
|
|
"type": "msat",
|
|
"description": "max amount accept in a single payment"
|
|
},
|
|
"their_reserve_msat": {
|
|
"type": "msat",
|
|
"description": "minimum we insist they keep in channel"
|
|
},
|
|
"our_reserve_msat": {
|
|
"type": "msat",
|
|
"description": "minimum they insist we keep in channel"
|
|
},
|
|
"spendable_msat": {
|
|
"type": "msat",
|
|
"description": "total we could send through channel"
|
|
},
|
|
"receivable_msat": {
|
|
"type": "msat",
|
|
"description": "total peer could send through channel"
|
|
},
|
|
"minimum_htlc_in_msat": {
|
|
"type": "msat",
|
|
"description": "the minimum amount HTLC we accept"
|
|
},
|
|
"their_to_self_delay": {
|
|
"type": "u32",
|
|
"description": "the number of blocks before they can take their funds if they unilateral close"
|
|
},
|
|
"our_to_self_delay": {
|
|
"type": "u32",
|
|
"description": "the number of blocks before we can take our funds if we unilateral close"
|
|
},
|
|
"max_accepted_htlcs": {
|
|
"type": "u32",
|
|
"description": "Maximum number of incoming HTLC we will accept at once"
|
|
},
|
|
"msatoshi_to_us": {
|
|
"deprecated": true
|
|
},
|
|
"msatoshi_to_us_min": {
|
|
"deprecated": true
|
|
},
|
|
"msatoshi_to_us_max": {
|
|
"deprecated": true
|
|
},
|
|
"msatoshi_total": {
|
|
"deprecated": true
|
|
},
|
|
"dust_limit_satoshis": {
|
|
"deprecated": true
|
|
},
|
|
"max_htlc_value_in_flight_msat": {
|
|
"deprecated": true
|
|
},
|
|
"our_channel_reserve_satoshis": {
|
|
"deprecated": true
|
|
},
|
|
"their_channel_reserve_satoshis": {
|
|
"deprecated": true
|
|
},
|
|
"spendable_msatoshi": {
|
|
"deprecated": true
|
|
},
|
|
"receivable_msatoshi": {
|
|
"deprecated": true
|
|
},
|
|
"htlc_minimum_msat": {
|
|
"deprecated": true
|
|
},
|
|
"state_changes": {
|
|
"type": "array",
|
|
"description": "Prior state changes",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [ "timestamp", "old_state", "new_state", "cause", "message" ],
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"description": "UTC timestamp of form YYYY-mm-ddTHH:MM:SS.%03dZ"
|
|
},
|
|
"old_state": {
|
|
"type": "string",
|
|
"enum": [ "OPENINGD", "CHANNELD_AWAITING_LOCKIN", "CHANNELD_NORMAL", "CHANNELD_SHUTTING_DOWN", "CLOSINGD_SIGEXCHANGE", "CLOSINGD_COMPLETE", "AWAITING_UNILATERAL", "FUNDING_SPEND_SEEN", "ONCHAIN", "DUALOPEND_OPEN_INIT", "DUALOPEND_AWAITING_LOCKIN" ],
|
|
"description": "Previous state"
|
|
},
|
|
"new_state": {
|
|
"type": "string",
|
|
"enum": [ "OPENINGD", "CHANNELD_AWAITING_LOCKIN", "CHANNELD_NORMAL", "CHANNELD_SHUTTING_DOWN", "CLOSINGD_SIGEXCHANGE", "CLOSINGD_COMPLETE", "AWAITING_UNILATERAL", "FUNDING_SPEND_SEEN", "ONCHAIN", "DUALOPEND_OPEN_INIT", "DUALOPEND_AWAITING_LOCKIN" ],
|
|
"description": "New state"
|
|
},
|
|
"cause": {
|
|
"type": "string",
|
|
"enum": [ "unknown", "local", "user", "remote", "protocol", "onchain" ],
|
|
"description": "What caused the change"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"description": "Human-readable explanation"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"status": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"description": "Billboard log of significant changes"
|
|
}
|
|
},
|
|
"in_payments_offered": {
|
|
"type": "u64",
|
|
"description": "Number of incoming payment attempts"
|
|
},
|
|
"in_offered_msat": {
|
|
"type": "msat",
|
|
"description": "Total amount of incoming payment attempts"
|
|
},
|
|
"in_msatoshi_offered": {
|
|
"deprecated": true
|
|
},
|
|
"in_payments_fulfilled": {
|
|
"type": "u64",
|
|
"description": "Number of successful incoming payment attempts"
|
|
},
|
|
"in_fulfilled_msat": {
|
|
"type": "msat",
|
|
"description": "Total amount of successful incoming payment attempts"
|
|
},
|
|
"in_msatoshi_fulfilled": {
|
|
"deprecated": true
|
|
},
|
|
"out_payments_offered": {
|
|
"type": "u64",
|
|
"description": "Number of outgoing payment attempts"
|
|
},
|
|
"out_offered_msat": {
|
|
"type": "msat",
|
|
"description": "Total amount of outgoing payment attempts"
|
|
},
|
|
"out_msatoshi_offered": {
|
|
"deprecated": true
|
|
},
|
|
"out_payments_fulfilled": {
|
|
"type": "u64",
|
|
"description": "Number of successful outgoing payment attempts"
|
|
},
|
|
"out_fulfilled_msat": {
|
|
"type": "msat",
|
|
"description": "Total amount of successful outgoing payment attempts"
|
|
},
|
|
"out_msatoshi_fulfilled": {
|
|
"deprecated": true
|
|
},
|
|
"htlcs": {
|
|
"type": "array",
|
|
"description": "current HTLCs in this channel",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": true,
|
|
"required": [ "direction", "id", "amount_msat", "expiry", "payment_hash", "state" ],
|
|
"properties": {
|
|
"direction": {
|
|
"type": "string",
|
|
"enum": [ "in", "out" ],
|
|
"description": "Whether it came from peer, or is going to peer"
|
|
},
|
|
"id": {
|
|
"type": "u64",
|
|
"description": "Unique ID for this htlc on this channel in this direction"
|
|
},
|
|
"amount_msat": {
|
|
"type": "msat",
|
|
"description": "Amount send/received for this HTLC"
|
|
},
|
|
"msatoshi": {
|
|
"deprecated": true
|
|
},
|
|
"expiry": {
|
|
"type": "u32",
|
|
"description": "Block this HTLC expires at"
|
|
},
|
|
"payment_hash": {
|
|
"type": "hex",
|
|
"description": "the hash of the payment_preimage which will prove payment",
|
|
"maxLength": 64,
|
|
"minLength": 64
|
|
},
|
|
"local_trimmed": {
|
|
"type": "boolean",
|
|
"enum": [ true ],
|
|
"description": "if this is too small to enforce onchain"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"description": "set if this HTLC is currently waiting on a hook (and shows what plugin)"
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"direction": {
|
|
"enum": [ "out" ]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ "state" ],
|
|
"properties": {
|
|
"direction": { },
|
|
"id": { },
|
|
"amount_msat": { },
|
|
"msatoshi": { },
|
|
"expiry": { },
|
|
"payment_hash": { },
|
|
"local_trimmed": { },
|
|
"status": { },
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [ "SENT_ADD_HTLC", "SENT_ADD_COMMIT", "RCVD_ADD_REVOCATION", "RCVD_ADD_ACK_COMMIT", "SENT_ADD_ACK_REVOCATION", "RCVD_REMOVE_HTLC", "RCVD_REMOVE_COMMIT", "SENT_REMOVE_REVOCATION", "SENT_REMOVE_ACK_COMMIT", "RCVD_REMOVE_ACK_REVOCATION" ],
|
|
"description": "Status of the HTLC"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"direction": {
|
|
"enum": [ "in" ]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ "state" ],
|
|
"properties": {
|
|
"direction": { },
|
|
"id": { },
|
|
"amount_msat": { },
|
|
"msatoshi": { },
|
|
"expiry": { },
|
|
"payment_hash": { },
|
|
"local_trimmed": { },
|
|
"status": { },
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [ "RCVD_ADD_HTLC", "RCVD_ADD_COMMIT", "SENT_ADD_REVOCATION", "SENT_ADD_ACK_COMMIT", "RCVD_ADD_ACK_REVOCATION", "SENT_REMOVE_HTLC", "SENT_REMOVE_COMMIT", "RCVD_REMOVE_REVOCATION", "RCVD_REMOVE_ACK_COMMIT", "SENT_REMOVE_ACK_REVOCATION" ],
|
|
"description": "Status of the HTLC"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"required": [ "close_to" ]
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ ],
|
|
"properties": {
|
|
"state": { },
|
|
"scratch_txid": { },
|
|
"feerate": { },
|
|
"owner": { },
|
|
"short_channel_id": { },
|
|
"channel_id": { },
|
|
"funding_txid": { },
|
|
"close_to": { },
|
|
"private": { },
|
|
"opener": { },
|
|
"closer": { },
|
|
"features": { },
|
|
"funding": { },
|
|
"funding_allocation_msat": { },
|
|
"funding_msat": { },
|
|
"to_us_msat": { },
|
|
"min_to_us_msat": { },
|
|
"max_to_us_msat": { },
|
|
"total_msat": { },
|
|
"fee_base_msat": { },
|
|
"fee_proportional_millionths": { },
|
|
"dust_limit_msat": { },
|
|
"max_total_htlc_in_msat": { },
|
|
"their_reserve_msat": { },
|
|
"our_reserve_msat": { },
|
|
"spendable_msat": { },
|
|
"receivable_msat": { },
|
|
"minimum_htlc_in_msat": { },
|
|
"spendable_msatoshi": { },
|
|
"receivable_msatoshi": { },
|
|
"their_to_self_delay": { },
|
|
"our_to_self_delay": { },
|
|
"max_accepted_htlcs": { },
|
|
"msatoshi_to_us": { },
|
|
"msatoshi_to_us_min": { },
|
|
"msatoshi_to_us_max": { },
|
|
"msatoshi_total": { },
|
|
"dust_limit_satoshis": { },
|
|
"max_htlc_value_in_flight_msat": { },
|
|
"our_channel_reserve_satoshis": { },
|
|
"their_channel_reserve_satoshis": { },
|
|
"spendable_satoshis": { },
|
|
"receivable_satoshis": { },
|
|
"htlc_minimum_msat": { },
|
|
"state_changes": { },
|
|
"status": { },
|
|
"in_payments_offered": { },
|
|
"in_offered_msat": { },
|
|
"in_msatoshi_offered": { },
|
|
"in_payments_fulfilled": { },
|
|
"in_fulfilled_msat": { },
|
|
"in_msatoshi_fulfilled": { },
|
|
"out_payments_offered": { },
|
|
"out_offered_msat": { },
|
|
"out_msatoshi_offered": { },
|
|
"out_payments_fulfilled": { },
|
|
"out_fulfilled_msat": { },
|
|
"out_msatoshi_fulfilled": { },
|
|
"htlcs": { },
|
|
"initial_feerate": { },
|
|
"last_feerate": { },
|
|
"next_feerate": { },
|
|
"inflight": { },
|
|
"last_tx_fee": { },
|
|
"last_tx_fee_msat": { },
|
|
"direction": { },
|
|
"close_to_addr": {
|
|
"type": "string",
|
|
"description": "The bitcoin address we will close to"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"required": [ "scratch_txid" ]
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ "last_tx_fee_msat" ],
|
|
"properties": {
|
|
"state": { },
|
|
"scratch_txid": { },
|
|
"feerate": { },
|
|
"owner": { },
|
|
"short_channel_id": { },
|
|
"channel_id": { },
|
|
"funding_txid": { },
|
|
"inflight": { },
|
|
"close_to": { },
|
|
"private": { },
|
|
"opener": { },
|
|
"closer": { },
|
|
"features": { },
|
|
"funding": { },
|
|
"funding_allocation_msat": { },
|
|
"funding_msat": { },
|
|
"to_us_msat": { },
|
|
"min_to_us_msat": { },
|
|
"max_to_us_msat": { },
|
|
"total_msat": { },
|
|
"fee_base_msat": { },
|
|
"fee_proportional_millionths": { },
|
|
"dust_limit_msat": { },
|
|
"max_total_htlc_in_msat": { },
|
|
"their_reserve_msat": { },
|
|
"our_reserve_msat": { },
|
|
"spendable_msat": { },
|
|
"receivable_msat": { },
|
|
"minimum_htlc_in_msat": { },
|
|
"spendable_msatoshi": { },
|
|
"receivable_msatoshi": { },
|
|
"their_to_self_delay": { },
|
|
"our_to_self_delay": { },
|
|
"max_accepted_htlcs": { },
|
|
"msatoshi_to_us": { },
|
|
"msatoshi_to_us_min": { },
|
|
"msatoshi_to_us_max": { },
|
|
"msatoshi_total": { },
|
|
"dust_limit_satoshis": { },
|
|
"max_htlc_value_in_flight_msat": { },
|
|
"our_channel_reserve_satoshis": { },
|
|
"their_channel_reserve_satoshis": { },
|
|
"spendable_satoshis": { },
|
|
"receivable_satoshis": { },
|
|
"htlc_minimum_msat": { },
|
|
"state_changes": { },
|
|
"status": { },
|
|
"in_payments_offered": { },
|
|
"in_offered_msat": { },
|
|
"in_msatoshi_offered": { },
|
|
"in_payments_fulfilled": { },
|
|
"in_fulfilled_msat": { },
|
|
"in_msatoshi_fulfilled": { },
|
|
"out_payments_offered": { },
|
|
"out_offered_msat": { },
|
|
"out_msatoshi_offered": { },
|
|
"out_payments_fulfilled": { },
|
|
"out_fulfilled_msat": { },
|
|
"out_msatoshi_fulfilled": { },
|
|
"htlcs": { },
|
|
"initial_feerate": { },
|
|
"last_feerate": { },
|
|
"next_feerate": { },
|
|
"close_to_addr": { },
|
|
"initial_feerate": { },
|
|
"last_feerate": { },
|
|
"next_feerate": { },
|
|
"direction": { },
|
|
"last_tx_fee": {
|
|
"deprecated": true
|
|
},
|
|
"last_tx_fee_msat": {
|
|
"type": "msat",
|
|
"description": "fee attached to this the current tx"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"required": [ "short_channel_id" ]
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ "direction" ],
|
|
"properties": {
|
|
"state": { },
|
|
"scratch_txid": { },
|
|
"feerate": { },
|
|
"owner": { },
|
|
"short_channel_id": { },
|
|
"channel_id": { },
|
|
"funding_txid": { },
|
|
"inflight": { },
|
|
"close_to": { },
|
|
"private": { },
|
|
"opener": { },
|
|
"closer": { },
|
|
"features": { },
|
|
"funding": { },
|
|
"funding_allocation_msat": { },
|
|
"funding_msat": { },
|
|
"to_us_msat": { },
|
|
"min_to_us_msat": { },
|
|
"max_to_us_msat": { },
|
|
"total_msat": { },
|
|
"fee_base_msat": { },
|
|
"fee_proportional_millionths": { },
|
|
"dust_limit_msat": { },
|
|
"max_total_htlc_in_msat": { },
|
|
"their_reserve_msat": { },
|
|
"our_reserve_msat": { },
|
|
"spendable_msat": { },
|
|
"receivable_msat": { },
|
|
"minimum_htlc_in_msat": { },
|
|
"spendable_msatoshi": { },
|
|
"receivable_msatoshi": { },
|
|
"their_to_self_delay": { },
|
|
"our_to_self_delay": { },
|
|
"max_accepted_htlcs": { },
|
|
"msatoshi_to_us": { },
|
|
"msatoshi_to_us_min": { },
|
|
"msatoshi_to_us_max": { },
|
|
"msatoshi_total": { },
|
|
"dust_limit_satoshis": { },
|
|
"max_htlc_value_in_flight_msat": { },
|
|
"our_channel_reserve_satoshis": { },
|
|
"their_channel_reserve_satoshis": { },
|
|
"spendable_satoshis": { },
|
|
"receivable_satoshis": { },
|
|
"htlc_minimum_msat": { },
|
|
"state_changes": { },
|
|
"status": { },
|
|
"in_payments_offered": { },
|
|
"in_offered_msat": { },
|
|
"in_msatoshi_offered": { },
|
|
"in_payments_fulfilled": { },
|
|
"in_fulfilled_msat": { },
|
|
"in_msatoshi_fulfilled": { },
|
|
"out_payments_offered": { },
|
|
"out_offered_msat": { },
|
|
"out_msatoshi_offered": { },
|
|
"out_payments_fulfilled": { },
|
|
"out_fulfilled_msat": { },
|
|
"out_msatoshi_fulfilled": { },
|
|
"htlcs": { },
|
|
"initial_feerate": { },
|
|
"last_feerate": { },
|
|
"next_feerate": { },
|
|
"last_tx_fee": { },
|
|
"close_to_addr": { },
|
|
"initial_feerate": { },
|
|
"last_feerate": { },
|
|
"next_feerate": { },
|
|
"last_tx_fee": { },
|
|
"last_tx_fee_msat": { },
|
|
"direction": {
|
|
"type": "u32",
|
|
"description": "0 if we're the lesser node_id, 1 if we're the greater"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"required": [ "inflight" ]
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ "initial_feerate", "last_feerate", "next_feerate" ],
|
|
"properties": {
|
|
"state": { },
|
|
"scratch_txid": { },
|
|
"feerate": { },
|
|
"owner": { },
|
|
"short_channel_id": { },
|
|
"channel_id": { },
|
|
"funding_txid": { },
|
|
"close_to": { },
|
|
"private": { },
|
|
"opener": { },
|
|
"closer": { },
|
|
"features": { },
|
|
"funding": { },
|
|
"funding_allocation_msat": { },
|
|
"funding_msat": { },
|
|
"to_us_msat": { },
|
|
"min_to_us_msat": { },
|
|
"max_to_us_msat": { },
|
|
"total_msat": { },
|
|
"fee_base_msat": { },
|
|
"fee_proportional_millionths": { },
|
|
"dust_limit_msat": { },
|
|
"max_total_htlc_in_msat": { },
|
|
"their_reserve_msat": { },
|
|
"our_reserve_msat": { },
|
|
"spendable_msat": { },
|
|
"receivable_msat": { },
|
|
"minimum_htlc_in_msat": { },
|
|
"spendable_msatoshi": { },
|
|
"receivable_msatoshi": { },
|
|
"their_to_self_delay": { },
|
|
"our_to_self_delay": { },
|
|
"max_accepted_htlcs": { },
|
|
"msatoshi_to_us": { },
|
|
"msatoshi_to_us_min": { },
|
|
"msatoshi_to_us_max": { },
|
|
"msatoshi_total": { },
|
|
"dust_limit_satoshis": { },
|
|
"max_htlc_value_in_flight_msat": { },
|
|
"our_channel_reserve_satoshis": { },
|
|
"their_channel_reserve_satoshis": { },
|
|
"spendable_satoshis": { },
|
|
"receivable_satoshis": { },
|
|
"htlc_minimum_msat": { },
|
|
"state_changes": { },
|
|
"status": { },
|
|
"in_payments_offered": { },
|
|
"in_offered_msat": { },
|
|
"in_msatoshi_offered": { },
|
|
"in_payments_fulfilled": { },
|
|
"in_fulfilled_msat": { },
|
|
"in_msatoshi_fulfilled": { },
|
|
"out_payments_offered": { },
|
|
"out_offered_msat": { },
|
|
"out_msatoshi_offered": { },
|
|
"out_payments_fulfilled": { },
|
|
"out_fulfilled_msat": { },
|
|
"out_msatoshi_fulfilled": { },
|
|
"htlcs": { },
|
|
"inflight": { },
|
|
"last_tx_fee": { },
|
|
"close_to_addr": { },
|
|
"direction": { },
|
|
"last_tx_fee": { },
|
|
"last_tx_fee_msat": { },
|
|
"initial_feerate": {
|
|
"type": "string",
|
|
"description": "The feerate for the initial funding transaction in per-1000-weight, with \"kpw\" appended"
|
|
},
|
|
"last_feerate": {
|
|
"type": "string",
|
|
"description": "The feerate for the latest funding transaction in per-1000-weight, with \"kpw\" appended"
|
|
},
|
|
"next_feerate": {
|
|
"type": "string",
|
|
"description": "The minimum feerate for the next funding transaction in per-1000-weight, with \"kpw\" appended"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"connected": {
|
|
"enum": [ true ]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"additionalProperties": false,
|
|
"required": [ "netaddr", "features" ],
|
|
"properties": {
|
|
"id": { },
|
|
"channels": { },
|
|
"connected": { },
|
|
"htlcs": { },
|
|
"log": { },
|
|
"last_tx_fee": { },
|
|
"netaddr": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 1,
|
|
"description": "A single entry array",
|
|
"items": {
|
|
"type": "string",
|
|
"description": "address, e.g. 1.2.3.4:1234"
|
|
}
|
|
},
|
|
"features": {
|
|
"type": "hex",
|
|
"description": "bitmap of BOLT #9 features from peer's INIT message" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|