Circles - Universal Basic Income

koeppelmannkoeppelmann Member Posts: 51
"Circles" will be a currency created from basic incomes only. In the system outlined in the following, new money is constantly distributed to every account participating in the system. The money in every individual account are uniquely identifiyable and only gain in value if the account connects to other accounts and joins groups. This incentivizes every user to limit themself to one account.

latest project draft here: http://piratepad.net/kjTwIzn5u3
previous discussions here: https://forum.ethereum.org/discussion/1598/basic-income-circles-reputation-market-based-approach-to-solve-the-identity-problem-sybil-attacs
  1. Everyone can create a new account
  2. An account will constantly generate an income (1000 units per week)
  3. The rate at which the income is generated will increase by g=2% per year
  4. A new account starts with the income that will be generated in the next 3 months
  5. One month of income is for the account owner - the other two are reserverd for people who trust this account, it is called the trustee reward.
  6. Accounts can trust one another. This will allow both accounts holders to exchange their coins 1:1.
  7. Trust can be revoked by both parties.
  8. If an account trusts another account it is credited with half of the remaining trustee reward.
  9. Arbitrary groups can be created.
  10. Groups can verify accounts as members.
  11. Groups can exclude accounts as members.
  12. All members can convert their private money into group money (1:1 exchange rate). This exchange is irreversible.

//data structure
Dictionary -> tuple
accounts[owner] =  (time_created, money_spent, trustee_reward)
Dictionary -> Set
groups[owner] =  [member1, member2 ,..]
Dictionary -> Set
trustees[account] = [account1, account2, ...] // each relationship need only be saved once
Dictionary - > Dictionary -> int
balance[owner][foreign_account] = amount
Int 
years = 0

//pseudo code

create_account():
    trustee_reward = (1000*12) * 1.02 ** years
    accounts[message.sender] = (block.time - 1month, 0, trustee_reward)

add_account(account1, account2):
    //somehow check that both accounts signed the message
    if int(account1) > int(acount2):
        trustees[account1].append(account2)
    else:
        trustees[account2].append(account1)
    //credit and update the trustee reward
    balance[account1][account2] = accounts[account2][3] / 2
    balance[account2][account1] = accounts[account1][3] / 2
    accounts[account2][3] /= 2
    accounts[account1][3] /= 2   

revoke_trust(account):
    if int(message.sender) > account:
        trustees[message.sender].remove(account)
    else:
        trustees[account].remove(message.sender)

send_money(amount, currency, receiver):
    if balance[message.sender][currency] >= amount:
        balance[message.sender][currency] -= amount
        balance[receiver][currency] += amount

send_new_income(receiver, amount):
        //todo factor in 2% growth rate
        income_generated = (block.time - accounts[message.sender][0])/ weeks * 1000
        if income_generated - money_spent > amount:
            money_spent += amount
            balance[receiver][currency] += amount 

exchange_money(account1, account2, amount)
    if message.sender == account1 or message.sender == account2:
        if account2 in trustees[account1]:
            if balance[account1][account1] >= amount:
                if balance[account2][account2] >= amount:
                    balance[account1][account1] -= amount
                    balance[account2][account2] -= amount
                    balance[account1][account2] += amount
                    balance[account2][account1] += amount

create_group()
    groups[message.sender] = Set()

add_group_member(account)
    groups[message.sender].add(account)

remove_groupt_member(account)
    groups[message.sender].remove(account)

convert_into_group_money(group, amount)
    if message.sender in groups[group]:
        if amounts[message.sender][message.sender] >= amount:
           amounts[message.sender][message.sender] -= amount
           amounts[message.sender][group] += amount 

Design rationale
The main purpose of this project is to establish a world wide basic income.

Requirements are:
a. Decentralization
A world wide basic income is something so powerful that no single entity in the world should have control over it in order to preclude manipulation. Particularly, there should be no central authority that desicdes which person can get a basic income and which person cannot.

b. Smooth growth
The solution should support a smooth growth. If the only two equilibria are "no one participates" or "all people participate" then it is nearly impossible to change to the "all" equilibrium, especially if no central entity is involved. In the approach presented here, groups can grow locally, even starting at a single family level. However, there are no constraints on subsystem growth. All subsystems can merge into a global system at any time.

c. Resilliance
The system can support something like a world currency. However - if this currency fails at some point, it is not the whole system that would collapse. Instead, the system would fall back on the group level underneath, for instance a country group. Even if the group currencies should fail at one point (because they accepted too many memerbs that just consume their income and don't provide any goods or services for their income) it can still fall back on the personal level where the value of a currency is closely related to the personal relationship with the other person.

d. Incentives for organic growth



Detailed discussion.

6:
Transitive Transactions
If A and B trust each other, and B and C trust each other, then A and C can pay each other as long as B is liquid. If A is a customer and C is a merchant, A could send money to C. The network will automatically send a-coins from A to B and b-coins in exchange for the a-coinsfrom B to C.


3:
The growth rate g = 2%.
The growth rate g determines the ratio between the total coin supply and the income per month. This number is subject to discussion. It should be chosen to maximize the value of the income.
Note that a high growth rate (inflation rate) destroys the capability of the currency as a store of value. Consequently, the potential dollar market cap is a function of the growth rate: market cap = f(g). (The market cap of the currency is a function of g that most likely will decrease sharply for bigger g like 5% or 10%). g should be chosen to maximize g*f(g).

The growth rate can be seen as a capital tax that finances the basic income. People with exactly the average wealth would pay the same amount of money in fees as they would get from their UBI.

9-12:
Groups
Groups are necessary to bring more stability into the system. Holding coins of a specific person always carries a certain risk. In some sense, the value of theses coins is always backed by the person. If the person dies or more broadly speaking the trust in this person sinks, these coins may become worthless. However, as long as a person is member of a group, the money can be converted irreversibly into group money. It is in the responsibility of the groups themselves to keep them tight on the one hand to not dilute the value, but on the other hand have a positive network effect. This makes it interesting for merchants to accept such group money.




FAQ:
Q: Can I create 100 fake accounts that all trust each other and abuse the system?
A: You can create them but this will not create value. As long as nobody else trusts these accounts they can only exchange money with each other, rendering all the money worthless.


Q: Why should I add someone else to my trust network?
A. Your trust network is what gives your personall currency value beyond what you are willing to provide for this currency. Lets say 100 people are in your trust network, that means that 100 people are accepting your currency. Even for those who do not accept your currency directly, may accept it indirectly since they know they can use it to get goods or services from 100 people. Accepting money is all about network effects.
However, on the other hand accepting a new person bears some risk. If this person turns out to be a fake account you will end up having his worthless money and the scammer can spend your money. To make the incentive higher to be among the first to accept an new account nevertheless, the trustee reward was introduced. However, accepting a completely new account will and should be backed by a personal relationship of the two participants that ensures that the new person participates honestly in the system. If they don't the only person who loses money is the person who wrongly trusted them.



Q: What is the money of an account worth?
A: In theory it should be max(value(group1), value(group2), value(group3), ... , value(connection1), value(connection2), ...). Note that only connections to liquid people count. As long as the memberships in the groups and the connections are stable (or expected to be stable) there should be no incentive to convert money into group money.
This concludes in the assumption that it is not necessary to convert your money into group money or to exchange money with one of your trusted connections. Just having the ability to do so makes your money at least as worthy. This could stabilize the system and allow user A to connect to user B despite the fact that user B's coins are worth less. This connection could raise the value of user B's coins without changing the value of A's coins. However, this stops if B tries to abuse this connection, but in this case, A can cancel the trust relationship.
From time to time users could lose their connections because they create panic. This is the unliklier the better the user is connected. This strengthens the incentive to concentrate all your social connections/ reputation into one accout.

Q: How much of the group money is yours?
A: The amount that you've converted. Only difference is that now it's no longer tied to you as an individiual. This means that if you do something bad, the group cannot do anything to revoke your group money. However, they can kick you out of the group.

With groups exchanges are mono directional with individuals. Only individual => group, NOT group => individual. However, exchanges are is bi-directional between groups. So Berlin <=> SF is OK.


#lang:en

Comments

  • SmithgiftSmithgift Member Posts: 64
    Thinking about this slowly.

    I do like the constant inflation without demurrage. It may lead to less theoretical lack-of-currency issues.

    In this version, can a given group control how much a member converts? I.e. only so much per day, and no more than 1% of the current group's total currency in circulation? If group membership is controlled by contracts, this is theoretically possible anyway, though practically difficult.

    On a more philosophical subject, something like this would would require large-scale social support. Possibly more important than the code enforcing the contract would be the stated unenforceable social rules to not abuse that code. For example, unless it is socially agreed that one person has one account, I think it's impossible to construct a real-world game-theoretical situation where the optimal strategy is for everyone to just have one account. This much is obvious, I admit. But what specific rules?

    Is it OK for the relatives of a dead person to keep using that account. What if your account is stolen and you need a new one? What if you want a new account because you're starting over in your life? What people will accept as an answer to these questions might differ greatly by individual or culture, and the system (social and code) should take into account that some people may have entirely different views on key parts. What would it mean if one country allowed "dead" relatives continue to accumulate units while another in the same system disallowed it?

    I think at the least there should be a way for an account to mark itself as inactive. An inactive account won't keep getting income, but its coins continue to exist.
  • koeppelmannkoeppelmann Member Posts: 51
    Good thoughts! There will be lots of unwritten rules: Are parents allowed to create a account for their baby? What if someone creates multiple accounts and after one year gives the account to someone else who has not yet an account.

    Regarding the groups: I have not thought yet about rules or restrictions. Currently my thinking was: as long as an account a is part of the group: anyone who own money of a can convert it to group money unlimited.
  • koeppelmannkoeppelmann Member Posts: 51
    Two more principals:
    In my opinion e is very important distinguishes from a lot of existing basic income projects that do not aim on this universality.

    d. Incentives for organic growth
    The trust reward should help to give a strong incentive to bring new people to the system. Adding new accounts to your circle is to some degree a risk. To balance the incentives and enable growth we introduced the trust reward. It creates common incentives for both the newcomer and the people already established in the network: Through the acknowledgment of the trust relationship, the newcomer gains network credibility and the first people to place their trust in the newcomer benefit financially. The risk inherent to trusting a newcomer are only outweight by the benefits if the newcomer is beknown to the people who place their trust in them. If the newcomer does not turn into a viable member of the network the trust placed in the newcomer was misguided and the trust results in a financial loss.



    e. Universality
    Some people argue that Bitcoin was a one time shot. A currency has to be scarce to some degree to function as such. A single digital currency can have features that ensures the scarcity of this currency - however, if other digital currencies become successful, scarcity as a characteristic of digitial currencies overall becomes questionable. This is especially true for a basic income. We strongly believe that a basic income currency can only be successful if it is the only one that is commonly used. This is why we keep this proposal as general as possible. The only free parameter crucial to the system is the growth rate g and needs to be discussed carefully. The trust reward is not strictly necessary, however, it does not affect the long term equilibria of this approach.
  • koeppelmannkoeppelmann Member Posts: 51
    2 things: I want to create a logo/design for "Circles". Currently I would use www.99designs.com to get on. Does anyone have experience with this? Is there something I should be aware of?

    The second think I would like to announce is this meetup: http://www.meetup.com/de/EthereumSiliconValley/events/223221435/ where the idea (or hopefully already a prototype) of circles will be presented.
  • RadivisRadivis Member Posts: 6
    It's interesting to see that so many different cryptocurrency based UBI schemes seem to have sprung up in the last few years. Only time will tell which approach will have the greatest success.

    I find your approach to be relatively similar to the uCoin system, but Circles has more emphasis on personal coins, and perhaps stronger Sybil protection. This might be the greatest strength of your system, but at the same time the plurality of coins might make actually using Circles coins very cumbersome. The problem of trusting other coins becomes primarily personal when accepting the coins of a new user. It's my task to trust the identity and uniqueness of a new user, if that user hasn't been trusted by others before. And how would I be able to verify that the user in question has been trusted before? This is probably where group coins become important. But this only shifts the problem of trust to the group level. Smaller and less known groups may have a hard time to gain trust, so most users will only trust the coins of large and well known groups. This means that some level of currency centralization may be required to make the system usable enough for day to day use.

    At that stage, it is the task of the big groups to implement Sybil protection, probably by cooperating with ID verification services.

    What I like about the Circles approach is its flexibility. The system can be used on a small peer-to-peer scale between people who know each other personally, but it can also be used with large groups as intermediaries between people who don't know each other.
  • koeppelmannkoeppelmann Member Posts: 51
    edited June 2015
    @Radivis

    First of all: I agree very much with your analysis!

    The most substantial difference to UCoin is that in UCoin you can become member of different groups - so your total income is the sum of all the group incomes. With Circles you can as well be member of different groups but you only get one income. You can convert this income into money of every group you are member of. So the value of your income it basically the value of the most valuable group you are member of.

    The part e) Universality tries to argue why this is better. Another way to look at it is that people in Ucoin are mostly interested in joining as much as possible groups while with circles the main interest is making the money of a existing group as valuable as possible aka providing goods and services for the group money.
    Radivis said:

    The problem of trusting other coins becomes primarily personal when accepting the coins of a new user. It's my task to trust the identity and uniqueness of a new user, if that user hasn't been trusted by others before. And how would I be able to verify that the user in question has been trusted before?

    I expect people that people will trust someone who is completely new to the system only if they know him very good personally. (family, close friends)

    Groups may have different strategies:
    One could by the ucoin strategy (web of trust) based on the personal connections between people. A second could be: all employees of a company, all habitants of a village, electronic passport, ....

    Radivis said:


    What I like about the Circles approach is its flexibility. The system can be used on a small peer-to-peer scale between people who know each other personally, but it can also be used with large groups as intermediaries between people who don't know each other.

    Thanks! I what is important to me is, that it can start small and local and can grow global without a reset. I called it: b. Smooth growth
    Radivis said:


    Smaller and less known groups may have a hard time to gain trust, so most users will only trust the coins of large and well known groups.

    In my opinion groups don't have to be trusted by users. Only by merchants that are willing to accept the group currency. Users can join a group without risk. The merchants will have their own groups or will trust as you said bigger groups like: Berlin citizen (that indeed will be centralized to some extend)
  • NevidNevid Member Posts: 2
    How would a group be formed in that system? Who controls which individuals the group trusts?
  • koeppelmannkoeppelmann Member Posts: 51
    A group can have any set of rules. It can be centralized (one or a few deiced who can join). It could require the majority of the existing group members to vote for a new member. It could be some web us trust ruleset where a specific number of already trusted members would add a new one and much more.

    But thanks for the question - I will write a blogpost on how groups could look like soon.
  • NevidNevid Member Posts: 2
    Another question would be, from what volume of money gets the inflation-rate g derived?

    In the current state everybody could create numerous accounts generating worthless money. I don't think you would want to count this into the volume of money that gets inflated, do you?
  • RadivisRadivis Member Posts: 6


    In my opinion groups don't have to be trusted by users. Only by merchants that are willing to accept the group currency. Users can join a group without risk. The merchants will have their own groups or will trust as you said bigger groups like: Berlin citizen (that indeed will be centralized to some extend)

    Ah, so what you are basically saying is that the really big intermediaries are the merchant groups? Like this:

    Individual A -> small group -> merchant group -> individual B

    A would transform her personal coins to group coins which are accepted by a merchant group. Now A can trade with B via the merchant, because the merchant trusts the coins of "small group". So, individual B might decide to trust "small group", too, because the merchant grants that trust.

    Alternatively, this might not be enough for individual B and he would only accept merchant group coins. In that case, the merchant could accept group coins from A, then exchange the group coins into merchant group coins, and then transfer those merchant group coins to B.

    This means, that as seller, you would be mostly concerned about whether the merchant (group) you want to trade with is trustworthy. The merchant group itself would be mostly concerned about whether intermediate groups are trustworthy. And those groups would need to find out whether individuals wanting to join them are trustworthy.

    Optionally, more intermediaries can be included, which creates longer (unidirectional) paths of trust.

    In the end, there may be about a dozen merchant coins which are more or less universally accepted in the system.


  • koeppelmannkoeppelmann Member Posts: 51
    agreed. And I realized that there are a few decision to make:
    Radivis said:


    A would transform her personal coins to group coins which are accepted by a merchant group. Now A can trade with B via the merchant, because the merchant trusts the coins of "small group". So, individual B might decide to trust "small group", too, because the merchant grants that trust.

    I thought until now that if A is member of small group and small group ist member of merchant group anyone who hold A money could transform it into small group and anyone who holdes small group could transform it into merchant group money. Therefore A money should have at least the value of merchant group.

    The only reasons to actually do a conversion into group money would be if you fear that the member might be excluded from a group.

    You (I guess unintentionally :)) proposed a slightly different solution where only the member himself could do the conversion of its money. The version should be considered as well. Do you see advantages/disadvantages for those two versions?

    A very similar questions comes to the member 1:1 relations. Lets say A <-> B and B <-> C. Lets say Person D holds A money. D wants to make a payment to C. Is D allowed to convert its A money into B money without any actions of A or B required? Or do at least A have to agree.


    In my opinion the Circle money can be seen as a common. It can be useful to everyone but it might be possible to abuse it. Elinor Ostrom has done some interesting research on commons and came up with 8 rules how to protect them. I think it might be a good idea to design the cirecles system in a way that this 8 rules are covered by the cirecles rules. However, I need to think more about it to decide what path to go on the open questions. Maybe you can help :)
  • RadivisRadivis Member Posts: 6

    I thought until now that if A is member of small group and small group ist member of merchant group anyone who hold A money could transform it into small group and anyone who holdes small group could transform it into merchant group money. Therefore A money should have at least the value of merchant group.

    But for that to be true, users would need to know what groups individuals are members of. Until now, I didn't think that this was required of the system. People might prefer not to reveal what groups they are members of.


    The only reasons to actually do a conversion into group money would be if you fear that the member might be excluded from a group.

    There's also the issue that doing large transactions with lots of different coins would be quite cumbersome. For that purpose, converting money to merchant coins would be much preferred, at least before doing large transactions.


    You (I guess unintentionally :)) proposed a slightly different solution where only the member himself could do the conversion of its money. The version should be considered as well. Do you see advantages/disadvantages for those two versions?

    I think everyone should be able to convert coins, at least if group membership relations are transparent. The main reason is the one stated above: Ease of doing large transactions.


    A very similar questions comes to the member 1:1 relations. Lets say A <-> B and B <-> C. Lets say Person D holds A money. D wants to make a payment to C. Is D allowed to convert its A money into B money without any actions of A or B required? Or do at least A have to agree.

    I'm not sure about what you mean here exactly. What is the "A <-> B" relation? Is it a trust relation, or merely a trade, or coin exchange? And what do you mean be conversion of money of individuals? I thought conversion was limited to individual coins -> group coins and group X coins <-> group Y coins. Do you want to add some additional mechanism for conversion of coins of individuals?


    In my opinion the Circle money can be seen as a common. It can be useful to everyone but it might be possible to abuse it. Elinor Ostrom has done some interesting research on commons and came up with 8 rules how to protect them. I think it might be a good idea to design the cirecles system in a way that this 8 rules are covered by the cirecles rules. However, I need to think more about it to decide what path to go on the open questions. Maybe you can help :)

    This seems to be an intriguing connection. But it definitely needs more elaboration, because it's far from being obvious. I hope for being helpful, but I'm busy with a lot of other stuff, so don't expect me to solve every problem you stumble upon ;)

  • koeppelmannkoeppelmann Member Posts: 51
    Radivis said:


    But for that to be true, users would need to know what groups individuals are members of. Until now, I didn't think that this was required of the system. People might prefer not to reveal what groups they are members of.

    Well, to me the plan was that all group memberships are stored in a ethereum contract, thus they are public.
    Radivis said:


    There's also the issue that doing large transactions with lots of different coins would be quite cumbersome. For that purpose, converting money to merchant coins would be much preferred, at least before doing large transactions.

    This could be handled on a higher level in the software stack. In the wallet people use currencies that could be converted into a group money can be shown as group money. I try to come up with some mockups. One view I imagine is: just to see how much % of the money in your wallet is accepted by the merchant/other person you are dealing with.
    Radivis said:


    I'm not sure about what you mean here exactly. What is the "A <-> B" relation? Is it a trust relation, or merely a trade, or coin exchange? And what do you mean be conversion of money of individuals? I thought conversion was limited to individual coins -> group coins and group X coins <-> group Y coins. Do you want to add some additional mechanism for conversion of coins of individuals?

    Sorry, I was unclear hear. A <-> B should be a trust relationship. And yes, conversion was the wrong word. I meant "exchange". So the question is if A and B have a trust relationship (and thus agree to exchange there coins 1:1): is now everyone allowed who hold A coins to get B coins from B with the A coins or is only the person A allowed to do so.
    Radivis said:


    I hope for being helpful, but I'm busy with a lot of other stuff, so don't expect me to solve every problem you stumble upon ;)

    Indeed, all comments and questions are very helpful! I will elaborate on the commons comparison here: http://www.meetup.com/de/EthereumSiliconValley/events/223221435/ I will make sure that it will get recorded.
  • koeppelmannkoeppelmann Member Posts: 51
    Groups could have a set of different additional sybil defend mechanisms: one could be a facial recognition challenge like described here: https://www.reddit.com/r/ethereum/comments/3bz8uv/facial_recognition_as_part_of_identityantisybil/

    By the way: I just set up a new discourse form for an in detail discussion on circles: http://forum.aboutcircles.com/

    Would be happy to see you guys look by.
  • grizmoblustgrizmoblust Member Posts: 1
    edited July 2015
    [quote] Individual A -> small group -> merchant group -> individual B [/quote]

    Sounds unfeasible to me. And it's too complicated. What you are introducing is a man in the middle, who reaps the profits. The man in the middle usually have a lot of junk coins and is always the dire needs to get valuable coins such as bitcoins. This can also introduce monopoly exchanges.

    Economics is not a rocket science. Just invest smart. You don't need 'trust' coins. This can be attainable by user reputation system.

    I'm going watch and see how it unfolds.
  • superresistantsuperresistant Member Posts: 4
    Remember why money has been invented : to facilitate exchanges between people outside of your group. Money has to be trusted and exchanged with people you don't know without any friction.
    As I understand, Circles is the exact contrary : it can only be traded in a circle of people that know each others.
    Then Circles cannot be used as money.
  • koeppelmannkoeppelmann Member Posts: 51

    As I understand, Circles is the exact contrary : it can only be traded in a circle of people that know each others.

    It is different - circles can be used as long as there is a trust connection. So you don't have to trust the people you are interacting with but you need to trust someone who trusts someone, who finally trusts them. That is not different with current money.
  • superresistantsuperresistant Member Posts: 4

    As I understand, Circles is the exact contrary : it can only be traded in a circle of people that know each others.

    It is different - circles can be used as long as there is a trust connection. So you don't have to trust the people you are interacting with but you need to trust someone who trusts someone, who finally trusts them. That is not different with current money.
    Interesting...
    So 3 level of trust minimum ?
    trust someone who trusts someone who trusts them

    What if I am part of a community and I start trusting anyone even if I don't know them or worse, with the intention of cheating the system ?
  • koeppelmannkoeppelmann Member Posts: 51
    edited August 2015

    So 3 level of trust minimum ?

    Ok - I have to be more specific. In the description I call "trusting" if two people agree BOTH to exchange there currency 1:1 or in general accept the currency of the other for payments. If you want to make a payment to a merchant it is not necessary that you have a direct trust relationship (but possible, so direct trust would work as well). It is sufficient if there is a chain of trust between you and the merchant. You would send your money to person A. A sends his money to person B and so on until someone sends its money to the merchant (money that the merchant accepts. Note that this is done all automatically without the need of A, B, ... to interact. And without any fees because all involved had agreed prior to a 1:1 exchange rate.


    What if I am part of a community and I start trusting anyone even if I don't know them or worse, with the intention of cheating the system ?

    That would only harm you because if you tust S and s is a fake account S can indeed you with his money to that community that trust you. However ONLY until you run out of fund. S would send money to you and you would send money to the community. This would stop as soon as you run out of money. In the end you end up with worthless S coins but to the community no harm is done.
  • mawomawo Member Posts: 1
    edited August 2015

    As I understand, Circles is the exact contrary : it can only be traded in a circle of people that know each others.

    It is different - circles can be used as long as there is a trust connection. So you don't have to trust the people you are interacting with but you need to trust someone who trusts someone, who finally trusts them. That is not different with current money.
    It seems like you're trying to build ripple and a web-of-trust backed currency to use as an ID system. It's a brilliant idea. Will you combine it with a trust-line system and a path finding algorithm ?


    See this comment about building web of trust currencies on ethereum, https://forum.ethereum.org/discussion/comment/12035/#Comment_12035


    And look at Ryan Fugger's work,



    Ryan Fugger's original whitepaper,
    http://archive.ripple-project.org/decentralizedcurrency.pdf
Sign In or Register to comment.