/ChiaPool

A trust based mining pool for the cryptocurrency chia.

Primary LanguageC#Apache License 2.0Apache-2.0

ChiaPool

What is this?

This application is a trust based mining pool for the cryptocurrency Chia. It works by running a harvester and farmer (no node) on each miner machine and sending all rewards to the pool address. Winning block rewards will be redistributed amongst miners. Setting up miners is simple and can be done with minimal configuration required.

This can be used as a private mining pool until pools are officially supported by chia.

This is not a replacement for proper pools and should only be used as stated below:

Can be used for Cannot be used for
Mining with others you do trust Mining with others you do not trust
Self Pooling

This is because of 2 main reasons:

  • The server cannot know securely measure how many plots miners really have & miners could change the reward address back to their own wallet
    • Pool must trust miners
  • The mining rewards are stored on a wallet which is not directly accessible by miners
    • Miners must trust the Pool

Installation

Using the CLI Interface

Configure environment variables

Running a miner for the CLI is optional, but some features will not be available if the CLI has no access to the local miner to authenticate requests.

Wallet vs Plotting Keys

This pool uses 2 keys, one for farming and one for storing rewards. You can read about how it works here. This is enabled by default, you only need to add your keys to the node.env file.

Plotting Keys Wallet Keys
Stores mined XCH No Yes
Accessible by miners Yes No
Accessible by plotters Only pks No
Used for plotting Yes No

State of Development

The current version of the miner & pool are functioning and can be used, the plotter is currently not working and I have pushed it back on the priority list. There are no prebuilt stable images provided currently, if you want to use this pool you will need to build the image yourself. The main branch will not always contain stable code, as soon as I finish a release I will create a seperate stable branch.