mirror of
https://github.com/logos-storage/circom-witnessgen.git
synced 2026-01-02 04:53:09 +00:00
update the Nim parser too
This commit is contained in:
parent
1289d9b7ad
commit
fbe833d515
@ -86,9 +86,14 @@ type
|
||||
|
||||
CircuitInputs* = seq[(string, SignalDescription)]
|
||||
|
||||
Prime* = object
|
||||
primeNumber*: BigUInt
|
||||
primeName*: string
|
||||
|
||||
GraphMetaData* = object
|
||||
witnessMapping*: WitnessMapping
|
||||
inputSignals*: CircuitInputs
|
||||
prime*: Prime
|
||||
|
||||
Graph* = object
|
||||
nodes*: seq[Node[uint32]]
|
||||
|
||||
@ -195,17 +195,46 @@ proc parseCircuitInput(buf: openArray[byte], p: var int): (string, SignalDescrip
|
||||
p = nextp
|
||||
return (name,desc)
|
||||
|
||||
proc parsePrime(buf: openArray[byte], p: var int): Prime =
|
||||
|
||||
# prime number (BigUInt)
|
||||
let fld1 = buf.parseProtoField(p, LEN)
|
||||
assert( fld1 == 3 , "expecting protobuf field id 3")
|
||||
let len1 = buf.parseVarInt(p)
|
||||
let nextp1 = p + len1
|
||||
# protobuf is stupid, it's like triple wrapped
|
||||
let fld1b = buf.parseProtoField(p, LEN)
|
||||
assert( fld1b == 1 , "expecting protobuf field id 1")
|
||||
let len1b = buf.parseVarInt(p)
|
||||
var bytes: seq[byte] = newSeq[byte](len1b)
|
||||
for i in 0..<len1b: bytes[i] = buf[p+i]
|
||||
let number = BigUInt(bytes: bytes)
|
||||
p = nextp1
|
||||
|
||||
# prime name (string)
|
||||
let fld2 = buf.parseProtoField(p, LEN)
|
||||
assert( fld2 == 4 , "expecting protobuf field id 4")
|
||||
let len2 = buf.parseVarInt(p)
|
||||
let nextp2 = p + len2
|
||||
let bs = buf[p..<p+len2]
|
||||
let name = bytesToString(bs)
|
||||
p = nextp2
|
||||
|
||||
return Prime(primeNumber: number, primeName: name)
|
||||
|
||||
proc parseMeta(buf: openArray[byte]): GraphMetaData =
|
||||
var p: int = 0
|
||||
|
||||
let mapping = buf.parseWitnessMapping(p)
|
||||
|
||||
var entries: seq[(string, SignalDescription)] = newSeq[(string, SignalDescription)](0)
|
||||
while(p < buf.len):
|
||||
while(p < buf.len and buf[p]==0x12):
|
||||
let entry = buf.parseCircuitInput(p)
|
||||
entries.add(entry)
|
||||
|
||||
return GraphMetaData(witnessMapping: WitnessMapping(mapping: mapping), inputSignals: entries)
|
||||
let prime = buf.parsePrime(p)
|
||||
|
||||
return GraphMetaData(witnessMapping: WitnessMapping(mapping: mapping), inputSignals: entries, prime: prime)
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
15
nim/main.nim
15
nim/main.nim
@ -1,4 +1,7 @@
|
||||
|
||||
import circom_witnessgen/field
|
||||
# import circom_witnessgen/div_mod
|
||||
|
||||
import circom_witnessgen/load
|
||||
import circom_witnessgen/input_json
|
||||
import circom_witnessgen/witness
|
||||
@ -12,6 +15,13 @@ const wtns_file: string = "../tmp/nim3.wtns"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
#[
|
||||
when isMainModule:
|
||||
|
||||
debugDivMod()
|
||||
# divModSanityCheck()
|
||||
]#
|
||||
|
||||
when isMainModule:
|
||||
|
||||
echo "loading in " & input_file
|
||||
@ -20,8 +30,9 @@ when isMainModule:
|
||||
|
||||
echo "loading in " & graph_file
|
||||
let gr = loadGraph(graph_file)
|
||||
# echo $gr
|
||||
echo $gr
|
||||
|
||||
echo "generating witness"
|
||||
let wtns = generateWitness( gr, inp )
|
||||
exportWitness(wtns_file, wtns)
|
||||
exportWitness(wtns_file, wtns)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user