Create PostgreSQL Tables
We will be using PostgreSQL tables to store the Monero v7 data. We will need three tables that are named as follows.
xmrv7_keyimages: Contains transaction rings and key imagesxmrv7_outputs: Contains the transaction outputsxmr_xmrv7_keyimages: Contains the rows ofxmr_keyimageswhose key images appear inxmrv7_keyimages
-
There is a file called
create_keyimages_table.sqlin thescripts/hardforks/monero-v7directory with the following contents.CREATE TABLE xmrv7_keyimages ( image VARCHAR(64) NOT NULL, id SERIAL PRIMARY KEY, ring_amount BIGINT, ring_indices INTEGER[], block_height INTEGER, UNIQUE(image) ) -
Run the following command in the
scripts/hardforks/monero-v7directory to create thexmrv7_keyimagestable.psql -U postgres -h 127.0.0.1 -W -f create_keyimages_table.sql -
There is a file called
create_outputs_table.sqlin thescripts/hardforks/monero-v7directory with the following contents.CREATE TABLE xmrv7_outputs ( image VARCHAR(64) NOT NULL, id SERIAL PRIMARY KEY, ring_amount BIGINT, ring_indices INTEGER[], block_height INTEGER, UNIQUE(image) ) -
Run the following command in the
scripts/hardforks/monero-v7directory to create thexmrv7_outputstable.psql -U postgres -h 127.0.0.1 -W -f create_outputs_table.sqlNOTE: Alternatively, you can create the
xmrv7_keyimagesandxmrv7_outputstables by running the script calledsql_table_creation.shin thescripts/hardforks/monero-v7directory. You can run the commandsource sql_table_creation.shand enter the Postgres user password when prompted. -
Run the
populate_xmrv7_tables.pyscript that is located in thescripts/hardforks/monero-v7directory.python3 populate_xmrv7_tables.pyThis script will query the Monero v7 client and populate the
xmrv7_keyimagesandxmrv7_outputstables with non-coinbase transactions from block height 1,685,555 to block height 1,685,583. The Monero v7 blockchain diverged from the main Monero chain at block height 1,685,555. -
Once the
populate_xmrv7_tables.pyscript finishes running, you can stop the Monero v7 client by pressing Ctrl-D in the CLI window. -
Create the
xmr_xmrv7_keyimagestable using the following steps. It will contain the subset ofxmr_keyimagesthat corresponds to key images which have appeared both on the main Monero chain and the Monero v7 chain.- Run the following commands to enter the
psqlshell.sudo su postgres psql - Run the following query.
CREATE TABLE xmr_xmrv7_keyimages AS (SELECT xmrk.* FROM xmr_keyimages xmrk INNER JOIN xmrv7_keyimages xmrv7k ON xmrk.image=xmrv7k.image);
- Run the following commands to enter the