Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

310
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda