Gulden.com - PoW / Witness Hybrid - SIGMA Mining Algo
Gulden is a collaboration between experienced developers and a supportive community. Together they are working on a user-friendly currency with advanced technology and a focus on security. This makes Gulden accessible for everyone. Send Gulden to each other, transfer it to any IBAN account, pay at Gulden Merchants and receive interest. Gulden functions without an account, all you need is the Gulden app.
More information:
Gulden.comPoW² - PoW / Witness Hybrid
The miner needs a Witness to verify the block before it becomes valid. Witnesses can only verify blocks that play according to the rules, so a miner has to share a block immediately to avoid losing money. This prevents miners from misbehaving.
A Witness is anonymous and is selected at random.
A Witness is a Gulden user that has locked his or her Gulden (min. 5000 Gulden) for a certain period of time (min. 1 Month) and receives interest from the system itself.
SIGMA - Semi Iterated Global Memory Argon
The high level functioning of SIGMA is as follows from a mining perspective:
1. A miner assembles a valid block header.
2. The full 32 bit nonce of the header is set to zero.
3. Using repeated expensive hashing of the header, a large quantity of memory is filled up in smaller chunks based on the largest memory size we are willing to tolerate for an individual hash.
4. The nonce is now treated as two separate halves that together total 32 bits, the ‘pre-nonce’ and the ’post-nonce’.
5. The miner alters the pre-nonce, and performs an expensive hash on the modified header.
6. The expensive hash from 5 is taken as the seed for a PRNG (Pseudo Random Number Generator) from which the miner sequentially generates 2^post-nonce-size sets of N random numbers. (65536 if post-nonce is 16 bits)
7. As each set of N numbers is generated the miner sets the post-nonce to the current index and uses the set values as an index to a chunk of the global memory (which we treat as the same number of chunks as sets for this purpose).
8. For each N in the set a chunk of global memory is hashed (along with the expensive hash and the modified header) using one of a selection of fast hash algorithms (also determined by the PRNG) and compared against the difficulty target.
9. If a set of N values is found for which all the resulting fast hashes are lower than the difficulty target then a valid block has been found.
10. The miner repeats 5–8 until a valid block is found
11. If the miner exhausts the pre-nonce without success he updates the block data and starts again from step 1.
More about SIGMA:
medium.com/@Gulden/an-introduction-to-sigma-the-new-cpu-friendly-algorithm-for-gulden-5cee3a2ad62dWhitepaper:
Github.com/Gulden/gulden-official/raw/master/technical_documentation/Gulden_PoW2.pdfFollow development:
github.com/Gulden/gulden-official/compare/master@%7B12month%7D...2.2_developmentTechnical Specifications:
dev.gulden.com