Currency system for Tycoon on Planetlab

Proposal 1v0.1: Closed, 2-sided economy with proportional budget allocation and Shapley or proportional reallocation.

I will describe each piece of the virtual currency system in the context of its purpose.

Fairness:

People can generally agree with proportional share as a fair way to split up resources. Therefore, every user will start with the same amount of money. In this definition, a user is defined as an individual person as opposed to an entity like an administrative site (i.e. a University). Introducing transferrable currency (which would be akin to transferrable CPU scheduling weights on Planet-lab today) increases the benefit of having multiple identities (i.e. susceptible to Sybil attacks or things of that nature). We will re-use the existing Planet-lab solution of requiring that each user identity be authenticated (with e-mail identity and a full name, etc.), and creating a barrier to entry by charging real currency for each site's account, and a limit on the number of Tycoon accounts a site can have.

Incentives for growth / self-sustaining structure:

The people who contribute more resources to the system should be rewarded. The reward will be in the form of currency. In the current Tycoon currency structure, people have an incentive to contribute nodes to Tycoon, because those that do can actually get more currency back to supplement their initial balance.

Fiscal policies:

A user's balance is replenished on some timescale (maybe no more frequently than one month), and people can ask for more if they really need it. Note that this loophole of asking for more isn't so bad, because you can probably make some argument about social incentives. We'll need this just to fine-tune what the right timescale is anyway.

Discussion: In short, the proposal described above is basically like the existing Tycoon currency model, with the exception of introducing periodic redistribution. One can describe this system more formally as a closed, 2-sided economy with periodic redistribution based on Shapley value (the Shapley value roughly describes how to split up a pie among cooperating actors, who have each contributed to the baking of the pie). To see why, here's a theoretical version with a generalized version of the scheme described above.

Let balancei be the initial balance of user i. All users receive the same initial balance. Then sum balancei over all i, will be the total amount of currency in the system at time t, BALANCE(t). Money flows in the system like the current Tycoon model. However, every month (parameterizable), money is redistributed among users based on a calculation similar to the Shapley value. Each user's contribution to the "system" is calculated, and those who contributed more get a larger share. A raw calculation would be something like the following. At time t, we assign balances for time t+1 as follows:

  • valuei(t) = [sum of user i's contributed resources that were used] - [sum of user i's resource consumption when there is congestion]
  • VALUE(t) = sum valuei(t), over all i.

Note that it's possible for valuei(t) <= 0. What makes this possible to support in something like Planetlab is the slack of available/idle machines. For users who do not contribute, they have an incentive to reduce the congestion they induce (second component of valuei(t)). What makes this possible in soemthing like Mirage or Tycoon is having a set of dedicate infrastructure nodes that are owned by some benevolent third party (i.e. Intel Berkeley or HP, respectively). So, define:

  • resourcej(t) = sum of consumed resources on resource j for time period t.
  • ALLRESOURCES(t) = sum resourcej(t) for all j
  • COMMUNITY_RESOURCES(t) = sum resourcej(t) for all j owned by benevolent third party to be shared
  • OWNED_RESOURCES(t) = ALL_RESOURCES(t)-COMMUNITY_RESOURCES(t)

Also, valuei(t) <= 0 breaks one of the fundamental assumptions of the Shapley value. So, considering the population that has a positive contribution, we can define:

  • value_positivei(t) = max(0, valuei(t))
  • VALUE_POSITIVE(t) = sum value_positivei(t), over all i.

Let N be the number of users. Then we calculate:

  • balance_i(t+1)= BALANCE(t) * [(1/N * COMMUNITY_RESOURCES(t)/ALL_RESOURCES(t)) + (value_positivei(t) / VALUE_POSITIVEi(t) * OWNED_RESOURCES(t)/ALL_RESOURCES(t))]

In words, this means user i's balance is the sum of their proportional share of free resources and their contribution. The proposal above (v0.1) suggests that we make all resources FREERESOURCES, but we can classify nodes as SOLDRESOURCES instead. This change would require being able to measure resource consumption and giving each user of a site (1/Nth) of the site's contributed resources. In effect, this also can help curtail the problem of a site creating too many users, since the initial balance of each user for a site will decrease as the number of users grows.

Note also that it is possible to also factor in negative externalities, and provide negative balances, since the externalities a user causes might outweight their prop-share and contribution. A description of that variation is coming.

Proposal 2v0.1: Closed, 2-sided economy with proportional budget allocation and savings tax reallocation.

What we had in Bellagio, we had a closed-loop economy with money eventually flowing back to the users of a site. Each site was assigned an initial budget proportional to the number of contributed nodes to Planet-lab. We had something similar in Mirage, except the currency assignment is proportional and flows back to all users similarly.

Questions

  • Why not just weight everybody by their contributions, so no currency.
  • break down of incentives and effects on users based on different Bi(t-1) and vi(t-1)/V(t)
  • For Proposal1, there might be awkward transition periods between months -- maybe have a savings tax that slowly drains a bank account to the proper amount over a time period.