28 lines
888 B
Python
Raw Normal View History

2025-10-30 11:48:34 +01:00
from random import randint
from typing import List, Self
from pydantic import Field
from core.models import NbeSerializer
from node.api.serializers.fields import BytesFromHex
2025-10-30 11:48:34 +01:00
from node.api.serializers.note import NoteSerializer
from utils.protocols import FromRandom
from utils.random import random_bytes
class LedgerTransactionSerializer(NbeSerializer, FromRandom):
inputs: List[BytesFromHex] = Field(description="Fr integer.")
2025-10-30 11:48:34 +01:00
outputs: List[NoteSerializer]
@classmethod
def from_random(cls) -> Self:
n_inputs = 0 if randint(0, 1) <= 0.5 else randint(1, 5)
n_outputs = 0 if randint(0, 1) <= 0.5 else randint(1, 5)
return cls.model_validate(
{
"inputs": [random_bytes(32).hex() for _ in range(n_inputs)],
2025-10-30 11:48:34 +01:00
"outputs": [NoteSerializer.from_random() for _ in range(n_outputs)],
}
)