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

Divisible contracts #403

Closed
erights opened this issue Jan 10, 2020 · 3 comments
Closed

Divisible contracts #403

erights opened this issue Jan 10, 2020 · 3 comments
Assignees
Labels
duplicate ERTP package: ERTP Zoe package: Zoe
Milestone

Comments

@erights
Copy link
Member

erights commented Jan 10, 2020

#399 reminds me of something I had never previously explained. There's a lack of expressiveness of our current higher-order contract notion via invites that we should eventually repair. I'll tell the story as a variation of our normal Alice-Bob-Fred coveredCall example.

In the normal example, Alice writes a call by making an atomic offer, say for 100 shares of Q for 300Ag, where Alice's 100Q are placed in escrow, overing the call. Because Alice's offer is atomic, Bob is invited only to exercise the full call or none of it. Likewise, Bob can only sell all or none to Fred, unless Bob goes to the trouble of making yet another derivative contract. (The fact that Bob can, means that we don't currently have any ultimate lack of expressiveness. But we need something less awkward.)

Say instead, that Alice's offer is expressed as a multiple -- 100 time 1Q for 3Ag each. The same 100Q are placed into escrow. The multiples representation is just a clever way to express divisibility with quantization and without roundoff hazard. Multiply rather than divide.

Bob could still be invited to participate in this contract as a whole. However, what if invites could have the kind of fungibility suggest at #399 ? Then, the invite given to Bob could be a fungible quantity of 100 identical invites, each to a corresponding division of Alice's escrowed Q. Bob could sell a portion of this to Fred.

Given that contracts are stateful programs, it is tricky to figure out how to divide the behavior of an arbitrary stateful program into independent slices that can operate on disjoint quantities. I have some thoughts on this, but it's a long way from a working plan. Generalizing invites this way will take some research.

@erights erights added the ERTP package: ERTP label Jan 10, 2020
@katelynsills katelynsills added the Zoe package: Zoe label Jan 28, 2020
@katelynsills
Copy link
Contributor

We decided that this is not by Beta and not by Mainnet.

@erights
Copy link
Member Author

erights commented Feb 9, 2021

We decided that this is not by Beta and not by Mainnet.

That makes sense to me.

@dckc
Copy link
Member

dckc commented Jun 15, 2022

we seem to be tracking this as #5540 now

@dckc dckc closed this as completed Jun 15, 2022
@dckc dckc added the duplicate label Jun 15, 2022
@Tartuffo Tartuffo added this to the Mainnet 1 milestone Jul 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate ERTP package: ERTP Zoe package: Zoe
Projects
None yet
Development

No branches or pull requests

5 participants