diff --git a/lib/functions.py b/lib/functions.py
index e081ab8c6ac6340ca5716ded10a16e5d325dd0be..6fab9d91eeb5ab6e36ce2a4e88403b65377c5e4f 100644
--- a/lib/functions.py
+++ b/lib/functions.py
@@ -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
diff --git a/squid-block.py b/squid-block.py
index 465b9e49c5a9834cdaaad929d132b0595d136091..4710aa4d7d47095f669fe0092cd4ceb5f1fee3e0 100755
--- a/squid-block.py
+++ b/squid-block.py
@@ -2,7 +2,6 @@
 
 import json
 import os
-import sys
 
 from lib.functions import get_blocks
 
diff --git a/squid-tx.py b/squid-tx.py
new file mode 100755
index 0000000000000000000000000000000000000000..70ba4b87b10c7097115f3f7b9c2f3d268651bff9
--- /dev/null
+++ b/squid-tx.py
@@ -0,0 +1,26 @@
+#!/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")