diff --git a/src/contracts/QRaffle.h b/src/contracts/QRaffle.h index ed5dc7bd..6255e9a1 100644 --- a/src/contracts/QRaffle.h +++ b/src/contracts/QRaffle.h @@ -1,24 +1,26 @@ using namespace QPI; constexpr uint64 QRAFFLE_REGISTER_AMOUNT = 1000000000ull; -constexpr uint64 QRAFFLE_QXMR_REGISTER_AMOUNT = 100000000ull; +constexpr uint64 QRAFFLE_QXMR_REGISTER_AMOUNT = 250000000ull; constexpr uint64 QRAFFLE_MAX_QRE_AMOUNT = 1000000000ull; constexpr uint64 QRAFFLE_ASSET_NAME = 19505638103142993; constexpr uint64 QRAFFLE_QXMR_ASSET_NAME = 1380800593; // QXMR token asset name -constexpr uint32 QRAFFLE_LOGOUT_FEE = 50000000; -constexpr uint32 QRAFFLE_QXMR_LOGOUT_FEE = 5000000; // QXMR logout fee +constexpr uint32 QRAFFLE_LOGOUT_FEE = div(QRAFFLE_REGISTER_AMOUNT, 20); +constexpr uint32 QRAFFLE_QXMR_LOGOUT_FEE = div(QRAFFLE_QXMR_REGISTER_AMOUNT, 20); // QXMR logout fee constexpr uint32 QRAFFLE_TRANSFER_SHARE_FEE = 100; -constexpr uint32 QRAFFLE_BURN_FEE = 10; // percent +constexpr uint32 QRAFFLE_BURN_FEE = 5; // percent constexpr uint32 QRAFFLE_REGISTER_FEE = 5; // percent constexpr uint32 QRAFFLE_FEE = 1; // percent constexpr uint32 QRAFFLE_CHARITY_FEE = 1; // percent -constexpr uint32 QRAFFLE_SHRAEHOLDER_FEE = 3; // percent +constexpr uint32 QRAFFLE_SHAREHOLDER_FEE = 8; // percent constexpr uint32 QRAFFLE_MAX_EPOCH = 65536; constexpr uint32 QRAFFLE_MAX_PROPOSAL_EPOCH = 128; constexpr uint32 QRAFFLE_MAX_MEMBER = 65536; constexpr uint32 QRAFFLE_DEFAULT_QRAFFLE_AMOUNT = 10000000ull; constexpr uint32 QRAFFLE_MIN_QRAFFLE_AMOUNT = 1000000ull; constexpr uint32 QRAFFLE_MAX_QRAFFLE_AMOUNT = 1000000000ull; +constexpr uint32 QRAFFLE_MAX_TOKEN_RAFFLES = 1048576; +constexpr uint32 QRAFFLE_MAX_SHAREHOLDERS = 1024; constexpr sint32 QRAFFLE_SUCCESS = 0; constexpr sint32 QRAFFLE_INSUFFICIENT_FUND = 1; @@ -207,9 +209,9 @@ struct QRAFFLE : public ContractBase Array tmpTokenRaffleMembers; Array QuRaffles; - Array tokenRaffle; + Array tokenRaffle; HashMap quRaffleEntryAmount; - HashSet shareholdersList; + HashSet shareholdersList; id initialRegister1, initialRegister2, initialRegister3, initialRegister4, initialRegister5; id charityAddress, feeAddress, QXMRIssuer; @@ -1271,7 +1273,7 @@ struct QRAFFLE : public ContractBase // Calculate fee distributions locals.burnAmount = div(state.get().qREAmount * state.get().numberOfQuRaffleMembers * QRAFFLE_BURN_FEE, 100); locals.charityRevenue = div(state.get().qREAmount * state.get().numberOfQuRaffleMembers * QRAFFLE_CHARITY_FEE, 100); - locals.shareholderRevenue = div(state.get().qREAmount * state.get().numberOfQuRaffleMembers * QRAFFLE_SHRAEHOLDER_FEE, 100); + locals.shareholderRevenue = div(state.get().qREAmount * state.get().numberOfQuRaffleMembers * QRAFFLE_SHAREHOLDER_FEE, 100); locals.registerRevenue = div(state.get().qREAmount * state.get().numberOfQuRaffleMembers * QRAFFLE_REGISTER_FEE, 100); locals.fee = div(state.get().qREAmount * state.get().numberOfQuRaffleMembers * QRAFFLE_FEE, 100); locals.winnerRevenue = state.get().qREAmount * state.get().numberOfQuRaffleMembers - locals.burnAmount - locals.charityRevenue - div(locals.shareholderRevenue, 676) * 676 - div(locals.registerRevenue, state.get().numberOfRegisters) * state.get().numberOfRegisters - locals.fee; @@ -1370,7 +1372,7 @@ struct QRAFFLE : public ContractBase // Calculate token raffle fee distributions locals.burnAmount = div(locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) * QRAFFLE_BURN_FEE, 100); locals.charityRevenue = div(locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) * QRAFFLE_CHARITY_FEE, 100); - locals.shareholderRevenue = div(locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) * QRAFFLE_SHRAEHOLDER_FEE, 100); + locals.shareholderRevenue = div(locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) * QRAFFLE_SHAREHOLDER_FEE, 100); locals.registerRevenue = div(locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) * QRAFFLE_REGISTER_FEE, 100); locals.fee = div(locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) * QRAFFLE_FEE, 100); locals.winnerRevenue = locals.acTokenRaffle.entryAmount * state.get().numberOfTokenRaffleMembers.get(locals.i) - locals.burnAmount - locals.charityRevenue - div(locals.shareholderRevenue, 676) * 676 - div(locals.registerRevenue, state.get().numberOfRegisters) * state.get().numberOfRegisters - locals.fee; diff --git a/test/contract_qraffle.cpp b/test/contract_qraffle.cpp index ed1644c0..43750e18 100644 --- a/test/contract_qraffle.cpp +++ b/test/contract_qraffle.cpp @@ -974,7 +974,7 @@ TEST(ContractQraffle, GetFunctions) expectedTotalBurnAmount += (totalQuRaffleAmount * QRAFFLE_BURN_FEE) / 100; expectedTotalCharityAmount += (totalQuRaffleAmount * QRAFFLE_CHARITY_FEE) / 100; - expectedTotalShareholderAmount += ((totalQuRaffleAmount * QRAFFLE_SHRAEHOLDER_FEE) / 100) / 676 * 676; + expectedTotalShareholderAmount += ((totalQuRaffleAmount * QRAFFLE_SHAREHOLDER_FEE) / 100) / 676 * 676; expectedTotalRegisterAmount += ((totalQuRaffleAmount * QRAFFLE_REGISTER_FEE) / 100) / registerCount * registerCount; expectedTotalFeeAmount += (totalQuRaffleAmount * QRAFFLE_FEE) / 100;