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

Extensibility from proxied kernel library contracts #41

Open
maraoz opened this issue Mar 5, 2018 · 4 comments
Open

Extensibility from proxied kernel library contracts #41

maraoz opened this issue Mar 5, 2018 · 4 comments
Assignees
Labels
kind:research Research on a topic before implementing it topic:kernel Kernel registry management
Milestone

Comments

@maraoz
Copy link
Contributor

maraoz commented Mar 5, 2018

Allow users to extend the provided functionality of the kernel library contracts

@maraoz maraoz added kind:enhancement An upgrade or a new feature that improves the system topic:kernel Kernel registry management labels Mar 5, 2018
@maraoz maraoz added this to the v0.1.0 (Kernel MVP) milestone Mar 7, 2018
@spalladino spalladino added kind:research Research on a topic before implementing it and removed kind:enhancement An upgrade or a new feature that improves the system labels Apr 10, 2018
@spalladino spalladino changed the title Proxy Factory: extensibility Extensibility from proxied kernel library contracts Apr 10, 2018
@spalladino
Copy link
Contributor

Given a user who wants to use a contract from a zOS standard library (aka KernelInstance), they can only request a proxy to the implementation and use it via composition in their contract.

Research options for allowing a user to write a contract that somehow extends from an implementation already deployed, so the user does not need to redeploy the code from the base class.

@fiiiu fiiiu self-assigned this Apr 18, 2018
@fiiiu
Copy link
Contributor

fiiiu commented Apr 18, 2018

See code in https://github.com/zeppelinos/labs/tree/master/extensibility-study for an evolving approach.

@maraoz maraoz modified the milestones: v0.1.0 (Kernel MVP), v0.2.0 Apr 21, 2018
@maraoz
Copy link
Contributor Author

maraoz commented Apr 21, 2018

moved to v0.2.0, what's done is enough for MVP

@frangio
Copy link
Contributor

frangio commented Jun 15, 2018

I'm very skeptical that this will result in a usable feature. It would be bending the semantics of Solidity too much, and I think we should stick as closely as possible to them.

For example, inheritance normally allows you to call the internal functions of your parents. This simply cannot be implemented with an upgradeable parent, because calls from the contract to its ugpradeable parent will necessarily be mediated by a delegatecall, and this doesn't allow to use memory to pass arguments, which is how the internal calling convention works.

@facuspagnuolo facuspagnuolo modified the milestones: v2.0.0, Backlog Sep 6, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:research Research on a topic before implementing it topic:kernel Kernel registry management
Projects
None yet
Development

No branches or pull requests

5 participants