mirror of
https://github.com/logos-blockchain/logos-blockchain-pocs.git
synced 2026-01-02 13:13:09 +00:00
minor fix in names and python
This commit is contained in:
parent
7d9ba0caa6
commit
f8a2cba8be
@ -133,5 +133,5 @@ template ProofOfQuota(nLevelsPK, nLevelsPol, bitsQuota) {
|
||||
}
|
||||
|
||||
// Instantiate with chosen depths: 20 for core PK tree, 25 for PoL secret slot tree
|
||||
component main { public [ session, core_quota, leader_quota, core_root, pol_ledger_aged, K_part_one, K_part_two ] }
|
||||
component main { public [ session, core_quota, leader_quota, core_root, K_part_one, K_part_two, pol_epoch_nonce, pol_t0, pol_t1, pol_ledger_aged ] }
|
||||
= ProofOfQuota(20, 25, 20);
|
||||
@ -225,6 +225,8 @@ t1_constant = F(0x104bfd09ebdd0a57772289d0973489b62662a4dc6f09da8b4af3c5cfb1dcdd
|
||||
t0 = F(int(t0_constant) // total_stake)
|
||||
t1 = F(p- (int(t1_constant) // total_stake**2))
|
||||
|
||||
print(t0)
|
||||
|
||||
|
||||
value = F(total_stake / 100)
|
||||
threshold = (t0 + t1 * value) * value
|
||||
|
||||
74
circom_circuits/Mantle/poc.circom
Normal file
74
circom_circuits/Mantle/poc.circom
Normal file
@ -0,0 +1,74 @@
|
||||
//test
|
||||
pragma circom 2.1.9;
|
||||
|
||||
include "../hash_bn/poseidon2_hash.circom";
|
||||
include "../hash_bn/merkle.circom";
|
||||
include "../misc/constants.circom";
|
||||
|
||||
template derive_voucher_nullifier(){
|
||||
signal input secret_voucher;
|
||||
signal output out;
|
||||
|
||||
component hash = Poseidon2_hash(2);
|
||||
component dst = VOUCHER_NF();
|
||||
hash.inp[0] <== dst.out;
|
||||
hash.inp[1] <== secret_voucher;
|
||||
|
||||
out <== hash.out;
|
||||
}
|
||||
|
||||
template derive_reward_voucher(){
|
||||
signal input secret_voucher;
|
||||
signal output out;
|
||||
|
||||
component hash = Poseidon2_hash(2);
|
||||
component dst = REWARD_VOUCHER();
|
||||
hash.inp[0] <== dst.out;
|
||||
hash.inp[1] <== secret_voucher;
|
||||
|
||||
out <== hash.out;
|
||||
}
|
||||
|
||||
template proof_of_claim(){
|
||||
signal input secret_voucher;
|
||||
signal input voucher_merkle_path[32];
|
||||
signal input voucher_merkle_path_selectors[32];
|
||||
signal input mantle_tx_hash;
|
||||
signal input voucher_root;
|
||||
|
||||
signal output voucher_nullifier;
|
||||
|
||||
//derive the reward voucher
|
||||
component reward_voucher = derive_reward_voucher();
|
||||
reward_voucher.secret_voucher <== secret_voucher;
|
||||
|
||||
//Check reward voucher membership
|
||||
//First check selectors are indeed bits
|
||||
for(var i = 0; i < 32; i++){
|
||||
voucher_merkle_path_selectors[i] * (1 - voucher_merkle_path_selectors[i]) === 0;
|
||||
}
|
||||
//Then check the proof of membership
|
||||
component reward_membership = proof_of_membership(32);
|
||||
for(var i = 0; i < 32; i++){
|
||||
reward_membership.nodes[i] <== voucher_merkle_path[i];
|
||||
reward_membership.selector[i] <== voucher_merkle_path_selectors[i];
|
||||
}
|
||||
reward_membership.root <== voucher_root;
|
||||
reward_membership.leaf <== reward_voucher.out;
|
||||
|
||||
reward_membership.out === 1;
|
||||
|
||||
|
||||
//derive the reward nullifier
|
||||
component reward_nullifier = derive_voucher_nullifier();
|
||||
reward_nullifier.secret_voucher <== secret_voucher;
|
||||
voucher_nullifier <== reward_nullifier.out;
|
||||
|
||||
|
||||
|
||||
// dummy constraint to avoid unused public input to be erased after compilation optimisation
|
||||
signal dummy;
|
||||
dummy <== mantle_tx_hash * mantle_tx_hash;
|
||||
}
|
||||
|
||||
component main {public [voucher_root,mantle_tx_hash]}= proof_of_claim();
|
||||
@ -247,4 +247,4 @@ template proof_of_leadership(secret_depth){
|
||||
}
|
||||
|
||||
|
||||
component main {public [sl,epoch_nonce,t0,t1,ledger_aged,ledger_latest,P_lead_part_one,P_lead_part_two]}= proof_of_leadership(25);
|
||||
//component main {public [sl,epoch_nonce,t0,t1,ledger_aged,ledger_latest,P_lead_part_one,P_lead_part_two]}= proof_of_leadership(25);
|
||||
Loading…
x
Reference in New Issue
Block a user