Sietch for z_shieldcoinbase
This commit is contained in:
@@ -46,6 +46,7 @@
|
|||||||
|
|
||||||
using namespace libzcash;
|
using namespace libzcash;
|
||||||
extern uint64_t ASSETCHAINS_TIMELOCKGTE;
|
extern uint64_t ASSETCHAINS_TIMELOCKGTE;
|
||||||
|
extern string randomSietchZaddr();
|
||||||
|
|
||||||
AsyncRPCOperation_shieldcoinbase::AsyncRPCOperation_shieldcoinbase(
|
AsyncRPCOperation_shieldcoinbase::AsyncRPCOperation_shieldcoinbase(
|
||||||
TransactionBuilder builder,
|
TransactionBuilder builder,
|
||||||
@@ -229,6 +230,17 @@ bool ShieldToAddress::operator()(const libzcash::SaplingPaymentAddress &zaddr) c
|
|||||||
// Send all value to the target z-addr
|
// Send all value to the target z-addr
|
||||||
m_op->builder_.SendChangeTo(zaddr, ovk);
|
m_op->builder_.SendChangeTo(zaddr, ovk);
|
||||||
|
|
||||||
|
// Sietchified Shielding of Coinbase Funds
|
||||||
|
// Add Sietch zouts so it's unclear which zout contains value :)
|
||||||
|
// This reduces metadata leakage of coinbase t=>z tx's
|
||||||
|
CAmount amount = 0;
|
||||||
|
auto zdust1 = DecodePaymentAddress(randomSietchZaddr());
|
||||||
|
auto zdust2 = DecodePaymentAddress(randomSietchZaddr());
|
||||||
|
auto sietchZout1 = boost::get<libzcash::SaplingPaymentAddress>(zdust1);
|
||||||
|
auto sietchZout2 = boost::get<libzcash::SaplingPaymentAddress>(zdust2);
|
||||||
|
m_op->builder_.AddSaplingOutput(ovk, sietchZout1, amount);
|
||||||
|
m_op->builder_.AddSaplingOutput(ovk, sietchZout2, amount);
|
||||||
|
|
||||||
// Build the transaction
|
// Build the transaction
|
||||||
auto maybe_tx = m_op->builder_.Build();
|
auto maybe_tx = m_op->builder_.Build();
|
||||||
if (!maybe_tx) {
|
if (!maybe_tx) {
|
||||||
|
|||||||
Reference in New Issue
Block a user