39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
/** @file
|
|
*****************************************************************************
|
|
|
|
Implementation of interfaces for the class PourInput.
|
|
|
|
See PourInput.h .
|
|
|
|
*****************************************************************************
|
|
* @author This file is part of libzerocash, developed by the Zerocash
|
|
* project and contributors (see AUTHORS).
|
|
* @copyright MIT license (see LICENSE file)
|
|
*****************************************************************************/
|
|
|
|
#include "PourInput.h"
|
|
|
|
namespace libzerocash {
|
|
|
|
PourInput::PourInput(int tree_depth): old_coin(), merkle_index(), path() {
|
|
this->old_address = Address::CreateNewRandomAddress();
|
|
|
|
this->old_coin = Coin(this->old_address.getPublicAddress(), 0);
|
|
|
|
ZCIncrementalMerkleTree merkleTree;
|
|
merkleTree.append(uint256(this->old_coin.getCoinCommitment().getCommitmentValue()));
|
|
|
|
auto witness = merkleTree.witness();
|
|
auto merkle_path = witness.path();
|
|
|
|
this->path = merkle_path.authentication_path;
|
|
this->merkle_index = convertVectorToInt(merkle_path.index);
|
|
}
|
|
|
|
PourInput::PourInput(Coin old_coin,
|
|
Address old_address,
|
|
const libzcash::MerklePath &path) : old_address(old_address), old_coin(old_coin), path(path.authentication_path) {
|
|
this->merkle_index = convertVectorToInt(path.index);
|
|
};
|
|
|
|
} /* namespace libzerocash */ |