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

Applications with Configurations #17

Closed
1 task
jakehemmerle opened this issue Jul 19, 2023 · 4 comments
Closed
1 task

Applications with Configurations #17

jakehemmerle opened this issue Jul 19, 2023 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@jakehemmerle
Copy link
Contributor

jakehemmerle commented Jul 19, 2023

This is the tracking ticket for Configurations.

From the context of usability and browser support, users should be able program/config instances, which allow a user to to reuse other's programs and modify configurations for them by simply filling out the program's associated configuration, and then setting the config for that instance on-chain with their program modification key.

This requires a few changes throughout the whole stack

Core

Already talked with Jesse about this, but basically we want to add program 'instances', followed by Program/Config instances.

Programs

SDK

There should be a method that allows the user to be able to modify the config of the program instance. @JesseAbram please tag the PRs


Older notes but feel weird about deleting:

This type of architecture allows for:

@ameba23
Copy link
Contributor

ameba23 commented Jan 8, 2024

@jakehemmerle would be great if we can put together a description of exactly how this would work using the access control list example. As for me its not clear at what point the template ACL program gets combined with the configuration.

Im guessing that when registering or updating we are going to store the template program pointer, together with the configuration binary blob, and then at the point of requesting a signature, the programs runtime evaluates the program together with configuration data, input data, and auxiliary data.

So in the case of the ACL, deserialization of the allowed / denied addresses etc, would happen on every program evaluation rather than only when registering / updating. Is this what you are imagining?

@jakehemmerle
Copy link
Contributor Author

@ameba23 this is just a draft! I should have indicated that. I will be flushing this out into a set of actionables.

@jakehemmerle
Copy link
Contributor Author

@ameba23

Im guessing that when registering or updating we are going to store the template program pointer, together with the configuration binary blob, and then at the point of requesting a signature, the programs runtime evaluates the program together with configuration data, input data, and auxiliary data.

Exactly. I'll write the details in a ticket soon.

So in the case of the ACL, deserialization of the allowed / denied addresses etc, would happen on every program evaluation rather than only when registering / updating. Is this what you are imagining?

Also, exactly. I'm currently imagining the config as stringified JSON that gets uploaded onto the chain, and during each evaluation, the program parses that string (which is the Config) into addresses, bool, etc and then evaluates the signature request with that data. This makes it easy for users to update a Config from the SDK without having to recompile a program.

@jakehemmerle
Copy link
Contributor Author

Complete per #56

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants