Author Topic: How can we create a truely poolless coin?  (Read 921 times)

e1ghtSpace

  • Hello, is it me you're looking for? I can see it in your eyes, I can see it in your smile. You're all I've ever wanted.
  • Admin
  • *****
  • Posts: 90
  • What should I put here?
    • View Profile
How can we create a truely poolless coin?
« on: January 29, 2015, 10:27:45 am »
Let's try to figure out how to truely defeat pools.

We now know that pools can be created so that miners must pay collateral before they mine so that if they steal the collateral will be used to pay the other miners.
Is there a way to avoid this? Maybe.
Remember remember the 5th of November... is 20 days before my birthday. :D

e1ghtSpace

  • Hello, is it me you're looking for? I can see it in your eyes, I can see it in your smile. You're all I've ever wanted.
  • Admin
  • *****
  • Posts: 90
  • What should I put here?
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #1 on: January 29, 2015, 10:29:17 am »
Is this the answer?


Do you think this'll work?

Hey guys, I think we can fix pool mining!!

I just need to know how the hashing works (like, what gets hashed and in which order). Can someone please tell me?
Bump.

you should take a look at the code, but it goes roughly like this:

1- the whole block is hashed with double sha2.
2- the header, except for the hash above is signed with the private key and the least significant 5 bits of the nonce
3- results from 1 and 2 are appended to the header
4- the header is hashed with X11
5- compare with target, publish if it was reached, start again if not.
Basically, we need to take out the whole private key part so that anyone can claim a valid block to their address. Then once we find a block, submit it with our address attached for the funds to be sent to it.

This means that if you are mining for a pool, you can submit shares but give the blocks that you find to yourself.

But in order to stop people from stealing found blocks, by attaching their own address instead of the block finder, we need to:

Send sha2 hash of (found block + miner's address) to 6 (random?) masternodes.
Masternodes confirm that they have received the hash and if it is a valid block, will count it.
Miner then sends an un sha2'd version of block (found block + miner's address)
Masternodes all sign message saying that the block was found and put it onto the blockchain.
Attackers will need to control 4 of the 6 masternodes to replace the miner's address with their own.

Boom! Done! Hopefully.   Although it's probaly not going to work.

Will it work?

Wouldn't that... enable pools?

Umm... No?

I don't think you have understood what I've said. Can you take a look again please?

This idea makes pools worse, it seems - first of all, you can't have a block + an address. You need to have a coinbase transaction going to the miner. Second, this way, miner is not proving the ability to spend the coinbase tx.
Hmm... Ok I think I know what you mean.

So how about everyone must mine with the exact same private key to find a block.
When a block is found, the funds get sent to the miner's address, which he specifies somehow.
But before he releases the block info, first:

Miner sends 6 (random?) masternodes an sha2 hash of (the block he found + a transaction to his address).
The 6 Masternodes confirm (sign a message maybe) that if the hash turns out to be a valid block, it will be added to the blockchain and the transaction will be confirmed. (this is to stop people from stealing the block)
Miner then sends an un sha2'd version of the block he found + a transaction to his address.
The 6 Masternodes all sign message saying that the block was found and record it to the blockchain.

If the client receives a message from 4 of the 6 masternodes that the block was found + the transaction then they add it to their blockchain.
Attackers will need to control 4 of the 6 masternodes to replace the miner's transaction with their own.

Does that work?

You must have the private key to spend the coins, if everyone had the same one then anyone could spend it, masternodes also can do nothing with the funds without the private key either. 
But at the same time the block is mined with the private key everyone knows, the masternodes make sure the miner is able to withdraw his coins from that address before they get stolen. Do you know what I mean?
The quotes are from bitcointalk, so if you would like to go to that message, you just need to replace the beginning of the URL you get redirected to with bitcointalk.
Remember remember the 5th of November... is 20 days before my birthday. :D

elbandi

  • Jr. Member
  • **
  • Posts: 56
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #2 on: January 29, 2015, 10:51:24 am »
There is none:
You can point your miner rigs to get work from wallet (qt/daemon). So think the pool, as a proxy between miners and the wallet. pool one process query a work form wallet and distribute it to the miners. The only things pool is more than a simple proxy, he count the miners sended share, and divide the reward based on that.

the current implementation not prevent the pool mining, instead of it makes meaningless: the pool owner have to trust the miners (they not steal the reward).

e1ghtSpace

  • Hello, is it me you're looking for? I can see it in your eyes, I can see it in your smile. You're all I've ever wanted.
  • Admin
  • *****
  • Posts: 90
  • What should I put here?
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #3 on: January 29, 2015, 11:15:58 am »
There is none:
You can point your miner rigs to get work from wallet (qt/daemon). So think the pool, as a proxy between miners and the wallet. pool one process query a work form wallet and distribute it to the miners. The only things pool is more than a simple proxy, he count the miners sended share, and divide the reward based on that.

the current implementation not prevent the pool mining, instead of it makes meaningless: the pool owner have to trust the miners (they not steal the reward).
But if what I said above gets implemented, then the miners can send shares to the pool, but when they find a block, they can keep it for themself without the pool knowing.
Remember remember the 5th of November... is 20 days before my birthday. :D

GilAlexander

  • Newbie
  • *
  • Posts: 47
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #4 on: January 31, 2015, 10:20:30 am »
What if?
Make a pool that will give unique coinbase for every miner, registrate everyone and take guarantee = block reward. When miner finds a block, he can spend coinbase spreads. In that case, ban miner and distibute his guarantee between other miners accordingly hashrates (still may be calculated via shares). If miner is fair, distribute his coinbase spreads.
my spr addr: SVf1jyKHgdCngvpXf9SGQveiaFBFthmjVu

Zeca pagodinho

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #5 on: February 06, 2015, 12:08:08 am »
So from what I understand in this discussion, this type of pool that can be created for SpreadCoin, help hash rate network and also encourage small miners(honest) to stay in the game?
Please correct me if I'm wrong!

vertoe

  • Newbie
  • *
  • Posts: 33
  • Darkcoin Core Dev
    • View Profile
    • Darkco.in
Re: How can we create a truely poolless coin?
« Reply #6 on: February 06, 2015, 12:18:48 am »
So from what I understand in this discussion, this type of pool that can be created for SpreadCoin, help hashish network and also encourage small miners(honest) to stay in the game?
Please correct me if I'm wrong!

uh, hashish?
http://simple.wikipedia.org/wiki/Hashish

like
SSHUvYeyGQcV6z1QvFiu2SppKDTbb2ZFC1

Zeca pagodinho

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #7 on: February 06, 2015, 12:22:02 am »
So from what I understand in this discussion, this type of pool that can be created for SpreadCoin, help hashish network and also encourage small miners(honest) to stay in the game?
Please correct me if I'm wrong!

uh, hashish?
http://simple.wikipedia.org/wiki/Hashish

ops hash rate  :)

like

njs811

  • Jr. Member
  • **
  • Posts: 87
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #8 on: February 06, 2015, 01:43:29 am »
I still think its worth exploring the idea of a hashrate cap.

e1ghtSpace

  • Hello, is it me you're looking for? I can see it in your eyes, I can see it in your smile. You're all I've ever wanted.
  • Admin
  • *****
  • Posts: 90
  • What should I put here?
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #9 on: February 07, 2015, 08:24:39 pm »
My original idea is this:

The blocks that people find do not have any relation to their private key.
This means that if you are mining on a pool and you find a block, you can switch the pool's address out with yours and they wouldn't know.

We would then need masternodes to confirm the block was mined to your address to prevent other miners from taking the block you mined and switching your address with theirs and redistributing it to the network.
Remember remember the 5th of November... is 20 days before my birthday. :D

Wolf0

  • Newbie
  • *
  • Posts: 32
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #10 on: February 08, 2015, 06:23:03 am »
My original idea is this:

The blocks that people find do not have any relation to their private key.
This means that if you are mining on a pool and you find a block, you can switch the pool's address out with yours and they wouldn't know.

We would then need masternodes to confirm the block was mined to your address to prevent other miners from taking the block you mined and switching your address with theirs and redistributing it to the network.

Except switching that out would invalidate the hash.

e1ghtSpace

  • Hello, is it me you're looking for? I can see it in your eyes, I can see it in your smile. You're all I've ever wanted.
  • Admin
  • *****
  • Posts: 90
  • What should I put here?
    • View Profile
Re: How can we create a truely poolless coin?
« Reply #11 on: February 08, 2015, 07:14:17 am »
My original idea is this:

The blocks that people find do not have any relation to their private key.
This means that if you are mining on a pool and you find a block, you can switch the pool's address out with yours and they wouldn't know.

We would then need masternodes to confirm the block was mined to your address to prevent other miners from taking the block you mined and switching your address with theirs and redistributing it to the network.

Except switching that out would invalidate the hash.

We just need to remove the address from the hash and put it after. Such as (hash, address) as the block.

Then we get masternodes to confirm that the block was indeed found first by that specific address.

Maybe the miner sends a hash of (hash, address) and 6 masternodes sign that hash as a potential block and distribute it to their peers.
If the miner can then respond with the origin of the hash he sent (which would be (hash, address) ) then the block is accepted by the peers.

This removes the possibility of someone stealing the miner's block.
Remember remember the 5th of November... is 20 days before my birthday. :D