add get_interchain: trace a transaction/block to validator blocks + interchain anchors

New transaction.get_interchain and block.get_interchain call the prime-node
/api/v1/{transaction,block}/{id}/interchain endpoints, returning an
InterchainTrace {block_id, validator_blocks, interchain_transactions}. Adds
VerificationBlock / InterchainTransaction / InterchainTrace dataclasses with
from_dict, exports them, and a from_dict test.
This commit is contained in:
2026-06-02 14:12:59 -04:00
parent 8b007dcbab
commit e4e49218d0
5 changed files with 148 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ from prime_sdk import (
Block,
DragonchainAPIError,
DragonchainSDK,
InterchainTrace,
SmartContractCreateRequest,
Transaction,
TransactionCreateRequest,
@@ -191,6 +192,42 @@ def test_block_from_dict_nested_header():
assert len(blk.transactions) == 3
def test_interchain_trace_from_dict_nested():
# Server shape: validatorBlocks + interchainTransactions arrays, camelCase.
raw = {
"blockId": "69636602",
"validatorBlocks": [
{
"version": "1",
"primeChainId": "zDYr",
"primeBlockId": "69636602",
"verifierPublicKey": "02c4...",
"verifierSignature": "MEUC...",
}
],
"interchainTransactions": [
{
"id": 19,
"chainId": "1",
"transHash": "0xd46e",
"validatorBlocks": ["69636602"],
"coveredPrimeChainIds": ["zDYr"],
}
],
}
trace = InterchainTrace.from_dict(raw)
assert trace.block_id == "69636602"
assert len(trace.validator_blocks) == 1
assert trace.validator_blocks[0].prime_block_id == "69636602"
assert trace.validator_blocks[0].verifier_public_key == "02c4..."
assert len(trace.interchain_transactions) == 1
assert trace.interchain_transactions[0].id == 19
assert trace.interchain_transactions[0].trans_hash == "0xd46e"
assert trace.interchain_transactions[0].chain_id == "1"
assert trace.interchain_transactions[0].validator_blocks == ["69636602"]
assert trace.interchain_transactions[0].covered_prime_chain_ids == ["zDYr"]
def test_contract_create_request_omitempty():
req = SmartContractCreateRequest(
environment="python3.8",