BCT Exp - No.01
BCT Exp - No.01
Experiment No: 01
Aim:- Local Blockchain: Introduction to Truffle, establishing local Blockchain using Truffle
a) Cryptography in Blockchain and Merkle root tree hash
Code:-
/ SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract MerkleProof {
function verify(
bytes32[] memory proof,
bytes32 root,
bytes32 leaf,
uint256 index
) public pure returns (bool) {
bytes32 hash = leaf;
for (uint256 i = 0; i < proof.length; i++) {
bytes32 proofElement = proof[i];
if (index % 2 == 0) {
hash = keccak256(abi.encodePacked(hash, proofElement));
} else {
hash = keccak256(abi.encodePacked(proofElement, hash));
}
index = index / 2;
}
return hash == root;
}
}
contract TestMerkleProof is MerkleProof
{ bytes32[] public hashes;
constructor() {
string[4] memory transactions =
["alice -> bob", "bob -> dave", "carol ->
alice", "dave -> bob"];
Universal College of Engineering, Kaman
Department of AIML/DE Engineering Subject:
Blockchain Technologies
)
)
);
}
offset +=
n; n = n / 2;
}
}
function getRoot() public view returns (bytes32)
{ return hashes[hashes.length - 1];
}
/* verify
3rd leaf
0xdca3326ad7e8121bf9cf9c12333e6b2271abe823ec9edfe42f813b1e768fa57b
root
0xcc086fcc038189b4641db2cc4f1de3bb132aefbd65d510d817591550937818c7
index
2
proof
0x8da9e1c820f9dbd1589fd6585872bc1063588625729e7ab0797cfc63a00bd950
0x995788ffc103b987ad50f5e5707fd094419eb12d9552cc423bd0cd86a3861433
*/
}
Universal College of Engineering, Kaman
Department of AIML/DE Engineering Subject:
Blockchain Technologies
Output:-
(Code Compilation)
(Deploying)
Universal College of Engineering, Kaman
Department of AIML/DE Engineering Subject:
Blockchain Technologies