Author

Topic: NA - page 320. (Read 893613 times)

sr. member
Activity: 672
Merit: 250
December 28, 2014, 05:41:46 PM
I have had 3 hours of sleep in the past 48 hours and driven over 1000klms delivering produce to the markets... so this post may be insulting and will be blunt... I ask for your consideration and understanding before replying -

1. GJ - his work on the simulator and 'ultimate diff algo' is absolutely of vital importance and should continue. Sadly, the tyranny of time and distance is preventing me from working closely with GJ.

2. - Digishield aka GuldenShield - this implementation should always be looked at as a stop gap to allow GJ the time and breathing space to perfect GuldenShield V2.

3. - I know how a network and blockchain works intimately, I have spent over 12 months as miner studying and testing networks and exploits. I have the knowledge and the resources to test any diff algo at a level usually referred to as brute force.

4. - the response to my radical proposal proves that most of you have not been paying attention to my posts for the past few months. There is huge disparity between the intended use of NLG and the technical specifications of the network. NLG is a blatant copy and paste of LTC, look at the codebase, with the change to single block retargeting.

5. - the strength of NLG lies in the community, it is without peer. The community is why I support NLG completely and I am even bothering to type this post. But NLG could be so much more if we matched the technical specs of the coin to the community vision.

6. - why did I make a radical proposal -
  • NLG is maturing into the coin for micro-transactions(that is wallet to wallet, small, daily use currency)
  • reducing the block time to 75sec cuts transaction times by greater than 50%, speeding up transactions
  • reducing the block reward to 500NLG maintains the current number of NLG minted per 24hrs
  • increases the number of diff increments by 100% per 24hrs, from 576 to 1152
  • reduces the number of blocks a high-hash-rate attacking miner/multipool can mint by 80%
  • these changes support the community vision of NLG becoming a daily use currency
  • the only down side of this proposal is that the block chain storage requirement would double, but still be less than most alt-coins

7. - NLG has my 100% support, hash-rate and vision.

8. - I am completely opposed to changing from Scrypt, halving miners rewards over the 24hrs or long-term, or any manipulation attempts to increase the value of NLG by change coin variables. What I am proposing may change the value of NLG, I could care less, but the changes will make NLG a much better coin for the community vision of NLG becoming a daily use currency.

9. - I am content with only changing the diff algo if that is the community decision. The radical proposal is a simple change of a few numbers in a few lines of code and would also make GJ job easier with the diff algo easier. I spoken to Fuse about the variables needed to Digishield if the community want to do something radical and implement my proposal, he can explain

It is time for NLG to take the next steps in becoming the premier alt-coin.
RJF
hero member
Activity: 616
Merit: 500
Online since '89...
December 28, 2014, 04:22:56 PM
ny2, it is not about me. And I did not buy the equipment you mention.
I have no personal gain motivation for changing the algo to M7M. I think it is the best solution for the problem that has been dragging on for months now.
The M7M algo has proven its value in fair mining and keeping out mining farms and multipools taking over.
Moreover, XMG dev Joe who implemented M7M very succesfully already offered to help.
So it seems like a good solution to the problem to me.



You don't just change from GPU/ASIC based mining to CPU mining after 9 months of mining.  I have a hard time believing you don't have a reason for suggesting it other than the fact that it would eliminate the MPs.  But you forget that it will eliminate miners in general.

What about alienating the already established mining population?  Dedicated miners who have held the chain together for months now.  Are you ready to tell them that they have to abandon their gear and adapt to a completely different way of mining?

It's nonsensical at best.  I said it when you first recommended it, and I'm saying it again.

-Fuse

Agreed. lets keep our sites on fixing the current problem. Changing the entire landscape at the same time is problematic at best.
legendary
Activity: 980
Merit: 1000
December 28, 2014, 04:08:16 PM
I don't think we should tamper with block times, unless we really absolutely entirely have no other choice. We're talking about retargeting, an algorithm can be developed for that. If Digishield modded can give us that breathing room to perfect the NLG-algo. Let's do it.

Scrypt doesn't have anything to do with the problems, it was KGW and now DGW3 - we done fucked up, but we can fix it. Remember that part. We can fix it and are fixing it together. But also remember. If a modded Digishield does not fix the issue at hand (and this is an if, don't attack me with false claims that I'm against it, I'm simply lowering expectations). We have no right to complain about it afterwards. We will just have to strap tight and wait for the proper algorithm to be developed, tested, tweaked and implemented.
RJF
hero member
Activity: 616
Merit: 500
Online since '89...
December 28, 2014, 04:06:53 PM
Please, don't touch the reward and the block time. That's something you do with scam coins, not guldencoin (and are, for me, in a way important determinants for trust in this coin).

I have to agree with BioMike, that's not the problem and should not be changed at this time. Lets solve the problem before we change the equation...
sr. member
Activity: 322
Merit: 250
December 28, 2014, 04:04:03 PM
I will be happy to see a Digishield implementation and the coin can move forward!
RJF
hero member
Activity: 616
Merit: 500
Online since '89...
December 28, 2014, 03:59:19 PM
Just a real life metaphor from me....

My best friend and I bought a boat 10 years ago. It needed finishing on the interior. I am a hands on guy (measure once, cut many times), the opposite of my friend who likes to make models and lists endlessly before he actually starts to do anything. Needless to say this created some challenges.

One weekend our wives decided it was time to end discussions and encouraged us to start doing the job. I decided to go along with the ideas we came up with together and drove by the stores to pick up the materials and started on the job. My friend started preparing a list and spend the entire weekend finding out where to best buy the materials.

On Sunday he arrived at the shipyard with the list and found me with a beer on the boat. It was finished, almost exactly the way he described on his list....

I don't want to say here this is the best way to go, but it might help you to understand why I'm with Fuse's last remarks...

Nice example, i'm with Fuse's choice too

Same here...
legendary
Activity: 1582
Merit: 1002
HODL for life.
December 28, 2014, 03:57:11 PM
My opinion: go with DIGI as 'short term' solution, if possible before the end of the year (?), and keep our eyes open for new developments in the algorithm space, including GJ's simulator.

Only thing I want to have explained before I give my vote on DIGI is; why did it go wrong with DGW3?
Didn't we test it as much as we did now with DIGI? Or were the testnet results as promising as the DIGI ones? In that case.. well we would seriously need to reconsider the DIGI choice, I guess..

Fuse, or anyone else, if you could clarify this last issue for me, thanks  Smiley

Icebear

I can't speak to the testing done on DGW3.  I don't know what happened with DGW3.  Right off the bat, we experienced some shakiness.  I remember the posts about waiting to give it time to level out so that the swings weren't so dramatic.  But the swings stayed pretty dramatic.  My only guess is that the target timespan vs actual timespan is causing a more exaggerated swing in difficulty with the longer block time.  Kilo proposed this to me in Criptoe chat, and it's why we brought up shorter block times.  It's my only thought as to why it didn't work.

-Fuse
legendary
Activity: 980
Merit: 1000
December 28, 2014, 03:52:57 PM
Just to let everyone know that I am also voting for a modified Digishield tomorrow. Get it done and if that works, we're sound for the time being. Gives us all room to breathe and continue to enhance and advance with Guldencoin.

Also, changing Scrypt is stupid. That is not even the issue here. Miners are very important, but it has to be fair to all miners. That's what we are trying to fix here. Also, BioMike is working on creating an easy miner that makes CPU mining very easy. So you have best of both worlds - https://forum.guldencoin.com/index.php?topic=656.0
legendary
Activity: 1582
Merit: 1002
HODL for life.
December 28, 2014, 03:46:28 PM
It will not eliminate miners, it will increase miners. CPU mining is much more accessible than scrypt (GPU) for the average citizen.
NLG mining population will grow more rapidly.
Current miners who gathered NLG are only gaining from such a change, as the value of Guldencoin will more likely increase, so their already mined coins increase in value.
Changing an algo does not mean your coins are lost or devaluated.

You will undoubtedly lose miners.  I for one wouldn't CPU mine.  I did it once with YAC and I hated it.  The stress it put on my computer was horrible.  Imagine the person who doesn't know any better and melts their Macbook pro trying to CPU mine while they're asleep.  No bueno.

You assume that we are going to gain miners because everyone has a CPU.  That's like saying if you have a car you can race in the Grand Prix.  The typical non-experienced miner is not going to CPU mine.  They will pay $20 to buy cloud miners though.  Clever proves that with it's available hashrate.

-Fuse
sr. member
Activity: 246
Merit: 250
December 28, 2014, 03:42:30 PM
It will not eliminate miners

You'll dump the dedicated miners who put a lot of money in to fight against Clevermining. Without them Guldencoin was already destroyed by clever.
hero member
Activity: 886
Merit: 504
December 28, 2014, 03:34:26 PM
It will not eliminate miners, it will increase miners. CPU mining is much more accessible than scrypt (GPU) for the average citizen.
NLG mining population will grow more rapidly.
Current miners who gathered NLG are only gaining from such a change, as the value of Guldencoin will more likely increase, so their already mined coins increase in value.
Changing an algo does not mean your coins are lost or devaluated.
legendary
Activity: 1582
Merit: 1002
HODL for life.
December 28, 2014, 03:28:51 PM
ny2, it is not about me. And I did not buy the equipment you mention.
I have no personal gain motivation for changing the algo to M7M. I think it is the best solution for the problem that has been dragging on for months now.
The M7M algo has proven its value in fair mining and keeping out mining farms and multipools taking over.
Moreover, XMG dev Joe who implemented M7M very succesfully already offered to help.
So it seems like a good solution to the problem to me.



You don't just change from GPU/ASIC based mining to CPU mining after 9 months of mining.  I have a hard time believing you don't have a reason for suggesting it other than the fact that it would eliminate the MPs.  But you forget that it will eliminate miners in general.

What about alienating the already established mining population?  Dedicated miners who have held the chain together for months now.  Are you ready to tell them that they have to abandon their gear and adapt to a completely different way of mining?

It's nonsensical at best.  I said it when you first recommended it, and I'm saying it again.

-Fuse
legendary
Activity: 952
Merit: 1000
December 28, 2014, 03:28:00 PM
After what I read in previous posts, I think it is good to make a change short term to the adjusted Digi that has been tested by Fuse. Unless the GJ can say the simulator is finished within a certain amount of time (say 2 weeks or so) and DGW3 can be tested with big waves and parameter changes. But I think it will take longer to complete the simulator? GJ, can you give an indication?

Also GJ can work further on the simulator if a short term change is implemented. For the future new algo after simulations with different algo's. Even if that means go back to for example DGW3 again later with best simulated parameters with big waves and small waves, if that means the best.



sr. member
Activity: 880
Merit: 251
Think differently
December 28, 2014, 03:26:37 PM
ny2, it is not about me. And I did not buy the equipment you mention.
I have no personal gain motivation for changing the algo to M7M. I think it is the best solution for the problem that has been dragging on for months now.
The M7M algo has proven its value in fair mining and keeping out mining farms and multipools taking over.
Moreover, XMG dev Joe who implemented M7M very succesfully already offered to help.
So it seems like a good solution to the problem to me.



It might be a solution to the CM problem, but i think we could better stick with scrypt because there's nothing wrong it and it would be weird to go to cpu mining.
hero member
Activity: 886
Merit: 504
December 28, 2014, 03:17:54 PM
ny2, it is not about me. And I did not buy the equipment you mention.
I have no personal gain motivation for changing the algo to M7M. I think it is the best solution to the problem that has been dragging on for months now.
The M7M algo has proven its value in fair mining and keeping out mining farms and preventing multipools like clever from taking over.
Moreover, XMG dev Joe who implemented M7M very succesfully already offered to help.
So it seems like a good solution to the problem to me.

legendary
Activity: 1582
Merit: 1002
HODL for life.
December 28, 2014, 03:07:09 PM
Could you please add the voting option "Change to M7M cpu-mining algo" too?

Scrypt is not under discussion. It isn't broken, so why change it?

Exactly this ^

Absolutely no need to change from scrypt.  Doing so would alienate the majority of dedicated miners.  We can't make a change like this because you made the mistake of buying rackmount blade servers instead of ASICs.

-Fuse
hero member
Activity: 886
Merit: 504
December 28, 2014, 03:03:55 PM
It ensures fair mining and kicks out botnets and mining farms. I believe that is the whole clevermining issue here.
legendary
Activity: 1658
Merit: 1001
December 28, 2014, 03:02:25 PM
Could you please add the voting option "Change to M7M cpu-mining algo" too?

Scrypt is not under discussion. It isn't broken, so why change it?
hero member
Activity: 886
Merit: 504
December 28, 2014, 02:54:22 PM
Could you please add the voting option "Change to M7M cpu-mining algo" too?
legendary
Activity: 1582
Merit: 1002
HODL for life.
December 28, 2014, 02:38:23 PM
Okay.. And it is increased 25% then? No other changes are made?

The charts I provided were for 20%.  25% is really aggressive, but it works as well.  That is the only real change made besides the retarget time variables.


Forks aren't caused by the diff readjustment algorithm and so they're currently out of scope for the simulator, and are not part of the difficulty re-adjustment problem at all.
The chances of a 1MH miner having three lucky blocks are a lot larger then the chances for a 600GH miner having three lucky blocks.

No, forks aren't caused by the algo, but a fork instantly alters the network hashrate when it splits and then rejoins.  With enough hashrate you can fork anything.  That's something the simulator won't account for that a testnet can.


I totally agree that having more adjustments (smaller block times) will give the diff re-adjustment more opportunities to re-adjust, and so in theory it will work better.. But this is not something the algorithm itself should be aware of. Also, let's not forget that smaller blocktimes introduces a new problem: more chance of chain splits. (network must converge within the blocktime, if it doesn't, a split might occur.. if the split isn't handled well by the network, it becomes permanent and we're stuck with a fork..)

Correction... the algorithm is aware of the percentage of time elapsed between blocks.  That's how DIGI calculates the next difficulty.  Go over 150 seconds, the difficulty shifts down.  Go under, and the difficulty shoots up.  All proportionate to the percentage of time.  Time is a huge factor in our issue here.  One that has been discussed to the point of completely ignoring blocks under a certain time.  By reducing the total block time, you allow for smoother adjustments that happen more often, and DIGI eats that up like roast beast at a Whoville feast.


I know DGW3 doesn't handle the current spikes very well.. But what is this "scaling" factor? And why would Digi handle it well? Is there an example of a coin with Digi that has x30 hashrate increases (e.g.: clevermining) at the same level as Guldencoin currently is?

By scaling, we mean being able to increase in hashrate without issue.  Whether we're at 10GH total network hashrate or 10PH.  However, once we get past a certain point, the event horizon of sorts, you no longer need a readjustment algo like DIGI or DGW3.  You just implement the stock algo and let it ride out until the end.

As far as examples go- any coin, pre-hashlets, that implemented DIGI.  I'm sure I could track down a list, but I know POT for instance did it.  They shot themselves in the foot with a flawed block halving scheme, but their network hashrate increased substantially after their DIGI implementation, and the multipools dropped off almost completely.  There are others that had similar results... just search the forums.


Also, Digishield is not really a 1 to 2 line addition to the base LTC algorithm. Please read https://github.com/digibyte/digibyte/blob/master/src/main.cpp#L1268-L1555
And we don't have 5x hashrate in a day.. we have 30x hashrate in 3 seconds..

The code you highlighted is not what I based our code on.  This is the DIGI function, as it was on our testnet:

Code:
unsigned int static GetNextWorkRequired_DIGI(const CBlockIndex* pindexLast, const CBlockHeader *pblock){

    unsigned int nProofOfWorkLimit = bnProofOfWorkLimit.GetCompact();
    int nHeight = pindexLast->nHeight + 1;

    int64 retargetTimespan = nTargetTimespan;
    int64 retargetSpacing = nTargetSpacing;
    int64 retargetInterval = nInterval;

    retargetInterval = nTargetTimespanNEW / nTargetSpacing;
    retargetTimespan = nTargetTimespanNEW;

    // Genesis block
    if (pindexLast == NULL)
        return nProofOfWorkLimit;

    // Only change once per interval
    if ((pindexLast->nHeight+1) % retargetInterval != 0)
    {
        // Special difficulty rule for testnet:
        if (fTestNet)
        {
            // If the new block's timestamp is more than 2* nTargetSpacing minutes
            // then allow mining of a min-difficulty block.
            if (pblock->nTime > pindexLast->nTime + retargetSpacing*3)
                return nProofOfWorkLimit;
            else
            {
                // Return the last non-special-min-difficulty-rules-block
                const CBlockIndex* pindex = pindexLast;
                while (pindex->pprev && pindex->nHeight % retargetInterval != 0 && pindex->nBits == nProofOfWorkLimit)
                    pindex = pindex->pprev;
                return pindex->nBits;
            }
        }

        return pindexLast->nBits;
    }

    // Dogecoin: This fixes an issue where a 51% attack can change difficulty at will.
    // Go back the full period unless it's the first retarget after genesis. Code courtesy of Art Forz
    int blockstogoback = retargetInterval-1;
    if ((pindexLast->nHeight+1) != retargetInterval)
        blockstogoback = retargetInterval;

    // Go back by what we want to be 14 days worth of blocks
    const CBlockIndex* pindexFirst = pindexLast;
    for (int i = 0; pindexFirst && i < blockstogoback; i++)
        pindexFirst = pindexFirst->pprev;
    assert(pindexFirst);

    // Limit adjustment step
    int64 nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime();
    printf(" nActualTimespan = %"PRI64d" before bounds\n", nActualTimespan);

    CBigNum bnNew;
    bnNew.SetCompact(pindexLast->nBits);

    //DigiShield implementation - thanks to RealSolid & WDC for this code
    // amplitude filter - thanks to daft27 for this code
    nActualTimespan = retargetTimespan + (nActualTimespan - retargetTimespan)/8;
    printf("DIGISHIELD RETARGET\n");
    if (nActualTimespan < (retargetTimespan - (retargetTimespan/4)) ) nActualTimespan = (retargetTimespan - (retargetTimespan/4));
    if (nActualTimespan > (retargetTimespan + (retargetTimespan/2)) ) nActualTimespan = (retargetTimespan + (retargetTimespan/2));
    // Retarget

    bnNew *= nActualTimespan;
    bnNew /= retargetTimespan;

    if (bnNew > bnProofOfWorkLimit)
        bnNew = bnProofOfWorkLimit;

    /// debug print
    printf("GetNextWorkRequired RETARGET\n");
    printf("nTargetTimespan = %"PRI64d" nActualTimespan = %"PRI64d"\n" , retargetTimespan, nActualTimespan);
    printf("Before: %08x %s\n", pindexLast->nBits, CBigNum().SetCompact(pindexLast->nBits).getuint256().ToString().c_str());
    printf("After: %08x %s\n", bnNew.GetCompact(), bnNew.getuint256().ToString().c_str());

    return bnNew.GetCompact();


}

You need this:

Code:
static const int64 nTargetTimespan = 3.5 * 24 * 60 * 60; // Guldencoin: 3.5 days
static const int64 nTargetTimespanNEW = 2.5 * 60;
static const int64 nTargetSpacing = 2.5 * 60; // Guldencoin: 2.5 minutes
static const int64 nInterval = nTargetTimespan / nTargetSpacing;

And you change this to set the max change:

Code:
bnResult = (bnResult * 120) / 100;

That's for 20%.  Replace the 120 with 125 for 25%.

It's pretty straight forward.  Compared to the original algo for LTC, and the GetNextWorkRequired_original function, you can see why I would say it's only 1-2 lines of additional code.

With the current network stability (which isn't very high) I wouldn't recommend lower blocktimes.. Furthermore, it simply doesn't work because although lower blocktimes means more blocks and thus more re-adjustments.. it's the same calculations being done... say we would half the block time to 75 seconds, that means the difficulty would also be halved so we would get twice the number of blocks within the same amount of time. The income/costs for dedicated miners wouldn't change, they would just get twice the blocks with each half the reward per block. This also applies for clever, they would have to spend the same amount of hashingpower to get twice the number of blocks at half the reward per block.. so in the end it's just the same thing.. The only thing that changes is that if the dgw3 or digi impact isn't halved too: it will cause twice the size in blocktime spikes (both up and down).. So you'd have to half the dgw3/digi impact.. which means that in the end, you're left with 0 effect (apart from a network that's more vulnerable to time warp attacks and chain splits). The faster reaction you're talking about would work if the hashrate changes over a number of blocks' time. But with a jump pool, it's instantanious. If I'm missing something, please explain.

DIGI accounts for time, so it scales with the block time.  The difficulty doesn't change because you halve the block time.  DIGI says this is what the time should be, and what percentage of that time was the last block.  If you go over the time, the difficulty goes down, if you go under the difficulty goes up.  In our current code, you would be correct with this.  I'm not talking about our current code though.  I'm talking about the code that will fix our situation.  Halving the block time isn't a necessity.  Keep it where it is and use a higher max adjustment.  The selling point here is that with a shorter block time, you can reduce the max change, and get more adjustments per period of time.  Again though, not a necessity.  Just an added step to making things better.


The  fact that digi doesn't take into account the false lows /does/ sound good.. As that is actually the largest part of the problem we're seeing.

So, I don't really believe in the halved blocktimes, but investigating more into digi seems to be worth the time..
Before christmas I had the idea to write 'GDR': "Guldencoin Difficulty Readjustment". Maybe it's a good approach to take what we've learned so far, including DGW3 and Digi approaches, and work out an algorithm that is better. After all that is how DGW3 and Digi were born too: by applying lessons learned and incremental development.
I would be extremely happy to do this, but not alone. If anyone can provide me with a Digi ported to the simulator that would be great, it's pretty simple, but will take some time.

If the community doesn't want a new algorithm and places it's bet on Digi, then I WILL help with that. I'd be happy to work together with youguys to apply and deploy the software patch. Just as before I will provide compiled binaries for all major platforms and update the seeds and send a network alert. I believe last time that went pretty well, and this time we don't have to do a chain fork.

Please though, understand that we should not do this without being absolutely sure. There are always risks.

Cheers!

Please don't let the port to the simulator hold up the talks.  While I am in agreement that the simulator should be used, I need to know if it is ready to take in to account everything needed for real-life results.  If it isn't ready to simulate every possible variable, then we need to put it aside for these discussions.  If that's not an option, we need to know when additional features will be implemented so we can press forward.

Additionally, the simulator needs to be verified against a chain.  I would seriously suggest creating a post in the development sub-forum here to get it out to the public and let them develop and test it for you.  There is no reason why it shouldn't be made public.  It will strengthen development of the simulator and it will bring publicity to NLG.

I'll reiterate this point though-

You can't predict the future of mining, so you can't future-proof the algorithm.  I've been in crypto for a little over 2 years now, active here for 90% of that time.  Things change dramatically over small timeframes in crypto.  People need to realize that no algorithm or solution will ever be the final answer.  Coins need to adapt to the changes.  It's evolution at a code level.  It you don't adapt and overcome, you can't survive.  But you also can't adapt to something that hasn't happened yet because the world can take the opposite turn, and then you'll be left exactly where we are right now.

Don't be afraid to make future changes.  It's not a sign of weak coin planning, but rather a sign of active adaptation to an ever changing landscape.

-Fuse
Jump to: