Bitcoin Forum
September 25, 2024, 08:12:41 AM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Alternate cryptocurrencies / Altcoin Discussion / Re: [ANNOUNCE] Bitcoin Cooperative Proof-of-Stake - CPoS on: May 26, 2014, 05:12:48 AM
Hi,

I have come up with what I believe to be at least a partial solution to the PoS problem:

https://bitcointalk.org/index.php?topic=553414.msg6025343#msg6025343

The gist of it is that everybody's Stake is reduced to 0 on a frequent and random basis.  If the node is provably connected to the network at the time that it is randomly called up, it will receive its proportional distribution for its Stake.  If it does not prove itself to be connected to the network at such time, its Stake is still reset to 0, but it does not receive any payment.  For this reason, I call it Proof-of-Connection.

This effectively puts an upper limit on the amount of Stake that any one address could reasonably accumulate.  Presumably, this would prevent against the "if you have enough Stake, you can cheaply re-write history" attack.
2  Alternate cryptocurrencies / Altcoin Discussion / Re: Proposal for a new Proof-of-Stake mining system with Proof-of-Connection on: May 12, 2014, 11:57:48 PM

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.
3  Alternate cryptocurrencies / Altcoin Discussion / Re: Proof of stake instead of proof of work on: May 09, 2014, 06:47:22 AM
I have proposed a solution which I believe would eliminate some of the problems with existing PoS systems.  I call it Proof-of-Connection.

https://bitcointalk.org/index.php?topic=553414

Basically, this system requires "ping" transactions to be submitted to the network at random intervals.  A wallet node must be connected to the network in order to receive the trigger for these transactions, and to be able to send them.  Upon successful inclusion of these PoC transactions into a block, that address's Stake-Days are reduced to 0, but their stake earnings are paid out to them in the coinbase transaction for that block.  Of course, mining a PoS/PoC block will also reset your Stake-Days to 0.  Most importantly, your Stake-Days will ALSO be reduced to 0 if you DON'T send the PoC transaction in a timely manner.  So you will not be able to let your coins lie dormant and and let your Stake-Days accumulate without being connected to the network.  You MUST be actively connected in order for your stake to accumulate.

I believe that this effectively prevents the Stake Accumulation problem.  No matter what, your Stake-Days will be reduced to 0 on a regular, random basis.  This should require a true 51% coin holdings in order to successfully pull off a 51% attack.

Furthermore, the PoC concept can be used to implement a rough time-synchronization enforcement.  In this paradigm, the timestamp can be moved forward a small amount, but never backwards.  The timestamp of the most recently generated block will serve as a reference to all connected nodes.  By sending the PoC transactions, nodes indicate their acceptance of this timestamp, and start counting up from that point.  It is understood that transactions not matching the current timestamp within X allowed variance, will be discarded.  It is understand that new blocks not matching the current timestamp within X allowed variance, will be discarded.  This is needed because of the way that PoS mining works.  The nonce used for block generation is based on the timestamp.  One nonce per second.  If people are able to manipulate time and create blocks with timestamp (nonce) far out into the future, it essentially turns into a PoW coin, because people could increment the seconds an arbitrary length of time until they find a block.  If their hardware is very fast, it would be easy to mine block after block.  A basic sanity check on the timestamp prevents this from occurring, and the only way to implement a basic timestamp sanity check is to require some level of clock synchronization.

If two competing blocks with roughly the same timestamp are generated, the one with more Stake-Days Destroyed will be chosen.  (Note, as is discussed in the linked thread, Stake-Days are not destroyed when simply sending coins in a standard transaction, as in Peercoin.)

A further refinement (not yet posted in the linked thread) is that the successful miner/minter of a block will obtain transaction fees based not only on the standard transactions, but also on the PoC transactions included in their block.  This incentivizes them not to discard PoC transactions.  These fees are true transaction fees for standard transactions, but the PoC transaction fees are generated in the coinbase transaction.  Yes, this means that somebody with a tiny amount of coins could potentially earn a multiple of their current holdings through transaction fees.  However, they would have to be very lucky, as their Stake-Days will always be very small, thus raising their effective PoS mining difficulty.
4  Alternate cryptocurrencies / Altcoin Discussion / Re: Proposal for a new Proof-of-Stake mining system with Proof-of-Connection on: April 03, 2014, 03:21:49 AM
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.
5  Alternate cryptocurrencies / Altcoin Discussion / Re: Proposal for a new Proof-of-Stake mining system with Proof-of-Connection on: April 02, 2014, 01:55:37 AM
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.
6  Alternate cryptocurrencies / Altcoin Discussion / Re: Proposal for a new Proof-of-Stake mining system with Proof-of-Connection on: April 01, 2014, 11:25:30 PM
[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.
7  Alternate cryptocurrencies / Altcoin Discussion / Proposal for a new Proof-of-Stake mining system with Proof-of-Connection on: April 01, 2014, 11:18:34 PM
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.
Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!