Try NoProof literal for NoProof proof. Add debugging prints.

This commit is contained in:
Alejandro Cabeza Romero 2026-03-09 12:31:33 +00:00
parent 74bbcdf1fe
commit e22cf46e4f
No known key found for this signature in database
GPG Key ID: DA3D14AE478030FD
2 changed files with 22 additions and 2 deletions

View File

@ -1,5 +1,5 @@
from abc import ABC, abstractmethod
from typing import Annotated, Any, Self, Union
from typing import Annotated, Any, Literal, Self, Union
from pydantic import BeforeValidator, Field, RootModel
@ -23,6 +23,8 @@ class OperationProofSerializer(EnforceSubclassFromRandom, ABC):
class NoProofSerializer(OperationProofSerializer):
root: Literal["NoProof"]
def into_operation_proof(self) -> NbeSignature:
return NoProof.model_validate({})

View File

@ -1,8 +1,9 @@
import hashlib
import json
from typing import List, Self
from typing import Any, List, Self
from pydantic import Field
from pydantic.config import ExtraValues
from core.models import NbeSerializer
from models.transactions.transaction import Transaction
@ -42,6 +43,23 @@ class SignedTransactionSerializer(NbeSerializer, FromRandom):
)
ledger_transaction_proof: Groth16ProofSerializer = Field(alias="ledger_tx_proof", description="Groth16 proof.")
@classmethod
def model_validate_json(
cls,
json_data: str | bytes | bytearray,
*,
strict: bool | None = None,
extra: ExtraValues | None = None,
context: Any | None = None,
by_alias: bool | None = None,
by_name: bool | None = None,
) -> Self:
print(f"Validating JSON data for {cls.__name__} with by_alias={by_alias}, by_name={by_name}")
print(f"JSON data: {json_data}")
return super().model_validate_json(
json_data, strict=strict, extra=extra, context=context, by_alias=by_alias, by_name=by_name
)
def _compute_hash(self) -> bytes:
data = self.transaction.model_dump(mode="json")
canonical = json.dumps(data, sort_keys=True, separators=(",", ":"))