Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

304
Vistas
¿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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda