Skip to content

RCP-250509A: Payment creation workflow for v0.12 #19

@dr-orlovsky

Description

@dr-orlovsky
flowchart TD
    invoice[/Invoice/]
    coinselect[/Coinselect strategy\]
    request[/Operation Request/]
    script[/"`Payment script
    (combines multiple operation requests)`"/]
    payment[/Payment spec/]
    prefab[/Prefab bundle/]
    psbt0[/Initial PSBT/]
    psbt1[/Pre-commit PSBT/]
    psbt2[/Comitted PSBT/]
    tx[/Signed transaction/]
    consignment[/Consignment/]
    
    fulfill[RgbWallet::fulfill]
    compose[RgbRuntime::compose_psbt]
    construct[[PsbtConstructor::construct]]
    bundle[RgbWallet::bundle]
    include[RgbWallet::include]
    consign[Contract::consign]
    resolve[Psbt::rgb_resolve]
    fill[Psbt::rgb_fill_csv]
    commit[Psbt::dbc_commit]
    finalize[Psbt::finalize]
    extract[Psbt::extract]
    update[Update UTXO set]
    broadcast[Broadcast Tx]
    
    lightning(((Lightning node)))
    lnsign(((LN signer)))
    sign(((HW Signer)))
    multisig((("Multisig<br/>partners")))
    payjoin(((Payjoin peers)))
    lnnode(((LN Node)))
    wallet(((Wallet UI)))
    rbf((("Replace-<br>by-fee")))

    lightning --> script
    lightning --> psbt0

    coinselect --> fulfill
    invoice --> fulfill

    payment --> rbf --> payment
    payment --> prefab
    
    subgraph "RgbRuntime::pay_invoice"
        fulfill --> request --> script

        script --> compose
        bundle --> payment
        script --> resolve

        subgraph "RgbRuntime::transfer" 
            subgraph "RgbRuntime::exec"
                compose --> construct --> compose
                compose --> psbt0 --> resolve
                psbt0 --> fill
                subgraph "RgbRuntime::color_psbt"
                    resolve --> bundle --> fill
                    fill --> psbt1
                end
            end
            psbt1 --> payment
            subgraph "RgbRuntime::complete"
                commit --> include
            end
            payment --> commit
        end
    end

    compose --> payjoin --> compose

    include -.-> consign
    payment --> consign --> consignment
    commit --> psbt2
    
    prefab --> sign
    prefab --> lnsign
    prefab --> multisig
    psbt2 --> sign
    psbt2 --> lnsign
    psbt2 --> multisig

    sign --> tx
    lnsign --> tx
    multisig --> tx
    
    multisig -.-> include
    
    subgraph "RgbRuntime::finalize"
        tx --> finalize --> extract --> broadcast --> update
    end
    
    include -.-> |Valid contract state|lnnode
    include -.-> |Valid contract state|wallet

    update -.-> |Valid contract state|lnnode
    update -.-> |Valid contract state|wallet
Loading

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions