Skip to content

Randao support#3512

Open
bzawisto wants to merge 77 commits intomainfrom
randao-support-2
Open

Randao support#3512
bzawisto wants to merge 77 commits intomainfrom
randao-support-2

Conversation

@bzawisto
Copy link
Contributor

@bzawisto bzawisto commented Mar 9, 2026

This PR introduces randao - which works as follows:

  1. validators include RANDAO_REVEAL(block) = BLS_SIGN(proposer.privkey, block.view) in the randao_reveal field of block they propose
  2. validator include RANDAO_MIX(block) = RANDAO_MIX(block.parent) XOR KECCAK256(RANDAO_REVEAL(block)) in the mixHash field of block they propose
  3. nodes check if BLS_VERIFY(proposer.pubkey, block.view, RANDAO_REVEAL(block)) is true
  4. nodes compute RANDAO_MIX(block) = RANDAO_MIX(block.parent) XOR KECCAK256(RANDAO_REVEAL(block)) and check if included mixHash included in a block is the same

@bzawisto bzawisto changed the title Randao support 2 Randao support Mar 9, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 9, 2026

🐰 Bencher Report

Branchrandao-support-2
Testbedself-hosted

🚨 2 Alerts

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Upper Boundary
(Limit %)
full-blocks-zil-transfers/full-blocks-zil-transfersLatency
seconds (s)
📈 plot
🚷 threshold
🚨 alert (🔔)
1.21 s
(+32.49%)Baseline: 0.92 s
1.11 s
(109.47%)

process-empty/process-emptyLatency
milliseconds (ms)
📈 plot
🚷 threshold
🚨 alert (🔔)
13.54 ms
(+35.20%)Baseline: 10.02 ms
10.63 ms
(127.38%)

Click to view all benchmark results
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
full-blocks-erc20-transfers/full-blocks-erc20-transfers📈 view plot
🚷 view threshold
584.29 ms
(-10.26%)Baseline: 651.06 ms
770.21 ms
(75.86%)
full-blocks-evm-transfers/full-blocks-evm-transfers📈 view plot
🚷 view threshold
861.78 ms
(-6.42%)Baseline: 920.85 ms
1,124.23 ms
(76.65%)
full-blocks-giant-deploy/full-blocks-giant-deploy📈 view plot
🚷 view threshold
5,042.00 ms
(-1.02%)Baseline: 5,093.83 ms
5,511.16 ms
(91.49%)
full-blocks-scilla-add/full-blocks-scilla-add📈 view plot
🚷 view threshold
1,008.70 ms
(-0.08%)Baseline: 1,009.47 ms
1,065.09 ms
(94.71%)
full-blocks-scilla-load/full-blocks-scilla-load📈 view plot
🚷 view threshold
5,253.50 ms
(-1.91%)Baseline: 5,355.70 ms
5,935.39 ms
(88.51%)
full-blocks-scilla-store/full-blocks-scilla-store📈 view plot
🚷 view threshold
4,167.10 ms
(-2.47%)Baseline: 4,272.59 ms
4,753.62 ms
(87.66%)
full-blocks-zil-transfers/full-blocks-zil-transfers📈 view plot
🚷 view threshold
🚨 view alert (🔔)
1,214.10 ms
(+32.49%)Baseline: 916.38 ms
1,109.06 ms
(109.47%)

process-empty/process-empty📈 view plot
🚷 view threshold
🚨 view alert (🔔)
13.54 ms
(+35.20%)Baseline: 10.02 ms
10.63 ms
(127.38%)

🐰 View full continuous benchmarking report in Bencher

let grandparent_mix_hash = node
.consensus
.read()
.get_block(&parent_block.parent_hash())
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should there be a check somewhere, or some sort of sane default, in case parent_block is genesis_block?

pub block_hash: Hash,
}

fn get_checkpoint_version(zipreader: &ZipArchive<File>) -> Result<f32> {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would think it is better to return a string result e.g. "2.0" or "3.0" rather than converting to a float. The later checks e.g. >= "2.0" should still succeed for "3.0" or "2.1".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants