Pages:
Author

Topic: [ANN] Scripts to predict superblocks JKC,SXC,DMD,ELP,GDC,GIL,LKY,NUG,PHS,SPT,STR - page 2. (Read 3351 times)

legendary
Activity: 1176
Merit: 1255
May Bitcoin be touched by his Noodly Appendage
member
Activity: 98
Merit: 10
All these superblock coins use a "cutout" section of the previous block hash.   The cutout is always a 7 character long section.   This cutout is converted from hex to an integer and used as the random seed.

So that means the range of all possible seeds is 0000000 to fffffff, or in integers: 0 to 268,435,455.    Not really a big number, in the scheme of things.   Pretty easy to pre-compute all the possible superblock cutouts for any coin.   

Time for another test script!   Results so far:  NUG has 2,608,358 possible winning cutouts, and SPT has 26,596 possible winning cutouts.    Run time to generate each list was ~1 hour on a lower power vps.

Why make these lists?  Another tiny research step towards a making an actual real working superblock miner!   





member
Activity: 98
Merit: 10
Well good luck, I hate coins with ridiculous super blocks, so, I hope you kill em all

That may be above my pay grade.    Might be technically possible to write a superblock miner for the Luckycoin clones that depend on 'cut-out' sections of the previous block hash to seed randomness.   It'd be a 2-block miner:   First it would have to find a normal block that includes the proper seed in the cut-out section.  Then it would have to NOT send that block to the network.  Instead it would continue mining for the next block, because it will be a superblock.  Only after the superblock is found, then the miner sends both new blocks to the network.

You'd have to have a lot of hashing power (comparatively for whatever chain your mining) to make it worth your time.   At the low hash rates of some of these coins, that wouldn't be a problem for some folks on this forum.

member
Activity: 98
Merit: 10
I'm a little faklempt.  Talk amongst yourselves.  I'll give you a topic: 

The nonce of the current block would be a better random seed then the hash of the current block.

member
Activity: 98
Merit: 10
updated 1st post with Superblocks 0.2 info.   New:

* Redcoin added to the list of superblock coins
* Gil more clearly denoted as using variable blocks
* Script to predict reward of next Gil block

Here's the test I ran for Gil predictor:
Code:
# GIL test
# Block: 34393 Reward: 12 Hash: ceff231a5473a0827325a2858980b3672308a81c6e0c6db1e5ae05b8f67b7900
# Block: 34392 Reward: 15 Hash: 25bd32e1edbc6bfd6a262b778d221da43b247df97a2f22c25ee87633731e03d8
$ ./gil 25bd32e1edbc6bfd6a262b778d221da43b247df97a2f22c25ee87633731e03d8
prevHash: 25bd32e1edbc6bfd6a262b778d221da43b247df97a2f22c25ee87633731e03d8
cseed: edbc6bf
seed: 249284287
rand: 24274
Assuming nHeight > 3000
Next Block Reward: 12



full member
Activity: 182
Merit: 100
fml
GIL does not have superblocks, 50 is the intended block reward, and I randomized it, to add a bit of dynamic to it. As well, it is completely random, and impossible to predict. There is an equal chance each block, to get 10 coins, as there is to get 50 coins.

Point taken about GIL not having superblocks per se.   And points for having the longest if/else block for rewards I've seen so far!

But the variable reward for the next block seems very predictable.   I'm looking at the code at https://github.com/hydroponica/gil/blob/master/src/main.cpp#L847   
Code:
...
        std::string cseed_str = prevHash.ToString().substr(8,7);
        const char* cseed = cseed_str.c_str();
        long seed = hex2long(cseed);

        int rand = generateMTRandom(seed, 400000);
...

It is seeding the Mersenne Twister with the a number derived from the previous hash.    Thus we can always determine what reward the next block will have.   Already proved this with the luckycoin script.

Hmmm, I guess that is true...But I wouldn't say GIL's reward is worth the effort, specially if you are dealing with a PPLNS pool.

Agreed.  This is more of an academic exercise at the moment  Wink

Well good luck, I hate coins with ridiculous super blocks, so, I hope you kill em all
member
Activity: 98
Merit: 10
GIL does not have superblocks, 50 is the intended block reward, and I randomized it, to add a bit of dynamic to it. As well, it is completely random, and impossible to predict. There is an equal chance each block, to get 10 coins, as there is to get 50 coins.

Point taken about GIL not having superblocks per se.   And points for having the longest if/else block for rewards I've seen so far!

But the variable reward for the next block seems very predictable.   I'm looking at the code at https://github.com/hydroponica/gil/blob/master/src/main.cpp#L847   
Code:
...
        std::string cseed_str = prevHash.ToString().substr(8,7);
        const char* cseed = cseed_str.c_str();
        long seed = hex2long(cseed);

        int rand = generateMTRandom(seed, 400000);
...

It is seeding the Mersenne Twister with the a number derived from the previous hash.    Thus we can always determine what reward the next block will have.   Already proved this with the luckycoin script.

Hmmm, I guess that is true...But I wouldn't say GIL's reward is worth the effort, specially if you are dealing with a PPLNS pool.

Agreed.  This is more of an academic exercise at the moment  Wink
full member
Activity: 182
Merit: 100
fml
GIL does not have superblocks, 50 is the intended block reward, and I randomized it, to add a bit of dynamic to it. As well, it is completely random, and impossible to predict. There is an equal chance each block, to get 10 coins, as there is to get 50 coins.

Point taken about GIL not having superblocks per se.   And points for having the longest if/else block for rewards I've seen so far!

But the variable reward for the next block seems very predictable.   I'm looking at the code at https://github.com/hydroponica/gil/blob/master/src/main.cpp#L847   
Code:
...
        std::string cseed_str = prevHash.ToString().substr(8,7);
        const char* cseed = cseed_str.c_str();
        long seed = hex2long(cseed);

        int rand = generateMTRandom(seed, 400000);
...

It is seeding the Mersenne Twister with the a number derived from the previous hash.    Thus we can always determine what reward the next block will have.   Already proved this with the luckycoin script.

Hmmm, I guess that is true...But I wouldn't say GIL's reward is worth the effort, specially if you are dealing with a PPLNS pool.
member
Activity: 98
Merit: 10
GIL does not have superblocks, 50 is the intended block reward, and I randomized it, to add a bit of dynamic to it. As well, it is completely random, and impossible to predict. There is an equal chance each block, to get 10 coins, as there is to get 50 coins.

Point taken about GIL not having superblocks per se.   And points for having the longest if/else block for rewards I've seen so far!

But the variable reward for the next block seems very predictable.   I'm looking at the code at https://github.com/hydroponica/gil/blob/master/src/main.cpp#L847  
Code:
...
        std::string cseed_str = prevHash.ToString().substr(8,7);
        const char* cseed = cseed_str.c_str();
        long seed = hex2long(cseed);

        int rand = generateMTRandom(seed, 400000);
...

It is seeding the Mersenne Twister with a number derived from the previous hash.    Thus we can always determine what reward the next block will have.   Already proved this with the luckycoin script.
full member
Activity: 182
Merit: 100
fml
GIL does not have superblocks, 50 is the intended block reward, and I randomized it, to add a bit of dynamic to it. As well, it is completely random, and impossible to predict. There is an equal chance each block, to get 10 coins, as there is to get 50 coins.
member
Activity: 98
Merit: 10
And what do you intend to do with this info,  solo mine or join a pool for a few mins?

Pool owners should audit superblock payouts and only pay regular miners.

My intentions?   The same as every night, dear fellow, try to take over the world!

But seriously, are not most pools these days using reward systems that are hop-proof?   That would negate any extra reward a superblock-hopping miner would hope to get.

Solo mining is different, but you'd still have to find the block first.
hero member
Activity: 966
Merit: 526
🐺Dogs for President🐺
And what do you intend to do with this info,  solo mine or join a pool for a few mins?

Pool owners should audit superblock payouts and only pay regular miners.
member
Activity: 98
Merit: 10
member
Activity: 98
Merit: 10
Many altcoins now include superblocks or variable reward blocks.  For some coins (JKC, SXC) it is possible to determine the reward for all possible blocks.   For other coins (CDC, DMD, ELP, GDC, GIL, GRW, LKY, NUG, PHS, RED, SPT, STR) it is only possible to determine the reward of the next block.

Script repository:

https://github.com/superblocks/superblocks

readme:
Quote
Superblocks - Version 0.4.2
===========================

A collection of programs to determine the Next Block Reward for
cryptocurrencies with superblocks and/or variable reward blocks.

Discussions: https://bitcointalksearch.org/topic/ann-scripts-to-predict-superblocks-jkcsxcdmdelpgdcgillkynugphssptstr-264740

Files:

* README.md - This file!
* TODO - To do list for Superblocks project

* makefile - Makefile to create all these fun little programs

* test-next.sh - Test script to test these fun little programs

* superblocks.cpp - main controller for Get Next Block Reward
* superblocks.hpp - includes and Superblocks class
* utils.cpp - Mersenne Twister random, hex2long

* next-elp.cpp - Get Next Block Reward for [ELP] Elephantcoin
* next-gil.cpp - Get Next Block Reward for [GIL] Gil
* next-lky.cpp - Get Next Block Reward for [LKY] Luckycoin
* next-nug.cpp - Get Next Block Reward for [NUG] Nuggets
* next-spt.cpp - Get Next Block Reward for [SPT] Spots

* list-jkc.cpp - Generate list of all superblocks for [JKC] Junkcoin
* list-sxc.cpp - Generate list of all superblocks for [SXC] Sexcoin
* rewardlists/rewardlist.jkc.txt - List of JKC superblocks up to block 100,000
* rewardlists/rewardlist.sxc.txt - List of SXC superblocks up to block 100,000

* precom-nug.cpp - Precompute lucky hash cut outs for [NUG] Nuggets
* precom-spt.cpp - Precompute lucky hash cut outs for [SPT] Spots


Coins
=====

Superblock Coins that seed with Block Height:
* JNK - Junkcoin - https://github.com/Hartland/JKC
* SXC - Sexcoin - https://github.com/sexcoin-project/sexcoin

Superblock Coins that seed with the Previous Block Hash:
* CDC - Cloudcoin - (no repo)
* DMD - DiamondCoin - https://github.com/diamondcoinproject/diamondcoin
* ELP - ElephantCoin - https://github.com/elephantcoin/elephantcoin
* GDC - Grandcoin - https://github.com/grandcoin/grandcoin
* GRW - Growthcoin - https://github.com/growthcoinproject/growthcoin
* LKY - Luckycoin - https://github.com/LuckyCoinProject/Luckycoin
* NUG - Nuggets - https://bitbucket.org/mytwobits/nuggets
* PHS - Philosopherstone - https://github.com/philosopherstonecoin/philosopherstone
* RED - Redcoin - https://github.com/redcoinproject/redcoin/
* SPT - Spots - https://github.com/spots-project/spots
* STR - Starcoin - https://github.com/starcoinproject/starcoin

Variable Reward Coins that seed with the Previous Block Hash:
* GIL - Gil (variable) - https://github.com/hydroponica/gil 

Coins that seed with Current Block Hash, or other methods:
* ?

Donate
======

Donate? More Code? Donate! More Fun!

* BTC: 16SUC5BXqRrLJc4X8FY8DA1hRyMexDvjfZ
* LTC: LQfRTHVMv66PZQkgJPXRVB5TeBiw52eKtZ
* NMC: N21qPigWkowtq9K2Q4rhRgAcACkhvgvdRw
* CDC: BxZkn1EK1JMzPJprnaXjJYMwRbK86gPeeG
* DMD: dJrkor1TjfZBuccKL1WorSWW5NYYucYQkA
* ELP: e7Xxn4c3A2UwYUtVNrBSph45LP4SLCSf1w
* GDC: g8Dyhc6UhvoKdeavVwr3FKR1UuM9tm4cfW
* GIL: 78WWxherV8oUa79pVYXuV36VsYDobxJTU7
* GRW: GPHPcCWUpHTdP5Mp4CCEdvMbM99VzBvNe6
* JNK: 7Xr7wox9CKGMPYHuWxsDyANHW3UkMgViUm
* LKY: L1KpUBC5CudWjycbGyC713og1gTzP4o9qi
* NUG: NRMSNpyoTzQmeaT7RVC1uoSPni1ebEV99m
* PHS: 9YY8sMSakDajUhzLe4XpPnjDeZmTt5iXMV
* RED: Re4GFhN79S7nC3ZocqrZnocgpk5CJ5nf3E
* SPT: MDLdRW5wLT29CH2rMEC4TRd2uCEpScjNZE
* STR: sPgsGeSYaymrXnVMBhAxpq3372ZZriJ6Gs
* SXC: S3PsEofPrcaf1UhteGBtGvtUTFL93CEYqm
* Hash160: 3BA9B9CCDFF4B1CC65AB2E9D095A8C6EB9E1E09F


Open Source
===========

Copyright (c) 2013 Superblock Developers

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Pages:
Jump to: