mirror of https://github.com/lightninglabs/loop
loopdb: add loopdb sqlite migrations
parent
5c07c20d16
commit
3c58e98a0f
@ -0,0 +1,7 @@
|
||||
DROP INDEX IF EXISTS updates_swap_hash_idx;
|
||||
|
||||
DROP TABLE IF EXISTS swaps;
|
||||
DROP TABLE IF EXISTS loopin_swaps;
|
||||
DROP TABLE IF EXISTS loopout_swaps;
|
||||
DROP TABLE IF EXISTS swap_updates;
|
||||
DROP TABLE IF EXISTS htlc_keys;
|
@ -0,0 +1,166 @@
|
||||
-- swaps stores all base data that is shared between loop-outs and loop-ins,
|
||||
-- as well as the updates.
|
||||
CREATE TABLE swaps (
|
||||
-- id is the autoincrementing primary key.
|
||||
id INTEGER PRIMARY KEY,
|
||||
|
||||
-- swap_hash is the randomly generated hash of the swap, which is used
|
||||
-- as the swap identifier for the clients.
|
||||
swap_hash BLOB NOT NULL UNIQUE,
|
||||
|
||||
-- preimage is the preimage for swap htlc.
|
||||
preimage BLOB NOT NULL UNIQUE,
|
||||
|
||||
-- initiation_time is the creation time (when stored) of the contract.
|
||||
initiation_time TIMESTAMP NOT NULL,
|
||||
|
||||
-- amount_requested is the requested swap amount in sats.
|
||||
amount_requested BIGINT NOT NULL,
|
||||
|
||||
-- cltv_expiry defines the on-chain HTLC's CLTV. In specific,
|
||||
-- * For loop in swap, this value must be greater than the off-chain
|
||||
-- payment's CLTV.
|
||||
-- * For loop out swap, this value must be smaller than the off-chain
|
||||
-- payment's CLTV.
|
||||
cltv_expiry INTEGER NOT NULL,
|
||||
|
||||
-- max_miner_fee is the maximum in on-chain fees that we are willing to
|
||||
-- spend.
|
||||
max_miner_fee BIGINT NOT NULL,
|
||||
|
||||
-- max_swap_fee is the maximum we are willing to pay the server for the
|
||||
-- swap.
|
||||
max_swap_fee BIGINT NOT NULL,
|
||||
|
||||
-- initiation_height is the block height at which the swap was initiated.
|
||||
initiation_height INTEGER NOT NULL,
|
||||
|
||||
-- protocol_version is the protocol version that the swap was created with.
|
||||
-- Note that this version is not upgraded if the client upgrades or
|
||||
-- downgrades their protocol version mid-swap.
|
||||
protocol_version INTEGER NOT NULL,
|
||||
|
||||
-- label contains an optional label for the swap.
|
||||
label TEXT NOT NULL
|
||||
);
|
||||
|
||||
|
||||
-- swap_updates stores timestamps and states of swap updates.
|
||||
CREATE TABLE swap_updates (
|
||||
-- id is the autoincrementing primary key.
|
||||
id INTEGER PRIMARY KEY,
|
||||
|
||||
-- swap_id is the foreign key referencing the swap in the swaps table.
|
||||
swap_hash BLOB NOT NULL,
|
||||
|
||||
-- update_timestamp is the timestamp the swap was updated at.
|
||||
update_timestamp TIMESTAMP NOT NULL,
|
||||
|
||||
-- update_state is the state the swap was in at a given timestamp.
|
||||
update_state INTEGER NOT NULL,
|
||||
|
||||
-- htlc_txhash is the hash of the transaction that creates the htlc.
|
||||
htlc_txhash TEXT NOT NULL,
|
||||
|
||||
-- server_cost is the amount paid to the server.
|
||||
server_cost BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
-- onchain_cost is the amount paid to miners for the onchain tx.
|
||||
onchain_cost BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
-- offchain_cost is the amount paid in routing fees.
|
||||
offchain_cost BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
-- Foreign key constraint to ensure that swap_id references an existing swap.
|
||||
FOREIGN KEY (swap_hash) REFERENCES swaps (swap_hash)
|
||||
);
|
||||
|
||||
|
||||
-- loopin_swaps stores the loop-in specific data.
|
||||
CREATE TABLE loopin_swaps (
|
||||
-- swap_hash points to the parent swap hash.
|
||||
swap_hash BLOB PRIMARY KEY REFERENCES swaps(swap_hash),
|
||||
|
||||
-- htlc_conf_target specifies the targeted confirmation target for the
|
||||
-- sweep transaction.
|
||||
htlc_conf_target INTEGER NOT NULL,
|
||||
|
||||
-- last_hop is an optional parameter that specifies the last hop to be
|
||||
-- used for a loop in swap.
|
||||
last_hop BLOB,
|
||||
|
||||
-- external_htlc specifies whether the htlc is published by an external
|
||||
-- source.
|
||||
external_htlc BOOLEAN NOT NULL
|
||||
);
|
||||
|
||||
-- loopout_swaps stores the loop-out specific data.
|
||||
CREATE TABLE loopout_swaps (
|
||||
-- swap_hash points to the parent swap hash.
|
||||
swap_hash BLOB PRIMARY KEY REFERENCES swaps(swap_hash),
|
||||
|
||||
-- dest_address is the destination address of the loop out swap.
|
||||
dest_address TEXT NOT NULL,
|
||||
|
||||
-- SwapInvoice is the invoice that is to be paid by the client to
|
||||
-- initiate the loop out swap.
|
||||
swap_invoice TEXT NOT NULL,
|
||||
|
||||
-- MaxSwapRoutingFee is the maximum off-chain fee in msat that may be
|
||||
-- paid for the swap payment to the server.
|
||||
max_swap_routing_fee BIGINT NOT NULL,
|
||||
|
||||
-- SweepConfTarget specifies the targeted confirmation target for the
|
||||
-- client sweep tx.
|
||||
sweep_conf_target INTEGER NOT NULL,
|
||||
|
||||
-- HtlcConfirmations is the number of confirmations we require the on
|
||||
-- chain htlc to have before proceeding with the swap.
|
||||
htlc_confirmations INTEGER NOT NULL,
|
||||
|
||||
-- OutgoingChanSet is the set of short ids of channels that may be used.
|
||||
-- If empty, any channel may be used.
|
||||
outgoing_chan_set TEXT NOT NULL,
|
||||
|
||||
-- PrepayInvoice is the invoice that the client should pay to the
|
||||
-- server that will be returned if the swap is complete.
|
||||
prepay_invoice TEXT NOT NULL,
|
||||
|
||||
-- MaxPrepayRoutingFee is the maximum off-chain fee in msat that may be
|
||||
-- paid for the prepayment to the server.
|
||||
max_prepay_routing_fee BIGINT NOT NULL,
|
||||
|
||||
-- SwapPublicationDeadline is a timestamp that the server commits to
|
||||
-- have the on-chain swap published by. It is set by the client to
|
||||
-- allow the server to delay the publication in exchange for possibly
|
||||
-- lower fees.
|
||||
publication_deadline TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
|
||||
-- htlc_keys stores public and private keys used when construcing swap HTLCs.
|
||||
CREATE TABLE htlc_keys (
|
||||
-- swap_hash points to the parent swap hash.
|
||||
swap_hash BLOB PRIMARY KEY REFERENCES swaps(swap_hash),
|
||||
|
||||
-- sender_script_pubkey is the sender's script pubkey used in the HTLC.
|
||||
sender_script_pubkey BLOB NOT NULL,
|
||||
|
||||
-- receiver_script_pubkey is the receivers's script pubkey used in the HTLC.
|
||||
receiver_script_pubkey BLOB NOT NULL,
|
||||
|
||||
-- sender_internal_pubkey is the public key for the sender_internal_key.
|
||||
sender_internal_pubkey BLOB,
|
||||
|
||||
-- receiver_internal_pubkey is the public key for the receiver_internal_key.
|
||||
receiver_internal_pubkey BLOB,
|
||||
|
||||
-- client_key_family is the family of key being identified.
|
||||
client_key_family INTEGER NOT NULL,
|
||||
|
||||
-- client_key_index is the precise index of the key being identified.
|
||||
client_key_index INTEGER NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE INDEX IF NOT EXISTS updates_swap_hash_idx ON swap_updates(swap_hash);
|
@ -0,0 +1 @@
|
||||
DROP TABLE IF EXISTS liquidity_params;
|
@ -0,0 +1,6 @@
|
||||
-- liquidity_params stores the liquidity parameters for autoloop as a single row
|
||||
-- with a blob column, which is the serialized proto request.
|
||||
CREATE TABLE liquidity_params (
|
||||
id INTEGER PRIMARY KEY,
|
||||
params BLOB
|
||||
);
|
Loading…
Reference in New Issue