From 6c629cfe613bff2415c5904731d7e2894c9425a1 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Mon, 22 Jan 2024 14:50:17 -0600 Subject: [PATCH] moving prover around --- codex/proofs/backend.nim | 57 -------------------------- codex/proofs/backends/circomcompat.nim | 45 -------------------- codex/proofs/prover.nim | 15 ------- codex/slots/proofs/backend.nim | 44 ++++++++++++++++++++ 4 files changed, 44 insertions(+), 117 deletions(-) delete mode 100644 codex/proofs/backend.nim delete mode 100644 codex/proofs/backends/circomcompat.nim delete mode 100644 codex/proofs/prover.nim create mode 100644 codex/slots/proofs/backend.nim diff --git a/codex/proofs/backend.nim b/codex/proofs/backend.nim deleted file mode 100644 index 1edc18c5..00000000 --- a/codex/proofs/backend.nim +++ /dev/null @@ -1,57 +0,0 @@ -## Nim-Codex -## Copyright (c) 2022 Status Research & Development GmbH -## Licensed under either of -## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) -## * MIT license ([LICENSE-MIT](LICENSE-MIT)) -## at your option. -## This file may not be copied, modified, or distributed except according to -## those terms. - -{.push raises: [].} - -import ../stores - -type - ProverBackend* = ref object of RootObj - maxDepth : int ## maximum depth of the slot Merkle tree (so max `2^maxDepth` cells in a slot) - maxLog2NSlots : int ## maximum depth of the dataset-level Merkle tree (so max 2^8 slots per dataset) - blockTreeDepth : int ## depth of the "network block tree" (= log2(64k / 2k)) - nFieldElemsPerCell : int ## number of field elements per cell - nSamples: : int ## number of samples - - ProofBackend* = ref object of Backend - VerifyBackend* = ref object of Backend - -method release*(self: ProverBackend) {.base.} = - ## release the backend - ## - - raiseAssert("not implemented!") - -method prove*( - self: ProofBackend, - entropy: seq[byte], ## public input - dataSetRoot: seq[byte]; ## public input - slotIndex: int, ## must be public, otherwise we could prove a different slot - slotRoot: seq[byte] ## can be private input - nCellsPerSlot: int, ## can be private input (Merkle tree is safe) - nSlotsPerDataSet: int, ## can be private input (Merkle tree is safe) - slotProof: seq[byte], ## path from the slot root the the dataset root (private input) - cellData: seq[seq[byte]], ## data for the cells (private input) - merklePaths[nSamples][maxDepth]) ## Merkle paths for the cells (private input) - : Future[?!seq[byte]] {.async.} = - ## encode buffers using a backend - ## - - raiseAssert("not implemented!") - -method verify*( - self: VerifyBackend, - buffers, - parity, - recovered: var openArray[seq[byte]] -): Result[void, cstring] {.base.} = - ## decode buffers using a backend - ## - - raiseAssert("not implemented!") diff --git a/codex/proofs/backends/circomcompat.nim b/codex/proofs/backends/circomcompat.nim deleted file mode 100644 index 57043926..00000000 --- a/codex/proofs/backends/circomcompat.nim +++ /dev/null @@ -1,45 +0,0 @@ -## Nim-Codex -## Copyright (c) 2022 Status Research & Development GmbH -## Licensed under either of -## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) -## * MIT license ([LICENSE-MIT](LICENSE-MIT)) -## at your option. -## This file may not be copied, modified, or distributed except according to -## those terms. - -{.push raises: [].} - -import ../stores - -type - ProverBackend* = ref object of RootObj - - ProofBackend* = ref object of Backend - VerifyBackend* = ref object of Backend - -method release*(self: ProverBackend) {.base.} = - ## release the backend - ## - - raiseAssert("not implemented!") - -method prove*( - self: ProofBackend, - indicies, - payload: var openArray[seq[byte]] -): Result[void, cstring] {.base.} = - ## encode buffers using a backend - ## - - raiseAssert("not implemented!") - -method verify*( - self: VerifyBackend, - buffers, - parity, - recovered: var openArray[seq[byte]] -): Result[void, cstring] {.base.} = - ## decode buffers using a backend - ## - - raiseAssert("not implemented!") diff --git a/codex/proofs/prover.nim b/codex/proofs/prover.nim deleted file mode 100644 index 3ea43c3c..00000000 --- a/codex/proofs/prover.nim +++ /dev/null @@ -1,15 +0,0 @@ -## Nim-Codex -## Copyright (c) 2024 Status Research & Development GmbH -## Licensed under either of -## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) -## * MIT license ([LICENSE-MIT](LICENSE-MIT)) -## at your option. -## This file may not be copied, modified, or distributed except according to -## those terms. - -type - Prover* = ref object RootObj - -proc prove() - -proc verify() diff --git a/codex/slots/proofs/backend.nim b/codex/slots/proofs/backend.nim new file mode 100644 index 00000000..7b070146 --- /dev/null +++ b/codex/slots/proofs/backend.nim @@ -0,0 +1,44 @@ +## Nim-Codex +## Copyright (c) 2022 Status Research & Development GmbH +## Licensed under either of +## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) +## * MIT license ([LICENSE-MIT](LICENSE-MIT)) +## at your option. +## This file may not be copied, modified, or distributed except according to +## those terms. + +{.push raises: [].} + +import pkg/chronos +import pkg/questionable/results + +import ../../stores +import ../types + +type + ProverBackend*[H, P] = ref object of RootObj + + ProofBackend*[H, P] = ref object of ProverBackend[H, P] + VerifyBackend*[H, P] = ref object of ProverBackend[H, P] + +method release*[H, P](self: ProverBackend[H, P]) {.base.} = + ## release the backend + ## + + raiseAssert("not implemented!") + +method prove*[H, P]( + self: ProofBackend[H, P], + input: ProofInput[H, P]): Future[?!seq[byte]] {.base, async.} = + ## prove the input using a backend + ## + + raiseAssert("not implemented!") + +method verify*[H, P]( + self: VerifyBackend[H, P], + proof: sink seq[seq[byte]]): Future[?!bool] {.base, async.} = + ## verify the proof using a backend + ## + + raiseAssert("not implemented!")