MerkleProof.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. var MerkleProofMock = artifacts.require("./helpers/MerkleProofMock.sol");
  2. contract('MerkleProof', function(accounts) {
  3. let merkleProof;
  4. before(async function() {
  5. merkleProof = await MerkleProofMock.new();
  6. });
  7. describe("verifyProof", function() {
  8. it("should return true for a valid Merkle proof given even number of leaves", async function() {
  9. // const elements = ["a", "b", "c", "d"].map(el => sha3(el));
  10. // const merkleTree = new MerkleTree(elements);
  11. // const root = merkleTree.getHexRoot();
  12. // const proof = merkleTree.getHexProof(elements[0]);
  13. // const leaf = merkleTree.bufToHex(elements[0]);
  14. // const validProof = await merkleProof.verifyProof(proof, root, leaf);
  15. // assert.isOk(validProof, "verifyProof did not return true for a valid proof given even number of leaves");
  16. });
  17. it("should return true for a valid Merkle proof given odd number of leaves", async function () {
  18. // const elements = ["a", "b", "c"].map(el => sha3(el));
  19. // const merkleTree = new MerkleTree(elements);
  20. // const root = merkleTree.getHexRoot();
  21. // const proof = merkleTree.getHexProof(elements[0]);
  22. // const leaf = merkleTree.bufToHex(elements[0]);
  23. // const validProof = await merkleProof.verifyProof(proof, root, leaf);
  24. // assert.isOk(validProof, "verifyProof did not return true for a valid proof given odd number of leaves");
  25. });
  26. it("should return false for an invalid Merkle proof", async function() {
  27. // const elements = ["a", "b", "c"].map(el => sha3(el));
  28. // const merkleTree = new MerkleTree(elements);
  29. // const root = merkleTree.getHexRoot();
  30. // const proof = merkleTree.getHexProof(elements[0]);
  31. // const badProof = proof.slice(0, proof.length - 32);
  32. // const leaf = merkleTree.bufToHex(elements[0]);
  33. // const validProof = await merkleProof.verifyProof(badProof, root, leaf);
  34. // assert.isNotOk(validProof, "verifyProof did not return false for an invalid proof");
  35. });
  36. });
  37. });