Eth: 0x00cce8E2e56a543abc084920eee3f88eFD0921ea

Tuesday, January 26, 2016

Proof of Stake and Stake by Proxy

With the inevitability of PoS mining on Ethereum, and the possibility that the total number of staked nodes may be limited, it is important to develop alternative approaches to ensure a robust decentralized staking system. We explore one of those alternatives in this post.

The problem with creating a pool for a Proof of Stake (PoS) system is you're basically giving someone else control over your money, and no one likes that. Instead, of transferring your hard-earned ETH to an individual, we suggest that a smart contract can be used to deployed to enable pooled PoS mining. This will allow a single account / machine to stake for multiple individuals. This is important because currently, there is the possibility that only 16^2 nodes will be allowed to participate in the PoS process. This is alarmingly small compared to the number of nodes mining on the Ethereum chain in the Proof of Work (PoW) system. Smart contracts and stake-by-proxy, however, should provide an answer on how to successfully concentrate staking nodes without severely sacrificing the decentralization process.

The basic elements of a smart contract to make this type of system work are as follows:

A smart contract 'A' is setup which holds an array of who has contributed to the pool, and how much, if they want their earnings to be reinvested, and when should their deposit be automatically sent back to them and destaked. There is also a base setting for monthly pool fees, which is deposited into a separate account under the pool owners control. A final value is the pool earnings.

Pool Owner's Deposit is sent to smart contract 'A'. The pool owner's deposit is used as a 'skin-in-the-game' mechanic, to ensure that if the pool owner is delinquent in their duties of maintaining the server system for the trust, they will loose out just as much as everyone else. The pool owner's deposit can only be refunded once all other contributers to the pool have been paid (thus if there is a loss, the pool owner will feel it first). 

Depositors can match the owners deposit, or contribute less, but not more, which ensures that their risks are equal or less to that of the pool owner.
Deposits placed in the contract can be set with a refund date, at which time they will automatically be removed from staking and refunded to the contributing account number.  If you follow the axiom of never contribute more to a pool than the pool owner, you should feel fuzzy and warm.

The pool owner draws upon the pool fee to setup server systems and pay for electricity, internet, and ddos protection etc..

At this point, the PoS system needs to support stake-by-proxy. This will enable contract 'A' to stake the funds it contains, but also assign a proxy account 'C' which is controlled by the pool owner, to sign on behalf of contract 'A'. This way, the pool operator can setup their machine, and have it perform the betting required by PoS, while not actually having withdrawal privileges on contract 'B', where all the money is kept.

No comments: