rooch-network / rooch

VApp Container with Move Language
https://rooch.network
Apache License 2.0
134 stars 60 forks source link

[Bitcoin] Verify the bitcoin header #1763

Closed vegetabledogdog closed 3 weeks ago

vegetabledogdog commented 4 weeks ago
vercel[bot] commented 4 weeks ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
rooch ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 1, 2024 1:19am
rooch-portal ❌ Failed (Inspect) Jun 1, 2024 1:19am
vegetabledogdog commented 4 weeks ago

I did a test like this, but because it wasn't complete, I didn't add it. test data from https://bitcoin.stackexchange.com/questions/112329/calculate-verify-the-hash-of-a-bitcoin-block-header.

     #[test]
     fun versify_hash(){
         let block_header = Header{
             version: 536879108,
             prev_blockhash: option::destroy_some(address::from_ascii_string(ascii::string(b"00000000000000000009d54a110cc122960d31567d3ee84a1f18a98f50591046"))),
             merkle_root: option::destroy_some(address::from_ascii_string(ascii::string(b"e1e0573e6098d8128ee859e7540f56b01fe0a33e56694df6d2fab0f96c4954b3"))),
             time: 1644403033,
             bits: 0x170a8bb4,
             nonce: 1693537958,
         };

         let header = header_to_bytes(block_header);
         let hash1 = hash::sha2_256(header);
         let hash2 = hash::sha2_256(hash1);
         vector::reverse(&mut hash2);
         debug::print(&hash2);
         let block_hash = address::from_bytes(hash2);
        debug::print(&block_hash);
     }

result: [debug] 0x00000000000000000002b73f69e81b8b5e98dff0f2b7632fcb83c050c3b099a1 [debug] @0x2b73f69e81b8b5e98dff0f2b7632fcb83c050c3b099a1

jolestar commented 3 weeks ago

Does the test result work as expected? @vegetabledogdog

vegetabledogdog commented 3 weeks ago

Does the test result work as expected? @vegetabledogdog

yes

jolestar commented 3 weeks ago

@vegetabledogdog Can you help add the test case and resolve the conflicts?