Author

Topic: [HYP] HyperStake | Generous Reward Staking | Advanced Staking Controls & Wallet - page 178. (Read 679335 times)

legendary
Activity: 1330
Merit: 1000
Blockchain Developer
Does this patch render the stake more obsolete?  Says allows you to hash 10, 5, 3 minutes?  If timedrift is now 1 minute.

And in your initial post you mention ppc and nvc with two hour drifts, but hyp and such have 15 minutes.  So you can't hash two hours ahead of time correct?  Only max of 15 minutes.

And do you expect that 60s drift could cause issues?  Like if a computer clock is off a bit?

Yes it was only 15 minutes for HYP, and I had only allowed 10 minutes in my build of the wallet. It was still what i would consider catastrophic, and so far our diff spiral has only been fixed by voluntary downgrading of client without the future hashing code. So if a 15 minute drift can do this, imagine a 120 minute drift...

I see that blackcoin and clams both use a 15 second drift. I think 60 seconds is a could compromise between less orphans and more safety.
sr. member
Activity: 433
Merit: 250
We are the first to program your future (c)
Presstab, could you describe in two words, pls, the bug in PoS you have discovered, for those who's out of topic, in a non-tech way? To let them have an understanding of what is going on behind the scenes.

Every coin has a setting "timedrift". It is meant to allow nodes that are for one reason or another a bit out of sync with the median time, to be able to submit blocks and still be fine.

For example peercoin allows a time drift of 2 hours, and same with NovaCoin. HoboNickels, BottleCaps, HyperStake are all 15 minute timedrift allowance.

So when you are attempting to stake and meet the staking target, you create 60 hashes at once per UTXO if you are using standard peercoin hashing code. The only thing that changes from hash to hash is the input for time. It hashes 60 seconds into the future at once. This system works pretty good, and doesn't really have much problem.

The problem is that when you get someone that tweaks the code, and says "why not hash 2 hours into the future" I will have 7,200 hashes to attempt to stake instead of 60 hashes".  So this code tweakers chance of staking is actually 11,900% more likely to hit a hash (did I do the math correctly? I think I did).

My original thinking, and the reason I released the beta release, was that if some code tweaker has that advantage, let us even the playing field and give it to everyone. And so I released that code.

What I failed to realize is that this would really screw up difficulty. Let's say the code tweaker above hashed two hours into the future, submitted the stake, and the network accepted it with no problems.  The next block would calculate difficulty by taking that 2 hour future stake and subtracting the last time before that, calculating the time to stake as 2 hours between the two blocks. The difficulty code thinks that this means that people are having trouble staking, and the diff drops.

With the new HYP code, we got diff as low as 3 i think it was (from the 10+ that it had been before), made 1,975 blocks today (compared to the target of 960), and minted 1.8 million HYP compared to our targeted 960k max.

Hope that makes some sense.  Running the new code on a test network and should have it out soon.

Thanks for a very clear explanation. It's really a major issue.
legendary
Activity: 1023
Merit: 1001
Tokenize Fantasy Sports
And wow that is an incredible performance improvement, watched it before i upgraded about 20-25% of my cpu, now almost 0, see it bump a bit every now and then.
legendary
Activity: 1023
Merit: 1001
Tokenize Fantasy Sports
Does this patch render the stake more obsolete?  Says allows you to hash 10, 5, 3 minutes?  If timedrift is now 1 minute.

And in your initial post you mention ppc and nvc with two hour drifts, but hyp and such have 15 minutes.  So you can't hash two hours ahead of time correct?  Only max of 15 minutes.

And do you expect that 60s drift could cause issues?  Like if a computer clock is off a bit?
legendary
Activity: 1023
Merit: 1001
Tokenize Fantasy Sports
@presstab so now i downloadthe new wallet and reload data?

I loaded it on top of both my stake wallets, looka good.  Backup wallet first as precaution
m33
legendary
Activity: 1064
Merit: 1000
Never invest with borrowed coins
@presstab so now i download the new wallet and reload data?

which one for windows the one name qt or without?
legendary
Activity: 1023
Merit: 1001
Tokenize Fantasy Sports
Does this patch render the stake more obsolete?  Says allows you to hash 10, 5, 3 minutes?  If timedrift is now 1 minute.
legendary
Activity: 1330
Merit: 1000
Blockchain Developer
MANDATORY UPDATE FOR SECURITY MEASURES

https://github.com/hyperstake/HyperStake/releases/tag/v1.1

Forking at 1423836000; // Fri, 13 Feb 2015 14:00:00 GMT
to reign in timedrift to 60 seconds.

Information about attack vectors patched: https://bitcointalksearch.org/topic/m.10443393

Note - If you cannot get the autotools to configure properly, then you can also use the code on github.com/presstab/hyperstake which now contains the same code without the autotools update.
newbie
Activity: 31
Merit: 0
avast ye scurvy scallywags... prepare to be forked!

(can you believe scallywags is in spell check?)

I'm afraid to even google it.
What the *bleep* are scallywags?

Scallywags are what dogs do when you scold them.
 Cheesy
legendary
Activity: 1330
Merit: 1000
Blockchain Developer
Is there seriously going to be a true hard-fork with a few hours notice? If so, you are looking at a major train wreck.

Have the services that use/support  Hyperstake been notified? I know I haven't, I only noticed it because it popped up in my reply post list.

Exchanges, explorers, gambling, etc etc?? All these services need time to get setup even after they are notified.

How many users are going to end up on a forked chain because they didn't happen to come to a forum where it has been announced in the last few hours?

Major exchanges have been notified, most of our services have been notified. You were on my list as well, just hadn't got there yet. Trying to do a lot of things at once here.

Quote
I was hoping that this was really going to be a soft fork until I saw this in the code currently in github:

Code:
if (pfrom->nVersion < 72099)
{
printf("partner %s using an old client %d, disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
pfrom->fDisconnect = true;

I hope it is for testing purposes, and you are not intending to truly block out version 72000 from the new client (In  other words a true hard fork) in the next few hours or even days.

This has to be a misunderstanding on my part. When is the hard-fork actually going to be enforced?

This was for my own personal testing. This should be doable via softfork, but I am sure old clients will be likely to get off on their own forks if not updated. Its hard to say for sure. At first we were planning on going all out and getting our whole list of fork items crossed off the list. This is just too much now, and too quick in advanced. I will simply be changing the timedrift code to 60 seconds. No difficulty changes or other changes. Hope this answers your questions, I will get you the updated code as soon as I have it.
legendary
Activity: 1023
Merit: 1001
Tokenize Fantasy Sports
Someone gaming the system apparently.
legendary
Activity: 1330
Merit: 1000
Blockchain Developer
Is there seriously going to be a true hard-fork with a few hours notice? If so, you are looking at a major train wreck.

Have the services that use/support  Hyperstake been notified? I know I haven't, I only noticed it because it popped up in my reply post list.

Exchanges, explorers, gambling, etc etc?? All these services need time to get setup even after they are notified.

How many users are going to end up on a forked chain because they didn't happen to come to a forum where it has been announced in the last few hours?

I was hoping that this was really going to be a soft fork until I saw this in the code currently in github:

Code:
if (pfrom->nVersion < 72099)
{
printf("partner %s using an old client %d, disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
pfrom->fDisconnect = true;

I hope it is for testing purposes, and you are not intending to truly block out version 72000 from the new client (In  other words a true hard fork) in the next few hours or even days.

This has to be a misunderstanding on my part. When is the hard-fork actually going to be enforced?




No sorry, the official repo is hyperstake/hyperstake, I am running some test code on presstab/hyperstake that includes some extra code that won't be included in the fork. Please ignore it.

I will schedule the fork to happen at (GMT): Fri, 13 Feb 2015 14:00:00 GMT

I wish I felt comfortable giving more time in advanced, but there are more than double the amount of coins being minted than normal.

I will release new binaries tonight and fresh commits to github.com/hyperstake/hyperstake

legendary
Activity: 1330
Merit: 1000
Blockchain Developer
Presstab, could you describe in two words, pls, the bug in PoS you have discovered, for those who's out of topic, in a non-tech way? To let them have an understanding of what is going on behind the scenes.

Every coin has a setting "timedrift". It is meant to allow nodes that are for one reason or another a bit out of sync with the median time, to be able to submit blocks and still be fine.

For example peercoin allows a time drift of 2 hours, and same with NovaCoin. HoboNickels, BottleCaps, HyperStake are all 15 minute timedrift allowance.

So when you are attempting to stake and meet the staking target, you create 60 hashes at once per UTXO if you are using standard peercoin hashing code. The only thing that changes from hash to hash is the input for time. It hashes 60 seconds into the future at once. This system works pretty good, and doesn't really have much problem.

The problem is that when you get someone that tweaks the code, and says "why not hash 2 hours into the future" I will have 7,200 hashes to attempt to stake instead of 60 hashes".  So this code tweakers chance of staking is actually 11,900% more likely to hit a hash (did I do the math correctly? I think I did).

My original thinking, and the reason I released the beta release, was that if some code tweaker has that advantage, let us even the playing field and give it to everyone. And so I released that code.

What I failed to realize is that this would really screw up difficulty. Let's say the code tweaker above hashed two hours into the future, submitted the stake, and the network accepted it with no problems.  The next block would calculate difficulty by taking that 2 hour future stake and subtracting the last time before that, calculating the time to stake as 2 hours between the two blocks. The difficulty code thinks that this means that people are having trouble staking, and the diff drops.

With the new HYP code, we got diff as low as 3 i think it was (from the 10+ that it had been before), made 1,975 blocks today (compared to the target of 960), and minted 1.8 million HYP compared to our targeted 960k max.

Hope that makes some sense.  Running the new code on a test network and should have it out soon.
legendary
Activity: 1023
Merit: 1001
Tokenize Fantasy Sports
Is there seriously going to be a true hard-fork with a few hours notice? If so, you are looking at a major train wreck.

Have the services that use/support  Hyperstake been notified? I know I haven't, I only noticed it because it popped up in my reply post list.

Exchanges, explorers, gambling, etc etc?? All these services need time to get setup even after they are notified.

How many users are going to end up on a forked chain because they didn't happen to come to a forum where it has been announced in the last few hours?

I was hoping that this was really going to be a soft fork until I saw this in the code currently in github:

Code:
if (pfrom->nVersion < 72099)
{
printf("partner %s using an old client %d, disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
pfrom->fDisconnect = true;

I hope it is for testing purposes, and you are not intending to truly block out version 72000 from the new client (In  other words a true hard fork) in the next few hours or even days.

This has to be a misunderstanding on my part. When is the hard-fork actually going to be enforced?




This is also in there...
static const unsigned int FORK_TIME2 = 1423783513; // Fri, 13 Feb 2015 00:00:00 GMT
sr. member
Activity: 364
Merit: 250
I recommend that everyone make a backup of their data directory now. This way if you were to miss the fork and couldnt get the wallet to auto reorganize, then you could start from the backup.

Would you please tell this idiot which of the 10 things in my HyperStake folder is the data directory as nothing is labeled with that name.  Maybe the database?

Windows 8.1

While I'm at it, I backed up my wallet back in October.  Is this something I should do on a regular basis?
The folder in .appdata

Nothing with .appdata

The following are in my HyperStake folder with most obviously not it but included for completeness.

Me>AppData>Roaming>HyperStake

database
themes
.lock
blk0001.dat
blkindex.dat
db
debug
HyperStake-qt
peers.dat
wallet.dat


You answered your own question "Me>AppData>Roaming>HyperStake"

Just save the whole Hyperstake folder in roaming somewhere else and name it something else. This will be your backup.
legendary
Activity: 1064
Merit: 1000
Is there seriously going to be a true hard-fork with a few hours notice? If so, you are looking at a major train wreck.

Have the services that use/support  Hyperstake been notified? I know I haven't, I only noticed it because it popped up in my reply post list.

Exchanges, explorers, gambling, etc etc?? All these services need time to get setup even after they are notified.

How many users are going to end up on a forked chain because they didn't happen to come to a forum where it has been announced in the last few hours?

I was hoping that this was really going to be a soft fork until I saw this in the code currently in github:

Code:
 if (pfrom->nVersion < 72099)
{
printf("partner %s using an old client %d, disconnecting\n", pfrom->addr.ToString().c_str(), pfrom->nVersion);
pfrom->fDisconnect = true;

I hope it is for testing purposes, and you are not intending to truly block out version 72000 from the new client (In  other words a true hard fork) in the next few hours or even days.

This has to be a misunderstanding on my part. When is the hard-fork actually going to be enforced?


legendary
Activity: 1624
Merit: 1008
I recommend that everyone make a backup of their data directory now. This way if you were to miss the fork and couldnt get the wallet to auto reorganize, then you could start from the backup.

Would you please tell this idiot which of the 10 things in my HyperStake folder is the data directory as nothing is labeled with that name.  Maybe the database?

Windows 8.1

While I'm at it, I backed up my wallet back in October.  Is this something I should do on a regular basis?
The folder in .appdata

Nothing with .appdata

The following are in my HyperStake folder with most obviously not it but included for completeness.

Me>AppData>Roaming>HyperStake

database
themes
.lock
blk0001.dat
blkindex.dat
db
debug
HyperStake-qt
peers.dat
wallet.dat
hero member
Activity: 658
Merit: 503
Monero Core Team
I recommend that everyone make a backup of their data directory now. This way if you were to miss the fork and couldnt get the wallet to auto reorganize, then you could start from the backup.

Would you please tell this idiot which of the 10 things in my HyperStake folder is the data directory as nothing is labeled with that name.  Maybe the database?

Windows 8.1

While I'm at it, I backed up my wallet back in October.  Is this something I should do on a regular basis?
The folder in .appdata
legendary
Activity: 1624
Merit: 1008
I recommend that everyone make a backup of their data directory now. This way if you were to miss the fork and couldnt get the wallet to auto reorganize, then you could start from the backup.

Would you please tell this idiot which of the 10 things in my HyperStake folder is the data directory as nothing is labeled with that name.  Maybe the database?

Windows 8.1

While I'm at it, I backed up my wallet back in October.  Is this something I should do on a regular basis?
sr. member
Activity: 433
Merit: 250
We are the first to program your future (c)
Presstab, could you describe in two words, pls, the bug in PoS you have discovered, for those who's out of topic, in a non-tech way? To let them have an understanding of what is going on behind the scenes.
Jump to: