-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathschema.sql
More file actions
201 lines (179 loc) · 5.59 KB
/
Copy pathschema.sql
File metadata and controls
201 lines (179 loc) · 5.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
-- Copyright 2019-2025 Celer Network
--
-- Storage SQL schema
CREATE DATABASE IF NOT EXISTS celer;
CREATE USER IF NOT EXISTS celer;
GRANT ALL ON DATABASE celer TO celer;
SET DATABASE TO celer;
-- START OF PORTABLE SCHEMA (works on SQLite and CockroachDB)
-- CockroachDB restricts queries to a single indexed column.
-- This means the "key" column must contain the fully specified
-- key (table+key), in addition to the table being stored in
-- the "tbl" column redundantly. This allows both fast access
-- by key, and fast iteration over the keys of a single table
-- by fetching based on the "tbl" column.
CREATE TABLE IF NOT EXISTS keyvals (
key TEXT PRIMARY KEY NOT NULL,
tbl TEXT NOT NULL,
val BYTEA NOT NULL
);
CREATE INDEX IF NOT EXISTS kvs_tbl_idx ON keyvals (tbl);
CREATE TABLE IF NOT EXISTS channels (
cid TEXT PRIMARY KEY NOT NULL,
peer TEXT NOT NULL,
token TEXT NOT NULL,
ledger TEXT NOT NULL,
state INT NOT NULL,
statets TIMESTAMPTZ NOT NULL,
opents TIMESTAMPTZ NOT NULL,
openresp BYTEA,
onchainbalance BYTEA,
basesn INT NOT NULL,
lastusedsn INT NOT NULL,
lastackedsn INT NOT NULL,
lastnackedsn INT NOT NULL,
selfsimplex BYTEA,
peersimplex BYTEA,
UNIQUE (peer, token)
);
CREATE INDEX IF NOT EXISTS chan_ledger_idx ON channels (ledger);
CREATE INDEX IF NOT EXISTS chan_state_idx ON channels (state);
CREATE INDEX IF NOT EXISTS chan_token_idx ON channels (token);
CREATE TABLE IF NOT EXISTS closedchannels (
cid TEXT PRIMARY KEY NOT NULL,
peer TEXT NOT NULL,
token TEXT NOT NULL,
opents TIMESTAMPTZ NOT NULL,
closets TIMESTAMPTZ NOT NULL
);
CREATE INDEX IF NOT EXISTS cc_peer_token_idx ON closedchannels (peer, token);
CREATE TABLE IF NOT EXISTS payments (
payid TEXT PRIMARY KEY NOT NULL,
pay BYTEA,
paynote BYTEA,
incid TEXT NOT NULL,
instate INT NOT NULL,
outcid TEXT NOT NULL,
outstate INT NOT NULL,
src TEXT NOT NULL,
dest TEXT NOT NULL,
createts TIMESTAMPTZ NOT NULL
);
CREATE INDEX IF NOT EXISTS pay_src_idx ON payments (src);
CREATE INDEX IF NOT EXISTS pay_dest_idx ON payments (dest);
CREATE INDEX IF NOT EXISTS pay_ts_idx ON payments (createts);
CREATE TABLE IF NOT EXISTS paydelegation (
payid TEXT PRIMARY KEY NOT NULL REFERENCES payments (payid) ON UPDATE CASCADE ON DELETE CASCADE,
dest TEXT NOT NULL,
status INT NOT NULL,
payidout TEXT,
delegator TEXT
);
CREATE INDEX IF NOT EXISTS paydel_dest_idx ON paydelegation (dest);
CREATE TABLE IF NOT EXISTS crossnetpays (
payid TEXT PRIMARY KEY NOT NULL REFERENCES payments (payid) ON UPDATE CASCADE ON DELETE CASCADE,
originalpayid TEXT NOT NULL,
originalpay BYTEA,
state INT NOT NULL,
srcnetid INT NOT NULL,
dstnetid INT NOT NULL,
bridgeaddr TEXT NOT NULL,
bridgenetid INT NOT NULL,
UNIQUE (originalpayid)
);
CREATE TABLE IF NOT EXISTS secrets (
hash TEXT PRIMARY KEY NOT NULL,
preimage TEXT NOT NULL,
payid TEXT NOT NULL,
UNIQUE (hash, payid)
);
CREATE TABLE IF NOT EXISTS tcb (
addr TEXT NOT NULL,
token TEXT NOT NULL,
deposit TEXT NOT NULL,
UNIQUE (addr, token)
);
CREATE TABLE IF NOT EXISTS monitor (
event TEXT PRIMARY KEY NOT NULL,
blocknum INT NOT NULL,
blockidx INT NOT NULL,
restart BOOL NOT NULL
);
CREATE TABLE IF NOT EXISTS routing (
dest TEXT NOT NULL,
token TEXT NOT NULL,
cid TEXT NOT NULL,
UNIQUE (dest, token)
);
CREATE TABLE IF NOT EXISTS edges (
cid TEXT PRIMARY KEY NOT NULL,
token TEXT NOT NULL,
addr1 TEXT NOT NULL,
addr2 TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS edges_token_idx ON edges (token);
CREATE TABLE IF NOT EXISTS netbridge (
bridgeaddr TEXT PRIMARY KEY NOT NULL,
bridgenetid INT NOT NULL
);
CREATE TABLE IF NOT EXISTS bridgerouting (
destnetid INT PRIMARY KEY NOT NULL,
bridgeaddr TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS nettokens (
netid INT NOT NULL,
nettoken TEXT NOT NULL,
localtoken TEXT NOT NULL,
rate FLOAT NOT NULL,
UNIQUE (netid, nettoken),
UNIQUE (netid, localtoken)
);
CREATE TABLE IF NOT EXISTS peers (
peer TEXT PRIMARY KEY NOT NULL,
server TEXT NOT NULL,
activecids TEXT NOT NULL, -- comma-separated list of cids
delegateproof BYTEA
);
CREATE INDEX IF NOT EXISTS peers_server_idx ON peers (server);
CREATE TABLE IF NOT EXISTS desttokens (
dest TEXT NOT NULL,
token TEXT NOT NULL,
osps TEXT NOT NULL, -- comma-separated list of access OSPs
openchants INT NOT NULL, -- unix-second timestamp of the channel-open
UNIQUE (dest, token)
);
CREATE TABLE IF NOT EXISTS chanmessages (
cid TEXT NOT NULL,
seqnum INT NOT NULL,
msg BYTEA,
UNIQUE (cid, seqnum)
);
CREATE TABLE IF NOT EXISTS chanmigration (
cid TEXT NOT NULL REFERENCES channels (cid) ON DELETE CASCADE,
toledger TEXT NOT NULL,
deadline INT NOT NULL,
onchainreq BYTEA,
state INT NOT NULL,
ts TIMESTAMPTZ NOT NULL,
UNIQUE (cid, toledger)
);
CREATE INDEX IF NOT EXISTS mg_toledger_state_idx ON chanmigration (toledger, state);
CREATE TABLE IF NOT EXISTS deposit (
uuid TEXT PRIMARY KEY NOT NULL,
cid TEXT NOT NULL,
topeer BOOL NOT NULL,
amount TEXT NOT NULL,
refill BOOL NOT NULL,
deadline TIMESTAMPTZ NOT NULL,
state INT NOT NULL,
txhash TEXT NOT NULL,
errmsg TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS deposit_cid_idx ON deposit (cid);
CREATE INDEX IF NOT EXISTS deposit_state_idx ON deposit (state);
CREATE INDEX IF NOT EXISTS deposit_txhash_idx ON deposit (txhash);
CREATE TABLE IF NOT EXISTS lease (
id TEXT PRIMARY KEY NOT NULL,
owner TEXT NOT NULL,
updatets TIMESTAMPTZ NOT NULL
);