Files
xahaud/SQLiteDatabases.sql
JoelKatz 5cec2e9a11 New wallet system. Still missing unit tests, ledger synchronization,
and SQL code. This uses some of the 'magic' properties of elliptic
curves to create related families of public and private keys.
Wallet encryption is not needed because the private keys do not
need to be stored.
2011-12-26 18:42:50 -08:00

90 lines
2.4 KiB
SQL

CREATE TABLE Transactions ( -- transactions in all states
TransID CHARACTER(64) PRIMARY KEY, -- in hex
FromAcct CHARACTER(40), -- 20 byte hash of pub key in hex
FromSeq BIGINT UNSIGNED, -- account seq
FromLedger BIGINT UNSIGNED,
Identifier BIGINT UNSIGNED,
ToAcct CHARACTER(40), -- 20 byte hash of pub key
Amount BIGINT UNSIGNED,
Fee BIGINT UNSIGNED,
FirstSeen TEXT, -- time first seen
CommitSeq BIGINT UNSIGNED, -- ledger commited to, 0 if none
Status CHARACTER(1), -- (N)ew, (A)ctive, (C)onflicted, (D)one, (H)eld
Signature BLOB
);
CREATE TABLE PubKeys ( -- holds pub keys for nodes and accounts
ID CHARACTER(40) PRIMARY KEY,
PubKey BLOB
);
CREATE TABLE Ledgers ( -- closed/accepted ledgers
LedgerHash CHARACTER(64) PRIMARY KEY,
LedgerSeq BIGINT UNSIGNED,
PrevHash CHARACTER(64),
FeeHeld BIGINT UNSIGNED,
ClosingTime BIGINT UNSINGED,
AccountSetHash CHARACTER(64),
TransSetHash CHARACTER(64),
);
CREATE INDEX SeqLedger ON Ledgers(LedgerSeq);
CREATE TABLE LedgerConfirmations (
LedgerSeq BIGINT UNSIGNED,
LedgerHash CHARACTER(64),
Hanko CHARACTER(40),
Signature BLOB
);
CREATE INDEX LedgerConfByHash ON LedgerConfirmations(LedgerHash);
CREATE TABLE TrustedNodes (
Hanko CHARACTER(40) PRIMARY KEY,
TrustLevel SMALLINT,
Comment TEXT
);
CREATE TABLE KnownNodes (
Hanko CHARACTER(40) PRIMARY KEY,
LastSeen TEXT, -- YYYY-MM-DD HH:MM:SS.SSS
HaveContactInfo CHARACTER(1),
ContactObject BLOB
);
CREATE TABLE CommittedObjects ( -- used to synch nodes
Hash CHARACTER(64) PRIMARY KEY,
ObjType CHAR(1) NOT NULL, -- (L)edger, (T)ransaction, (A)ccount node, transaction (N)ode
LedgerIndex BIGINT UNSIGNED, -- 0 if none
Object BLOB
);
CREATE INDEX ObjectLocate ON CommittedObjects(LedgerIndex, ObjType);
CREATE TABLE LocalAcctFamilies ( -- a family of accounts that share a payphrase
FamilyName CHARACTER(40) PRIMARY KEY,
RootPubKey CHARACTER(66),
Seq BIGINT UNSIGNED, -- last one issued
Name TEXT,
Comment TEXT
)
CREATE TABLE LocalAccounts ( -- an individual account
ID CHARACTER(40) PRIMARY KEY,
DKID CHARACTER(40), -- root determinstic key
DKSeq BIGINT UNSIGNED, -- sequence number
Seq BIGINT UNSIGNED, -- last transaction seen/issued
Balance BIGINT UNSIGNED,
LedgerSeq BIGINT UNSIGNED, -- ledger this balance is from
Comment TEXT
);
CREATE UNIQUE INDEX AccountLocate ON LocalAccounts(DKID, DKSeq);