Incentivizing full nodes through Fastlanes: a thought experiment

in #steemit8 years ago (edited)

This short article proposes and analyzes fastlanes: a mechanism to incentivize full nodes. It concludes with why this mechanism likely will not work.

Fastlanes try to incentivize the operation of full nodes by providing non-monetary rewards to full nodes. Non-monetary in this sense means that the reward is not transferable. A fastlane reward, as the name suggests, is the ability to send a transaction (within a set amount of bytes) for free, and the miner still gets paid for putting the fastlane transaction in the block. Fastlanes are rewarded to addresses when a solution to a secondary POW system is found. The secondary POW system uses a transaction and an address as inputs. The details proposed in this paper are surely not optimal implementations of fastlanes.

Despite fastlanes not being able to be sold, they still have economic value. Fastlanes decrease the transaction fees to 0 for a given transaction (that is less than X bytes in size). The value of a hash when used for fastlane POW is less than the value of a hash for any cryptocurrency POW:

payoutFastlane * P(ValidFastlane) < payoutBlock * P(ValidBlock)

The feasibility of the above probability is discussed more in section: Problems With Fastlanes.

Fastlane POW

A solution to the following two equations wins a fastlane:

hash(signature(scrypt(publicKey))||transaction) < fastlaneTarget

where fastlane is only a valid fastlane in a block if

scrypt(publicKey) < publicKeyTarget

The public key is put through a POW function because we want to incentive nodes to use different transactions not different public/private key pairs. Scrypt is chosen over a hash because scrypt is memory intensive. Hash could also be chosen, but scrypt is more asic resistant than hashes — the variance of the speed of a calculating a hash is larger over the set of mining hardware. The variance aspect is important because winners of fastlanes should be fairly distributed among full nodes. Scrypt is also chosen because memory speeds are more positively correlated to disk-read speeds than are memory speeds are to hashing speeds. In order to incentivize nodes to change transactions rather than change public keys, the solving POW with public_key_target must take longer than a disk-reading and loading into RAM a new public key. If reading a disk ranged between 2–100 times longer then a scrypt function then the public_key_target would have to be at least 7 leading 0’s so that it was more than 100 times harder to make a new valid public key than it was to use a different transaction.

Note: the reason that the script(publicKey) is signed by the private key (associated with the public key) is because otherwise fastlanes could be generated for people by powerful miners and there would be a fastlane market.

Data and Blockchain Representation

Fastlanes as a data structure are a (public key, transaction) pair and a signature of that hash of that pair. There are a few different ways to represent fastlanes on a blockchain. One way is for a fastlane to be attached to a valid transaction. If a node Alice that mines a fastlane wants to send money to Bob, Alice creates a new transaction referencing an unspent transaction output and includes the fastlane in the outputs. The fastlane will give the miner of the block the average transaction fee of all the transactions in the block.

Another way to represent a fastlane is to treat it as a separate transaction entirely. When a fastlane is found, it is added to the blockchain immediately (after N blocks, the fastlane becomes invalid if not added to the blockchain). Then to spend use the fastlane, a node will reference in the inputs as in the first example. The difference from the first example is that in this second case is that the fastlane is on the blockchain immediately and therefore difficulty adjustments to fastlane_target can be calculated more accurately. The cost is more data on the blockchain: a fastlane transaction + signature + another signature to spend the fastlane.

Problems with Fastlanes

Malicious Full Nodes

Full nodes have a perverse incentive to stop sharing valid blocks because they are in competition with everyone other full node in finding fastlanes. Full nodes have an advantage in earning fastlanes if they have more transactions than their competing full nodes do.

Fastlanes Lack Rational Incentive

Fastlanes rely on the inequality:

payoutFastlane * P(ValidFastlane) < payoutBlock * P(ValidBlock).

This inequality is needed to keep miners putting computer power into mining. However, if this inequality is satisfied, then rational full nodes should want to put any hash power they have into mining because it has a higher expected value. This is a serious problem with fastlanes, and may kill the idea entirely.

Slower consensus times

Even if nodes do not withhold the sharing of blocks until a fastlane is found, they might still slow down block propagation by checking for fastlanes at the same time as the consensus check is done. When a block is received, the full node will perform N*T operations (where N=amount of acceptable public keys they have and T is transactions) after checking the validity of each transaction.

Manipulating fastlane rewards

Miners choose what transactions to put in blocks. Unless it is mandatory to put at least X fastlanes in every block, there needs to be a mechanism that incentivizes miners to put fastlanes in blocks that cannot be manipulated.

Here is a naive method of fastlane implementation and how it could be manipulated by miners. Say fastlanes created new coins that paid miners the average fee in the block + some small amount of coin. This would surely incentivize miners to put fastlanes in a block. However, it would also incentivize them to create dummy transactions with very high fees so that any fastlane transactions in the block create an absurd amount of new coin.

Another naive approach is:

new coins created per block = mining reward +(fastlanes in block * (average transaction fee in last N blocks + small number))

Even if “small number” could be defined in the code in a way that cannot be manipulated and is consistent with price swings of the currency, a miner could simply use his computing power to generate thousands of fastlanes, fill the block, with fastlanes and reap large rewards.

Sort:  

BuzzFeedBen Ben Smith tweeted @ 11 Jan 2017 - 00:32 UTC

Here's the note I sent to @buzzfeednews staff this evening https://t.co/OcAloWzVzb

Disclaimer: I am just a bot trying to be helpful.

This post has been ranked within the top 80 most undervalued posts in the first half of Jan 13. We estimate that this post is undervalued by $2.88 as compared to a scenario in which every voter had an equal say.

See the full rankings and details in The Daily Tribune: Jan 13 - Part I. You can also read about some of our methodology, data analysis and technical details in our initial post.

If you are the author and would prefer not to receive these comments, simply reply "Stop" to this comment.

Following you!

Congratulations @nettijoe96! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 3 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!