From 0359a7c83fa50d79d1980166a526eb8b6d396018 Mon Sep 17 00:00:00 2001 From: aitbc Date: Tue, 28 Apr 2026 13:18:11 +0200 Subject: [PATCH] fix: add validation to require 'to' field for TRANSFER transactions --- apps/blockchain-node/src/aitbc_chain/rpc/router.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/blockchain-node/src/aitbc_chain/rpc/router.py b/apps/blockchain-node/src/aitbc_chain/rpc/router.py index f3552b84..5b69153c 100755 --- a/apps/blockchain-node/src/aitbc_chain/rpc/router.py +++ b/apps/blockchain-node/src/aitbc_chain/rpc/router.py @@ -205,7 +205,7 @@ def _serialize_receipt(receipt: Receipt) -> Dict[str, Any]: class TransactionRequest(BaseModel): type: str = Field(description="Transaction type, e.g. TRANSFER, RECEIPT_CLAIM, GPU_MARKETPLACE, EXCHANGE, MESSAGE") sender: str = Field(alias="from") # Accept both "sender" and "from" - to: str = Field(description="Recipient address") + to: Optional[str] = Field(default=None, description="Recipient address (required for TRANSFER)") nonce: int fee: int = Field(ge=0) payload: Dict[str, Any] @@ -222,6 +222,12 @@ class TransactionRequest(BaseModel): self.type = normalized return self + @model_validator(mode="after") + def validate_transfer_fields(self) -> "TransactionRequest": # type: ignore[override] + if self.type == "TRANSFER" and not self.to: + raise ValueError("transaction.to is required for TRANSFER transactions") + return self + class ReceiptSubmissionRequest(BaseModel): sender: str