I posted this idea on the bitcointalk forums, and d5000 replied to it there, and mentioned these forums. I have been working on this idea for the past several weeks, posting as “bitbadger” over on the bitsharetalk.org forums, in hope of getting this idea adopted by BitShares. However, it does not look like that is going to happen. I believe that it is something novel for PoS coins, although granted, I haven’t been on top of every new development. I would like to hear some feedback.
There are two parts to this proposal: Stake-Days (and Stake-Days Destroyed) and Proof-of-Connection.
Stake-Days are the rough analogue of Coin-Days. As Stake-Days go up, PoS mining difficulty goes down. If I hold 30 coins for 30 days, my Stake-Days are equal to 900. This is the equivalent of somebody with 900 coins holding them for 1 day. The key part is this: My Stake-Days only drop back to 0 when I actually mine a block with that stake. Since Stake-Days are only reset to 0 when a block is mined, they can be transferred from one address to another without being reset. The stake travels along with the coins (and can probably be additive within a given address, although this may make things too complicated). If I receive coins from you, and your coins have Stake-Days built up, I receive that stake when I receive the coins, and my chances of mining a block with that stake are just as high as they were when you held that stake. Proof-of-Stake mining (aka minting) still remains a stochastic process, but every address has its own difficulty level based on the stake associated with that address.
Now for Proof-of-Connection. A big problem with existing PoS coins (and indeed, PoW coins) is that nobody is incentivized to run a full node. With (say) PeerCoin, if I have low stake and little chance of mining a PoS block, I can turn off my PeerCoin client and leave it off for a month or three while my stake continues to build. I am not helping to secure the network or propagate transactions when my node is turned off.
So there needs to be a way to make stake dependent on running a node continuously. The proposed mechanism for this is as follows: Every block has a hash. Let’s say the hash for a given block starts with ABC. Once this block is created, every address matching AxxxxxxBxxxxxxC (or some other formulation; this is just an example) must “check in” by sending a transaction to themselves to prove that they’re connected. These Proof-of-Connection transactions will be included in the next mined blocks. This transaction does not lose Stake-Days or Coin-Days. If this Proof-of-Connection transaction does not appear in a block within X blocks (perhaps 30 minutes’ worth?) of the triggering block, their Stake-Days drops back to 0. This would prevent people from accumulating stake by simply keeping their coins dormant.
The parameters could be chosen to try different lengths of expected-time-to-check-in, which would also be dependent on the block production rate. I would suggest a target of something between 6 and 24 hours, although given the random nature of this process, and in the interest of having smaller blocks, perhaps longer times could be used. On a coin with fast blocks, maybe 2 or 3 bytes would be required to match; on a coin with slow blocks, just 1 or 2. Of course, full bytes would not necessarily be required; it could be a bitwise match of a certain number of arbitrary bits from the hash of a block, matched with arbitrary bits from the coin address. Full bytes just make it easier to understand.
The Proof-of-Connection transactions will include the hash of the entire blockchain up to and including triggering block, signed with the address’s private key, in order to tie the PoC transaction with the block that triggered it and also to prove that the address is running a full node. Due to the random nature of this process, all stakeholders will be incentivized to keep their nodes up and running all the time. If they want to shut down for a few days, they will simply not earn stake during that time.
Disclaimer: I am not a coin developer, and I do not believe that I have the resources to develop a coin built on this idea myself, if it should turn out to be a good idea. If somebody wants to do so, or wants to adapt an existing PoS coin to use some of these features, you are free to do so, although I would appreciate some kind of compensation.