lightning-utxopsbt

lightning-utxopsbt -- Command to populate PSBT inputs from given UTXOs

SYNOPSIS

utxopsbt satoshi feerate startweight utxos [reserve] [reservedok] [locktime] [min_witness_weight] [excess_as_change] [opening_anchor_channel]

DESCRIPTION

utxopsbt is a low-level RPC command which creates a PSBT using unreserved inputs in the wallet, optionally reserving them as well.

It deliberately mirrors the parameters and output of lightning-fundpsbt(7) except instead of an optional minconf parameter to select unreserved outputs from the wallet, it takes a compulsory list of outputs to use.

  • satoshi (sat_or_all): The minimum satoshi value of the output(s) needed (or the string all meaning use all unreserved inputs). If a value, it can be a whole number, a whole number ending in sat, a whole number ending in 000msat, or a number with 1 to 8 decimal places ending in btc.
  • feerate (feerate): Used for the transaction as initial feerate. The default is normal.
  • startweight (u32): The weight of the transaction before fundpsbt has added any inputs.
  • utxos (array of outpoints): An array of txid:vout, each of which must be reserved or available.:
    • (outpoint, optional)
  • reserve (u32, optional): If not zero, then reserveinputs is called (successfully, with exclusive true) on the returned PSBT for this number of blocks. The default is 72 blocks.
  • reservedok (boolean, optional): If set to true, it will also fail if any of the utxos are already reserved. The default is false.
  • locktime (u32, optional): If not set, it is set to a recent block height.
  • min_witness_weight (u32, optional): Minimum weight to use for a UTXO's witness. If the actual witness weight is greater than the provided minimum, the actual witness weight will be used.
  • excess_as_change (boolean, optional): Flag to add a change output for the excess sats.
  • opening_anchor_channel (boolean, optional): To signel that it needs emergency reserve for anchors so that we can lowball our commitment tx fees, and min-emergency-msat for reserving some sats for closing anchor channels. (added v23.08)

RETURN VALUE

On success, an object is returned, containing:

  • psbt (string): Unsigned PSBT which fulfills the parameters given.
  • feerate_per_kw (u32): The feerate used to create the PSBT, in satoshis-per-kiloweight.
  • estimated_final_weight (u32): The estimated weight of the transaction once fully signed.
  • excess_msat (msat): The amount above satoshi which is available. This could be zero, or dust; it will be zero if change_outnum is also returned.
  • change_outnum (u32, optional): The 0-based output number where change was placed (only if parameter excess_as_change was true and there was sufficient funds).
  • reservations (array of objects, optional): If reserve was true or a non-zero number, just as per lightning- reserveinputs(7).:
    • txid (txid): The txid of the transaction.
    • vout (u32): The 0-based output number.
    • was_reserved (boolean): Whether this output was previously reserved.
    • reserved (boolean) (always true): Whether this output is now reserved.
    • reserved_to_block (u32): The blockheight the reservation will expire.

On success, returns the psbt it created, containing the inputs, feerate_per_kw showing the exact numeric feerate it used, estimated_final_weight for the estimated weight of the transaction once fully signed, and excess_msat containing the amount above satoshi which is available. This could be zero, or dust. If satoshi was all, then excess_msat is the entire amount once fees are subtracted for the weights of the inputs and startweight.

If reserve was true or a non-zero number, then a reservations array is returned, exactly like reserveinputs.

If excess_as_change is true and the excess is enough to cover an additional output above the dust_limit, then an output is added to the PSBT for the excess amount. The excess_msat will be zero. A change_outnum will be returned with the index of the change output.

ERRORS

On error the returned object will contain code and message properties, with code being one of the following:

  • -32602: If the given parameters are wrong.
  • -1: Catchall nonspecific error.
  • 301: Insufficient UTXOs to meet satoshi value.

AUTHOR

Rusty Russell <[email protected]> is mainly responsible.

SEE ALSO

lightning-fundpsbt(7)

RESOURCES

Main web site: https://github.com/ElementsProject/lightning

EXAMPLES

Example 1:

Request:

lightning-cli utxopsbt "1000000" "15000perkw" "214" "['utxo010101010101010101010101010101010101010101010101010101010101:1']" "None" "True" "None" "None" "True"
{
  "id": "example:utxopsbt#1",
  "method": "utxopsbt",
  "params": [
    1000000,
    "15000perkw",
    214,
    [
      "utxo010101010101010101010101010101010101010101010101010101010101:1"
    ],
    null,
    true,
    null,
    null,
    true
  ]
}

Response:

{
  "psbt": "cHNidP8BAgQCAAAAAQMEbwAAAAEEAQpsbt510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000510000",
  "feerate_per_kw": 15000,
  "estimated_final_weight": 657,
  "excess_msat": 0,
  "change_outnum": 0,
  "reservations": [
    {
      "txid": "utxo010101010101010101010101010101010101010101010101010101010101",
      "vout": 1,
      "was_reserved": true,
      "reserved": true,
      "reserved_to_block": 2240
    }
  ]
}

Example 2:

Request:

lightning-cli utxopsbt -k "satoshi"=2000000 "feerate"="18750perkw" "startweight"=214 "utxos"='["utxo010101010101010101010101010101010101010101010101010101010101:1"]' "reservedok"=True "excess_as_change"=True
{
  "id": "example:utxopsbt#2",
  "method": "utxopsbt",
  "params": {
    "satoshi": 2000000,
    "feerate": "18750perkw",
    "startweight": 214,
    "utxos": [
      "utxo010101010101010101010101010101010101010101010101010101010101:1"
    ],
    "reservedok": true,
    "excess_as_change": true
  }
}

Response:

{
  "psbt": "cHNidP8BAgQCAAAAAQMEbwAAAAEEAQpsbt520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000520000",
  "feerate_per_kw": 18750,
  "estimated_final_weight": 657,
  "excess_msat": 0,
  "change_outnum": 0,
  "reservations": [
    {
      "txid": "utxo010101010101010101010101010101010101010101010101010101010101",
      "vout": 1,
      "was_reserved": true,
      "reserved": true,
      "reserved_to_block": 2312
    }
  ]
}

Core Lightning (previously c-lightning) is a lightweight, highly customizable and standard compliant implementation of the Lightning Network protocol.

© 2023 Core Lightning
All rights reserved.

Discussion Forum

The official Core Lightning forum is hosted at discuss.corelightning.org

BuildonL2 Community

The official BuildOnL2 community lives at community.corelightning.org. Join us and build the future of bitcoin on lightning.

Mailing List

For general discussions about CLN implementation, use [email protected]. For the Lightning Network, use [email protected]

Telegram

Community-driven telegram group where most of the node operators hang out. Go to https://t.me/lightningd to join.

Discord

Community-driven discord server where the devs flock together. Go to https://discord.gg/w27fMFESMN to join.

Internet Relay Chat

Don't hesitate to reach out to us on IRC at #lightning-dev @ libera.chat, #c-lightning @ libera.chat.