Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
simondlr opened this issue Jun 15, 2018 · 10 comments
Open

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

simondlr opened this issue Jun 15, 2018 · 10 comments

Comments

@simondlr
Copy link
Collaborator

simondlr commented Jun 15, 2018

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

  • You can buy SOUL with ETH on a curved bond.
  • Any art sold by by a specific generator gets deposited into the communal pool, buys SOUL and stakes it on the generator's own curved bond.
  • The entry curve should be logarithmic.
  • The generator curves should logarithmic.
  • Use BANCOR as formula needs to adjust purely on the pool reserves.

ORIGINAL POST

  • The soul tokens serve as a claim on the bonded ETH to keep the artonomous alive.
  • Any art sold through the auction contract gets deposited into the bond.
  • The entry curved should be an exponential curve.
  • The exit curve is percentage-based. It allows a claim on all outstanding ETH in the bond proportional to the amount you are removing from supply.
  • The soul tokens are used to stake on the hash of the software currently generating new art.
@simondlr simondlr changed the title Implement Curved Bond Artonomous Soul Tokens Implement Curved Bond Artonomous Soul Tokens Contract Jun 15, 2018
@simondlr
Copy link
Collaborator Author

@okwme
Copy link
Contributor

okwme commented Jun 18, 2018

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
Copy link
Collaborator Author

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 simondlr changed the title Implement Curved Bond Artonomous Soul Tokens Contract Implement Curved Bond For SOUL Tokens Jun 29, 2018
@simondlr simondlr changed the title Implement Curved Bond For SOUL Tokens Implement Curved Bond For SOUL Tokens & Generators Jun 29, 2018
@simondlr
Copy link
Collaborator Author

Updates top post to reflect changes.

@mzargham
Copy link

mzargham commented Jul 6, 2018

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
Copy link
Contributor

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
Copy link
Collaborator Author

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
Copy link

mzargham commented Jul 10, 2018 via email

@tarrencev
Copy link
Collaborator

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

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

@BenSchZA
Copy link

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

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

For example, taking equation above:

@simondlr simondlr changed the title Implement Curved Bond For SOUL Tokens & Generators OLD: Implement Curved Bond For SOUL Tokens & Generators Jun 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants