Pages:
Author

Topic: [ANN]🌀 Blur Network(BLUR) 🌀 | PoW Cryptonight-Dynamic | CPU/Solo Mining | DPoW - page 5. (Read 41349 times)

jr. member
Activity: 209
Merit: 9
The Blur Network
BLUR has been listed on Altilly with BTC & XQR Pairs!


BTC, XQR Pairs

Trading can begin immediately.  Deposits, withdrawals, and order creation are all confirmed working.
jr. member
Activity: 209
Merit: 9
The Blur Network
BLUR is now listed on txbit.io with BTC, ETH, and XLR Pairs!


BTC, ETH, XLR Pairs

Also, please make sure you are running the latest v0.1.9.5 release, as it includes updates that are necessary to maintain your privacy.
newbie
Activity: 5
Merit: 0
GUI wallet is no longer in use. What should I do?
jr. member
Activity: 209
Merit: 9
The Blur Network
A new release for Blur v0.1.9.1 'Radiant Flux' has been uploaded to github. This update is MANDATORY for all nodes, as it revises the algorithm for CryptoNight Dynamic v2.  The code from v0.1.9 is not compatible with the new v0.1.9.1 network... so an update is required.  Please update as soon as possible.  I will be posting a summary of the algorithm changes here in a moment. CLI Wallet || GUI Wallet
jr. member
Activity: 209
Merit: 9
The Blur Network
Website will be down for 2 hours while we update/improve some things.
jr. member
Activity: 209
Merit: 9
The Blur Network
Repost from Discord:

ANNOUNCEMENT (20 Feb. 2019): GUI for v0.1.9 has been released for Windows, as well as a set of Linux Binaries for the GUI, for purposes of remaining somewhat distribution-agnostic.  Additionally, the snap package on the Ubuntu software store has been upgraded to the latest v0.1.9 for the CLI tools.

Updates are now released for every platform that we officially support, and for every UI and/or package type we offer. The network will fork in roughly 4 days, so be sure to update your nodes prior to block 342,000! This is the last time I’ll announce this here, so I can quit blowing up your notifications :wink:

Should you wish to help us benchmark the new v10 algorithm changes, you can do so by starting the wallet with the --testnet flag to generate a testnet address (these begin with the prefix b8...).  Then, once you have a testnet wallet address, launch the daemon with the startup flags --testnet --offline.  Your daemon will not sync to the testnet, but you may start mining immediately. At block 40, the testnet forks to v10.  After this block has been mined, any point thereafter will be a fairly reliable benchmark.  To start mining simply issue the command start_mining <# of threads>.  Post your results over in #benchmarks if you care to share.

Thanks for updating to support the network.  Here's to a smooth fork!
jr. member
Activity: 209
Merit: 9
The Blur Network
Blur v0.1.9 'Radiant Flux' has been released! Grab binaries for all platforms on our releases page on GitHub.

You must update by block 342,000 if you wish to remain on the main chain.  At the fork height, anyone mining on v0.1.8.x will cease to be relevant to the network.


This update brings with it the improvement and upgrade of our PoW algorithm to CryptoNight-Dynamic v2.  These changes provide for greater resistance against pools, as well as GPU.  The calculation for dynamic iterations now uses the block difficulty as an arbitrary number in the calculation.  Previously, PoW hash was only checked against the relative difficulty to ensure block hash fell within the required threshold.  The same check is still performed; however, using a different value as the block difficulty will now result in a different number of iterations, thereby breaking of consensus, if not mining at the same difficulty as the larger network.  Additionally, the window for dynamic iterations has been further increased from 4096 to 32868.
jr. member
Activity: 252
Merit: 4
jr. member
Activity: 209
Merit: 9
The Blur Network
Update:  The changes for v10 hardfork will be done this week.  After those are pushed to GitHub, I'll be comfortable finalizing the Lightpaper and releasing that as well, as the v10 hardfork changes will then be set in stone.
jr. member
Activity: 209
Merit: 9
The Blur Network
Please update your software if you have not yet!
jr. member
Activity: 209
Merit: 9
The Blur Network
The latest release (v0.1.8.3) has been uploaded to GitHub!  You can download binaries here , as well as read the changelog, which details all changes that have occurred since the previous release. This update is mandatory for all nodes, and patches two very important vulnerabilities, as well as giving miners a hashrate boost across the board.  Please upgrade as soon as possible.
jr. member
Activity: 209
Merit: 9
The Blur Network
The knee jerk adoption of a Contributor Covenant derived COC is the most disappointing thing to have happened to this project.

Do you dislike respecting other people and their opinions? We believe that good ideas come in all shapes and sizes. Except those that marginalize without basis Smiley

We also believe you can like chocolate, strawberry, AND vanilla!
newbie
Activity: 3
Merit: 0
The knee jerk adoption of a Contributor Covenant derived COC is the most disappointing thing to have happened to this project.
jr. member
Activity: 209
Merit: 9
The Blur Network
jr. member
Activity: 209
Merit: 9
The Blur Network
CNAv1 is known to be vulnerable to pool-creation with some simple mods. That being the case, does Blur intend to fight against pools or to embrace them and keep the GPU resistance?


Pool resistance was not the objective with the algorithm changes... more so, a welcomed byproduct of them.  Pooled hashing is something that will become a part of the project further down the line, with a limit on poolsize based on % of net hash.  This achieves the goal of decentralization without exposing miners to the unbalanced "luck" of solving for the correct block hash ... Although, luck and randomness are *technically* more fair.

As someone who is not intimately familiar with how the cn-Adaptive algo works, would you be able to give a simplified explanation of how the algo manages to be GPU and pool resistant?

Definitely.  It's really not all that complex, to be honest. Explaining it can be, though.   NERVA's implementation currently adds a few more layers for randomness.  We'll be adding some of that on our own in the next network update which should be this week sometime.  Essentially, the algorithm runs a base number of iterations in the cryptonote algorithm... then dynamically adds an additional number of iterations (which differs each block) to that base number.  That dynamic portion is based on the previous block's height.  The way it is written, the iterations in a block cycles up and then back down to make a pattern of difficulty that looks like a sawtooth.  



if you notice hashrate gradually increasing, before dropping sharply, and then repeating the cycle... this is why.

There are two files that hold the algorithm's nuts and bolts, as they are present in BLUR's algorithm currently. These two files that we are going to look at, are located at the following locations in the source code:

Code:
blur/src/crypto/slow-hash.c
and
Code:
blur/src/cryptonote_basic/cryptonote_format_utils.cpp

The slow-hash.c file has a few pieces of information that are important and differentiate CN-Adaptive from other variants of cryptonight.  The first of which is on line 46:
Code:
#define MEMORY         (1 << 20) // 1MB scratchpad

As annotated, this parameter defines the scratchpad size for the algorithm's rounds of iterations. A 1MB scratchpad is also seen in Cryptonight-Light.  This size allows for less iterations in a round, and fits within the cache of lower end CPUs, enabling older hardware to still mine somewhat effectively.  

Now within the cryptonight algorithm, there is an added parameter in CN-Adaptive, for iterations.  This parameter defined as iters, and you can find the implementation on Line 570 of the same slow-hash.c file:

Code:
void cn_slow_hash(const void *data, size_t length, char *hash, int variant, int prehashed, size_t iters)

As well as lines 645-662:

Code:
    if(useAes)
    {
        for(i = 0; i < iters; i++)
        {
            pre_aes();
            _c = _mm_aesenc_si128(_c, _a);
            post_aes();
        }
    }
    else
    {
        for(i = 0; i < iters; i++)
        {
            pre_aes();
            aesb_single_round((uint8_t *) &_c, (uint8_t *) &_c, (uint8_t *) &_a);
            post_aes();
        }
    }

This variable "iters" calls out to a function in the second file I mentioned, to determine its value in the block being mined.   So head over to blur/src/cryptonote_basic/cryptonote_format_utils.cpp if you're following along.  

Within that file, on lines 891-901, you'll find the calculations for the number of iterations.  Before elaborating on the code, I would like to note that in its current state this code could be optimized with a GPU.  However, you  would still need a CPU present in some form, to direct the GPUs hashpower.  BLUR's goal is being too resource intensive for GPU/ASIC miners to pursue.  In its current state, and at the current value of BLUR... this has sufficed.  However, we are hardforking to a new implementation shortly, for the purpose of maintaining that as the project grows.

With that said, on lines 891-901 of cryptonote_format_utils.cpp we have:

Code:
  //---------------------------------------------------------------
  bool get_block_longhash(const block& b, crypto::hash& res, uint64_t height)
  {
    blobdata bd = get_block_hashing_blob(b);
    int cn_variant = b.major_version >= 5 ? 1 : 0;
int cn_iters = b.major_version >= 6 ? ( b.major_version >= 7 ? 0x40000 : 0x20000 ) : 0x80000;
    cn_iters += ((height + 1) % 1024);
    crypto::cn_slow_hash(bd.data(), bd.size(), res, cn_variant, cn_iters);
    return true;
  }
  //---------------------------------------------------------------

The lines here that we are primarily looking at, are the ones that declare and calculate the variable "cn_iters". Starting with the first mention (where we calculate the base number of iterations):

Code:
int cn_iters = b.major_version >= 6 ? ( b.major_version >= 7 ? 0x40000 : 0x20000 ) : 0x80000;

The code above breaks down into two parts...

Code:
 b.major_version >= 6 ? (x) : (0x80000)
and
Code:
 b.major_version >= 7 ? (0x40000) : (0x20000)

The "x" variable in the first part, is simply swapped out for the entire "second part" in the actual code.  For the purposes of explaining, its easier to break it apart this way.  The "?" symbol in C++ is what's known as a ternary operator. It essentially serves as an "if" statement directed by the ">=" operators that come before it, in this instance.

So it means to say "If the block version number (hardfork version) is greater-than-or-equal-to 6, define the iterations as the value on the left-hand side of the colon.  If it is not, define as 0x80000 or the value following the colon.  

The number 0x80000 is in hexidecimal, and translates to the human-readable number (in decimal format) 524288, for our base # of iterations.  Assuming we are above block version 5... we then move to the next conditional statement
Code:
 b.major_version >= 7 ? (0x40000) : (0x20000)
.  

We use the same logic here, to say if we are on block version 7 or higher, we use 0x40000 or 262144 for the base amount of iterations.  If we are not (i.e. less than 7 but greater than 5), we use 0x20000 or 131072 for the base number.  Now, ONTO THE DYNAMIC PART.  That's much simpler:

So far we have iterations (for current hardfork) = 262144 + (dynamic portion). The dynamic part is found on line #897, directly after the calculation for the base number:

Code:
cn_iters =+ ((height +1) % 1024)

This means to say: "Add to the base number of iterations, the calculated value for the function (current block height) Modulo (1024).  A modulo just means divide the height by 1024, and look at your remainder.  That remainder is actually then the solution to the equation.  So, (1025) % 1024 would equal 1. Just the same, (2047) % 1024 would equal 1023, because 2047 = 1024 + 1023...


jr. member
Activity: 209
Merit: 9
The Blur Network
In response to recent events and the way they were handled, Blur Network now enforces a code of Conduct, effective 01/04/2018: https://github.com/blur-network/blur/blob/master/CODE_OF_CONDUCT.md. Please read and abide by the code. It will be enforced in all project spaces.
newbie
Activity: 10
Merit: 0
So this doesn't get lost:

Quote
michael-herwig | 3 points | 1 hour ago
For everyone looking into this thread, asking themselves if there is anything reasonable on these claims I will shortly state my understanding.

1: Nerva was GPU mineable in Adaptive v1 until v3. Over time it grew more and more GPU mineable, suggesting that it was designed that way to look like actual growth, possibly.
The claim is that the number of iterations will not change drastically on given heights because of the modulus operation. Thus the number of iterations will always be 0x40000+[1..63]. The author claims that a much faster, or even GPU, implementation could be made for each different value which would yield a drastically performance boost.

This is incorrect. The suggested solution of loop unrolling is not applicable. Compilers have a built-in limit of how many loops can be unrolled at max. For GCC8.2 this is 16. I have coded a simple example here, simply increase the iterations by 1 and you will see the assembler implementation switches to jumps.

Regarding the GPU claim, incorrect. The number of iterations is not the hard breaking edge for GPUs. It is the memory consumption/random access and memory critical path. For example, the initial version of CryptoNight has a fixed iteration for all hash computations and that does not make it faster or slower in any way. Please have a look into their specification if you want to read more about the idea.

General Suggestion: If you claim to know performance improvements you better benchmark first. Many C++ programmers tend to think they know how to write the faster code and in the end, it does not matter. There is a great talk about it on youtube you may want to check that out.

2: The typo is returning a value by reference to a function... If we return the wrong type, we get an error. If we do not return an incorrect type, we don't get an error, and the program thinks we have the correct value (when it could have changed between calls)
What do you mean by hacks? Returning by const reference is a performance optimization and it is known to easily introduce errors, that is correct. But what do you want to achieve by 'hacking' it? You will have an invalid version of the hash try to submit it and other daemons will not accept it. The project is open source and everyone can look into these changes. Thus if you want to 'hack' someone you would have to force them to update their versions with your injected one and that's where a real hack starts, in my opinion. You may want to distinguish compilation and runtime more, next time.

3: Nerva claims to "DDoS pool operators" with 4kB of random data, sent with each block. This data is derived using Mersenne Twister. Except that the block size (on their explorer currently) is only 85 bytes.
Incorrect, again. First Nerva queries multiple blocks, second, it is a very common technique to expand more pseudo-random data out of small memory chunks (like kinda every password hashing algorithm does). The Mersenne Twister is a random number generator to help for this regard.

In General
These claims are misleading at least and it looks like you threw them out of nowhere without any researched evidence. In my opinion, it is always fine to do so and ask for feedback if you think something could be wrong but I would encourage you to step a bit back and be more careful with your claims because you may be wrong, like in this case. As a result, stating these claims may hurt your reputation and the reputation of the blockchain you are working on. Finally please read you're COC.
jr. member
Activity: 209
Merit: 9
The Blur Network
Can you the Blur community stop dragging Nerva through the mud when you guys forked and can't make a reliable chain.

Thanks.

https://twitter.com/ICOcountdown/status/1080400519909142528

Responded to this on Twitter. Can you all from Nerva stop commenting on everything Blur so obsessively? Appreciate it.
hero member
Activity: 1008
Merit: 500
Can you the Blur community stop dragging Nerva through the mud when you guys forked and can't make a reliable chain.

Thanks.

https://twitter.com/ICOcountdown/status/1080400519909142528
jr. member
Activity: 209
Merit: 9
The Blur Network
The project on the one hand looks very attractive. On the other hand, there is very little information. I would like to know more details to assess the prospects.


What would you like to know? 

Introduction to our roots: https://whalereports.com/intro-to-blur-network/

Where we are headed: https://whalereports.com/blur-network-fractal-multichain/


Ask some questions on the AMA thread on our Subreddit!
Pages:
Jump to: