Summary: A solution is proposed to generate provable “value” which can be compared between individuals. The solution uses a smart contract to implement staking for no reward as Proof of Sacrifice. Given the staked token belongs to a Proof of Stake protocol, the exact amount of sacrifice can be calculated as the protocol staking reward foregone over time. Using sacrifice as a proxy for “value”, an individual is able to prove the things they care about in a quantifiable way. Sacrifice is measured in distinct named areas called “buckets”. A query in the smart contract allows for the comparison of individuals with regards to their “value” for certain things. General use cases for comparison include allocation and screening. A limited supply ERC-20 token will be distributed randomly in a fixed quantity over time to stakers. It can be used to create new buckets and call the comparison query.

Intro

People care about things. Some people care about a lot of things while others only care about a few and some people care more about a thing than other people. How does a person prove how much they care about something? How does a person prove that they care about anything? Maybe they use data - examples of things they’ve done or seen or created in the past. Perhaps they’re willing to pay more for something than other people. This is how people currently show what they care about and how much they care about them. How do we compare people using this? We cannot. Those examples of things done or seen or created may not have been available to everyone, the person willing to pay more for something may only be willing as they have more money to spend. A person who cares the most about something could be someone who hasn’t done or seen or created anything and/or is constrained to only spending a relatively small amount. In this way “value” cannot be compared between individuals and if it is, is not accurate nor equitable.

Sacrifice

What is spending money? Sacrifice of spending power? Giving up the ability to buy something else in the future or at present because you place more “value” on the thing being purchased. So is the person willing to pay more for something therefore willing to sacrifice more. Is “value” proportional to sacrifice? What if we can prove sacrifice? What if proved sacrifice can be quantified? Would this be an accurate proxy for “value”? But if proved sacrifice is proportional to spending power then those individuals with greater spending power would be able to prove greater sacrifice but with, as previously mentioned, less “value” placed on something. Therefore the quantity of sacrifice is still not perfectly comparable. What if individuals were compared on another axis of sacrifice, the ratio of the current sacrifice compared to all other sacrifices made by the individual. Perhaps the individual who values something the most will have the largest proportion of their total sacrifice being sacrificed for this thing. The ratio of sacrifice can be compared between individuals. What if the method of proving sacrifice was open and available to everyone. We would have a proxy for “value” which anyone could generate and which could be accurately compared quantitively and if desired, equitably.

We propose a solution using smart contracts that can prove sacrifice and allows for comparison queries between addresses. Using sacrifice as a proxy this system can compare individuals based on what they “value”.

Proof of Sacrifice

To prove sacrifice an address will deposit cryptocurrency into the smart contract with the ID of the bucket in which they want to collect their proof. A “bucket” is a collection of sacrifice in the name of a particular thing.

web3-bucket-3x.png

A collection of buckets in which an address has attained values for sacrifice would represent the things which the individual values.

web3-buckets.png

A single bucket will be created initially and any buckets after that can be created by the users of the system since it is they themselves who know what they “value” and therefore would sacrifice in the name of.

Sacrifice is proved by staking cryptocurrency for no reward. With the use of Proof of Stake (POS) as a consensus mechanism by major blockchains, there now exists a clear and defined opportunity cost to not staking the protocols tokens. Liquid staking further outlines this cost with the ability to stake tokens and not have them be “locked” or illiquid, but able to be used in a selection of applications. Given a POS blockchain, the exact quantity of tokens sacrificed over time can be calculated from the blockchain’s staking return rate. For example the rate of return for ETH staking on Lido is currently ~5%. This can be used to calculate a monetary value for sacrifice and as a proxy, “value” too.

Comparison

A comparison query will be callable in the smart contract and allows “value” comparison between addresses. The query will be designed for general use but can be fine-tuned using the input parameters to fit multiple use cases.

sol-compare-2.png

An example of how a compare query would work:

Given an array of buckets and an array of bucket weights, an addresses’ weighted bucket function is calculated:

$f(x) = a_0x_0 + a_1x_1 + a_2x_2 + a_3x_3 + ... + a_nx_n$

where bucket weights ${\sum_0^n}a_n=1$ ; $x_n$ is sacrifice in bucket n.

For a comparison on pure quantity, where _amountWeight = 1, $f(x)$ would be calculated for each address in the address array. Addresses would then be ranked in descending order and returned.

For a comparison on pure ratio, where _ratioWeight = 1, the ratio of the sacrifice in the highest weighted bucket to total weighted sacrifice would be calculated for each address.

If _bucketWeights[0] is the largest weighting, then ratio = $\frac{a_0x_0}{a_0x_0 + a_1x_1 + a_2x_2 + a_3x_3 + ... + a_nx_n}$

If the ratio between addresses is the same, the ratio for the next greatest weighting is calculated and compared between these addresses. This process is repeated until no two addresses have the same ratio or the array of weightings is exhausted. Addresses are ranked in descending order and returned.

For the case where _ratioWeight, _amountWeight > 0, a ranking is generated using both pure ratio and pure amount and then combined to form a weighted ranking which is returned.

Use Cases

Now we have a callable function which can compare individuals’ “value” on a single thing or across multiple things with different weights, and we can compare them purely on quantity or ratio or a mix of both. What are some possible use cases?

  1. Allocation

    A smart contract is allocating a supply of scarce tokens such that demand is greater than supply. Instead of using a pricing mechanism to determine who is willing to pay more for the token and allocate to them, it calls a comparison query on our smart contract and allocates the tokens in order of who has the highest “value” for the token. This may not mean there is a bucket of measured sacrifice for the token, but that demonstrated “value” in some other thing or things is used as a proxy for “value” of the token. This process would be public, transparent and more equitable.