Press J to jump to the feed. Press question mark to learn the rest of the keyboard shortcuts
115

An Open Source Mining Pool Bounty and DEVgrant

115
Posted by3 years ago
Archived

An Open Source Mining Pool Bounty and DEVgrant

72 comments
100% Upvoted
This thread is archived
New comments cannot be posted and votes cannot be cast
Sort by
level 1
17 points · 3 years ago · edited 3 years ago

(edited to add proposal)

I'd quite like to attack this problem. On the olympic network I was responsible for getting GPU mining compiled and working with ethash-cl algo, am familiar with all of the codebases, and familiar with the new stratum protocol used by miners. I also contributed to the building, testing and distribution of ethereum binaries for several platforms. Ethash commits: https://github.com/ethereum/webthree-umbrella/commits?author=subtly&page=3

Note: I'm happy to work with one or two other coders on this, preferably frontend html/js and would write it in rust, javascript, ruby, or python. Prefer JS and/or Rust for portability (tested against c++ and geth). Proposal is below...

PROPOSAL

As has been discussed in the blog post, and in a variety of other channels, centralization isn't ideal for mining because the reduction in network nodes reduces resilience and (hypothetically) reduces the effort required to compromise the network. However the benefit to mining pools is that they're easier to use, users don't have to run and maintain full nodes, pool operators are incentivized to compete in order to extract the most profit, and, for users which don't have a lot of hash rate, they can get paid based on the hash rate they contribute instead of the blocks they find.

Thus, the ideal solution will be easy to use, encourages running full nodes, allows partial payments, and is decentralized. Bonus: Competitive and fun :)

The challenge here is that without a centralized node there must be a protocol such that every pool contributor is working on a block which rewards every other contributor and doesn't censor or exclude rewards. This is difficult to address because mining is a concurrent process and the solution often involves a second BFT process. P2Pool is an example of this and addresses the problem by running a sidechain with a reduced blocktime and allows for altruistic donors to contribute to the reward. Napkin math tells me that a p2pool-like solution for Ethereum would need sub-second block times which, all things considered, isn't realistic.

Initial proposed solution

  • Create a mining pool which is easy to setup and deploy (single-click)

Further development

  • All mining rewards go to contract

  • mining contract allows contributors to withdraw early

  • mining contract such that it is fair w.r.t workers vs. winners

  • Fully decentralized via "Pulse" protocol (phase 2)

  • Competitive and Fun (phase 3)

The initial solution would be built in a centralized form for testing and to get out an MVP. Once stable, the decentralized version would be built and released. The decentralized mechanics are secondary because I think usability is more important and I'd like for the decentralized solution to be compatible with casper and go through academic review.

level 2
Ethereum Foundation - Hudson Jameson2 points · 3 years ago

Hell yeah! Glad to hear you want to tackle this :)

level 2
2 points · 3 years ago · edited 3 years ago

Hi,

senior Meteor developer and fulltime React/Redux dev atm here.

I wanna work on this too. My take on this starts with grabbing already working solutions and merging them. So for example node-stratum-pool and EtherPool. To set baseline for working open source ETH pool with stratum support.

From there I am comfortable to focus on things like:

  • making really personalised and realtime web pages

  • SMS notifications

  • browser realtime worker monitoring extensions

  • native apps for mobile + push notifications

Stuff regarding payments - fully customisable by setting worker arguments. Custom payout anytime - you can just call 1 little contract function which emits event. And server will catch it plus execute Tx with all given address credits. Or yes, it could be kind of fully managed by contract, updated after each block mined with info about every address shares status.

Authentication - there are so many possibilities. We may base it for example on creating account on server and than generating some string which would be used as argument for contract function call from miner's address. And user can call function on pools contract address to destroy all relations to accounts from given address.

Also I wanna emit some swag tokens as random mining bonus and create some gamification layer above this. We all can look for example on CS:GO skins and the market with such funny stuff.

And ofc some decentralisation stuff regarding mining pool would be nice, but that would really want some external $$ motivation. It feels like creating separate PoS blockchain just for that specific purpose, as any PoW solution I can think of would not be cost effective in that needed Tx count to move wheels for every share.

Or I had not been studying possibilities long enough :D

level 1
6 points · 3 years ago

Holy moly, tackling the lop sided mining issue head on, good stuff!

level 1
Afri ⬙8 points · 3 years ago

Please. Decentralized. P2PoolStyle. :-)

level 2
5 points · 3 years ago

That's the goal. However, it can be done more natively without a sidechain.

level 2
Comment removed by moderator3 years ago
level 1
8 points · 3 years ago

Mining pools make me cringe, mining should be 100% decentralized.

level 2
2 points · 3 years ago

Having pools is actually a good thing for network security, since extra hash power makes a 51% attack harder, and without pools, small miners wouldn't contribute their hash power to the network.

It only becomes an issue when a single pool has a disproportionate share of the network hashrate.

level 2
1 point · 3 years ago

should be

Unfortunately, that is not something which a "permission less" system can enforce. There is not a way to prevent collusion in general. Mining pools as currently implemented do offer an easy way for individual computers to participate in the network and their behavior is observable. The lowering of effort increases the size of the hash power pool. This is a benefit.

The cringe question is whether pools will be developed which have less observability. E.g., a design which provides payouts based on your machine's provable hash-power contribution, but not tied to the generation of blocks under a single, consistent address scheme. Such a 'pool' couldn't cheat in a meaningful way. But, it might adopt strategies to launder it's sources of ETH (e.g., payment through addresses that were in turn fed from exchanges). They would be resistant to analysis, and it would be unclear how much hash power they controlled. Meanwhile, unsuspecting network participants might be fooled into thinking that decentralization had won the day.

If we see a market for hash power along these lines for any PoW currency, then I would become very worried for the future of PoW.

level 1
Comment deleted by user3 years ago
level 2
Just generally awesome4 points · 3 years ago

Absolutely, please do make a submission! :)

level 2
3 points · 3 years ago

Probably

level 2
1 point · 3 years ago

No, your stuff simlpy doesn't work. I've spent 3 days trying to make it work but failed. I just can't make 2 nodejs scripts run simultaneously. I mean run.js and updateBalances.js.

level 2
-7 points · 3 years ago(0 children)
level 1
6 points · 3 years ago · edited 3 years ago

My proposal is to publish my go-ethereum-pool (already implemented):

Check out Testnet Live Demo

Pool Mining Solution

  • Proxy, payouts, block unlocking (maturity) module

  • Configured payouts period and balance threshold - easy and simple

  • Paying all uncles indeed

  • Paying full block reward instead of scamming miners with up to 0.3 ETH per block

  • Detailed block stats with luck percentage and full reward

  • Failover geth instances: geth high availability built in

  • Strict policy module (banning strategies using ipset/iptables)

  • Designed for 100% distributed setup (this is not easy for setup, cuz requires some thinking)

Written in Go it's a rocket highly concurrent and low RAM consuming piece of code

  • Beautiful Emberjs frontend screenshot

  • Separate stats for workers: can highlight timed-out workers so miners can perform maintenance of rigs

  • JSON-API for stats, miners can use for rigs maintenance automation (rig rebooting for example ) Also it's compatible with my ether-proxy solo/pool proxy solution.

It was available live under Eurohash brand but I turned it off due to lack of funding.

Repo stub (empty) https://github.com/sammy007/go-ethereum-pool I need 1-2 days to iron out README and publish code

Good enough for a solution which is going to be wasted anyway, after ETH turns into PoS.

Also...

Auxiliary solo mining solution

My Ether-Proxy is long maintaining solution almost from ETH launch. It drives big farms to solo mine and keep network secure with efficiency monitoring, I know "in-person" that at least 50 GH of network using it (different people, but there is a a lot more for sure). It's available for everyone for long and maintained even if i didn't receive any reasonable donations for it from community.

level 2
2 points · 3 years ago

I highly recommend Sammy's Pool Solution and I hope it will be adopted by ETH foundation.

level 2
1 point · 3 years ago

Want to work together on this? (see post at top) Did you email grants@?

More posts from the ethereum community
Continue browsing in r/ethereum
Next-generation platform for decentralised applications.
456k

Buidlers

2.3k

Buidling


Created Dec 14, 2013