iotaWayBack
is a tool for compiling a SQL database based on confirmed transactions, from past IOTA DBs.
In addition, it's a tool to document the process I did, to create my copy of this SQL DB - a continuous database of confirmed transaction from Oct. 4 2016 - Oct. 20 2017.
if you only want to search my DB, without building your own - jump to 4.
All pre-snapshot dbs can be found here: https://dbfiles.iota.org/?prefix=mainnet/IOTA_DBs/.
More information on the DB collection process can be found here.
*credit to @lobeto, who reached out to veteran IOTA users to complete the missing DBs.
in each IOTA DB you will find an iri.jar
file, matching the version used back when the database was used.
and a start.bat
file with an appropriate command to spin-up the node.
for each IOTA DB you want to dump:
- start IRI node.
- run
python traverse.py
. - (stop IRI node)
this will create a .dmp
file with <hash>,<raw_trytes>
for each IRI version, which will be parsed by the next stage.
each IOTA_DB
zip also contains the .dmp
file computed on by me, if you want to skip this stage.
after completing all IOTA DB dumps continue to importing
You have a choice of DBEngine
between: sqlite
& MySQL
.
sqlite
is a local DB, no setup required.MySQL
requires running a server, but is more performant.
given the size of the DB (~4M entries), I went with MySQL.
as MySQL requires a server, I assume if you chose this option, you know how to setup a schema (iotaWayBack
) & manage user privileges (user, password in parse_and_store.py
).
- run
pip install -e .
- set
DBEngine
inparse_and_store.py
according to your DB Engine decision above. - (if you have the
.dmp
files in a different folder, setfolder
inparse_and_store.py
accordingly.) - run
python parse_and_store.py
this will create a table transactions
that has each confirmed transaction with parsed fields.
I have a version of this process running. contact me on iota's slack, if you want to skip all the above steps & just access the data.
now you can open the SQL DB with your favorite client. my GUI favorites:
sqlite
DB browser for SQLite - http://sqlitebrowser.org/MySQL
MySQL Workbench - https://dev.mysql.com/downloads/workbench/
or the packaged CLI tools: sqlite
, mysql
.
SELECT * FROM iotaWayBack.transactions WHERE hash='XTEZNQAGBATWVOMEPVEEIGHR9HUBNAXHXAIJ9PUCGSINPGVNCEUXSZV9GNAYDVXVVTYKVIMWVEZW99999'; // get transaction details by hash
SELECT * FROM iotaWayBack.transactions WHERE address='YOURADDRESS'; // get all the transations associated with a given address.
SELECT count(*) FROM (SELECT DISTINCT address FROM iotaWayBack.transactions GROUP BY address) as A; // count all unique address in IOTA.
SELECT * FROM iotaWayBack.transactions WHERE timestampDate>'2017/08/05' AND timestampDate<'2017/08/06'; // get all transaction in a given time window.