70 lines
1.7 KiB
Nim
Raw Normal View History

2024-12-02 15:45:44 +01:00
import std/random
import codexvalidator/basics
import codexvalidator/transaction
proc example*[T: SomeInteger](_: type T): T =
rand(T)
proc example*(_: type UInt256): UInt256 =
UInt256.fromBytesBE(array[32, byte].example)
proc example*[T, length](_: type array[length, T]): array[length, T] =
for i in result.low..result.high:
result[i] = T.example
proc example*[T](_: type seq[T], length = 0..10): seq[T] =
let len = rand(length)
newSeqWith(len, T.example)
proc example*(_: type StorageRequestId): StorageRequestId =
StorageRequestId(array[32, byte].example)
2024-12-02 15:45:44 +01:00
proc example*(_: type Period): Period =
Period(uint64.example)
proc example*(_: type G1Point): G1Point =
G1Point.init(UInt256.example, UInt256.example)
proc example*(_: type Fp2Element): Fp2Element =
Fp2Element.init(UInt256.example, UInt256.example)
proc example*(_: type G2Point): G2Point =
G2Point.init(
Fp2Element.example,
Fp2Element.example
)
proc example*(_: type Groth16Proof): Groth16Proof =
Groth16Proof.init(
G1Point.example,
G2Point.example,
G1Point.example
)
proc example*(_: type Transaction): Transaction =
let kind = [TransactionKind.storageProof, TransactionKind.missingProof].sample
let requestId = StorageRequestId.example
let slotIndex = uint32.example
2024-12-02 15:45:44 +01:00
let period = Period.example
let merkleRoot = UInt256.example
let challenge = UInt256.example
2024-12-02 15:45:44 +01:00
case kind
of TransactionKind.missingProof:
Transaction.missingProof(
requestId,
slotIndex,
period,
merkleRoot,
challenge
)
2024-12-02 15:45:44 +01:00
of TransactionKind.storageProof:
let proof = Groth16Proof.example
Transaction.storageProof(
requestId,
slotIndex,
period,
merkleRoot,
challenge,
proof
)