Fix transaction API validation and payload handling
Some checks failed
Blockchain Synchronization Verification / sync-verification (push) Failing after 4s
CLI Tests / test-cli (push) Failing after 2s
Integration Tests / test-service-integration (push) Successful in 56s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 2s
P2P Network Verification / p2p-verification (push) Successful in 1s
Python Tests / test-python (push) Successful in 7s
Security Scanning / security-scan (push) Successful in 18s
Some checks failed
Blockchain Synchronization Verification / sync-verification (push) Failing after 4s
CLI Tests / test-cli (push) Failing after 2s
Integration Tests / test-service-integration (push) Successful in 56s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 2s
P2P Network Verification / p2p-verification (push) Successful in 1s
Python Tests / test-python (push) Successful in 7s
Security Scanning / security-scan (push) Successful in 18s
This commit is contained in:
@@ -319,36 +319,29 @@ async def get_block(height: int, chain_id: str = None) -> Dict[str, Any]:
|
|||||||
async def submit_transaction(tx_data: TransactionRequest) -> Dict[str, Any]:
|
async def submit_transaction(tx_data: TransactionRequest) -> Dict[str, Any]:
|
||||||
"""Submit a new transaction to the mempool"""
|
"""Submit a new transaction to the mempool"""
|
||||||
from ..mempool import get_mempool
|
from ..mempool import get_mempool
|
||||||
|
|
||||||
try:
|
try:
|
||||||
_logger.info(f"Received transaction request: sender={tx_data.sender}, payload={tx_data.payload}")
|
|
||||||
mempool = get_mempool()
|
mempool = get_mempool()
|
||||||
chain_id = get_chain_id(None)
|
chain_id = get_chain_id(None)
|
||||||
|
|
||||||
# Convert TransactionRequest to dict for normalization
|
# Convert TransactionRequest to dict for normalization
|
||||||
to_field = tx_data.payload.get("recipient") or tx_data.payload.get("to")
|
# Model validator already normalized payload, so use 'to' directly from payload
|
||||||
amount_field = tx_data.payload.get("amount", tx_data.payload.get("value", 0))
|
|
||||||
|
|
||||||
_logger.info(f"Extracted to_field: {to_field}, amount_field: {amount_field}")
|
|
||||||
|
|
||||||
tx_data_dict = {
|
tx_data_dict = {
|
||||||
"from": tx_data.sender,
|
"from": tx_data.sender,
|
||||||
"to": to_field,
|
"to": tx_data.payload.get("to"), # Model validator sets this from recipient/to
|
||||||
"amount": amount_field,
|
"amount": tx_data.payload.get("amount", tx_data.payload.get("value", 0)),
|
||||||
"fee": tx_data.fee,
|
"fee": tx_data.fee,
|
||||||
"nonce": tx_data.nonce,
|
"nonce": tx_data.nonce,
|
||||||
"payload": tx_data.payload,
|
"payload": tx_data.payload,
|
||||||
"type": tx_data.type,
|
"type": tx_data.type,
|
||||||
"signature": tx_data.sig
|
"signature": tx_data.sig
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.info(f"tx_data_dict['to']: {tx_data_dict['to']}")
|
|
||||||
|
|
||||||
tx_data_dict = _normalize_transaction_data(tx_data_dict, chain_id)
|
tx_data_dict = _normalize_transaction_data(tx_data_dict, chain_id)
|
||||||
_validate_transaction_admission(tx_data_dict, mempool)
|
_validate_transaction_admission(tx_data_dict, mempool)
|
||||||
|
|
||||||
tx_hash = mempool.add(tx_data_dict, chain_id=chain_id)
|
tx_hash = mempool.add(tx_data_dict, chain_id=chain_id)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"success": True,
|
"success": True,
|
||||||
"transaction_hash": tx_hash,
|
"transaction_hash": tx_hash,
|
||||||
|
|||||||
Reference in New Issue
Block a user