1. 引言
前序博客见:
(* genesis_proof.ml中有: *)
module T = struct
type t =
{ runtime_config : Runtime_config.t
; constraint_constants : Genesis_constants.Constraint_constants.t
; genesis_constants : Genesis_constants.t
; proof_level : Genesis_constants.Proof_level.t
; genesis_ledger : Genesis_ledger.Packed.t
; genesis_epoch_data : Consensus.Genesis_epoch_data.t
; consensus_constants : Consensus.Constants.t
; protocol_state_with_hashes :
Protocol_state.value State_hash.With_state_hashes.t
; constraint_system_digests : (string * Md5_lib.t) list Lazy.t
; proof_data : Proof_data.t option
}
module Proof_data = struct
type t =
{ blockchain_proof_system_id : Pickles.Verification_key.Id.t
; genesis_proof : Proof.t
}
end
module Inputs = struct
type t =
{ runtime_config : Runtime_config.t
; constraint_constants : Genesis_constants.Constraint_constants.t
; proof_level : Genesis_constants.Proof_level.t
; genesis_constants : Genesis_constants.t
; genesis_ledger : Genesis_ledger.Packed.t
; genesis_epoch_data : Consensus.Genesis_epoch_data.t
; consensus_constants : Consensus.Constants.t
; protocol_state_with_hashes :
Protocol_state.value State_hash.With_state_hashes.t
; constraint_system_digests : (string * Md5_lib.t) list option
; blockchain_proof_system_id :
(* This is only used for calculating the hash to lookup the genesis
proof with. It is re-calculated when building the blockchain prover,
so it is always okay -- if less efficient at startup -- to pass
[None] here.
*)
Pickles.Verification_key.Id.t option
}
附录1. Mina系列博客
Mina系列博客有:
- Mina概览
- Mina的支付流程
- Mina的zkApp
- Mina中的Pasta(Pallas和Vesta)曲线
- Mina中的Schnorr signature
- Mina中的Pickles SNARK
- Mina中的Kimchi SNARK
- Mina Kimchi SNARK 代码解析
- Mina Berkeley QANet测试网zkApp初体验
- Mina中的Poseidon hash
- Mina中的多项式承诺方案
- Recursive SNARKs总览
- Mina技术白皮书
- Mina代码解析
- Mina中的Snark Worker
- Mina中的Scan State
- Mina中的VRF
- Mina中的delta_transition_chain_proof/delta_block_chain_proof
- Mina中的stake delegation
- Mina如何实现22KB?
- Mina中的stake_proof