Skip to content
Snippets Groups Projects
Commit 4751d0b7 authored by Hugo Trentesaux's avatar Hugo Trentesaux
Browse files

add tx export

parent 6c218cde
Branches
No related tags found
1 merge request!5Separate squid history from duniter genesis
......@@ -196,3 +196,48 @@ def get_blocks(leveldb_path: str) -> list:
blocks.append(sample)
return blocks
def get_tx(leveldb_path: str) -> list:
"""
Get tx,
return a list of tx
"""
# Get wallets balances data
blocks_repo = LevelDBBlocksRepository(leveldb_path)
txs = []
for num, block in blocks_repo:
if num % 100000 == 0:
print(num)
for tx in block.get("transactions"):
outputs = tx["outputs"]
issuers = tx["issuers"]
comment = tx["comment"]
timestamp = tx["blockstampTime"]
# loop on issuers
for issuer in issuers:
# loop on outputs
for output in outputs:
outputparts = output.split(":")
amount = outputparts[0]
receiver = outputparts[2]
# ignore non trivial unlock sources
# https://git.duniter.org/tools/py-g1-migrator/-/issues/3
if "&&" in receiver or "||" in receiver:
print(num)
print("ignoring " + receiver)
continue
receiver = receiver.split("SIG(")[1].split(")")[0]
sample = {
"blockNumber": num,
"timestamp": timestamp,
"from": issuer,
"to": receiver,
"amount": amount,
"comment": comment,
}
# do not include outputs that go back to sender
if sample["from"] != sample["to"]:
txs.append(sample)
return txs
......@@ -2,7 +2,6 @@
import json
import os
import sys
from lib.functions import get_blocks
......
#!/usr/bin/env python3
import json
import os
from lib.functions import get_tx
DEFAULT_LEVELDB_PATH = "./leveldb"
LEVELDB_PATH = os.getenv("LEVELDB_PATH", DEFAULT_LEVELDB_PATH)
def main():
# get blocks
tx_hist = get_tx(LEVELDB_PATH)
# Dump JSON to file
print("Exporting...")
tx_hist_json = json.dumps(tx_hist, indent=2).encode()
gtest_json = open("output/tx_hist.json", "wb")
gtest_json.write(tx_hist_json)
if __name__ == "__main__":
print("Prepare tx for squid")
main()
print("Done\n")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment