refactor: organize scripts/, remove stale root dirs, clean up structure
scripts/ reorganization: - Sort 14 loose root scripts into subfolders: blockchain/ (genesis, proposer, mock chain, testnet BTC) dev/ (CLI wrapper, dev services, OpenAPI gen, systemd setup, domain proxy) ops/ (coordinator proxy, remote tunnel) gpu/ (miner workflow) - Merge scripts/testing/ into scripts/test/ (eliminate duplicate folder) - Create scripts/examples/ for usage demos and simulations Root-level cleanup: - Move home/ (12 simulation scripts) → scripts/examples/ - Move dev-utils/ (2 files) → scripts/dev/ - Move protocols/receipts/sample → tests/fixtures/ - Delete stale src/ (duplicate of apps/blockchain-node/src/) - Remove empty home/, dev-utils/, protocols/ directories Documentation updates: - Update docs/6_architecture/8_codebase-structure.md tree and table - Update root README.md tree to reflect new structure
This commit is contained in:
77
scripts/test/test_tx_import.py
Normal file
77
scripts/test/test_tx_import.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test transaction import specifically
|
||||
"""
|
||||
|
||||
import json
|
||||
import hashlib
|
||||
import requests
|
||||
|
||||
BASE_URL = "https://aitbc.bubuit.net/rpc"
|
||||
CHAIN_ID = "ait-devnet"
|
||||
|
||||
def compute_block_hash(height, parent_hash, timestamp):
|
||||
"""Compute block hash using the same algorithm as PoA proposer"""
|
||||
payload = f"{CHAIN_ID}|{height}|{parent_hash}|{timestamp}".encode()
|
||||
return "0x" + hashlib.sha256(payload).hexdigest()
|
||||
|
||||
def test_transaction_import():
|
||||
"""Test importing a block with a single transaction"""
|
||||
|
||||
print("Testing Transaction Import")
|
||||
print("=" * 40)
|
||||
|
||||
# Get current head
|
||||
response = requests.get(f"{BASE_URL}/head")
|
||||
head = response.json()
|
||||
print(f"Current head: height={head['height']}")
|
||||
|
||||
# Create a new block with one transaction
|
||||
height = head["height"] + 1
|
||||
parent_hash = head["hash"]
|
||||
timestamp = "2026-01-29T10:20:00"
|
||||
block_hash = compute_block_hash(height, parent_hash, timestamp)
|
||||
|
||||
test_block = {
|
||||
"height": height,
|
||||
"hash": block_hash,
|
||||
"parent_hash": parent_hash,
|
||||
"proposer": "test-proposer",
|
||||
"timestamp": timestamp,
|
||||
"tx_count": 1,
|
||||
"transactions": [{
|
||||
"tx_hash": "0xtx123456789",
|
||||
"sender": "0xsender123",
|
||||
"recipient": "0xreceiver456",
|
||||
"payload": {"to": "0xreceiver456", "amount": 1000000}
|
||||
}]
|
||||
}
|
||||
|
||||
print(f"\nTest block data:")
|
||||
print(json.dumps(test_block, indent=2))
|
||||
|
||||
# Import the block
|
||||
response = requests.post(
|
||||
f"{BASE_URL}/blocks/import",
|
||||
json=test_block
|
||||
)
|
||||
|
||||
print(f"\nImport response:")
|
||||
print(f" Status: {response.status_code}")
|
||||
print(f" Body: {response.json()}")
|
||||
|
||||
# Check logs
|
||||
print("\nChecking recent logs...")
|
||||
import subprocess
|
||||
result = subprocess.run(
|
||||
["ssh", "aitbc-cascade", "journalctl -u blockchain-node --since '30 seconds ago' | grep 'Importing transaction' | tail -1"],
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
if result.stdout:
|
||||
print(f"Log: {result.stdout.strip()}")
|
||||
else:
|
||||
print("No transaction import logs found")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_transaction_import()
|
||||
Reference in New Issue
Block a user