Smartpool Alpha Release
TLDR; Smartpool, the first mining pool that runs over an Ethereum smart contract is released. It’s buggy and for testnet (Kovan) only. If you want stable version, wait for beta release.
We are happy to announce the first alpha release of Smartpool, the first mining pool that runs over an Ethereum smart contract. The release contains a client that interacts with parity and ethminer and a smart contract that serves the role of a pool operator and is running on Kovan testnet.
This release supports the complete mining procedure. Starting from selecting transactions to mine (via parity or geth client), submitting proof of work to the contract and valid new blocks to the network (in PoW tesnets), and getting rewards from the contract only for valid proof of work.
In the next section we give an overview on how the client and contract interact. Next we explain how our release works on Kovan (which is a PoA network). Then we explain the additional work required towards mainnet product. Finally, we give a financial report on the status of the project.
Overview of the System
The figure below illustrates how the system works.
Our client fetches new transactions from parity (or geth) client and assigns mining working tasks to ethminer. The client stores the proof of work shares that ethminer mines. Once sufficiently large enough batch of shares is collected, the client commits this batch to the contract. The contract sample random share index and in response the client sends it the full share block header. Finally, the contract rewards the batch of shares if and only if the submitted share is valid.
We refer the reader to our previous post for more details on the verification process and a theoretical anylsis or our system.
Running on Kovan Testnet
The recent spam attacks on Ropsten and the lack of functioning PoW testnet forced us to make our first public release on the only working public testnet, namely, Kovan. Unfortunately for us, Kovan consensus algorithm is based on proof of authority (PoA), rather then proof of work. As a result this release differs from our planned PoW testnet release in three ways:
- Our client never submits full solutions (valid blocks) to the network.
- The miner’s rewards are distributed from an external budget.
- This release only supports parity client.
The first difference is necessary as in Kovan new blocks are mined only by trusted authorities, and other parties cannot mine new blocks.
The second difference is needed as Kovan does not offer any mining rewards. In a PoW network, the block mining rewards will go to the smartpool contract, which in turn will distribute them to miners according to their proportional contribution. In this release the contract will distribute a fixed monthly budget to miners. To ensure fair distribution the contract continuously computes average share difficulty and rewards miners according to the current average share difficulty. DIGIX GLOBAL are supplying testnet ether for the contract.
This release was not tested with geth client, as it is currently impossible to run Kovan testnet with geth. However we expect it to run smoothly also with geth.
This release is an important first milestone. We plan to have our next release very soon, after a public PoW testnet will be available. Towards a real mainnet product a lot of effort is still needed. We outline the main action items below:
- Integrate and test our system with real mining rigs. So far we are running the system on our own CPUs. Supporting mining rigs requires both development efforts and financial costs (purchasing or renting rigs, to name one).
- Performance optimizations, both in client and contract sides. We note that performance optimizations in this case have direct economical consequences. These optimizations would increase miner’s profits. In our first release, miner’s fees (in the form of gas costs) are relatively high.
- We are still discussing schemes for distributing miner’s rewards. Classical schemes like PPLNS are less applicable in our batch submission model. Other schemes like PPS are possible but require bigger initial funds. In addition we consider different payout schemes that will incentivize miners to improve their network connectivity.
- Convincing big mining farms to join our decentralized pool. We set it as a target to offer miners clear economical incentives to use us (rather then rely on them care about decentralization). From one hand we aim to make pool’s fee (i.e., gas costs) as low as possible. On the other hand, given the right funding, we hope we could subsidize early adopters (i.e., offer negative fees) until the pool captures large hash rate.
- Improve the quality of the product. This release is just the first step. A lot of effort is needed both to rigorously test the product and to improve the user experience.
- Incorporate a mechanism that would compensate our donor token holders. Once the decentralization goal is met (in the form of significant hash power that mines through Smartpool) we would introduce small mining fees to compensate our donors.
Smartpool project is funded by donations from the community. Our call for donation so far has been responded with donations of 1,634 ETH (99.9% of it in the period of 13/1–28/1, when ETH was traded for around $10).
As of date 20/3/2017:
- $15,500 were spent. $150 on our domain and other small expense, and the rest on salaries.
- Our remaining funds are 20.2 BTC and 323 ETH.