ZK Rust Reference
Covering the types and functions available in ZkRust.
| Type | Comment |
|---|---|
bool | |
i8 | |
i16 | |
i32 | |
u8 | |
u16 | |
u32 | |
usize | |
Range | |
pbc_zk::Sbi1 | Secret-shared boolean. |
pbc_zk::Sbi8 | Secret-shared 8-bit signed integer. |
pbc_zk::Sbi16 | Secret-shared 16-bit signed integer. |
pbc_zk::Sbi32 | Secret-shared 32-bit signed integer. |
pbc_zk::Sbi64 | Secret-shared 64-bit signed integer. |
pbc_zk::Sbi128 | Secret-shared 128-bit signed integer. |
Traits
Section titled “Traits”Note that traits are not fully implemented, and these are mostly for illustrative purposes.
| Trait | Documentation |
|---|---|
Public | Public types are “normal” Rust types like i32, where the data is publicly known, for example because it is directly visible in the contract state. |
pbc_zk::Secret | Secret types are types like Sbi32 where the data is secret-shared between ZK nodes. |
pbc_zk::SecretBinary | Sub-interface of pbc_zk::Secret where variables are secret-shared as bits. |
Functions
Section titled “Functions”Does not cover deprecated functions.
| Function | Documentation |
|---|---|
pbc_zk::num_secret_variables() -> i32 | Determines the number of secret variables available to the computation. Variable ids are not contiguous and cannot by iterated over using 1..num_secret_variables() |
pbc_zk::load_sbi<S: SecretBinary>(id: i32) -> S | Loads the secret-shared data associated with variable id as the given type S. |
pbc_zk::load_metadata<P: Public>(id: i32) -> P | Loads the public metadata associated with variable id as the given type P. |
pbc_zk::secret_variable_ids() -> Iterator<i32> | Creates an iterator for secret variable ids. |
Lifetime attribute macros
Section titled “Lifetime attribute macros”These macros define what the MPC nodes should do when given the input.
| Macro | Documentation |
|---|---|
zk_on_secret_input | Declares an endpoint that the contract can be interacted with to add secret variables. |
zk_on_variable_inputted | Declares an automatic hook for when a variable is confirmed inputted. |
zk_on_variable_rejected | Declares an automatic hook for when a variable is rejected. |
zk_on_compute_complete | Declares an automatic hook for when the zero-knowledge computation is finished. |
zk_on_variables_opened | Declares an automatic hook for when secret variables is ready to be read.. |
zk_on_attestation_complete | Declares an automatic hook for when the contract have asked nodes to attest a piece of data,. |