Some checks failed
AITBC CI/CD Pipeline / lint-and-test (3.11) (push) Has been cancelled
AITBC CI/CD Pipeline / lint-and-test (3.12) (push) Has been cancelled
AITBC CI/CD Pipeline / lint-and-test (3.13) (push) Has been cancelled
AITBC CI/CD Pipeline / test-cli (push) Has been cancelled
AITBC CI/CD Pipeline / test-services (push) Has been cancelled
AITBC CI/CD Pipeline / test-production-services (push) Has been cancelled
AITBC CI/CD Pipeline / security-scan (push) Has been cancelled
AITBC CI/CD Pipeline / build (push) Has been cancelled
AITBC CI/CD Pipeline / deploy-staging (push) Has been cancelled
AITBC CI/CD Pipeline / deploy-production (push) Has been cancelled
AITBC CI/CD Pipeline / performance-test (push) Has been cancelled
AITBC CI/CD Pipeline / docs (push) Has been cancelled
AITBC CI/CD Pipeline / release (push) Has been cancelled
AITBC CI/CD Pipeline / notify (push) Has been cancelled
Security Scanning / Bandit Security Scan (apps/coordinator-api/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (cli/aitbc_cli) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-core/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-crypto/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (packages/py/aitbc-sdk/src) (push) Has been cancelled
Security Scanning / Bandit Security Scan (tests) (push) Has been cancelled
Security Scanning / CodeQL Security Analysis (javascript) (push) Has been cancelled
Security Scanning / CodeQL Security Analysis (python) (push) Has been cancelled
Security Scanning / Dependency Security Scan (push) Has been cancelled
Security Scanning / Container Security Scan (push) Has been cancelled
Security Scanning / OSSF Scorecard (push) Has been cancelled
Security Scanning / Security Summary Report (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.11) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.12) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-cli-level1 (3.13) (push) Has been cancelled
AITBC CLI Level 1 Commands Test / test-summary (push) Has been cancelled
- Remove debugging service documentation (DEBUgging_SERVICES.md) - Remove development logs policy and quick reference guides - Remove E2E test creation summary - Remove gift certificate example file - Remove GitHub pull summary documentation
78 lines
2.2 KiB
Python
Executable File
78 lines
2.2 KiB
Python
Executable File
#!/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()
|