artonomous / artonomous-mvp

A Self-Owning, Self-Sustaining, Self-Improving Autonomous Artist Using the Ethereum Blockchain
158 stars 21 forks source link

OLD: Implement Curved Bond For SOUL Tokens & Generators #4

Open simondlr opened 6 years ago

simondlr commented 6 years ago

In order to give the autonomous artist life, benefactors can purchase soul tokens based on a curved bond. https://medium.com/@simondlr/tokens-2-0-curved-token-bonding-in-curation-markets-1764a2e0bee5.

UPDATED & EDITED: 30 June 2018

ORIGINAL POST

simondlr commented 6 years ago

https://github.com/oed/bonding-curves

okwme commented 6 years ago

Can you explain more what you mean by the exit is percentage based?

With the current oed, if the Eth from sales goes to the poolBalance, then the calculation will end up leaving extra Eth untouchable. If it was to use the bancor curve then there could be an exponential curve of mx2 where m will change depending on the amount of Eth in the poolBalance. The lower the poolBalance, the greater m would be and the more volatile the price. The greater the poolBalance, the lower m would be and the more stable the price.

Translating the Bancor reserve terminology back into a curve focused metric would be good for market signaling though.

simondlr commented 6 years ago

Ah, I see what you mean. The ETH changing the curve price would be helpful.

I was thinking that the outbound curve (sell) was just percentage based. If there's 100 ETH in the pool and 100 soul tokens outstanding and you sell 1 soul token, you 1% of the pot.

However, if it doesn't affect the curve (what my intention was), then it essentially means that will kind of awkwardly rebalance. It will profitable to buy and then immediately sell a soul token.

I like it better if the curve is directly affect only based on the ETH in the pool. It's better that way. So it seems a BANCOR curve would be better in this scenario. +1

simondlr commented 6 years ago

Updates top post to reflect changes.

mzargham commented 6 years ago

Bancor Curve is one of a class of curves that enforce an invariant. The invariant is a property which is always preserved when the action is taking.

For example your withdraw function e_out = s_burn * S_total/E_pool preserves the ratio E_pool/S_total

Let E=E_pool Let S = S_total Let e = e_out Let s = s_burn

Let E+ = E_pool after the withdraw Let S+ = S_total after the burn

You have E+/S+ = (E-e)/(S-s) = (E-s E/S)/(S-s) = E(1-s/S)/(S(1-s/S) = E/S so E/S is always preserved.

I suspect that you intuited this because you want the withdrawal to feel "fair"

@simondlr if you can get a sense of what property you want the bond mechanism to preserve, we can just derive the associated curve. I think its important for us to understand how the curve for bonding relates to the curve for withdrawing as well.

if we define bonding as s_out = B(e | E,S) and withdrawing as e_out = W(s | E,S) then we need to have understanding of compositions

given any (E,S)

bond e first E' = E+e S' = S + B(e | E,S) withdraw s immediately S'' = S + B(e | E,S) -s E'' = E + e - W(s | E+e, S + B(e | E,S) )

Do you want these to cancel out? Is it okay if you would get less if you acted immediately in order to ensure actors bond with the intent to wait for art sale ROI?

You can also examine the reverse composition and both compositions with intermediate income in Ethereum. The point I am making is we need to know what properties you want the bonding curve to have. Then we can just derive one that has them (or prove it cannot be done).

markusbkoch commented 6 years ago

Do you want these to cancel out? Is it okay if you would get less if you acted immediately in order to ensure actors bond with the intent to wait for art sale ROI?

IMO the actions of minting SOUL and burning it immediately after should cancel out. Same thing with burning followed by immediate minting. In other words, after both actions the user should end up with the same amount of SOUL/ether they began with (except for the gas spent on the transaction, obviously).

simondlr commented 6 years ago

IMO the actions of minting SOUL and burning it immediately after should cancel out.

I agree, yes.

There are however scenarios where no minting would result in getting a higher token price if the reserve grows from an art sale.

If PRICE = ETH_POOL/(SOUL_SUPPLY*RATIO) then if an art sale comes in, everyone's tokens increases in value.

mzargham commented 6 years ago

Agree, the cancel out assumes no intermediate state change. We can define the requirement with regard to “immediately” = “no intermediate state change”

Of course if for any reason the system state evolves due any process other than a Bond or Withdraw Ether (which both respect this curve), then they will not just cancel out. I think this means we’ll have the same linear bonding curve on both the Bond and Withdraw mechanisms. Makes intuitive sense to me and counters the argument that its a Ponzi because all net profits from bonding and withdrawing later come from the art auction process not from preying on later investors.

On Jul 10, 2018, at 11:40 PM, Simon de la Rouviere notifications@github.com wrote:

IMO the actions of minting SOUL and burning it immediately after should cancel out.

I agree, yes.

There are however scenarios where no minting would result in getting a higher token price if the reserve grows from an art sale.

If PRICE = ETH_POOL/(SOUL_SUPPLY*RATIO) then if an art sale comes in, everyone's tokens increases in value.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/simondlr/artonomous/issues/4#issuecomment-403975049, or mute the thread https://github.com/notifications/unsubscribe-auth/AJ-wni8hTx5rm8WGEuhwJ4eaK4boPkvuks5uFR9RgaJpZM4UqKgN.

tarrencev commented 5 years ago

Heres an implementation of curve-bonded tokens I put together using Bancors method:

https://github.com/tarrencev/curve-bonded-tokens

BenSchZA commented 5 years ago

@mzargham and others ~ you might find this thread and tool useful for LaTeX type math formatting: https://github.com/github/markup/issues/897 & https://www.codecogs.com/latex/eqneditor.php

Not officially supported, but does make the math easier to follow :slightly_smiling_face:

For example, taking equation above: