mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-07 08:23:08 +00:00
feat: better location
This commit is contained in:
parent
79e344f17e
commit
2a6e76747e
@ -116,6 +116,20 @@ proc serialize*(memIndices: seq[MembershipIndex]): seq[byte] =
|
||||
|
||||
return memIndicesBytes
|
||||
|
||||
proc serialize*(witness: Witness): seq[byte] =
|
||||
## Serializes the witness into a byte array
|
||||
var buffer: seq[byte]
|
||||
buffer.add(witness.identity_secret)
|
||||
buffer.add(witness.identity_nullifier)
|
||||
for element in witness.merkle_proof:
|
||||
buffer.add(element.toBytesBE()) # Convert Uint256 to big-endian bytes
|
||||
buffer.add(witness.external_nullifier)
|
||||
buffer.add(uint8(witness.signal.len)) # Add signal length as a single byte
|
||||
buffer.add(witness.signal)
|
||||
buffer.add(toBytesBE(witness.message_id))
|
||||
buffer.add(witness.rln_identifier)
|
||||
return buffer
|
||||
|
||||
proc toEpoch*(t: uint64): Epoch =
|
||||
## converts `t` to `Epoch` in little-endian order
|
||||
let bytes = toBytes(t, Endianness.littleEndian)
|
||||
|
||||
@ -70,29 +70,6 @@ type
|
||||
blockFetchingActive*: bool
|
||||
merkleProofsByIndex*: Table[Uint256, seq[Uint256]]
|
||||
|
||||
type Witness* = object ## Represents the custom witness for generating an RLN proof
|
||||
identity_secret*: seq[byte] # Identity secret (private key)
|
||||
identity_nullifier*: seq[byte] # Identity nullifier
|
||||
merkle_proof*: seq[Uint256] # Merkle proof elements (retrieved from the smart contract)
|
||||
external_nullifier*: Epoch # Epoch (external nullifier)
|
||||
signal*: seq[byte] # Message data (signal)
|
||||
message_id*: MessageId # Message ID (used for rate limiting)
|
||||
rln_identifier*: RlnIdentifier # RLN identifier (default value provided)
|
||||
|
||||
proc SerializeWitness*(witness: Witness): seq[byte] =
|
||||
## Serializes the witness into a byte array
|
||||
var buffer: seq[byte]
|
||||
buffer.add(witness.identity_secret)
|
||||
buffer.add(witness.identity_nullifier)
|
||||
for element in witness.merkle_proof:
|
||||
buffer.add(element.toBytesBE()) # Convert Uint256 to big-endian bytes
|
||||
buffer.add(witness.external_nullifier)
|
||||
buffer.add(uint8(witness.signal.len)) # Add signal length as a single byte
|
||||
buffer.add(witness.signal)
|
||||
buffer.add(toBytesBE(witness.message_id))
|
||||
buffer.add(witness.rln_identifier)
|
||||
return buffer
|
||||
|
||||
const DefaultKeyStorePath* = "rlnKeystore.json"
|
||||
const DefaultKeyStorePassword* = "password"
|
||||
|
||||
|
||||
@ -52,6 +52,15 @@ type RateLimitProof* = object
|
||||
## the external nullifier used for the generation of the `proof` (derived from poseidon([epoch, rln_identifier]))
|
||||
externalNullifier*: ExternalNullifier
|
||||
|
||||
type Witness* = object ## Represents the custom witness for generating an RLN proof
|
||||
identity_secret*: seq[byte] # Identity secret (private key)
|
||||
identity_nullifier*: seq[byte] # Identity nullifier
|
||||
merkle_proof*: seq[Uint256] # Merkle proof elements (retrieved from the smart contract)
|
||||
external_nullifier*: Epoch # Epoch (external nullifier)
|
||||
signal*: seq[byte] # Message data (signal)
|
||||
message_id*: MessageId # Message ID (used for rate limiting)
|
||||
rln_identifier*: RlnIdentifier # RLN identifier (default value provided)
|
||||
|
||||
type ProofMetadata* = object
|
||||
nullifier*: Nullifier
|
||||
shareX*: MerkleNode
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user