Zeth - Zerocash on Ethereum  0.8
Reference implementation of the Zeth protocol by Clearmatics
Functions
zeth.core.constants Namespace Reference

Functions

int bit_length_to_byte_length (int bit_length)
 

Function Documentation

◆ bit_length_to_byte_length()

int zeth.core.constants.bit_length_to_byte_length ( int  bit_length)
Convert bit length to byte length

Definition at line 18 of file constants.py.

18 def bit_length_to_byte_length(bit_length: int) -> int:
19  """
20  Convert bit length to byte length
21  """
22  assert \
23  bit_length >= 0 and bit_length % 8 == 0, \
24  "Not valid bit_length inserted"
25  return int(bit_length/8)
26 
27 
28 # GROTH16 constants
29 GROTH16_ZKSNARK: str = "GROTH16"
30 GROTH16_MIXER_CONTRACT: str = "Groth16Mixer"
31 
32 # PGHR13 constants
33 PGHR13_ZKSNARK: str = "PGHR13"
34 PGHR13_MIXER_CONTRACT: str = "Pghr13Mixer"
35 
36 # Set of valid snarks
37 VALID_ZKSNARKS: List[str] = [GROTH16_ZKSNARK, PGHR13_ZKSNARK]
38 
39 # Merkle tree depth
40 ZETH_MERKLE_TREE_DEPTH: int = 32
41 
42 # Nb of input notes
43 JS_INPUTS: int = 2
44 
45 # Nb of output notes
46 JS_OUTPUTS: int = 2
47 
48 # Hash digest length (for commitment and PRFs)
49 DIGEST_LENGTH: int = 256
50 
51 # Public value length (v_pub_in and v_pub_out)
52 PUBLIC_VALUE_LENGTH: int = 64
53 PUBLIC_VALUE_LENGTH_BYTES: int = bit_length_to_byte_length(PUBLIC_VALUE_LENGTH)
54 _PUBLIC_VALUE_MASK: int = (1 << PUBLIC_VALUE_LENGTH) - 1
55 
56 PHI_LENGTH: int = 256
57 PHI_LENGTH_BYTES: int = bit_length_to_byte_length(PHI_LENGTH)
58 
59 APK_LENGTH: int = 256
60 APK_LENGTH_BYTES: int = bit_length_to_byte_length(APK_LENGTH)
61 
62 RHO_LENGTH: int = 256
63 RHO_LENGTH_BYTES: int = bit_length_to_byte_length(RHO_LENGTH)
64 
65 TRAPR_LENGTH: int = 256
66 TRAPR_LENGTH_BYTES: int = bit_length_to_byte_length(TRAPR_LENGTH)
67 
68 NOTE_LENGTH: int = APK_LENGTH + PUBLIC_VALUE_LENGTH + RHO_LENGTH + TRAPR_LENGTH
69 NOTE_LENGTH_BYTES: int = bit_length_to_byte_length(NOTE_LENGTH)
70 
71 # Public inputs are (see AbstractMixer.sol):
72 # [0 ] - 1 x merkle root
73 # [1 ] - jsOut x commitment
74 # [1 + jsOut ] - jsIn x nullifier (partial)
75 # [1 + jsOut + jsIn ] - 1 x hsig (partial)
76 # [2 + jsOut + jsIn ] - JsIn x message auth tags (partial)
77 # [2 + jsOut + 2*jsIn] - 1 x residual bits, v_in, v_out
78 
79 # Index (in public inputs) of residual bits
80 RESIDUAL_BITS_INDEX: int = (2 * JS_INPUTS) + JS_OUTPUTS + 2
81 
82 # Number of full-length digests to be encoded in public inputs
83 NUM_INPUT_DIGESTS: int = (2 * JS_INPUTS) + 1
84 
85 # Solidity compiler version
86 SOL_COMPILER_VERSION: str = 'v0.8.1'
87 
88 # Seed for MIMC
89 MIMC_MT_SEED: str = "clearmatics_mt_seed"
90 
91 # Units for vpub_in and vpub_out, given in Wei. i.e.
92 # Value (in Wei) = vpub_{in,out} * ZETH_PUBLIC_UNIT_VALUE
93 ZETH_PUBLIC_UNIT_VALUE: int = 1000000000000 # 1 Szabo (10^12 Wei).
zeth.cli.zeth_deploy.int
int
Definition: zeth_deploy.py:27
zeth.core.constants.bit_length_to_byte_length
int bit_length_to_byte_length(int bit_length)
Definition: constants.py:18