diff --git a/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim b/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim index 4816169a9..82eaf4cfd 100644 --- a/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim +++ b/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim @@ -10,10 +10,9 @@ import nimcrypto/keccak as keccak, stint, json, - std/tables, + std/[strutils, tables], stew/[byteutils, arrayops], - sequtils, - strutils + sequtils import ../../../waku_keystore, ../../rln, @@ -174,11 +173,6 @@ proc fetchMerkleProofElements*( let responseBytes = await g.ethRpc.get().provider.eth_call(tx, "latest") - # debug "---- raw response ----", - # total_bytes = responseBytes.len, # Should be 640 - # non_zero_bytes = responseBytes.countIt(it != 0), - # response = responseBytes - var i = 0 var merkleProof = newSeq[array[32, byte]]() while (i * 32) + 31 < responseBytes.len: @@ -188,12 +182,6 @@ proc fetchMerkleProofElements*( element = responseBytes.toOpenArray(startIndex, endIndex) merkleProof.add(element) i += 1 - # debug "---- element ----", - # startIndex = startIndex, - # startElement = responseBytes[startIndex], - # endIndex = endIndex, - # endElement = responseBytes[endIndex], - # element = element debug "merkleProof", responseBytes = responseBytes, merkleProof = merkleProof @@ -272,10 +260,10 @@ proc trackRootChanges*(g: OnchainGroupManager) {.async.} = error "Failed to fetch Merkle proof", error = proofResult.error g.merkleProofCache = proofResult.get() - debug "--- track update ---", - len = g.validRoots.len, - validRoots = g.validRoots, - merkleProof = g.merkleProofCache + # debug "--- track update ---", + # len = g.validRoots.len, + # validRoots = g.validRoots, + # merkleProof = g.merkleProofCache await sleepAsync(rpcDelay) @@ -387,6 +375,20 @@ proc indexToPath*(membershipIndex: UInt256, tree_depth: int): seq[byte] = debug "indexToPath", index = membershipIndex, path = result +proc identitySecretToField*(secret: seq[byte]): array[32, byte] = + let str = cast[string](secret) + var field : StUint[256] + try: + field = parse(str, StUint[256]) + except CatchableError: + error "Failed to parse identity secret", error = getCurrentExceptionMsg() + return field.toBytesLE() + +proc uint64ToField*(n: uint64): array[32, byte] = + ## Converts uint64 to 32-byte little-endian array with zero padding + var bytes = toBytes(n, Endianness.littleEndian) + result[0..