Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
April 21, 2013, 03:50:39 AM Last edit: November 01, 2013, 11:16:35 PM by Remember remember the 5th of November Merited by ABCbits (2), BlackHatCoiner (1) |
|
Ok, thread title is a bit misleading, I haven't actually done the genesis block calculation part done. I'd like to also take a minute or two and explain to you that I aren't exactly a good coder, I started doing C in my early days of mining in 2011 and playing with cgminer and nonces and stuff. I refused to read a book on C, so everything I've learned about C is through trial&error, well OK I have not learned much so trial&error is how I get my results. The equivalent of this would be trying to drive a car as if you have 10 years behind the wheel without actually knowing how to. So basically do not expect the best code, I could have done things in there that aren't efficient, or just plain simply wrong and that would be because I don't know how to do them in a different way. The code is here http://pastebin.com/nhuuV7y9, pure C. No binaries for obvious reasons. The code relies on OpenSSL. Since you will need OpenSSL either way, as it is a Bitcoin dependency, I believe it won't be an issue. *Implemented Genesis Block finderCons- Program assumes one input and one output. So trying to create a merkle hash like the one in Freicoin with multiple inputs and outputs is not possible with this program.
- Program at the moment assumes 50 coins, but this can be changed in the code very easily.
- This is probably the most important one. I can re-create the Bitcoin merkle hash with ease, but when I tried to test it with Litecoin's timestamp message, it failed. Something to do with Unicode. I will not lie, my understanding of Unicode and ASCII is even less than my understanding of C. Basically, try to avoid apostrophes,commas and other special characters. Someone more knowledgeable can patch this
Usage program <pubkey> <timestamp> <nBits> Example programname 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef3 8c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" 486604799 Which will output Coinbase: 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f7 2206f6e206272696e6b206f66207365636f6e6420 6261696c6f757420666f722062616e6b73
PubkeyScript: 4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4ce f38c4f35504e51ec112de5c384df7ba0b8d57 8a4c702b6bf11d5fac
Merkle Hash: 3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a Byteswapped: 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b The timestamp needs to be in quotes if it's longer than a word, because it will get treated as separate arguments than a whole string. So yeah, more cons than pros, but if you like what I've done, please drop some reward to the address on my signature
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
chriswen
|
|
April 21, 2013, 03:59:26 AM |
|
Wow, it's been made.
|
|
|
|
scintill
|
|
April 21, 2013, 04:54:22 AM |
|
Interesting, the Litecoin genesis block seems to have a Unicode "smart quote" (fancier apostrophe) encoded in UTF-8. With my console configured for UTF-8 encoding, this seems to work to reproduce the LTC genesis tx: ./genesisgen 040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08 dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9 "NY Times 05/Oct/2011 Steve Jobs, Apple’s Visionary, Dies at 56" 486604799
Coinbase: 04ffff001d0104404e592054696d65732030352f4f63742f32303131205374657665204a6f62732 c204170706c65e280997320566973696f6e6172792c2044696573206174203536
PubkeyScript: 41040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa 08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9ac
Merkle Hash: d9ced4ed1130f7b7faad9be25323ffafa33232a17c3edf6cfd97bee6bafbdd97 Byteswapped: 97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9
(Notice "Apple’s" as opposed to "Apple's") This seems to correspond with the genesis tx at this block explorer. Cool, thanks OP! (Also, this timestsamp may work in bash without terminal settings: "`echo -en NY Times 05/Oct/2011 Steve Jobs, Apple\\\\xE2\\\\x80\\\\x99s Visionary, Dies at 56`")
|
1SCiN5kqkAbxxwesKMsH9GvyWnWP5YK2W | donations
|
|
|
Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
April 21, 2013, 05:07:41 AM |
|
I am glad it works for you. But a lot of users, me included are on Windows.
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
tacotime
Legendary
Offline
Activity: 1484
Merit: 1005
|
|
April 21, 2013, 05:10:42 AM |
|
I am glad it works for you. But a lot of users, me included are on Windows.
http://www.evanjones.ca/unicode-in-c.htmlBut you can also just pass it as binary by converting it to hex reading from a UTF-8 file containing the string...
|
XMR: 44GBHzv6ZyQdJkjqZje6KLZ3xSyN1hBSFAnLP6EAqJtCRVzMzZmeXTC2AHKDS9aEDTRKmo6a6o9r9j86pYfhCWDkKjbtcns
|
|
|
Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
April 21, 2013, 08:04:29 AM |
|
I was able to implement the block hashing part, will clean it up and release later.
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
April 22, 2013, 08:54:33 AM |
|
I have updated the code with block hashing to find a genesis block. If you need to specify custom nonce and unixtime(to re-create a block from some chain), you will have to edit the source. http://pastebin.com/nhuuV7y9
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
js2082
Member
Offline
Activity: 70
Merit: 10
|
|
April 27, 2013, 02:30:10 AM |
|
I tried your program with bitcoin's parameters: $ gg 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f 4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" 486604799
Coinbase: 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63 656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616 e 6b73
PubkeyScript: 4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61de b649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac
Merkle Hash: 3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a Byteswapped: 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b Generating block... 1054499 Hashes/s, Nonce 1279737097 Block found! Hash: 000000000be5c9479ccf0a6a74134940650ca3690488d6a3604ea029b429f778 Nonce: 1279991239 Unix time: 1367026916
Why I don't get the same genesis hash as in the bitcoin program? uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f");
Do I look at the wrong place?
|
|
|
|
scintill
|
|
April 27, 2013, 03:54:54 AM |
|
I tried your program with bitcoin's parameters: $ gg 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f 4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" 486604799 ...
Why I don't get the same genesis hash as in the bitcoin program? uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f");
It looks like you've got a linebreak/space in the first argument. I noticed this in OP's post too, if I double click the first argument it stops highlighting halfway through. If I drag-select the whole thing and paste it somewhere, there's a space. So, make sure you don't have any space between "bc3f" and "4cef".
|
1SCiN5kqkAbxxwesKMsH9GvyWnWP5YK2W | donations
|
|
|
js2082
Member
Offline
Activity: 70
Merit: 10
|
|
April 27, 2013, 06:42:06 AM |
|
I retried, still the same, no space or line-break in between... it's weird why it is not match.
|
|
|
|
Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
April 27, 2013, 06:46:26 AM |
|
I tried your program with bitcoin's parameters: $ gg 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f 4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks" 486604799 ...
Why I don't get the same genesis hash as in the bitcoin program? uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f");
It looks like you've got a linebreak/space in the first argument. I noticed this in OP's post too, if I double click the first argument it stops highlighting halfway through. If I drag-select the whole thing and paste it somewhere, there's a space. So, make sure you don't have any space between "bc3f" and "4cef". It's because the nonce and unixtime are different. For bitcoin, it's unixtime = 1231006505 and nonce = 2083236893 I will have to rework the program a bit and start working with switches for better control and/or parsing the data from a file.
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
js2082
Member
Offline
Activity: 70
Merit: 10
|
|
April 27, 2013, 07:13:41 AM |
|
OK got it. Nice, with these as initial value the genesis block come out immediately: $ gg1 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3 f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f "The Times 03/Jan/200 9 Chancellor on brink of second bailout for banks" 486604799
Coinbase: 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63 656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616 e 6b73
PubkeyScript: 4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61de b649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac
Merkle Hash: 3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a Byteswapped: 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b Generating block...
Block found! Hash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f Nonce: 2083236893 Unix time: 1231006505 Nice program!
|
|
|
|
c4n10
|
|
May 05, 2013, 08:39:14 PM |
|
Little help please: root@vps:~/0pticoin/src# gcc -o genesis_generator genesis_generator.c /tmp/cchWzm3E.o: In function `main': genesis_generator.c:(.text+0x95e): undefined reference to `SHA256' genesis_generator.c:(.text+0x979): undefined reference to `SHA256' genesis_generator.c:(.text+0xb73): undefined reference to `SHA256' genesis_generator.c:(.text+0xb8e): undefined reference to `SHA256' collect2: ld returned 1 exit status Thanks!!!
|
|
|
|
Passion_ltc
|
|
May 05, 2013, 08:52:07 PM |
|
How can I determine the first block as a checkpoint if I can't mine? Or can I mine without checkpoints?
|
|
|
|
cygnusxi
|
|
May 05, 2013, 09:04:31 PM |
|
nice job. Ill need to add a hard drive to my pc to store all the new block chains that will be coming out
|
|
|
|
XertroV
Member
Offline
Activity: 88
Merit: 12
Max Kaye
|
|
June 19, 2013, 06:05:20 AM |
|
Little help please: root@vps:~/0pticoin/src# gcc -o genesis_generator genesis_generator.c /tmp/cchWzm3E.o: In function `main': genesis_generator.c:(.text+0x95e): undefined reference to `SHA256' genesis_generator.c:(.text+0x979): undefined reference to `SHA256' genesis_generator.c:(.text+0xb73): undefined reference to `SHA256' genesis_generator.c:(.text+0xb8e): undefined reference to `SHA256' collect2: ld returned 1 exit status Thanks!!! For future reference, you need to include the libraries in the command: gcc genesis_generator.c -o genesis_generator -lcrypto
|
|
|
|
Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
November 01, 2013, 11:15:58 PM |
|
Bumping this thread for anyone that might want to make MORE sha256 alt coins.
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
int3ractivodular
Sr. Member
Offline
Activity: 280
Merit: 250
TECHNOLOGY, BABY!
|
|
November 02, 2013, 12:39:57 AM |
|
Subbed
|
|
|
|
simbo
|
|
December 10, 2013, 09:13:44 AM |
|
hi, I downloaded(link in 1st post) & compiled under windows(mingw) & try to get the genesis block. Unable to get: Hash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f Nonce: 2083236893 Unix time: 1231006505
Please advise. Thanks.
|
|
|
|
Remember remember the 5th of November (OP)
Legendary
Offline
Activity: 1862
Merit: 1011
Reverse engineer from time to time
|
|
December 10, 2013, 09:17:25 AM |
|
hi, I downloaded(link in 1st post) & compiled under windows(mingw) & try to get the genesis block. Unable to get: Hash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f Nonce: 2083236893 Unix time: 1231006505
Please advise. Thanks. You need to preset the UNIX time variable and nonce to match the ones there, otherwise it will find a different one.
|
BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
|
|
|
|