Pages:
Author

Topic: [MOJO] MOJOv3 has been taken over by new devs - page 45. (Read 167299 times)

hero member
Activity: 601
Merit: 500
If the code is well working, so it's not.possible to split to zero. Normally it will go back to one big pile. Almost all coins have this.

Steve

Good to hear this
legendary
Activity: 1106
Merit: 1004
No risk, no fun!
Is it intended that each staked block splits the coins in two equal parts?

I see several problems, if this behavior is not changed. Halving coin blocks with each stake means:
  • blockchain bloat
  • possibly disappearing of the coins after a sufficient number of stakes

The last point is not so far-fetched.

Example:
I have 1 MOJO which are staking.
After the first round I have 2 x 0.5 MOJO, then 4 x 0.25 MOJO ...
... and after 27 rounds I have 134217728 x 0 MOJO (or whatever)

If I had 100K MOJO at the beginning, it will take 20 stakes longer  Sad

==> if the coins remain untouched and staking in the wallet, there is a good chance the coins are dissolved after 1-2 months.
... and the network is dead

I have not seen in the source codes and of course I don't know what will really happen.
But I don't really want to try it ...

If the code is well working, so it's not.possible to split to zero. Normally it will go back to one big pile. Almost all coins have this.

Steve
hero member
Activity: 601
Merit: 500
Is it intended that each staked block splits the coins in two equal parts?

I see several problems, if this behavior is not changed. Halving coin blocks with each stake means:
  • blockchain bloat
  • possibly disappearing of the coins after a sufficient number of stakes

The last point is not so far-fetched.

Example:
I have 1 MOJO which are staking.
After the first round I have 2 x 0.5 MOJO, then 4 x 0.25 MOJO ...
... and after 27 rounds I have 134217728 x 0 MOJO (or whatever)

If I had 100K MOJO at the beginning, it will take 20 stakes longer  Sad

==> if the coins remain untouched and staking in the wallet, there is a good chance the coins are dissolved after 1-2 months.
... and the network is dead

I have not seen in the source codes and of course I don't know what will really happen.
But I don't really want to try it ...
full member
Activity: 168
Merit: 100
Tell me please.
There were old coins, can I exchange them for new MOJO?
If yes, how?

Send a PN to the dev EBK1000 .. but he is currently on vacation.
legendary
Activity: 3262
Merit: 3675
Top Crypto Casino
Tell me please.
There were old coins, can I exchange them for new MOJO?
If yes, how?
copper member
Activity: 2324
Merit: 1348
Would correcting this require a hard fork, or can we re-compile safely now with the correction?

The next update is in progress.
hero member
Activity: 601
Merit: 500
Is it intended that each staked block splits the coins in two equal parts?
full member
Activity: 199
Merit: 102
Would correcting this require a hard fork, or can we re-compile safely now with the correction?
copper member
Activity: 2324
Merit: 1348
We are working on a fix for the stake reward etc. and it shouldn't take too long. Just to let you know that I am off on a holiday for around 2-3 weeks so there may not be that many updates as I will only have my phone and may be off-line for periods of time. We expect to have something new out end of August. Hang in there...

The problem is the overflow in uint64 arithmetic, as already stated by r1d1:
https://bitcointalk.org/index.php?topic=1366963.msg14459322;topicseen#msg14459322

Example:
I have 7,500 MOJO, 1.677 days old
Staking reward was 0.0575693 MOJO
See https://chainz.cryptoid.info/mojo/address.dws?MVtE3mm7wejMG2FoijgUPVfGNovcx9YhCr.htm : Block #49582

debug.log:
Code:
2016-08-11 00:26:04 Coinage 1257800000000 * nRewardCoinYear 15000000 = nSubsidy 11513860, COIN =100000000 

CoinAge: 1257800000000  (= age in days * coins) (=1.677 days * 7,500 MOJO * 10^8)
nRewardCoinYear : 15000000 (= 15%)
nSubsidy : 11513860 (= calculated reward * 10^8) (= 0.11513860 MOJO)
50% of reward goes to MasterNode, 50% to me

The belonging code you can find in main.cpp:

Code:
int64_t GetProofOfStakeReward(const CBlockIndex* pindexPrev, int64_t nCoinAge, int64_t nFees, int64_t nValueOut = 0)
{
   int64_t nRewardCoinYear = 1 * CENT;
   if (nValueOut > DARKSEND_POOL_MAX)
   {
        nRewardCoinYear = 15 * CENT;   
   } else {
        if (pindexPrev->nHeight < 512000)
            nRewardCoinYear = 15 * CENT;
        if (pindexPrev->nHeight >= 512000 && pindexPrev->nHeight < 1025000)
            nRewardCoinYear = 10 * CENT;
        if (pindexPrev->nHeight >= 1025000 && pindexPrev->nHeight < 1537000)
            nRewardCoinYear = 5 * CENT;
   }

    int64_t nSubsidy = nCoinAge * nRewardCoinYear / 365 / COIN;
    return nSubsidy + nFees;
}

The reward should be :
 
1257800000000 * 15000000 / 365 / 100000000 = 516904109  (5.16904109  MOJO) and not  0.11513860 MOJO

The problem?
The first multiplication (1257800000000 * 15000000 = 18867000000000000000 = 0x105D50C89D14B8000) is greater then 2^64,
the result is truncated to 0x05D50C89D14B8000 = 420255926290448384.
420255926290448384 / 365 / 100000000 = 11513860
which is the wrong result.

Solution:
as already stated by r1d1:
change the multiplication to:

Code:
    
    int64_t nSubsidy = nCoinAge  / COIN * nRewardCoinYear / 365;
    return nSubsidy + nFees;

I agree! Good work  Wink
hero member
Activity: 601
Merit: 500
We are working on a fix for the stake reward etc. and it shouldn't take too long. Just to let you know that I am off on a holiday for around 2-3 weeks so there may not be that many updates as I will only have my phone and may be off-line for periods of time. We expect to have something new out end of August. Hang in there...

The problem is the overflow in uint64 arithmetic, as already stated by r1d1:
https://bitcointalk.org/index.php?topic=1366963.msg14459322;topicseen#msg14459322

Example:
I have 7,500 MOJO, 1.677 days old
Staking reward was 0.0575693 MOJO
See https://chainz.cryptoid.info/mojo/address.dws?MVtE3mm7wejMG2FoijgUPVfGNovcx9YhCr.htm : Block #49582

debug.log:
Code:
2016-08-11 00:26:04 Coinage 1257800000000 * nRewardCoinYear 15000000 = nSubsidy 11513860, COIN =100000000 

CoinAge: 1257800000000  (= age in days * coins) (=1.677 days * 7,500 MOJO * 10^8)
nRewardCoinYear : 15000000 (= 15%)
nSubsidy : 11513860 (= calculated reward * 10^8) (= 0.11513860 MOJO)
50% of reward goes to MasterNode, 50% to me

The belonging code you can find in main.cpp:

Code:
int64_t GetProofOfStakeReward(const CBlockIndex* pindexPrev, int64_t nCoinAge, int64_t nFees, int64_t nValueOut = 0)
{
   int64_t nRewardCoinYear = 1 * CENT;
   if (nValueOut > DARKSEND_POOL_MAX)
   {
        nRewardCoinYear = 15 * CENT;   
   } else {
        if (pindexPrev->nHeight < 512000)
            nRewardCoinYear = 15 * CENT;
        if (pindexPrev->nHeight >= 512000 && pindexPrev->nHeight < 1025000)
            nRewardCoinYear = 10 * CENT;
        if (pindexPrev->nHeight >= 1025000 && pindexPrev->nHeight < 1537000)
            nRewardCoinYear = 5 * CENT;
   }

    int64_t nSubsidy = nCoinAge * nRewardCoinYear / 365 / COIN;
    return nSubsidy + nFees;
}

The reward should be :
 
1257800000000 * 15000000 / 365 / 100000000 = 516904109  (5.16904109  MOJO) and not  0.11513860 MOJO

The problem?
The first multiplication (1257800000000 * 15000000 = 18867000000000000000 = 0x105D50C89D14B8000) is greater then 2^64,
the result is truncated to 0x05D50C89D14B8000 = 420255926290448384.
420255926290448384 / 365 / 100000000 = 11513860
which is the wrong result.

Solution:
as already stated by r1d1:
change the multiplication to:

Code:
    
    int64_t nSubsidy = nCoinAge  / COIN * nRewardCoinYear / 365;
    return nSubsidy + nFees;
sr. member
Activity: 377
Merit: 250
My wallet stopped at 47499 block yesterday. Masternod 0, 4 connections. What do?
legendary
Activity: 1148
Merit: 1000
A Wound in Eternity
We are working on a fix for the stake reward etc. and it shouldn't take too long. Just to let you know that I am off on a holiday for around 2-3 weeks so there may not be that many updates as I will only have my phone and may be off-line for periods of time. We expect to have something new out end of August. Hang in there...
legendary
Activity: 2576
Merit: 1073
So what up with this? EBK1000, I have sent you a PM regarding the swap just before you temporarily disappeared from the forum. No answer received. Then I have PM-ed you once more lately, still nothing... I had an impression this is a solid project, and I was one of the initial investors. Was that impression wrong?

I was a believer in you, and expressed my confidence in even when most folks were thinking you've gone for good. Because of this same reason, I was not checking the forum every day, having some confidence you'll answer when you come back, and hoping to get email notification in form of an answer. Should we really check forums every day to catch those swaps? So what? Are my MOJO's lost forever...? There was too much trust from my side..?  Undecided


Relax man, he prolly has like 200 pm's per day. I highly doubt he didn't respond on purpose, just overlooked. He is quite busy getting things back in order. So what is your exact question? You still need to swap out your V1 Mojo for V2 Mojo? If so then no problem, he has stated NUMEROUS times that he will do it. Just because he doesn't do it in the exact second you want him too, doesn't mean shit. Patience man. All is well. You will be taken care of. Nothing is lost. RELAX!

I hope so... I understand the dev is busy as hell, but just a short approval notice (like yours for example) would do quite well... I really don't like getting no reply, especially from a person whom I consider to be reliable.


Yes, he has had his questionable days for sure, but things are moving along so just hang tight. How many coins are you talking about? I could send you a few thousand if you wanted to play with the new wallet and all. At work now, but can do it this evening (6 hours or so). Lemme know.

I don't have too many MOJOs, but its more than couple of thousands. Thanks a lot for the offer, I really appreciate it. I would prefer to wait for reply from EBK1000, anyway I am on MOJO for the long term, so no need to hurry, just want to be sure I would get my coins at some point. I would probably just mine some now, to see how thats working and to get some MOJOv2 meanwhile Smiley
full member
Activity: 245
Merit: 100
So what up with this? EBK1000, I have sent you a PM regarding the swap just before you temporarily disappeared from the forum. No answer received. Then I have PM-ed you once more lately, still nothing... I had an impression this is a solid project, and I was one of the initial investors. Was that impression wrong?

I was a believer in you, and expressed my confidence in even when most folks were thinking you've gone for good. Because of this same reason, I was not checking the forum every day, having some confidence you'll answer when you come back, and hoping to get email notification in form of an answer. Should we really check forums every day to catch those swaps? So what? Are my MOJO's lost forever...? There was too much trust from my side..?  Undecided


Relax man, he prolly has like 200 pm's per day. I highly doubt he didn't respond on purpose, just overlooked. He is quite busy getting things back in order. So what is your exact question? You still need to swap out your V1 Mojo for V2 Mojo? If so then no problem, he has stated NUMEROUS times that he will do it. Just because he doesn't do it in the exact second you want him too, doesn't mean shit. Patience man. All is well. You will be taken care of. Nothing is lost. RELAX!

I hope so... I understand the dev is busy as hell, but just a short approval notice (like yours for example) would do quite well... I really don't like getting no reply, especially from a person whom I consider to be reliable.


Yes, he has had his questionable days for sure, but things are moving along so just hang tight. How many coins are you talking about? I could send you a few thousand if you wanted to play with the new wallet and all. At work now, but can do it this evening (6 hours or so). Lemme know.
legendary
Activity: 2576
Merit: 1073
So what up with this? EBK1000, I have sent you a PM regarding the swap just before you temporarily disappeared from the forum. No answer received. Then I have PM-ed you once more lately, still nothing... I had an impression this is a solid project, and I was one of the initial investors. Was that impression wrong?

I was a believer in you, and expressed my confidence in even when most folks were thinking you've gone for good. Because of this same reason, I was not checking the forum every day, having some confidence you'll answer when you come back, and hoping to get email notification in form of an answer. Should we really check forums every day to catch those swaps? So what? Are my MOJO's lost forever...? There was too much trust from my side..?  Undecided


Relax man, he prolly has like 200 pm's per day. I highly doubt he didn't respond on purpose, just overlooked. He is quite busy getting things back in order. So what is your exact question? You still need to swap out your V1 Mojo for V2 Mojo? If so then no problem, he has stated NUMEROUS times that he will do it. Just because he doesn't do it in the exact second you want him too, doesn't mean shit. Patience man. All is well. You will be taken care of. Nothing is lost. RELAX!

I hope so... I understand the dev is busy as hell, but just a short approval notice (like yours for example) would do quite well... I really don't like getting no reply, especially from a person whom I consider to be reliable.
copper member
Activity: 2324
Merit: 1348
hero member
Activity: 601
Merit: 500
copper member
Activity: 2324
Merit: 1348
The POS Reward is currently complete wrong. Mojo V2 pays ~1,5% (should be:15%) but your 1,19 Mojo for 319K is a mystery.
At 1.5% takes about 200 Mojo come as a result (319K 3 weeks). Your earnings for the 5000 Mojo are correct (1,5%). (Amount /2 =0,75%)
Can you send me your debug.log?

Currently I've no debug log with coins staking.
But it is full with entries like this:
Code:
Hash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7104
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7136
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7136
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8736
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8736
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7376
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7376
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7648
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7648
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8192
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8192
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =10096
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =10800
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =10800
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =12064
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =12064
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation


This is already fixed in the next version. It is only a protection function. The wallet trys to early to stake. You can ignore this message.
hero member
Activity: 601
Merit: 500
The POS Reward is currently complete wrong. Mojo V2 pays ~1,5% (should be:15%) but your 1,19 Mojo for 319K is a mystery.
At 1.5% takes about 200 Mojo come as a result (319K 3 weeks). Your earnings for the 5000 Mojo are correct (1,5%). (Amount /2 =0,75%)
Can you send me your debug.log?

Currently I've no debug log with coins staking.
But it is full with entries like this:
Code:
Hash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7104
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7136
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7136
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8736
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8736
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7376
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7376
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7648
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =7648
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8192
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =8192
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =10096
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =10800
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =10800
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =12064
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation
2016-08-10 06:13:48 BSDDev Min age violation : nTimeBlockFrom + nStakeMinAge)- nTimeTx =12064
2016-08-10 06:13:48 ERROR: CheckStakeKernelHash() : min age violation

Pages:
Jump to: