Browse Source

Make it work correctly

pull/132/head
Duke Leto 2 years ago
parent
commit
ce5c8a54e4
  1. 8
      src/rpc/blockchain.cpp
  2. 2
      src/zcash/IncrementalMerkleTree.hpp

8
src/rpc/blockchain.cpp

@ -880,13 +880,11 @@ UniValue getblockmerkletree(const UniValue& params, bool fHelp, const CPubKey& m
}
phushblockindex = chainActive[nHeight];
blockRoot = phushblockindex->pprev->hashFinalSaplingRoot;
blockRoot = phushblockindex->hashFinalSaplingRoot;
if( pcoinsTip->GetSaplingAnchorAt(blockRoot, tree) ) {
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
ss << tree.path();
std::vector<unsigned char> merklepath(ss.begin(), ss.end());
//TODO: this returns the same, wrong data for all heights
return HexStr(merklepath);
ss << tree;
return HexStr(ss.begin(), ss.end());
} else {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Could not find merkletree");
}

2
src/zcash/IncrementalMerkleTree.hpp

@ -108,7 +108,6 @@ public:
IncrementalWitness<Depth, Hash> witness() const {
return IncrementalWitness<Depth, Hash>(*this);
}
MerklePath path(std::deque<Hash> filler_hashes = std::deque<Hash>()) const;
ADD_SERIALIZE_METHODS;
@ -136,6 +135,7 @@ private:
// Collapsed "left" subtrees ordered toward the root of the tree.
std::vector<boost::optional<Hash>> parents;
MerklePath path(std::deque<Hash> filler_hashes = std::deque<Hash>()) const;
Hash root(size_t depth, std::deque<Hash> filler_hashes = std::deque<Hash>()) const;
bool is_complete(size_t depth = Depth) const;
size_t next_depth(size_t skip) const;

Loading…
Cancel
Save