Bitcoin Forum
May 25, 2024, 02:42:01 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Proposal for a new Proof-of-Stake mining system with Proof-of-Connection  (Read 1133 times)
bitbadgerPoS (OP)
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
April 01, 2014, 11:18:34 PM
 #1

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.
bitbadgerPoS (OP)
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
April 01, 2014, 11:25:30 PM
Last edit: April 03, 2014, 03:26:03 AM by bitbadgerPoS
 #2

[Reserved for clarifications/questions/etc.]

Based on feedback from mhps on the Peercointalk forum, who pointed out the potential for blockchain bloat due to having substantial numbers of PoC transactions in each block, I have added this:

Quote
Let the expected-time-to-check-in (ETTCI) scale with the number of non-PoC transactions included in the last 24h of blocks.  Create the algorithm such that the target is no more than half of the transactions in a given block are PoC transactions.  If the coin is lightly transacted and there are lots of stakeholders, then maybe the ETTCI might scale to 7 days or even longer.  But as non-PoC transactions get more numerous, the ETTCI will become faster.

Refinement of the original idea by removing PoC transactions from the blockchain and consolidating them into the coinbase transaction, which will pay out PoS earnings to all who sent valid PoC transactions:

Quote
Each block mined will distribute PoS earnings to ALL addresses who sent PoC transactions which would have been included in that block.  So the PoC transactions aren't added to the block explicitly, but the addresses will receive outputs from the coinbase transaction which will be the payout of PoS earnings, based on the Stake-Days held by each address.  The Stake-Days of those addresses are also reset to 0, since their Stake has been paid out.  The actual miner of the block will also receive earned PoS + all transaction fees from that block, and their Stake-Days will also be reset to 0.

In this way, you earn your stake earnings by staying connected, even if you never have enough stake accumulated to actually mine a block.  This also consolidates the PoC transactions into a single summary Coinbase transaction, which will hopefully cut them down in size.  This ensures that everybody receives their stake payouts on a consistent and frequent basis.

Explanation of rationale, based on reply to ppcman on Peercointalk forum:

Quote
Firstly, an unstated assumption to my proposal is that I think this would have to take place with a pure PoS coin, i.e. not Peercoin but maybe a derivative.  Given this, I want to get away from the word "minting" for pure PoS coins.  It implies that there is a fundamental difference between PoW mining and PoS minting.  There really isn't, although I can see how in a hybrid PoW/PoS coin like Peercoin, you would want to make the distinction, and "minting" is fairly clever.

The goal of Proof-of-Stake is to replace Proof-of-Work as a system to create and secure the blockchain.  What is the goal of mining in PoW coins?  Part of it is distribution of new coins (especially when a coin is first launched), but the major part is securing the blockchain.  Similarly, the goal of PoS should not be to earn "interest" on holdings, but to create a secure blockchain without using ridiculous amounts of electricity.  The PoS rewards should be enough to incentivize mining/minting.  Given this, I actually think that the PoS earning rate in most coins is too low.  For one thing, I think that all transaction fees in the mined block should go to the miner, regardless of their initial stake value.  Yes, this would allow a PoS block miner to earn more coinage than he had to start with, if he had a small amount of coins to begin with and included a lot of transactions into his block.  This is just the same as if someone were solo-mining in Bitcoin and found a block and received 25 BTC as his reward.

My proposal is trying to fix the problem of not enough people running active nodes, and not enough incentive to PoS mine.  I don't care about the people that want to keep their coins locked away in cold storage.  The more copies of the blockchain that are out there, and the more nodes that are propagating transactions, the better for the health of the network.

I think that the idea of people being able to store up large amounts of stake is flawed, and is part of what my proposal solves.  People need to be transacting with their coins, and if they're not transacting with their coins, then they at LEAST need to be helping to secure the network.  The only way for a coin to really be valuable is for it to be useful.  And if they are incentivized not to spend their coins for 30-90 days, IMO that is a perverse incentive.  I'm not saying that we need to punish people for holding their coins like the demurrage folks, but people should NOT be rewarded for simply owning coins, holding onto them, and connecting to the network sporadically and infrequently.  That is pretty much like charity to the lazy.  People should be rewarded for doing things that help the network, and rewards should be withheld when they do things that do not help the network.  Keeping their coins in cold storage and never connecting to the network is not beneficial to the network.
d5000
Legendary
*
Offline Offline

Activity: 3920
Merit: 6388


Decentralization Maximalist


View Profile
April 01, 2014, 11:48:36 PM
 #3

Good ideas.

A similar concept to your "proof-of-connection" proposal is used already by Timekoin (http://timekoin.org). There, you generate coins only if you don't disconnect from the network for more than 2 hours. But Timekoin doesn't combine it with PoS, so its usage with PoS would be novel.

I had recently a similar idea to your "stake-days" approach. I am about to refine it and present it to the Peercoin community. You can search for "cold locked transactions" for another similar approach.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
bitbadgerPoS (OP)
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
April 02, 2014, 01:55:37 AM
 #4

Good ideas.

A similar concept to your "proof-of-connection" proposal is used already by Timekoin (http://timekoin.org). There, you generate coins only if you don't disconnect from the network for more than 2 hours. But Timekoin doesn't combine it with PoS, so its usage with PoS would be novel.

I had recently a similar idea to your "stake-days" approach. I am about to refine it and present it to the Peercoin community. You can search for "cold locked transactions" for another similar approach.


Thanks for the info, I hadn't heard of Timekoin.  I started an account over at peercointalk and posted this idea over there.   Maybe it will get some good feedback.
Spoetnik
Legendary
*
Offline Offline

Activity: 1540
Merit: 1011


FUD Philanthropist™


View Profile
April 02, 2014, 06:48:44 AM
 #5

interesting best of luck but the old saying "keep it simple stupid" applies..
a system should be fairly easy to explain to noobs how the currency works if not you have problems.
so i think what your saying is too complicated maybe BUT you may be on to something with a new and improved POS related type of system though.
So i am not trying to discourage you but just consider keeping it simple and thinking about how you would explain it people..
anyway this is what i like to see, people trying to think of a better way to do this stuff and not just cloning garbage non stop.

FUD first & ask questions later™
WayToGo
Sr. Member
****
Offline Offline

Activity: 322
Merit: 250



View Profile
April 02, 2014, 10:49:48 AM
 #6

Timekoin features + POS would be a killer concept.
Will be watching this space closely.
bitbadgerPoS (OP)
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
April 03, 2014, 03:21:49 AM
 #7

I have come up with an improvement to the proposal which will prevent some of the blockchain bloat resulting from the PoC transactions.

Each block mined will distribute PoS earnings to ALL addresses who sent PoC transactions which would have been included in that block.  So the PoC transactions aren't added to the block explicitly, but the addresses will receive outputs from the coinbase transaction which will be the payout of PoS earnings, based on the Stake-Days held by each address.  The Stake-Days of those addresses are also reset to 0, since their Stake has been paid out.  The actual miner of the block will also receive earned PoS + all transaction fees from that block, and their Stake-Days will also be reset to 0.

In this way, you earn your stake earnings by staying connected, even if you never have enough stake accumulated to actually mine a block.  This also consolidates the PoC transactions into a single summary Coinbase transaction, which will hopefully cut them down in size.  This ensures that everybody receives their stake payouts on a consistent and frequent basis.
hashman
Legendary
*
Offline Offline

Activity: 1264
Merit: 1008


View Profile
May 11, 2014, 06:59:23 PM
 #8


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.


Proof of Connection looks inherently vulnerable to sybil attacks.  Further, one could park the stake on a service which does the "check in"  and avoid running the node anyway.  You are trying to patch a tiny hole in the PoS system.  There is a much bigger hole: the explicitly unfair distribution of new currency, something that bitcoins are supposed to help us avoid. 

 
bitbadgerPoS (OP)
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
May 12, 2014, 11:57:48 PM
 #9


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.


Proof of Connection looks inherently vulnerable to sybil attacks.  Further, one could park the stake on a service which does the "check in"  and avoid running the node anyway.  You are trying to patch a tiny hole in the PoS system.  There is a much bigger hole: the explicitly unfair distribution of new currency, something that bitcoins are supposed to help us avoid. 

 

The PoC transactions themselves will be fully signed transactions which verify that the node checking in holds the private key for the stake being confirmed.  So I think this might take care of the sybil attack concerns, but if not, please clarify. 

If people want to send their coins to a service to earn stake for them, they can, but this could apply to any PoS coin and requires trust, much like sending coins to a centralized exchange/wallet service.  There is no way to prevent this from happening, so the goal would be to simply make running a full node "worth it" versus having to trust a third party to manage your coins for you.  I would think that for most cryptocurrency users, the security benefit of managing your own coins and private keys is clear.

Distribution is not addressed here.  In my ideal implementation, it would be distributed according to an "airdrop" mechanism which honors the holdings of existing "fairly distributed" cryptocurrency holders, with a particular emphasis on Bitcoin holders but also possibly including others such as Litecoin, Dogecoin, Peercoin, Protoshares, etc.  But in the end, if this ever gets implemented, I will 99.9% likely not the one who will be doing the implementing, so my comments on distribution would be fairly worthless.
nagatlakshmi
Hero Member
*****
Offline Offline

Activity: 616
Merit: 500



View Profile WWW
May 13, 2014, 01:54:21 AM
 #10

Great idea. Is there any coin with this?

freigeist
Hero Member
*****
Offline Offline

Activity: 1107
Merit: 534


View Profile
May 13, 2014, 04:53:53 AM
 #11

Great idea. Is there any coin with this?

Hello

Well there is something similar that is in development.
Maybe you can check this thread if you wan to have more info: https://bitcointalk.org/index.php?topic=426303.0

You can check the link under "1st development plan" for more details.
There is no white paper yet but it will be available soon after the alpha test software release.

Also if you have more question feel free to ask in the thread.

Brangdon
Sr. Member
****
Offline Offline

Activity: 365
Merit: 251


View Profile
May 26, 2014, 01:20:20 PM
 #12

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.
So coins are not fungible? A coin with 10 stake-days associated with it is worth more than a coin with only 1 stake-day?

Quote
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.
That isn't enough to prove the address is running a full nodes, is it? A node could keep track of the blockchain, but not relay any transactions, so it wouldn't be benefiting the network (and would have lower bandwidth costs).

Bitcoin: 1BrangfWu2YGJ8W6xNM7u66K4YNj2mie3t Nxt: NXT-XZQ9-GRW7-7STD-ES4DB
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!