Author Topic: Sparkle Alpha Test Network Live: Mining to be Honored in Real Network  (Read 27587 times)

0 Members and 1 Guest are viewing this topic.

Offline arubi

  • Sr. Member
  • ****
  • Posts: 209
    • View Profile
Intuitively, it hurts my brain that this is a message signature...
I don't know why yet, but it sounds like something is a bit off..

Can (in principal) ECC_RECOVER_PUBLIC_KEY have multiple correct answers?

edit:

What I mean is, pKey recovery should (in principal) be checked against a directory or some authority for a match.
Bitcoin's message signing ripemd160's the pubkey against a public address (afaik) so a dirctory or authority is not needed in that case. Bitcoin's signmessage includes the number of pKey to recover from that message, as there can be up to 4, but mostly just 2 public keys that can be 'recovered' from the message [1]. Can the function be made to hash the pubkey against the signer's public address here as well, or use bitcoin's method somehow?

[1] #bitcoin-dev
« Last Edit: November 30, 2014, 07:30:52 pm by arubi »

Offline bobb

  • Full Member
  • ***
  • Posts: 67
    • View Profile

New proposed mining algorithm:
SignedHeader = MinerPrivateKey.sign( SHA256( header ) )
HashSignedHeader = SHA256( SignedHeader )
PublicKeyCheck = ECC_RECOVER_PUBLIC_KEY( SignedHeader.Signature, HashSignedHeader )
HASH = SHA256( PublicKeyCheck )

EDIT: Got it, I missed this "To mine you must produce a signature of the block header such the the hash of the header + signature is less than some threshold."

Interesting. Couldn’t that lead to miners/pools avoiding to include transactions at all?
Therefore they wouldn't have to deal with the changing hashMerkleRoot in the header.
So they could do the first three lines once for each new block and and offload the rest to the pool workers.

I might be wrong as I am not familiar with the bitshares header structure.
But I like the idea though.
« Last Edit: November 30, 2014, 05:36:12 pm by bobb »

Offline pariah99

  • Full Member
  • ***
  • Posts: 66
  • I'm so meta even this acronym.
    • View Profile
Wouldn't people just set up multiple deposit privkeys?  You don't need to reinvent the wheel on PoW in order to make this coin a success.

I would think that any kind of PoW algorithm would eventually tend towards centralization; the only thing that you can really do is pick a more obscure algorithm so that the current farms can't use their ASICs to mine it, then maybe introduce changes to the algorithm via consensus to stay 1 step ahead of newly developed ASICs.

Offline minerswing

  • Full Member
  • ***
  • Posts: 54
    • View Profile

Offline bobb

  • Full Member
  • ***
  • Posts: 67
    • View Profile
6276 ... looks like it is not completely stuck (just too high diff for the current hashing power)

"blockchain_difficulty": 14827633,
"blockchain_head_block_num": 6276,


Offline cass

  • Hero Member
  • *****
  • Posts: 4311
  • /(┬.┬)\
    • View Profile
█║▌║║█  - - -  The quieter you become, the more you are able to hear  - - -  █║▌║║█

Offline sparkles

  • Full Member
  • ***
  • Posts: 107
    • View Profile
It is quite clear that my difficulty adjustment was naive and that I will have to do something about that.   Based upon the current difficulty the network appears hung.

I am looking at a new approach to mining that will make Sparkle very resistant to mining pool centralization by requiring the private key of the account that will receive the mining rewards to be part of the mining process.   I will replace the "miner address" field with a "signature" field and remove the nonce.   To mine you must produce a signature of the block header such the the hash of the header + signature is less than some threshold.    The only option is to sign over and over again because if you change anything in the block then the signature will not match the proper key. 

The benefit of a mining pool resistant proof of work is that if and when ASICs are produced they will be performing ECC operations for signing transactions. 

New proposed mining algorithm:

SignedHeader = MinerPrivateKey.sign( SHA256( header ) )
HashSignedHeader = SHA256( SignedHeader )
PublicKeyCheck = ECC_RECOVER_PUBLIC_KEY( SignedHeader.Signature, HashSignedHeader )
HASH = SHA256( PublicKeyCheck )

What are the properties of this set of operations?
1) To produce a block you must have access to the MinerPrivateKey.  This eliminates mining.
2) To produce a block you must perform a ECC Signature
3) To produce a block you must perform a ECC Key Recovery which is the CPU bottleneck on transaction processing.

Given these steps it should result in ECC Key Recovery ASICs being produced which if done properly will help accelerate transaction processing and validation.   Assuming this is implemented on a GPU it will help all crypto's to validate transactions faster. 

The impact of not having mining pools means miners must handle the variability in finding blocks.  This will change the incentive structure significantly.  Having faster block times will help increase the number of winners.

Offline Troglodactyl

  • Hero Member
  • *****
  • Posts: 960
    • View Profile
Yeah, I have one miner on block 6275, and one on 6282, with my longer chain apparently on a minority fork with lower difficulty.

Offline wackou

stuck on block 6275 too... I imagine that's due to the fact that difficulty skyrocketed, right?
Please vote for witness wackou! More info at http://digitalgaia.io

Offline joele

  • Sr. Member
  • ****
  • Posts: 467
    • View Profile
"blockchain_head_block_num": 6275,
  "blockchain_head_block_age": "54 minutes old",
  "blockchain_head_block_timestamp": "2014-11-30T12:48:28",
  "blockchain_difficulty": 4664032,

Good thing this is being tested.


Offline cass

  • Hero Member
  • *****
  • Posts: 4311
  • /(┬.┬)\
    • View Profile
Code: [Select]
sparkle (unlocked) >>> getinfo
{
  "blockchain_head_block_num": 6275,
  "blockchain_head_block_age": "6 minutes old",
  "blockchain_head_block_timestamp": "2014-11-30T12:48:28",
  "blockchain_difficulty": 4664032,
  "blockchain_confirmation_requirement": 6,
  "blockchain_share_supply": "2,000,313,743.72665 SPK",
  "blockchain_random_seed": "0a25b4445933f5e4518af2bdd555c81f0b6fc78f",
  "client_data_dir": "/home/ubuntu/.Sparkle-Test65",
  "client_version": "alpha.4-testnet-65",
  "network_num_connections": 9,
  "network_num_connections_max": 200,
  "network_chain_downloader_running": false,
  "network_chain_downloader_blocks_remaining": null,
  "ntp_time": "2014-11-30T12:54:49",
  "ntp_time_error": 0.025753000000000002,

ok  installed guess it works yet…
█║▌║║█  - - -  The quieter you become, the more you are able to hear  - - -  █║▌║║█

Offline clayop

  • Hero Member
  • *****
  • Posts: 2033
    • View Profile
    • Bitshares Korea
  • BitShares: clayop
Bitshares Korea - http://www.bitshares.kr
Vote for me and see Korean Bitshares community grows
delegate-clayop

Offline arubi

  • Sr. Member
  • ****
  • Posts: 209
    • View Profile
Good thing this is being tested.

Indeed.
bytemaster, do you remember problems like we have now when PTS was first introduced? I was mining PTS since day 0 and I don't relly remember the network forking like we have now.

Can you provide any input?
Thanks.

Offline Troglodactyl

  • Hero Member
  • *****
  • Posts: 960
    • View Profile

I think someone is just burst mining it since the difficulty adjusts so fast.  That hard fork to fix that is still a long ways away...

EDIT: Difficulty is also adjusted every block, but based on the average time of the last 1000 blocks, so someone dumping AWS instances on it could mine quite a few blocks before the difficulty adjustment caught up with them in each burst.

Good thing this is being tested.
Indeed. Mining a new coin brings back memories...

Offline clayop

  • Hero Member
  • *****
  • Posts: 2033
    • View Profile
    • Bitshares Korea
  • BitShares: clayop
Am I stuck in?


Code: [Select]
mywallet (unlocked) >>> get_info
{
  "blockchain_head_block_num": 4072,
  "blockchain_head_block_age": "13 minutes old",
  "blockchain_head_block_timestamp": "2014-11-29T18:42:18",
  "blockchain_difficulty": 88620,
  "blockchain_confirmation_requirement": 6,
  "blockchain_share_supply": "2,000,203,597.35134 SPK",
  "blockchain_random_seed": "17cb835d8a756bc15ed8f554c36ed8f4f0f5b268",
  "client_data_dir": "/root/.Sparkle-Test65",
  "client_version": "alpha.4-testnet-65",
  "network_num_connections": 30,
  "network_num_connections_max": 200,
  "network_chain_downloader_running": false,
  "network_chain_downloader_blocks_remaining": null,
  "ntp_time": "2014-11-29T18:55:34",
  "ntp_time_error": 0.0019599999999999999,
  "wallet_open": true,
  "wallet_unlocked": true,
  "wallet_unlocked_until": "17 weeks in the future",
  "wallet_unlocked_until_timestamp": "2015-03-25T10:08:40",
  "wallet_last_scanned_block_timestamp": "2014-11-29T18:42:18",
  "wallet_scan_progress": "100.00 %",
  "wallet_block_production_enabled": true,
  "blockchain_average_delegate_participation": null,
  "blockchain_next_round_timestamp": null,
  "wallet_next_block_production_timestamp": null
}
Bitshares Korea - http://www.bitshares.kr
Vote for me and see Korean Bitshares community grows
delegate-clayop