mirror of
https://github.com/logos-blockchain/logos-blockchain-pocs.git
synced 2026-01-02 13:13:09 +00:00
also add compression for public keys
This commit is contained in:
parent
f10289b3ad
commit
6b9c8dfe06
@ -221,7 +221,7 @@ if not core_or_leader in [0,1]:
|
|||||||
# 1) Core‐node registry Merkle‐proof
|
# 1) Core‐node registry Merkle‐proof
|
||||||
# pick a random core_sk and derive its public key
|
# pick a random core_sk and derive its public key
|
||||||
core_sk = F(randrange(0,p,1))
|
core_sk = F(randrange(0,p,1))
|
||||||
pk_core = poseidon2_hash([ F(1296193216988918402894), core_sk ])
|
pk_core = Compression([ F(1296193216988918402894), core_sk ])
|
||||||
core_selectors = randrange(0,2**20,1)
|
core_selectors = randrange(0,2**20,1)
|
||||||
core_selectors = format(int(core_selectors),'020b')
|
core_selectors = format(int(core_selectors),'020b')
|
||||||
core_nodes = [F(randrange(0,p,1)) for i in range(20)]
|
core_nodes = [F(randrange(0,p,1)) for i in range(20)]
|
||||||
@ -264,7 +264,7 @@ for i in range(25):
|
|||||||
else:
|
else:
|
||||||
secret_root = Compression([slot_secret_path[i],secret_root])
|
secret_root = Compression([slot_secret_path[i],secret_root])
|
||||||
sk = poseidon2_hash([F(256174383281726064679014503048630094),starting_slot,secret_root])
|
sk = poseidon2_hash([F(256174383281726064679014503048630094),starting_slot,secret_root])
|
||||||
pk = poseidon2_hash([F(1296193216988918402894),sk])
|
pk = Compression([F(1296193216988918402894),sk])
|
||||||
|
|
||||||
note_id = poseidon2_hash([F(65580641562429851895355409762135920462),tx_hash,output_number,value,pk])
|
note_id = poseidon2_hash([F(65580641562429851895355409762135920462),tx_hash,output_number,value,pk])
|
||||||
ticket = poseidon2_hash([F(13887241025832268),F(epoch_nonce),F(slot_number),note_id,sk])
|
ticket = poseidon2_hash([F(13887241025832268),F(epoch_nonce),F(slot_number),note_id,sk])
|
||||||
|
|||||||
@ -125,7 +125,7 @@ template ProofOfQuota(nLevelsPK, nLevelsPol, bitsQuota) {
|
|||||||
|
|
||||||
|
|
||||||
// Derive key_nullifier
|
// Derive key_nullifier
|
||||||
component nf = Poseidon2_hash(2);
|
component nf = Compression();
|
||||||
component dstNF = KEY_NULLIFIER_V1();
|
component dstNF = KEY_NULLIFIER_V1();
|
||||||
nf.inp[0] <== dstNF.out;
|
nf.inp[0] <== dstNF.out;
|
||||||
nf.inp[1] <== selection_randomness.out;
|
nf.inp[1] <== selection_randomness.out;
|
||||||
|
|||||||
@ -245,7 +245,7 @@ for i in range(25):
|
|||||||
else:
|
else:
|
||||||
secret_root = Compression([slot_secret_path[i],secret_root])
|
secret_root = Compression([slot_secret_path[i],secret_root])
|
||||||
sk = poseidon2_hash([F(256174383281726064679014503048630094),starting_slot,secret_root])
|
sk = poseidon2_hash([F(256174383281726064679014503048630094),starting_slot,secret_root])
|
||||||
pk = poseidon2_hash([F(1296193216988918402894),sk])
|
pk = Compression([F(1296193216988918402894),sk])
|
||||||
|
|
||||||
note_id = poseidon2_hash([F(65580641562429851895355409762135920462),tx_hash,output_number,value,pk])
|
note_id = poseidon2_hash([F(65580641562429851895355409762135920462),tx_hash,output_number,value,pk])
|
||||||
ticket = poseidon2_hash([F(13887241025832268),F(epoch_nonce),F(slot_number),note_id,sk])
|
ticket = poseidon2_hash([F(13887241025832268),F(epoch_nonce),F(slot_number),note_id,sk])
|
||||||
|
|||||||
@ -208,7 +208,7 @@ def PoseidonSponge(data, capacity, output_len):
|
|||||||
|
|
||||||
|
|
||||||
secret_voucher = F(randrange(0,p,1))
|
secret_voucher = F(randrange(0,p,1))
|
||||||
reward_voucher = poseidon2_hash([F(1668646695034522932676805048878418),secret_voucher])
|
reward_voucher = Compression([F(1668646695034522932676805048878418),secret_voucher])
|
||||||
|
|
||||||
merkle_nodes = [F(randrange(0,p,1)) for i in range(32)]
|
merkle_nodes = [F(randrange(0,p,1)) for i in range(32)]
|
||||||
selectors = randrange(0,2**32,1)
|
selectors = randrange(0,2**32,1)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ template derive_voucher_nullifier(){
|
|||||||
signal input secret_voucher;
|
signal input secret_voucher;
|
||||||
signal output out;
|
signal output out;
|
||||||
|
|
||||||
component hash = Poseidon2_hash(2);
|
component hash = Compression();
|
||||||
component dst = VOUCHER_NF();
|
component dst = VOUCHER_NF();
|
||||||
hash.inp[0] <== dst.out;
|
hash.inp[0] <== dst.out;
|
||||||
hash.inp[1] <== secret_voucher;
|
hash.inp[1] <== secret_voucher;
|
||||||
@ -21,7 +21,7 @@ template derive_reward_voucher(){
|
|||||||
signal input secret_voucher;
|
signal input secret_voucher;
|
||||||
signal output out;
|
signal output out;
|
||||||
|
|
||||||
component hash = Poseidon2_hash(2);
|
component hash = Compression( );
|
||||||
component dst = REWARD_VOUCHER();
|
component dst = REWARD_VOUCHER();
|
||||||
hash.inp[0] <== dst.out;
|
hash.inp[0] <== dst.out;
|
||||||
hash.inp[1] <== secret_voucher;
|
hash.inp[1] <== secret_voucher;
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
pragma circom 2.1.9;
|
pragma circom 2.1.9;
|
||||||
|
|
||||||
include "../hash_bn/poseidon2_hash.circom";
|
include "../hash_bn/poseidon2_hash.circom";
|
||||||
|
include "../hash_bn/poseidon2_perm.circom";
|
||||||
include "../misc/constants.circom";
|
include "../misc/constants.circom";
|
||||||
|
|
||||||
template derive_secret_key(){
|
template derive_secret_key(){
|
||||||
@ -22,7 +23,7 @@ template derive_public_key(){
|
|||||||
signal input secret_key;
|
signal input secret_key;
|
||||||
signal output out;
|
signal output out;
|
||||||
|
|
||||||
component hash = Poseidon2_hash(2);
|
component hash = Compression();
|
||||||
component dst = NOMOS_KDF();
|
component dst = NOMOS_KDF();
|
||||||
hash.inp[0] <== dst.out;
|
hash.inp[0] <== dst.out;
|
||||||
hash.inp[1] <== secret_key;
|
hash.inp[1] <== secret_key;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user