Define a sietch header file and add --sietch-min-zouts CLI option
This commit is contained in:
34
src/sietch.h
Normal file
34
src/sietch.h
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Copyright © 2019 The Hush developers *
|
||||||
|
* *
|
||||||
|
* See the AUTHORS and LICENSE files at *
|
||||||
|
* the top-level directory of this distribution for the individual copyright *
|
||||||
|
* holder information and the developer policies on copyright and licensing. *
|
||||||
|
* *
|
||||||
|
* Unless otherwise agreed in a custom licensing agreement, no part of the *
|
||||||
|
* this software, including this file may be copied, modified, propagated *
|
||||||
|
* or distributed except according to the terms contained in the GPLv3 *
|
||||||
|
* *
|
||||||
|
* Removal or modification of this copyright notice is prohibited. *
|
||||||
|
* *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
//TODO: List zpools here, and a function to randomly choose from them
|
||||||
|
#ifndef SIETCH_H
|
||||||
|
#define SIETCH_H
|
||||||
|
|
||||||
|
string randomSietchZaddr() {
|
||||||
|
std::vector<string> SietchShieldedPool1 = {
|
||||||
|
};
|
||||||
|
std::vector<string> SietchShieldedPool2 = {
|
||||||
|
};
|
||||||
|
//TODO: Assumes pools of 100
|
||||||
|
int randIndex = GetRandInt(100); // random int between 0 and 99
|
||||||
|
if(randIndex % 2) {
|
||||||
|
return SietchShieldedPool1[randIndex];
|
||||||
|
} else {
|
||||||
|
return SietchShieldedPool2[randIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
// Copyright (c) 2010 Satoshi Nakamoto
|
// Copyright (c) 2010 Satoshi Nakamoto
|
||||||
// Copyright (c) 2009-2014 The Bitcoin Core developers
|
// Copyright (c) 2009-2014 The Bitcoin Core developers
|
||||||
// Copyright (c) 2019 The Hush developers
|
// Copyright (c) 2019-2020 The Hush developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
@@ -62,6 +62,7 @@
|
|||||||
|
|
||||||
#include "komodo_defs.h"
|
#include "komodo_defs.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include "sietch.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -4524,8 +4525,16 @@ UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
|||||||
// SIETCH: Sprinkle our cave with some magic privacy zdust
|
// SIETCH: Sprinkle our cave with some magic privacy zdust
|
||||||
// End goal is to have this be as large as possible without slowing xtns down too much
|
// End goal is to have this be as large as possible without slowing xtns down too much
|
||||||
// A value of 7 will provide much stronger linkability privacy versus pre-Sietch operations
|
// A value of 7 will provide much stronger linkability privacy versus pre-Sietch operations
|
||||||
// We should also give RPC interface a way to specify MIN_ZOUTS
|
|
||||||
unsigned int MIN_ZOUTS=2;
|
unsigned int DEFAULT_MIN_ZOUTS=7;
|
||||||
|
unsigned int MAX_ZOUTS=25;
|
||||||
|
unsigned int MIN_ZOUTS=GetArg("--sietch-min-zouts", DEFAULT_MIN_ZOUTS);
|
||||||
|
|
||||||
|
if((MIN_ZOUTS<2) || (MIN_ZOUTS>MAX_ZOUTS)) {
|
||||||
|
fprintf(stderr,"%s: Sietch min zouts must be >=2 and <= 25, setting to default value of %d\n", __FUNCTION__, DEFAULT_MIN_ZOUTS );
|
||||||
|
MIN_ZOUTS=DEFAULT_MIN_ZOUTS;
|
||||||
|
}
|
||||||
|
|
||||||
while (zaddrRecipients.size() < MIN_ZOUTS) {
|
while (zaddrRecipients.size() < MIN_ZOUTS) {
|
||||||
// OK, we identify this xtn as needing privacy zdust, we must decide how much, non-deterministically
|
// OK, we identify this xtn as needing privacy zdust, we must decide how much, non-deterministically
|
||||||
int nAmount = 0;
|
int nAmount = 0;
|
||||||
@@ -4547,8 +4556,8 @@ UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
|||||||
zaddrRecipients.push_back( SendManyRecipient(zdust1, nAmount, memo) );
|
zaddrRecipients.push_back( SendManyRecipient(zdust1, nAmount, memo) );
|
||||||
fprintf(stderr,"%s: adding %s as zdust receiver\n", __FUNCTION__, zdust1.c_str());
|
fprintf(stderr,"%s: adding %s as zdust receiver\n", __FUNCTION__, zdust1.c_str());
|
||||||
|
|
||||||
// 25% chance of adding another zout
|
//50% chance of adding another zout
|
||||||
if (decider % 4 == 3) {
|
if (decider % 2) {
|
||||||
zdust2 = "zs1uchnxajsmn70gsptkthxcytqsr89rsle6rq66sp3gnn2cqdt8lpq97dv98plhv3vjmrp2zkr8da";
|
zdust2 = "zs1uchnxajsmn70gsptkthxcytqsr89rsle6rq66sp3gnn2cqdt8lpq97dv98plhv3vjmrp2zkr8da";
|
||||||
zaddrRecipients.push_back( SendManyRecipient(zdust2, nAmount, memo) );
|
zaddrRecipients.push_back( SendManyRecipient(zdust2, nAmount, memo) );
|
||||||
fprintf(stderr,"%s: adding %s as zdust receiver\n", __FUNCTION__, zdust2.c_str());
|
fprintf(stderr,"%s: adding %s as zdust receiver\n", __FUNCTION__, zdust2.c_str());
|
||||||
|
|||||||
Reference in New Issue
Block a user