Skip to content

Commit

Permalink
Merge pull request #43 from mubarak23/ft_merkle_root
Browse files Browse the repository at this point in the history
compute merkle root implementation
  • Loading branch information
maciejka authored Aug 9, 2024
2 parents 11ccb70 + 1d75d64 commit f305ce9
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
28 changes: 28 additions & 0 deletions src/merkle_tree.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,31 @@ pub fn merkle_root(ref txids: Array<u256>) -> u256 {

merkle_root(ref next_txids)
}

#[cfg(test)]
mod tests {
use super::{merkle_root};


#[test]
fn test_merkle_root() {
let txids = array![
0x50ba87bdd484f07c8c55f76a22982f987c0465fdc345381b4634a70dc0ea0b38_u256,
0x96b8787b1e3abed802cff132c891c2e511edd200b08baa9eb7d8942d7c5423c6_u256,
0x65e5a4862b807c83b588e0f4122d4ca2d46691d17a1ec1ebce4485dccc3380d4_u256,
0x1ee9441ddde02f8ffb910613cd509adbc21282c6e34728599f3ae75e972fb815_u256,
0xec950fc02f71fc06ed71afa4d2c49fcba04777f353a001b0bba9924c63cfe712_u256,
0x5d874040a77de7182f7a68bf47c02898f519cb3b58092b79fa2cff614a0f4d50_u256,
0x0a1c958af3e30ad07f659f44f708f8648452d1427463637b9039e5b721699615_u256,
0xd94d24d2dcaac111f5f638983122b0e55a91aeb999e0e4d58e0952fa346a1711_u256,
0xc4709bc9f860e5dff01b5fc7b53fb9deecc622214aba710d495bccc7f860af4a_u256,
0xd4ed5f5e4334c0a4ccce6f706f3c9139ac0f6d2af3343ad3fae5a02fee8df542_u256,
0xb5aed07505677c8b1c6703742f4558e993d7984dc03d2121d3712d81ee067351_u256,
0xf9a14bf211c857f61ff9a1de95fc902faebff67c5d4898da8f48c9d306f1f80f_u256
];

let expected_merkle_root = 0x50ba87bdd484f07c8c55f76a22982f987c0465fdc345381b4634a70dc0ea0b38_u256;

assert_eq!(merkle_root(ref txids), expected_merkle_root);
}
}
6 changes: 0 additions & 6 deletions src/validation.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,6 @@ fn adjust_difficulty(self: @ChainState, block: @Block) -> (u32, u32) {
(*self.current_target, *self.epoch_start_time)
}

fn validate_merkle_root(self: @ChainState, block: @Block) -> Result<(), ByteArray> {
// TODO: implement
Result::Ok(())
}

// Helper functions
pub fn bits_to_target(bits: u32) -> Result<u256, felt252> {
// Extract exponent and mantissa
Expand Down Expand Up @@ -141,7 +136,6 @@ pub fn bits_to_target(bits: u32) -> Result<u256, felt252> {
Result::Ok(target)
}


pub fn target_to_bits(target: u256) -> Result<u32, felt252> {
if target == 0 {
return Result::Err('Target is zero');
Expand Down

0 comments on commit f305ce9

Please sign in to comment.