Author Topic: Decentralizing Mining - The future of BitShares Mining  (Read 57091 times)

0 Members and 1 Guest are viewing this topic.

Offline bytemaster

I think that open source pool software that is easy to install and operate may be the best way to decentralize pools.  But pools still suffer from the network effect, the larger the pool the lower the fees (scale) and the lower the variance (higher quality). 

Then there is the whole business model of optimized pool miners...
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline bytemaster

A lottery is not just lower Odds, it is 50% lower payout per hash.   Pools are all about optimizing the payout per hash and any pool that decided to use loto-mining would end up donating 50% of their hash power to the network.

People will always be able to install 'malware' on library computers, but it would be far more profitable if they installed traditional miners rather than loto-miners. 

Remember, the goal of loto-mining is to make it less profitable and therefore irrational to engage in.  However, all such gambling is irrational and people do it for hope anyway.    Every single Loto-Miner reduces the margins available to the traditional miners and if enough people decide to 'play' then mining will continue even though it is no longer a profitable business!
I'd go more for the partial hashes we talked about. That seems like a more simplistic route, and then incorporating lotto later once you are sure that works(maybe I just like the idea of partials better, still working on the same incentive principle here). Lets be clear we want to eliminate pools(centralization), and go for a solo mining that everyone can agree on. Like you discussed there are bottleneck issues with making a decentralized pool, but this kinda solves to an extent.

Then again trying to shoot down that same idea, seems like solo miners would only want to connect to other solo mining peers. Would partial matches flood the network as we try to establish them in the next block? Now you also have the problem of collisions as well. If node 1 and node 2 submit the same partial hash who decides who gets the reward. A pool will give you a REJECT, but how does the network say REJECT also?

While it is possible to offer rewards for including partial hashes, each partial hash would add at least 200 bytes to the block which means that if we designed the system to support 100 partial hashes then we would be using 20KB of every block for these partial hashes.  Assuming difficulty got to the point where the expected time to find a result is 10 years, then the expected time to find a partial hash would be 5 weeks and the reward would be 1/100 of a normal block.  All things considered I do not think the partial hash solution scales.

You can use a decentralized pool, but these pools suffer from latency issues in their own right or everyone would have migrated to a P2P Pool for bitcoin mining in the name of decentralization and lower fees. 

My goal is not to eliminate pools, but to motivate solo mining and add a new dynamic to the coin experience that adds value without removing any value.   If people like it then they use it and everyone else just ignores it. 
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline super3

  • Sr. Member
  • ****
  • Posts: 260
    • View Profile
A lottery is not just lower Odds, it is 50% lower payout per hash.   Pools are all about optimizing the payout per hash and any pool that decided to use loto-mining would end up donating 50% of their hash power to the network.

People will always be able to install 'malware' on library computers, but it would be far more profitable if they installed traditional miners rather than loto-miners. 

Remember, the goal of loto-mining is to make it less profitable and therefore irrational to engage in.  However, all such gambling is irrational and people do it for hope anyway.    Every single Loto-Miner reduces the margins available to the traditional miners and if enough people decide to 'play' then mining will continue even though it is no longer a profitable business!
I'd go more for the partial hashes we talked about. That seems like a more simplistic route, and then incorporating lotto later once you are sure that works(maybe I just like the idea of partials better, still working on the same incentive principle here). Lets be clear we want to eliminate pools(centralization), and go for a solo mining that everyone can agree on. Like you discussed there are bottleneck issues with making a decentralized pool, but this kinda solves to an extent.

Then again trying to shoot down that same idea, seems like solo miners would only want to connect to other solo mining peers. Would partial matches flood the network as we try to establish them in the next block? Now you also have the problem of collisions as well. If node 1 and node 2 submit the same partial hash who decides who gets the reward. A pool will give you a REJECT, but how does the network say REJECT also?
« Last Edit: November 22, 2013, 08:52:39 pm by super3 »

Offline Lighthouse

  • Sr. Member
  • ****
  • Posts: 376
  • Making a Market in PTS since 11/06/2013
    • View Profile
    • Lighthouse Bulk Orders and Trusted Escrow (Closed)
I think you're fighting the tide on this one Bytemaster, the type of people you want to incentivize and compensate for paying attention are the ones who see the potential and want to be invested in the idea as they help bring it to fruition through their personal actions.  The problem that pools solve is the difficulty of knowing if your work (computer mining) is going to give you a payout because as the popularity of a coin increases (in this case very quickly) the choice to mine by yourself starts looking like a stupid thing to do. 

Yes, there are calculators that say you'll find a block every 8 days but that's a lot of faith to put into a fast moving currency and sometimes the odds don't go in your favor and the difficulty moves past you.  The point of Mining is to equitably distribute tokens that individuals imbue with value through their interest and want to further build the project. 

So the solution is to figure out how to let people join a global pool, operated by the issuing company who can collect a very minimal %, and pay people equitably for their contribution.  Then it truly is a fire and forget sort of operation, and as the operator you can determine if you want to allow cloud miners or if they should be off in their own pool using miners they create themselves.

Solve the pool problem by catering to the need that demands Pools be popular.
Before you say the price of PTS is too high, take a look at theThe Reason.  Protoshares are an entirely new type of Cryptocurrency, one that pays to hold.

Offline bytemaster

A lottery is not just lower Odds, it is 50% lower payout per hash.   Pools are all about optimizing the payout per hash and any pool that decided to use loto-mining would end up donating 50% of their hash power to the network.

People will always be able to install 'malware' on library computers, but it would be far more profitable if they installed traditional miners rather than loto-miners. 

Remember, the goal of loto-mining is to make it less profitable and therefore irrational to engage in.  However, all such gambling is irrational and people do it for hope anyway.    Every single Loto-Miner reduces the margins available to the traditional miners and if enough people decide to 'play' then mining will continue even though it is no longer a profitable business!   
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline FreeTrade

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 700
    • View Profile
tl;dr
In a nutshell I argue that the following (some of it has already been proposed in this thread) will do a better job to accomplish a) and b) than implementing a lottery.

- continuous difficulty adjustment (e.g.  similar to primecoin)
- PoW has to rely (even more) on high memory bandwidth to penalize cloud miners.
- Pools and pool software should be available at start
   - open source pools should be available, so that people can operate them easily.
- Optimize the miners before release.

Yes, that does not prevent botnets from happening but neither does the lottery.
I hope you find that helpful. Thanks for your hard work!

That's an excellent summary of the lessons that should be taken from ProtoShares.

In my opinion a vesting period will achieve nothing and perhaps be detrimental, a lottery may generate a little excitement but it won't help fundamentals (probably won't hurt either).
“People should be more sophisticated? How are you gonna get that done?” - Jerry Seinfeld reply to Bill Maher

Offline bobb

  • Full Member
  • ***
  • Posts: 67
    • View Profile
Dear bytemaster (and of course everyone else)

before i start arguing: Thanks for all the work you already did. You are doing a great job! :)

If I read your arguments correctly you want (among other things) to accomplish the following:

a) decentralize the mining
b) decrease the amount of big cloud miners

But I don't see how including/shifting to a lottery really changes things.
Wouldn't then people want that botnet -  which plays the lottery for them - even more?
A process that runs 'in the  background and just takes 25% cpu time" sound like the perfect thing to hide in office/library/everyone’s computers.

At the end it comes down to probability. I get it, you are arguing with psychology.
And I think you are right to a certain degree, but still a lot of people do the math and have that botnet that plays the lottery for them anyway.

Another point you make is that people won't trust the pool operator to pay out the jackpot. Why shouldn't they? Setting up the pool is a lot of work. To run away with the first 10K that come at you sounds like a bad idea if you can take n% of the next m lottery wins. In summary I think this makes it even worse. People will still use pools. But just the big one(s), that everyone trusts. So this may even prevent further decentralization.

My argument is that you don't have to change that much to accomplish your goals. You haven't had it so bad in the first place. The original miner kind of sucked for cloud mining. I did some benchmarks: Virtualization layers (like kvm for example) slowed things down by almost 50%. I blame that on the high memory requirements in the original wallet-miner. Before you say:  virtualization slows everything down: The effect was not reproduceable with (solo)mining primecoin and VirtIO/VT worked on that machine:).  I kind of liked the effect, as I thought it was on purpose :).  But my sample data wasn't large enough to prove this effect for different hardware and software virtualization layers.  But it may be a hint towards punishing large scale cloud mining. The later miners did not show this behavior btw: The virtualized miners now perfom on par with the non virtualized machines. 

In summary I think the lottery idea is a step in the wrong direction because it does not encourage decentralization.
People already form lottery/pool syndicates to play the lottery!  Why shouldn't they do that when mining? Isn't that what pools are about already?

The main reason that people switched from solo-mining to pools is not only the instant gratification but also the immense performance increase
the pool clients offered.  If there would have been an optimized solo-minier at start, some people would still be solo-mining.
To prevent this pool-oligopoly situation we saw in the beginning, an open-source pool server would be really helpful.
People wouldn't have the need to use the big-pool(s) with high fees if they could use their own one with zero fees.

Another point that we should consider is that the image a lottery system reflects may be harmful considering that people shall use BTS for serious stuff.
(No offence to lottery-site operators btw :) 

tl;dr
In a nutshell I argue that the following (some of it has already been proposed in this thread) will do a better job to accomplish a) and b) than implementing a lottery.

- continuous difficulty adjustment (e.g.  similar to primecoin)
- PoW has to rely (even more) on high memory bandwidth to penalize cloud miners.
- Pools and pool software should be available at start
   - open source pools should be available, so that people can operate them easily.
- Optimize the miners before release.

Yes, that does not prevent botnets from happening but neither does the lottery.
I hope you find that helpful. Thanks for your hard work!




Offline super3

  • Sr. Member
  • ****
  • Posts: 260
    • View Profile

Offline bytemaster

I have more computers than that in my basement right now :)
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline Pocket Sand

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


random proof of human punishes guys like this. Not so good an idea.

 :o I've only seen this picture in my dreams before

Offline barwizi

  • Hero Member
  • *****
  • Posts: 764
  • Noirbits, NoirShares, NoirEx.....lol, noir anyone?
    • View Profile
    • Noirbitstalk.org


random proof of human punishes guys like this. Not so good an idea.
--Bar--  PiNEJGUv4AZVZkLuF6hV4xwbYTRp5etWWJ

The magical land of crypto, no freebies people.

Offline luckybit

  • Hero Member
  • *****
  • Posts: 2921
    • View Profile
  • BitShares: Luckybit
I like the Idea of 6 month block maturing. Though I think 3 month would be also sufficient...
Only problem I see, this would not keep botnets from mining, but I think I may have a solution for that, though not sure if it will work.
Could we prevent botnets from running if we would implement a captcha in the client? So that every time you start mining you have to solve a captcha...I guess that would stop botnets :)
What do you think about that?

That is the idea I was thinking about. That is what I suggest for handling the botnets. The captcha should appear at random intervals so no one knows when and the kind of captcha should change. Actually my version would be puzzles which only a human can solve but yes this is a solution.

Additionally once verified to be operated by a user the user should get some sorta verification points so that the captcha shows up less frequently. This means if you successfully solve 10 captchas in a row then you will get 1 week without any.
 
And the captchas should appear at random so no one can know and schedule for it. You can only use your points to automagically bypass the captchas.

Maybe something like this? http://www.techradar.com/news/internet/web/gamers-to-help-create-bot-proof-captcha-616655
« Last Edit: November 22, 2013, 05:20:32 am by luckybit »
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline luckybit

  • Hero Member
  • *****
  • Posts: 2921
    • View Profile
  • BitShares: Luckybit
Ey! This gave me a better idea!  :)

Why don't you use signed mining?
I mean: to be a miner, you must be aproved by Invictus and recive a key to be able to mine, and any client which tries to mine without being signed cannot find a block. You can also impose limits on the amount one miner can mine.
Then, after the 6 months period, you just release a new version which removes the signing requirement.
You can even sell a license to mine, but please make it cheap.

I don't exactly know how this could be implemented, but I'm sure you can think ways.

I feel like requiring a centrally issued signature to mine goes against the purpose of a decentralized currency. You should keep it open to the public, and keep entry barriers low for people that want to solo-mine. The difficult part is to make entry barriers high for people who want to cloud-mine

It is only temporal for 6 months, just to enable precisely more decentralization, so more "normal" people can obtain his/her share without being busted by other users that steal CPU power from others (botnets).
There could be an unconditional free license to allow mining some blocks, some paid licenses to mine big amount of blocks, and after the 6 months no license is required anymore.

Can we have a rating system to quantify the levels of decentralization in a solution? With the goal of providing maximum opportunity to "normal" users?
https://metaexchange.info | Bitcoin<->Altcoin exchange | Instant | Safe | Low spreads

Offline Pocket Sand

  • Full Member
  • ***
  • Posts: 118
    • View Profile
Quote
I like the Idea of 6 month block maturing. Though I think 3 month would be also sufficient...
Only problem I see, this would not keep botnets from mining, but I think I may have a solution for that, though not sure if it will work.
Could we prevent botnets from running if we would implement a captcha in the client? So that every time you start mining you have to solve a captcha...I guess that would stop botnets :)
What do you think about that?

Also implementing that in to an efficient linux miner would be rather difficult  :P and time again has shown, where there's a will there's a way, especially with the ability/price of modern captcha solvers like DBC. I like Bytemaster's approach of trying to make this as simple as possible while trying to make it harder for mass miners.

Offline bytemaster

I like the Idea of 6 month block maturing. Though I think 3 month would be also sufficient...
Only problem I see, this would not keep botnets from mining, but I think I may have a solution for that, though not sure if it will work.
Could we prevent botnets from running if we would implement a captcha in the client? So that every time you start mining you have to solve a captcha...I guess that would stop botnets :)
What do you think about that?

Humans cannot be in the loop because it is all open source and has to be validated by a machine.
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.