Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

298
Views
¿Cómo usar múltiples hojas con una prueba en merkletreejs & solidity?

Estoy tratando de usar merkletreejs en el nodo para crear una prueba de maleficio; usar una funciona bien, pero también la necesito para poder generar una prueba para varias hojas.

Mi código js actual:

 const { MerkleTree } = require('merkletreejs'); const keccak256 = require('keccak256'); let tokenIDs = [ "6719509505", "6231137281", "3766014977", "4955017921", "8583738032", ]; const leafNodes = tokenIDs.map(ids => keccak256(ids)); const merkleTree = new MerkleTree(leafNodes, keccak256, {sortLeaves: true, sortPairs: true}); const rootHash = merkleTree.getHexRoot(); // CLAIMING HERE const claimingToken = keccak256("6719509505","6231137281","8583738032"); const hexProof = merkleTree.getHexProof(claimingToken); console.log(merkleTree.verify(hexProof, claimingToken, rootHash));

Sin embargo, cuando pruebo esto, me da la misma prueba que si solo estuviera usando la primera ID de token. Básicamente ignorando las otras identificaciones que puse.

Y en solidez me está dando un error de prueba no válido:

 // SPDX-License-Identifier: MIT pragma solidity >=0.7.0 <0.9.0; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; contract merkle { bytes32 private merkleRoot; event leaf ( bytes32 leaf2 ); event ids ( uint256[] tokenID ); event merk ( bytes32[] _merkleProof ); function mint(bytes32[] calldata _merkleProof, uint256[] calldata tokenID) public { bytes32 leaf2 = keccak256(abi.encodePacked(tokenID)); emit ids(tokenID); emit leaf(leaf2); emit merk(_merkleProof); // Check for an invalid proof require(MerkleProof.verify(_merkleProof, merkleRoot, leaf2), "Invalid Merkle Proof."); } }

¿Alguna idea sobre cómo generar una prueba de merkle usando varias hojas?

EDITAR

Me dijeron que Merkle Tree solo puede verificar una hoja a la vez, así que ahora estoy tratando de descubrir cómo enviar varias pruebas y verificar cada una con solidez.

En js, creé una matriz de muestra con pruebas:

 let tokenMerkle = []; tokenMerkle.push({tokenId: "6719509505", merkleProof: proof1}); tokenMerkle.push({tokenId: "6231137281", merkleProof: proof2}); tokenMerkle.push({tokenId: "6231137281", merkleProof: proof3});

Lo envío con mi llamada a mi contrato. No estoy seguro de cómo verificar correctamente cada uno mediante el uso de una matriz de matrices:

 struct Proof { uint tokenID; bytes32[] _merkleProof; } function mint(Proof[] memory proofs) public { for (uint i; i< proofs.length;i++){ bytes32 leafs = keccak256(abi.encodePacked(proofs[i].tokenID)); require(MerkleProof.verify(proofs[i]._merkleProof, merkleRoot, leafs), "Invalid Merkle Proof."); } }
over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!