Merge pull request #135 from cerc-io/roy/v5-dev
This commit is contained in:
commit
66cd1d9e69
2
.github/workflows/publish.yaml
vendored
2
.github/workflows/publish.yaml
vendored
@ -7,7 +7,7 @@ jobs:
|
|||||||
name: Run docker build
|
name: Run docker build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Get the version
|
- name: Get the version
|
||||||
id: vars
|
id: vars
|
||||||
run: |
|
run: |
|
||||||
|
184
schema.sql
184
schema.sql
@ -3,7 +3,7 @@
|
|||||||
--
|
--
|
||||||
|
|
||||||
-- Dumped from database version 14.6
|
-- Dumped from database version 14.6
|
||||||
-- Dumped by pg_dump version 14.6
|
-- Dumped by pg_dump version 14.7 (Homebrew)
|
||||||
|
|
||||||
SET statement_timeout = 0;
|
SET statement_timeout = 0;
|
||||||
SET lock_timeout = 0;
|
SET lock_timeout = 0;
|
||||||
@ -51,77 +51,59 @@ CREATE SCHEMA eth_meta;
|
|||||||
CREATE SCHEMA ipld;
|
CREATE SCHEMA ipld;
|
||||||
|
|
||||||
|
|
||||||
SET default_tablespace = '';
|
|
||||||
|
|
||||||
SET default_table_access_method = heap;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: header_cids; Type: TABLE; Schema: eth; Owner: -
|
-- Name: header_result; Type: TYPE; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE eth.header_cids (
|
CREATE TYPE public.header_result AS (
|
||||||
block_number bigint NOT NULL,
|
block_number bigint,
|
||||||
block_hash character varying(66) NOT NULL,
|
block_hash character varying(66),
|
||||||
parent_hash character varying(66) NOT NULL,
|
parent_hash character varying(66),
|
||||||
cid text NOT NULL,
|
cid text,
|
||||||
td numeric NOT NULL,
|
td numeric,
|
||||||
node_ids character varying(128)[] NOT NULL,
|
node_ids character varying(128)[],
|
||||||
reward numeric NOT NULL,
|
reward numeric,
|
||||||
state_root character varying(66) NOT NULL,
|
state_root character varying(66),
|
||||||
tx_root character varying(66) NOT NULL,
|
tx_root character varying(66),
|
||||||
receipt_root character varying(66) NOT NULL,
|
receipt_root character varying(66),
|
||||||
uncles_hash character varying(66) NOT NULL,
|
uncles_hash character varying(66),
|
||||||
bloom bytea NOT NULL,
|
bloom bytea,
|
||||||
"timestamp" bigint NOT NULL,
|
"timestamp" bigint,
|
||||||
coinbase character varying(66) NOT NULL
|
coinbase character varying(66)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: TABLE header_cids; Type: COMMENT; Schema: eth; Owner: -
|
|
||||||
--
|
|
||||||
|
|
||||||
COMMENT ON TABLE eth.header_cids IS '@name EthHeaderCids';
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: COLUMN header_cids.node_ids; Type: COMMENT; Schema: eth; Owner: -
|
|
||||||
--
|
|
||||||
|
|
||||||
COMMENT ON COLUMN eth.header_cids.node_ids IS '@name EthNodeIDs';
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: child_result; Type: TYPE; Schema: public; Owner: -
|
-- Name: child_result; Type: TYPE; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TYPE public.child_result AS (
|
CREATE TYPE public.child_result AS (
|
||||||
has_child boolean,
|
has_child boolean,
|
||||||
children eth.header_cids[]
|
children public.header_result[]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: canonical_header_from_array(eth.header_cids[]); Type: FUNCTION; Schema: public; Owner: -
|
-- Name: canonical_header_from_array(public.header_result[]); Type: FUNCTION; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE FUNCTION public.canonical_header_from_array(headers eth.header_cids[]) RETURNS eth.header_cids
|
CREATE FUNCTION public.canonical_header_from_array(headers public.header_result[]) RETURNS public.header_result
|
||||||
LANGUAGE plpgsql
|
LANGUAGE plpgsql
|
||||||
AS $$
|
AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
canonical_header eth.header_cids;
|
canonical_header header_result;
|
||||||
canonical_child eth.header_cids;
|
canonical_child header_result;
|
||||||
header eth.header_cids;
|
header header_result;
|
||||||
current_child_result child_result;
|
current_child_result child_result;
|
||||||
child_headers eth.header_cids[];
|
child_headers header_result[];
|
||||||
current_header_with_child eth.header_cids;
|
current_header_with_child header_result;
|
||||||
has_children_count INT DEFAULT 0;
|
has_children_count INT DEFAULT 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- for each header in the provided set
|
-- for each header in the provided set
|
||||||
FOREACH header IN ARRAY headers
|
FOREACH header IN ARRAY headers
|
||||||
LOOP
|
LOOP
|
||||||
-- check if it has any children
|
-- check if it has any children
|
||||||
current_child_result = has_child(header.block_hash, header.block_number);
|
current_child_result = get_child(header.block_hash, header.block_number);
|
||||||
IF current_child_result.has_child THEN
|
IF current_child_result.has_child THEN
|
||||||
-- if it does, take note
|
-- if it does, take note
|
||||||
has_children_count = has_children_count + 1;
|
has_children_count = has_children_count + 1;
|
||||||
@ -159,10 +141,10 @@ CREATE FUNCTION public.canonical_header_hash(height bigint) RETURNS character va
|
|||||||
LANGUAGE plpgsql
|
LANGUAGE plpgsql
|
||||||
AS $$
|
AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
canonical_header eth.header_cids;
|
canonical_header header_result;
|
||||||
headers eth.header_cids[];
|
headers header_result[];
|
||||||
header_count INT;
|
header_count INT;
|
||||||
temp_header eth.header_cids;
|
temp_header header_result;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- collect all headers at this height
|
-- collect all headers at this height
|
||||||
FOR temp_header IN
|
FOR temp_header IN
|
||||||
@ -187,6 +169,39 @@ END
|
|||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: get_child(character varying, bigint); Type: FUNCTION; Schema: public; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE FUNCTION public.get_child(hash character varying, height bigint) RETURNS public.child_result
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
child_height INT;
|
||||||
|
temp_child header_result;
|
||||||
|
new_child_result child_result;
|
||||||
|
BEGIN
|
||||||
|
child_height = height + 1;
|
||||||
|
-- short circuit if there are no children
|
||||||
|
SELECT exists(SELECT 1
|
||||||
|
FROM eth.header_cids
|
||||||
|
WHERE parent_hash = hash
|
||||||
|
AND block_number = child_height
|
||||||
|
LIMIT 1)
|
||||||
|
INTO new_child_result.has_child;
|
||||||
|
-- collect all the children for this header
|
||||||
|
IF new_child_result.has_child THEN
|
||||||
|
FOR temp_child IN
|
||||||
|
SELECT * FROM eth.header_cids WHERE parent_hash = hash AND block_number = child_height
|
||||||
|
LOOP
|
||||||
|
new_child_result.children = array_append(new_child_result.children, temp_child);
|
||||||
|
END LOOP;
|
||||||
|
END IF;
|
||||||
|
RETURN new_child_result;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: get_storage_at_by_hash(text, text, text); Type: FUNCTION; Schema: public; Owner: -
|
-- Name: get_storage_at_by_hash(text, text, text); Type: FUNCTION; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
@ -277,39 +292,6 @@ END
|
|||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: has_child(character varying, bigint); Type: FUNCTION; Schema: public; Owner: -
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE FUNCTION public.has_child(hash character varying, height bigint) RETURNS public.child_result
|
|
||||||
LANGUAGE plpgsql
|
|
||||||
AS $$
|
|
||||||
DECLARE
|
|
||||||
child_height INT;
|
|
||||||
temp_child eth.header_cids;
|
|
||||||
new_child_result child_result;
|
|
||||||
BEGIN
|
|
||||||
child_height = height + 1;
|
|
||||||
-- short circuit if there are no children
|
|
||||||
SELECT exists(SELECT 1
|
|
||||||
FROM eth.header_cids
|
|
||||||
WHERE parent_hash = hash
|
|
||||||
AND block_number = child_height
|
|
||||||
LIMIT 1)
|
|
||||||
INTO new_child_result.has_child;
|
|
||||||
-- collect all the children for this header
|
|
||||||
IF new_child_result.has_child THEN
|
|
||||||
FOR temp_child IN
|
|
||||||
SELECT * FROM eth.header_cids WHERE parent_hash = hash AND block_number = child_height
|
|
||||||
LOOP
|
|
||||||
new_child_result.children = array_append(new_child_result.children, temp_child);
|
|
||||||
END LOOP;
|
|
||||||
END IF;
|
|
||||||
RETURN new_child_result;
|
|
||||||
END
|
|
||||||
$$;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: was_state_leaf_removed(character varying, character varying); Type: FUNCTION; Schema: public; Owner: -
|
-- Name: was_state_leaf_removed(character varying, character varying); Type: FUNCTION; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
@ -344,6 +326,46 @@ CREATE FUNCTION public.was_state_leaf_removed_by_number(v_key character varying,
|
|||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
|
||||||
|
SET default_tablespace = '';
|
||||||
|
|
||||||
|
SET default_table_access_method = heap;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids; Type: TABLE; Schema: eth; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE eth.header_cids (
|
||||||
|
block_number bigint NOT NULL,
|
||||||
|
block_hash character varying(66) NOT NULL,
|
||||||
|
parent_hash character varying(66) NOT NULL,
|
||||||
|
cid text NOT NULL,
|
||||||
|
td numeric NOT NULL,
|
||||||
|
node_ids character varying(128)[] NOT NULL,
|
||||||
|
reward numeric NOT NULL,
|
||||||
|
state_root character varying(66) NOT NULL,
|
||||||
|
tx_root character varying(66) NOT NULL,
|
||||||
|
receipt_root character varying(66) NOT NULL,
|
||||||
|
uncles_hash character varying(66) NOT NULL,
|
||||||
|
bloom bytea NOT NULL,
|
||||||
|
"timestamp" bigint NOT NULL,
|
||||||
|
coinbase character varying(66) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: TABLE header_cids; Type: COMMENT; Schema: eth; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
COMMENT ON TABLE eth.header_cids IS '@name EthHeaderCids';
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: COLUMN header_cids.node_ids; Type: COMMENT; Schema: eth; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
COMMENT ON COLUMN eth.header_cids.node_ids IS '@name EthNodeIDs';
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: log_cids; Type: TABLE; Schema: eth; Owner: -
|
-- Name: log_cids; Type: TABLE; Schema: eth; Owner: -
|
||||||
--
|
--
|
||||||
@ -889,7 +911,7 @@ CREATE INDEX uncle_block_number_index ON eth.uncle_cids USING btree (block_numbe
|
|||||||
-- Name: uncle_cid_block_number_index; Type: INDEX; Schema: eth; Owner: -
|
-- Name: uncle_cid_block_number_index; Type: INDEX; Schema: eth; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE UNIQUE INDEX uncle_cid_block_number_index ON eth.uncle_cids USING btree (cid, block_number);
|
CREATE UNIQUE INDEX uncle_cid_block_number_index ON eth.uncle_cids USING btree (cid, block_number, index);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Runs the db migrations
|
# Runs the db migrations
|
||||||
set +x
|
set -e
|
||||||
|
|
||||||
|
# Default command is "goose up"
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
set -- "up"
|
||||||
|
fi
|
||||||
|
|
||||||
# Construct the connection string for postgres
|
# Construct the connection string for postgres
|
||||||
VDB_PG_CONNECT=postgresql://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOSTNAME:$DATABASE_PORT/$DATABASE_NAME?sslmode=disable
|
VDB_PG_CONNECT=postgresql://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOSTNAME:$DATABASE_PORT/$DATABASE_NAME?sslmode=disable
|
||||||
@ -8,12 +13,11 @@ VDB_PG_CONNECT=postgresql://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOSTNAME
|
|||||||
# Run the DB migrations
|
# Run the DB migrations
|
||||||
echo "Connecting with: $VDB_PG_CONNECT"
|
echo "Connecting with: $VDB_PG_CONNECT"
|
||||||
echo "Running database migrations"
|
echo "Running database migrations"
|
||||||
./goose -dir migrations postgres "$VDB_PG_CONNECT" up
|
./goose -dir migrations postgres "$VDB_PG_CONNECT" "$@"
|
||||||
|
|
||||||
# If the db migrations ran without err
|
# If the db migrations ran without err
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
echo "Migration process ran successfully"
|
echo "Migration process ran successfully"
|
||||||
tail -f /dev/null
|
|
||||||
else
|
else
|
||||||
echo "Could not run migrations. Are the database details correct?"
|
echo "Could not run migrations. Are the database details correct?"
|
||||||
exit 1
|
exit 1
|
||||||
|
Loading…
Reference in New Issue
Block a user