SET client_encoding = 'SQL_ASCII'; SET check_function_bodies = false; SET SESSION AUTHORIZATION 'postgres'; REVOKE ALL ON SCHEMA public FROM PUBLIC; GRANT ALL ON SCHEMA public TO PUBLIC; COMMENT ON SCHEMA public IS 'ck'; SET SESSION AUTHORIZATION 'postgres'; SET search_path = public, pg_catalog; CREATE TABLE users ( userid bigint NOT NULL, username character varying(256) NOT NULL, emailaddress character varying(256) NOT NULL, joineddate timestamp with time zone NOT NULL, passwordhash character varying(256) NOT NULL, secondaryuserid character varying(64) NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (userid, expirydate) ); CREATE UNIQUE INDEX usersusername ON users USING btree (username, expirydate); CREATE TABLE workers ( workerid bigint NOT NULL, -- unique per record userid bigint NOT NULL, workername character varying(256) NOT NULL, difficultydefault integer DEFAULT 0 NOT NULL, -- 0 means default idlenotificationenabled char DEFAULT 'n'::character varying NOT NULL, idlenotificationtime integer DEFAULT 10 NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (workerid, expirydate) ); CREATE UNIQUE INDEX workersuserid ON workers USING btree (userid, workername, expirydate); CREATE TABLE paymentaddresses ( paymentaddressid bigint NOT NULL, -- unique per record userid bigint NOT NULL, payaddress character varying(256) DEFAULT ''::character varying NOT NULL, payratio integer DEFAULT 1000000 NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (paymentaddressid, expirydate) ); CREATE UNIQUE INDEX payadduserid ON paymentaddresses USING btree (userid, payaddress, expirydate); CREATE TABLE payments ( paymentid bigint NOT NULL, -- unique per record userid bigint NOT NULL, paydate timestamp with time zone NOT NULL, payaddress character varying(256) DEFAULT ''::character varying NOT NULL, originaltxn character varying(256) DEFAULT ''::character varying NOT NULL, amount bigint NOT NULL, -- satoshis committxn character varying(256) DEFAULT ''::character varying NOT NULL, commitblockhash character varying(256) DEFAULT ''::character varying NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (paymentid, expirydate) ); CREATE UNIQUE INDEX payuserid ON payments USING btree (userid, payaddress, originaltxn, expirydate); CREATE TABLE accountbalance ( -- summarised from miningpayouts and payments userid bigint NOT NULL, confirmedpaid bigint DEFAULT 0 NOT NULL, -- satoshis confirmedunpaid bigint DEFAULT 0 NOT NULL, -- satoshis pendingconfirm bigint DEFAULT 0 NOT NULL, -- satoshis heightupdate integer not NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (userid, expirydate) ); CREATE TABLE accountadjustment ( -- manual corrections userid bigint NOT NULL, authority character varying(256) NOT NULL, reason text NOT NULL, amount bigint DEFAULT 0 NOT NULL, -- satoshis createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (userid, createdate, expirydate) ); CREATE TABLE idcontrol ( idname character varying(64) NOT NULL, lastid bigint DEFAULT 1 NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, modifydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', modifyby character varying(64) DEFAULT ''::character varying NOT NULL, modifycode character varying(128) DEFAULT ''::character varying NOT NULL, modifyinet character varying(128) DEFAULT ''::character varying NOT NULL, PRIMARY KEY (idname) ); CREATE TABLE optioncontrol ( optionname character varying(64) NOT NULL, optionvalue text NOT NULL, activationdate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', activationheight integer DEFAULT 999999999, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (optionname, activationdate, activationheight, expirydate) ); CREATE TABLE workinfo ( workinfoid bigint NOT NULL, -- unique per record poolinstance character varying(256) NOT NULL, transactiontree text DEFAULT ''::text NOT NULL, merklehash text DEFAULT ''::text NOT NULL, prevhash character varying(256) NOT NULL, coinbase1 character varying(256) NOT NULL, coinbase2 character varying(256) NOT NULL, version character varying(64) NOT NULL, bits character varying(64) NOT NULL, ntime character varying(64) NOT NULL, reward bigint NOT NULL, -- satoshis createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (workinfoid, expirydate) ); CREATE TABLE shares ( -- not stored in the db - only in log files workinfoid bigint NOT NULL, userid bigint NOT NULL, workername character varying(256) NOT NULL, clientid integer NOT NULL, enonce1 character varying(64) NOT NULL, nonce2 character varying(256) NOT NULL, nonce character varying(64) NOT NULL, diff float NOT NULL, sdiff float NOT NULL, errn integer NOT NULL, error character varying(64) DEFAULT ''::character varying NOT NULL, -- optional secondaryuserid character varying(64) NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (workinfoid, userid, workername, enonce1, nonce2, nonce, expirydate) ); CREATE TABLE shareerrors ( -- not stored in the db - only in log files workinfoid bigint NOT NULL, userid bigint NOT NULL, workername character varying(256) NOT NULL, clientid integer NOT NULL, errn integer NOT NULL, error character varying(64) DEFAULT ''::character varying NOT NULL, -- optional secondaryuserid character varying(64) NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (workinfoid, userid, workername, clientid, createdate, expirydate) ); CREATE TABLE sharesummary ( -- per workinfo for each user+worker userid bigint NOT NULL, workername character varying(256) NOT NULL, workinfoid bigint NOT NULL, diffacc float NOT NULL, diffsta float NOT NULL, diffdup float NOT NULL, diffhi float NOT NULL, diffrej float NOT NULL, shareacc float NOT NULL, sharesta float NOT NULL, sharedup float NOT NULL, sharehi float NOT NULL, sharerej float NOT NULL, sharecount bigint NOT NULL, errorcount bigint NOT NULL, firstshare timestamp with time zone NOT NULL, lastshare timestamp with time zone NOT NULL, complete char NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) NOT NULL, createcode character varying(128) NOT NULL, createinet character varying(128) NOT NULL, modifydate timestamp with time zone NOT NULL, modifyby character varying(64) NOT NULL, modifycode character varying(128) NOT NULL, modifyinet character varying(128) NOT NULL, PRIMARY KEY (userid, workername, workinfoid) ); CREATE TABLE workmarkers ( -- range of workinfo for share accounting markerid bigint NOT NULL, workinfoidend bigint NOT NULL, workinfoidstart bigint NOT NULL, description character varying(256) DEFAULT ''::character varying NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (workinfoidstart) ); CREATE UNIQUE INDEX workmarkersid ON workmarkers USING btree (markerid); CREATE TABLE markersummary ( -- sum of sharesummary for a workinfo range markerid bigint NOT NULL, userid bigint NOT NULL, workername character varying(256) NOT NULL, diffacc float NOT NULL, diffsta float NOT NULL, diffdup float NOT NULL, diffhi float NOT NULL, diffrej float NOT NULL, shareacc float NOT NULL, sharesta float NOT NULL, sharedup float NOT NULL, sharehi float NOT NULL, sharerej float NOT NULL, sharecount bigint NOT NULL, errorcount bigint NOT NULL, firstshare timestamp with time zone NOT NULL, lastshare timestamp with time zone NOT NULL, complete char NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) NOT NULL, createcode character varying(128) NOT NULL, createinet character varying(128) NOT NULL, modifydate timestamp with time zone NOT NULL, modifyby character varying(64) NOT NULL, modifycode character varying(128) NOT NULL, modifyinet character varying(128) NOT NULL, PRIMARY KEY (markerid, userid, workername) ); -- shares will be a flat file only -- so this needs all info from shares CREATE TABLE blocks ( height integer not NULL, blockhash character varying(256) NOT NULL, workinfoid bigint NOT NULL, userid bigint NOT NULL, workername character varying(256) NOT NULL, clientid integer NOT NULL, enonce1 character varying(64) NOT NULL, nonce2 character varying(256) NOT NULL, nonce character varying(64) NOT NULL, reward bigint NOT NULL, -- satoshis confirmed char DEFAULT '' NOT NULL, -- blank, 'c'onfirmed or 'o'rphan createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (height, blockhash, expirydate) ); -- calculation for the given block - orphans will be here also (not deleted later) -- rules for orphans/next block will be pool dependent -- normally pay due would be related to sum of one height + for all blockhash CREATE TABLE miningpayouts ( miningpayoutid bigint NOT NULL, -- unique per record userid bigint NOT NULL, height integer not NULL, blockhash character varying(256) DEFAULT ''::character varying NOT NULL, amount bigint DEFAULT 0 NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (miningpayoutid, expirydate) ); CREATE UNIQUE INDEX minpayuserid ON miningpayouts USING btree (userid, blockhash, expirydate); CREATE TABLE eventlog ( eventlogid bigint NOT NULL, poolinstance character varying(256) NOT NULL, eventlogcode character varying(64) NOT NULL, eventlogdescription text NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (eventlogid, expirydate) ); CREATE TABLE auths ( authid bigint NOT NULL, -- unique per record poolinstance character varying(256) NOT NULL, userid bigint NOT NULL, workername character varying(256) NOT NULL, clientid integer NOT NULL, enonce1 character varying(64) NOT NULL, useragent character varying(256) NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, expirydate timestamp with time zone DEFAULT '6666-06-06 06:06:06+00', PRIMARY KEY (authid, expirydate) ); CREATE TABLE poolstats ( poolinstance character varying(256) NOT NULL, elapsed bigint NOT NULL, users integer NOT NULL, workers integer NOT NULL, hashrate float NOT NULL, hashrate5m float NOT NULL, hashrate1hr float NOT NULL, hashrate24hr float NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, PRIMARY KEY (poolinstance, createdate) ); CREATE TABLE userstats ( userid bigint NOT NULL, workername character varying(256) NOT NULL, hashrate float NOT NULL, hashrate5m float NOT NULL, hashrate1hr float NOT NULL, hashrate24hr float NOT NULL, summarylevel char NOT NULL, statsdate timestamp with time zone NOT NULL, createdate timestamp with time zone NOT NULL, createby character varying(64) DEFAULT ''::character varying NOT NULL, createcode character varying(128) DEFAULT ''::character varying NOT NULL, createinet character varying(128) DEFAULT ''::character varying NOT NULL, PRIMARY KEY (userid, workername, summarylevel, statsdate) ); CREATE TABLE version ( vlock integer NOT NULL, version character varying(256) NOT NULL, PRIMARY KEY (vlock) ); insert into version (vlock,version) values (1,'0.4');