I'm new here, but I think you all might be interested in my proposal of an alternative to proof of work. This may be something someone else has thought of before (I'm pretty new to all this). It's sort of similar to proof of burn. I call it Proof of Ticket.
This is trying to get away from doing meaningless calculations like the current 'proof of work' system that btc uses. It also tries to increase the number of full nodes and the ability of just about anyone to mine if you have some coins.
This is more of an auction and then a lottery using work to draw the lottery. Proof of Auction+Lottery+Work ? I don't have a good name for it really, so I'll stick with proof of ticket because you need to buy a ticket to win.
Here's how it would work...
In order to get the privilege of 'mining', nodes would have to buy a ticket by sending coin to a specific 'ticket wallet'. This is the auction portion. The auction happens because each block can only have a certain number of tickets sold. In order to mine, you have to buy a ticket for that block. The price of a ticket is set by the market, but the number of tickets are limited by the protocol so a miner has to bid to get a ticket.
Here's how the auction works:
1 - Miners/Nodes send a transaction to the ticket wallet. If this transaction is accepted by the network, then the Node hashes it. This hash is the node's 'ticket' for that block. The price of the ticket is the number of coins that were sent to the ticket wallet.
2 - All the transactions sent to the ticket wallet make up the 'ticket ledger.' The ticket ledger has an upper limit for the number of tickets sold (this could be variable from block to block, but for a specific block it is set). We will call the upper limit N.
3 - Each node verifies and decides whether or not to accept a given ticket into their version of the ticket ledger. They are incentivized to accept their own ticket and all other highest priced tickets up to the ticket ledger limit. But their ticket must be big enough to be accepted by other nodes into their ledger, otherwise their 'winning' block will be rejected.
How to win the lottery/work and mine the block after buying a ticket:
1 - The node verifies regular transactions on the network and adds them to the block and transmits them on the network.
2 - The node verifies ticket transactions and adds them to the block only if their price at least as large as the Nth largest ticket price. A rule for time may come in here, like newer tickets with the same price as an older ticket are rejected.
3 - The node hashes the block and compares the hash to the ticket (the hash of the ticket transaction) and if these hashes are 'similar enough'. Then that node wins and their block is accepted by the network if they also had a ticket in the top N.
4 - If not, then the node waits for the next transaction which changes the block and hashes again and checks that hash against the ticket hash. etc. (Transactions act as the nonce)
5 - If the node's ticket is bid out of the top N, it is then dropped from the network, it must bid more to get back in on the action.
Rather than hashing as fast as possible with an arbitrary nonce, this creates a sort of lottery+work. You can only win the lottery by buying an auctioned off ticket and by doing the work. Each new transaction acts as the nonce.
For a block to be accepted, it must satisfy these consensus criteria:
1 - The block will contain a set number of ticket sales (aka verified transactions sent to the master wallet). There can be fewer ticket sales in the block but not more.
2 - A node's winning block will only be accepted if the verifying nodes have already verified and accepted into their version of the ticket sales the ticket from the winning node. (This ensures anyone who could win, will have 'skin in the game')
3 - Only a full node can win. Only tickets/blocks from full nodes will be accepted.
4 - No one has control over spending from this wallet except the winning node. (ie. all spending is rejected from this wallet, by nodes, unless it comes from the winning node of the block.)
What you get when you win...
Once a block is mined, instead of entering a new set of coin into the node's own address, it will transfer all the coin in the master address to the node's own address. It will also receive all the transaction fees. In addition, there could be some sort of scheme to create new coin here, but not necessarily. The new coins could also be divided up and go to all the nodes that lost as a sort of consolation prize to balance out the distribution of coins as the supply increases.
Each transaction acts as global nonces. Each new transaction provides a new opportunity to win. This removes a great deal of the meaningless hashing used to secure the network. Each node should therefore be able to run on a regular computer. The main constraint would be bandwidth and network latency because this would greatly increase the number of transactions/second.
Challenges:
1 - For this to work, you'd need to be able to make it relatively difficult/expensive for someone to set up the full node and easy to enforce the full node to play requirement. Otherwise, someone who just won the block, could turn around and set up enough nodes to buy a majority of the tickets and then dominate the network with their winnings.
2 - The bandwidth would be eaten up by the ticket sales. May not really be a problem with fast internet speeds that we have now.
3 - The blockchain would be huge, so there'd need to be aggressive pruning or another solution to manage that.
Benefits:
1 - This would incentivize maintaining full nodes. There would be no separation between nodes and miners. Even nodes that don't win the auction would continue to verify and propagate transactions preparing for the next block. Maintaining a full node would be incentivized and this would increase the strength of the whole network.
2 - There's an incentive for each node to include every verified transaction and to be very fast to verify and transmit transactions because they then get another opportunity to win. More computational power would be devoted to the network rather than arbitrary hashing.
I hope this makes sense! Feedback? Comments?
Also, I have no intentions of developing/implementing this as I don't have the skills. So, if you run with it and get it implemented I just ask for a bunch of free coins so I can become a node