Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
LeoStehlik committed Aug 30, 2020
2 parents facf653 + 1d24d1c commit 058c7b3
Show file tree
Hide file tree
Showing 20 changed files with 601 additions and 24 deletions.
53 changes: 52 additions & 1 deletion src/config/CryptoNoteCheckpoints.h
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,57 @@ const std::initializer_list<CheckpointData> CHECKPOINTS = {
{2090000,"f3eb0f250049aaaf2441a415a756d16895d0d3114c24486ef4c95f151a6f2025"},
{2095000,"2b61b2a1369b8786d809613399a089f2e1f5cbda9c246284e0940871d0fff53d"},
{2100000,"2e0af81c7a6c2afeda2af3ae7cf8689ee462bbabea42300e3b7f64edd661532b"},
{2105000,"f1ab5b0b818bde3e03d30cc637b437fd57c0e2bd217d66b662b455694721fc81"},
{2105000,"f1ab5b0b818bde3e03d30cc637b437fd57c0e2bd217d66b662b455694721fc81"},
{2110000,"111a11e8d6bcfb1e4e4e2a43d347579845a3804f7c268880354371f7a8eb4b6c"},
{2115000,"b09b9a986606715e50fbe0c934365216fb14aa71c6f46e42071fa464b239687b"},
{2120000,"f394f687947daf79645c7b6880d2ad7f466bcdfed48c954a14c856c5f62ef0aa"},
{2125000,"af1e2170cef8686c9a7b8838747eda4cd0db654d5c76f7f1e7eae52c3dca4d71"},
{2130000,"fed828f67939e9f7c130aceb28b8736a2236f3a449147e07de61efb28feea948"},
{2135000,"3b7e834fc73b0a59e00de7bfe317b29de97279aacec0455dc4ba3e0a55d60bd6"},
{2140000,"41a52536031ecf7fc43cdb3a42240670369a84154bcd6769248ce04339d63bab"},
{2145000,"58dda891c1c05fb1fd6a2326009bcba5860c79b376cf80aaf702243e67820be0"},
{2150000,"bf91203ff96ae7544cb799491b5e476cf9ba5b08f77d256cd854c35f6d87d9bf"},
{2155000,"fa5ec6816d3639ac66e35c8236ea178363d773c41d9362ab84042f529a502824"},
{2160000,"7d1f31354ea1abee205ad3650597c4572563b478d9625d672c5563d032e025c5"},
{2165000,"786f91679e86d043ec7f26a151dcf260376b86c367519cfe698c20d71e8e3c01"},
{2170000,"1ae9122dc554218f5469aab688926e5ca03b701c4d8f66ea2e1188e482747af3"},
{2175000,"8fca2aec19bd3ee1e7ed9eef6b55557b34be4910b59a6906c06185848bf20832"},
{2180000,"a13bb3e8b7a2fb4c351d8d21f32a2b66b8334fa5b4b02e679b74b5dd4c2dbe94"},
{2185000,"e1b706341a0590e7d9bfcbb1a074a2ff0ea8f3bdfaaf42359d7932e415207c59"},
{2190000,"e24d198181f936c9d7919578e20a38c67167e227badfa8cfa03ca91fcf0c059b"},
{2195000,"60ec6b0e9b6f3c4c9824bbdf54a75a242b882c9bfe62127906f0422f75f4ecf4"},
{2200000,"46c7123e4b7a9dc6910aba687e66499065cf1238d4c71213a3faf78d18c8519c"},
{2205000,"7f183dcbf7e52ad57531ae2e388c3786c220a48023da1854d40baa6e40f90503"},
{2210000,"ae36e94e82e21a5acdf0d1ec8113853f74a26d3d9d6422b8228ca37fba8e8e30"},
{2215000,"be98a0aaa5bfcf1661665379bad9f78f5823d20a89dd32bd8d30299114561094"},
{2220000,"1773fc3099f42f16ff365cdda2467d0deb494b808eba1f7e235acb5d6702165d"},
{2225000,"d7fa6cdcd43cfa1f69b520c41664c80b1082ac903b6bfbc7f0b5a9e5cbe6b687"},
{2230000,"a444564c719412527b0e3e0616f621c2d1cc14d354eae6273df151301ac50305"},
{2235000,"0508b7417fb1d7ad5849ac97c558b7ac962380a84b211a781998adf981730e8f"},
{2240000,"d01bbe78951f076861aae56309ec8f9d5c57c9d7ee158380136ba3b115e3cd93"},
{2245000,"2f2b2c294cf386de9a6aa523fa8a7a755131b47f5efa956e8a98a37afdf0d94c"},
{2250000,"6ea32da058f312605de2fd0cf3a187d2548702b208134d58ce20b9a199942a0f"},
{2255000,"c0a37b6e5c7b74f79316f539103c1a2c931b27cc1ee0fd7b29f120c96c948d7a"},
{2260000,"39ef815d054f359d38554020b07d4b63094eb8d0a4142438894f13909e6461ee"},
{2265000,"18644bb126e9a7d596e14a4650f3cf003c2574d9d35d5c0ecc2efbad0d852816"},
{2270000,"2f926de16dbebae15d15012127cde7142e1dd5d3892a30569c0458d0f73c507f"},
{2275000,"f1b4e7d8dcd14f5ad70cb750deb674e8664f9979b1e00764bde6ee0553428d2f"},
{2280000,"db2a83c0a35b686e3433fa21d29a68856aa35caabb6d009318f24ee834fa0d9f"},
{2285000,"99d9d6bb00ce8b353640b1c07cb3c6e1b14630685f2b3aead55119df73261416"},
{2290000,"8fe2dd875bc841737d7ede24cc64a87b0bc386dc6a75bd91ed51a0b185df3467"},
{2295000,"1b040ab45ca1d0e1fbd20f1c9f93fa1bb410b7395ed1c536ea1c4f7af4ead59a"},
{2300000,"ffe481fba5d8043bf48095ef42c74cd445bf8142411cf9a4d2136ecc1d683799"},
{2305000,"d3e801cfc565e04f12413ec4894789f08e166d3901b04f7a52b76c62876f4eae"},
{2310000,"6905a75ab3209b46ddef6775c7a63c52ea7d031d5b63afcac086332254934e2f"},
{2315000,"c1a9376669c71671b140b2d4cc0cf11cc6b255df2c346d735fec7b3e5f6671d7"},
{2320000,"abff97dcdc1b97067c76a25770c61818351b2bcbd6f4a38d3adf8feb93770bbc"},
{2325000,"b5600012fbfe6f238a32cf77259185be52f5fac884a6d991a2612cea38d7c6d0"},
{2330000,"8dfdc32eb2f3919f47c18dcd2aec5db1a71649e34ba5e73efe1052e40f9b7be0"},
{2335000,"1ee4068f652c67bd0d3b8a6712bb116ee61ccaf38e3cd238bc33b45562a7f227"},
{2340000,"9b7be798904cc57bc67e9974b8fb725422b4a78b56e402309ad29417d882e7d1"},
{2345000,"edd88b9de51122094c0c6f87b526eb1b9f178f68b79f4270116fdf92515dafea"},
{2350000,"de42d93fcb215886b5b1970ed78fc932d110b2efaf7eb87280b42e79b2e233b2"},
{2355000,"bb616ad4bc87947264e3c3aaf81362c65d393b6192ebd851757e960ac91c8b0a"},
{2360000,"623c24faaf2a4a0a382e926a049c7a1358aaf9512ff00861cdcfe05fc785a8ff"},
};
} // namespace CryptoNote
24 changes: 15 additions & 9 deletions src/config/CryptoNoteConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ namespace CryptoNote

const size_t MAX_BLOCK_SIZE_INITIAL = 100000;

const uint64_t MAX_BLOCK_SIZE_V1_HEIGHT = 2361823;

const size_t MAX_BLOCK_SIZE_V1 = 614400;

const uint64_t MAX_BLOCK_SIZE_GROWTH_SPEED_NUMERATOR = 100 * 1024;

const uint64_t MAX_BLOCK_SIZE_GROWTH_SPEED_DENOMINATOR = 365 * 24 * 60 * 60 / DIFFICULTY_TARGET_V3;
Expand All @@ -140,10 +144,10 @@ namespace CryptoNote

const uint64_t MAX_EXTRA_SIZE_V3_HEIGHT = 1470000;

const uint64_t TRANSACTION_POW_HEIGHT = 2500000;
const uint64_t TRANSACTION_POW_HEIGHT = 2370000;

/* Higher difficulty = More PoW (and thus time) to generate a transaction. */
const uint64_t TRANSACTION_POW_DIFFICULTY = 10000;
const uint64_t TRANSACTION_POW_DIFFICULTY = 17000;

/* For new projects forked from this code base, the values immediately below
should be changed to 0 to prevent issues with transaction processing
Expand Down Expand Up @@ -176,13 +180,15 @@ namespace CryptoNote

const uint64_t FUSION_FEE_V1_HEIGHT = 2325000;

const uint64_t FUSION_FEE_V1_EXIT_HEIGHT = 2361823;

const uint64_t FUSION_FEE_V1 = 1000000;

/* This sets the maximum number of fusion transactions that can be present in the pool
at any given time. Incoming fusion transactions that attempt to exceed this limit
will be rejected from the pool and will not be added. This mechanism is in place
to help curtail fusion transaction spam. */
const size_t FUSION_TX_MAX_POOL_COUNT = 60;
const size_t FUSION_TX_MAX_POOL_COUNT = 420;

/* We just set it output max to 90 */
const size_t NORMAL_TX_MAX_OUTPUT_COUNT_V1 = 90;
Expand Down Expand Up @@ -214,14 +220,14 @@ namespace CryptoNote
1470000, // 1
1980000, // 2
2325000, // 3
2400000, // 4
2500000, // 5
2361823, // 4
2370000, // 5
2600000, // 6
2700000, // 7
};

/* MAKE SURE TO UPDATE THIS VALUE WITH EVERY MAJOR RELEASE BEFORE A FORK */
const uint64_t SOFTWARE_SUPPORTED_FORK_INDEX = 3;
const uint64_t SOFTWARE_SUPPORTED_FORK_INDEX = 5;

const uint64_t FORK_HEIGHTS_SIZE = sizeof(FORK_HEIGHTS) / sizeof(*FORK_HEIGHTS);

Expand Down Expand Up @@ -296,9 +302,9 @@ namespace CryptoNote

// P2P Network Configuration Section - This defines our current P2P network version
// and the minimum version for communication between nodes
const uint8_t P2P_CURRENT_VERSION = 4;
const uint8_t P2P_CURRENT_VERSION = 6;

const uint8_t P2P_MINIMUM_VERSION = 3;
const uint8_t P2P_MINIMUM_VERSION = 5;

// This defines the minimum P2P version required for lite blocks propogation
const uint8_t P2P_LITE_BLOCKS_PROPOGATION_VERSION = 0;
Expand Down Expand Up @@ -344,7 +350,7 @@ namespace CryptoNote

const char* const SEED_NODES[] = {
"195.154.81.135:12169", // bob bie
"176.9.99.123:42069", // Pluto
"135.181.23.12:42069", // Pluto
"91.239.237.54:42069", // Leo Cuvée CZ
"46.214.70.196:42069", // derogold4ever.online
};
Expand Down
4 changes: 2 additions & 2 deletions src/config/version.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
#define PROJECT_COPYRIGHT "Copyright 2019, The Dero Gold Association"

#define APP_VER_MAJOR 0
#define APP_VER_MINOR 4
#define APP_VER_REV 1
#define APP_VER_MINOR 5
#define APP_VER_REV 0
#define APP_VER_BUILD 1

#define BUILD_COMMIT_ID "@VERSION@"
Expand Down
17 changes: 12 additions & 5 deletions src/cryptonotecore/Currency.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,18 @@ namespace CryptoNote
size_t Currency::maxBlockCumulativeSize(uint64_t height) const
{
assert(height <= std::numeric_limits<uint64_t>::max() / m_maxBlockSizeGrowthSpeedNumerator);
size_t maxSize = static_cast<size_t>(
m_maxBlockSizeInitial
+ (height * m_maxBlockSizeGrowthSpeedNumerator) / m_maxBlockSizeGrowthSpeedDenominator);
size_t maxSize = static_cast<size_t>(
m_maxBlockSizeInitial
+ (height * m_maxBlockSizeGrowthSpeedNumerator) / m_maxBlockSizeGrowthSpeedDenominator);
assert(maxSize >= m_maxBlockSizeInitial);
return maxSize;
if (height >= CryptoNote::parameters::MAX_BLOCK_SIZE_V1_HEIGHT)
{
return maxSize = CryptoNote::parameters::MAX_BLOCK_SIZE_V1;
}
else
{
return maxSize;
}
}

bool Currency::constructMinerTx(
Expand Down Expand Up @@ -327,7 +334,7 @@ namespace CryptoNote
inputAmount += amount;
}

if (height >= CryptoNote::parameters::FUSION_FEE_V1_HEIGHT)
if (height >= CryptoNote::parameters::FUSION_FEE_V1_HEIGHT && height < CryptoNote::parameters::FUSION_FEE_V1_EXIT_HEIGHT)
{
inputAmount -= CryptoNote::parameters::FUSION_FEE_V1;
}
Expand Down
2 changes: 1 addition & 1 deletion src/cryptonotecore/ValidateTransaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ bool ValidateTransaction::validateTransactionFee()
if (isFusion)
{
/* Fusions must pay at least FUSION_FEE_V1 in fees. */
if (m_blockHeight >= CryptoNote::parameters::FUSION_FEE_V1_HEIGHT)
if (m_blockHeight >= CryptoNote::parameters::FUSION_FEE_V1_HEIGHT && m_blockHeight < CryptoNote::parameters::FUSION_FEE_V1_EXIT_HEIGHT)
{
validFee = fee >= CryptoNote::parameters::FUSION_FEE_V1;
}
Expand Down
2 changes: 1 addition & 1 deletion src/walletbackend/Transfer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ namespace SendTransaction

CryptoNote::KeyPair txKeyPair;

const uint64_t fee = daemon->networkBlockCount() >= CryptoNote::parameters::FUSION_FEE_V1_HEIGHT
const uint64_t fee = daemon->networkBlockCount() >= CryptoNote::parameters::FUSION_FEE_V1_HEIGHT && daemon->networkBlockCount() < CryptoNote::parameters::FUSION_FEE_V1_EXIT_HEIGHT
? CryptoNote::parameters::FUSION_FEE_V1
: 0;

Expand Down
2 changes: 1 addition & 1 deletion src/walletservice/PaymentGateService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ void PaymentGateService::runWalletService(const CryptoNote::Currency &currency,
std::unique_ptr<CryptoNote::WalletGreen> wallet(new CryptoNote::WalletGreen(*dispatcher, currency, node, logger));

service =
new PaymentService::WalletService(currency, *dispatcher, node, *wallet, walletConfiguration, logger);
new PaymentService::WalletService(currency, *dispatcher, node, *wallet, *wallet, walletConfiguration, logger);
std::unique_ptr<PaymentService::WalletService> serviceGuard(service);
try
{
Expand Down
37 changes: 37 additions & 0 deletions src/walletservice/PaymentServiceJsonRpcMessages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,43 @@ namespace PaymentService

void SendDelayedTransaction::Response::serialize(CryptoNote::ISerializer &serializer) {}

void SendFusionTransaction::Request::serialize(CryptoNote::ISerializer &serializer, const WalletService &service)
{
if (!serializer(threshold, "threshold"))
{
throw RequestSerializationError();
}

if (!serializer(anonymity, "anonymity"))
{
anonymity = service.getDefaultMixin();
}

serializer(addresses, "addresses");
serializer(destinationAddress, "destinationAddress");
}

void SendFusionTransaction::Response::serialize(CryptoNote::ISerializer &serializer)
{
serializer(transactionHash, "transactionHash");
}

void EstimateFusion::Request::serialize(CryptoNote::ISerializer &serializer)
{
if (!serializer(threshold, "threshold"))
{
throw RequestSerializationError();
}

serializer(addresses, "addresses");
}

void EstimateFusion::Response::serialize(CryptoNote::ISerializer &serializer)
{
serializer(fusionReadyCount, "fusionReadyCount");
serializer(totalOutputCount, "totalOutputCount");
}

void CreateIntegratedAddress::Request::serialize(CryptoNote::ISerializer &serializer)
{
if (!serializer(address, "address"))
Expand Down
44 changes: 44 additions & 0 deletions src/walletservice/PaymentServiceJsonRpcMessages.h
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,50 @@ namespace PaymentService
};
};

struct SendFusionTransaction
{
struct Request
{
uint64_t threshold;

uint64_t anonymity;

std::vector<std::string> addresses;

std::string destinationAddress;

void serialize(CryptoNote::ISerializer &serializer, const WalletService &service);
};

struct Response
{
std::string transactionHash;

void serialize(CryptoNote::ISerializer &serializer);
};
};

struct EstimateFusion
{
struct Request
{
uint64_t threshold;

std::vector<std::string> addresses;

void serialize(CryptoNote::ISerializer &serializer);
};

struct Response
{
uint32_t fusionReadyCount;

uint32_t totalOutputCount;

void serialize(CryptoNote::ISerializer &serializer);
};
};

struct CreateIntegratedAddress
{
struct Request
Expand Down
34 changes: 34 additions & 0 deletions src/walletservice/PaymentServiceJsonRpcServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,20 @@ namespace PaymentService
"getAddresses",
jsonHandler<GetAddresses::Request, GetAddresses::Response>(std::bind(
&PaymentServiceJsonRpcServer::handleGetAddresses, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace(
"sendFusionTransaction",
jsonHandler<SendFusionTransaction::Request, SendFusionTransaction::Response>(std::bind(
&PaymentServiceJsonRpcServer::handleSendFusionTransaction,
this,
std::placeholders::_1,
std::placeholders::_2)));
handlers.emplace(
"estimateFusion",
jsonHandler<EstimateFusion::Request, EstimateFusion::Response>(std::bind(
&PaymentServiceJsonRpcServer::handleEstimateFusion,
this,
std::placeholders::_1,
std::placeholders::_2)));
handlers.emplace(
"createIntegratedAddress",
jsonHandler<CreateIntegratedAddress::Request, CreateIntegratedAddress::Response>(std::bind(
Expand Down Expand Up @@ -440,6 +454,26 @@ namespace PaymentService
return service.getAddresses(response.addresses);
}

std::error_code PaymentServiceJsonRpcServer::handleSendFusionTransaction(
const SendFusionTransaction::Request &request,
SendFusionTransaction::Response &response)
{
return service.sendFusionTransaction(
request.threshold,
request.anonymity,
request.addresses,
request.destinationAddress,
response.transactionHash);
}

std::error_code PaymentServiceJsonRpcServer::handleEstimateFusion(
const EstimateFusion::Request &request,
EstimateFusion::Response &response)
{
return service.estimateFusion(
request.threshold, request.addresses, response.fusionReadyCount, response.totalOutputCount);
}

std::error_code PaymentServiceJsonRpcServer::handleCreateIntegratedAddress(
const CreateIntegratedAddress::Request &request,
CreateIntegratedAddress::Response &response)
Expand Down
14 changes: 14 additions & 0 deletions src/walletservice/PaymentServiceJsonRpcServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ namespace PaymentService
request.serialize(inputSerializer, service);
}

void SerializeRequest(
SendFusionTransaction::Request &request,
CryptoNote::JsonInputValueSerializer &inputSerializer)
{
request.serialize(inputSerializer, service);
}

std::unordered_map<std::string, HandlerFunction> handlers;

std::error_code handleSave(const Save::Request &request, Save::Response &response);
Expand Down Expand Up @@ -154,6 +161,13 @@ namespace PaymentService

std::error_code handleGetAddresses(const GetAddresses::Request &request, GetAddresses::Response &response);

std::error_code handleSendFusionTransaction(
const SendFusionTransaction::Request &request,
SendFusionTransaction::Response &response);

std::error_code
handleEstimateFusion(const EstimateFusion::Request &request, EstimateFusion::Response &response);

std::error_code handleCreateIntegratedAddress(
const CreateIntegratedAddress::Request &request,
CreateIntegratedAddress::Response &response);
Expand Down
Loading

0 comments on commit 058c7b3

Please sign in to comment.