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

feat: new govdao pattern with context #2380

Merged
merged 21 commits into from
Jul 8, 2024

Conversation

moul
Copy link
Member

@moul moul commented Jun 18, 2024

This PR introduces a new pattern for arbitrary govdao proposals using Gno code using contexts. It involves wrapping the provided closure with a system that configures a context.Context with a field indicating that the execution occurs in the context of an approvedByGovDao proposal. This opens the door to a new ACL system, not based on PrevRealm(), but on a context-based "certification" system.

I believe this pattern makes sense to exist; however, here are some drawbacks I can see:

  1. context.Context is not yet needed (no goroutine support), and we may eventually never need this package depending on how we implement goroutines internally. (h/t @thehowl)
  2. context.Context is used like an environment variable, which introduces implicitness—something we usually try to avoid to make Gno a very explicit language. Explicitness brings “simplicity” and “verifiability.”
  3. The usual Go idiomatic way of using context is to pass it as the first argument. If this becomes more common, it will result in more contracts having exposed functions that are not callable by maketx call (though they can be called with maketx run or via an import).

Depends on #2379
Related to #2386

moul added 2 commits June 18, 2024 13:17
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
@moul moul self-assigned this Jun 18, 2024
@github-actions github-actions bot added the 🧾 package/realm Tag used for new Realms or Packages. label Jun 18, 2024
@moul moul changed the title dev/moul/govdao blog feat: new govdao pattern Jun 18, 2024
moul added 4 commits June 18, 2024 14:32
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
@moul moul changed the title feat: new govdao pattern feat: new govdao pattern with context Jun 18, 2024
@moul moul mentioned this pull request Jun 18, 2024
7 tasks
Signed-off-by: moul <94029+moul@users.noreply.github.com>
@moul moul marked this pull request as ready for review June 18, 2024 16:36
@moul moul requested review from a team as code owners June 18, 2024 16:36
@moul moul requested review from jaekwon, thehowl and zivkovicmilos and removed request for a team June 18, 2024 16:36
@moul moul enabled auto-merge (squash) June 19, 2024 14:02
@moul moul disabled auto-merge June 19, 2024 14:03
moul added 4 commits June 19, 2024 19:44
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
moul added 2 commits July 2, 2024 19:36
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Copy link
Contributor

@ajnavarro ajnavarro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM after two minor changes.

examples/gno.land/p/demo/context/gno.mod Outdated Show resolved Hide resolved
examples/gno.land/p/gov/proposal/proposal.gno Outdated Show resolved Hide resolved
moul and others added 3 commits July 3, 2024 13:11
Co-authored-by: Antonio Navarro Perez <antnavper@gmail.com>
Co-authored-by: Antonio Navarro Perez <antnavper@gmail.com>
@moul
Copy link
Member Author

moul commented Jul 4, 2024

@ajnavarro, the changes have been applied.

Copy link
Member

@zivkovicmilos zivkovicmilos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good 💯

I've left a few comments 🙏

I love that I now don't need a custom executor for calling Realm methods

zivkovicmilos added a commit that referenced this pull request Jul 6, 2024
## Description

This PR improves the gno implementation of the `valopers` Realm.

Waiting on #2380 to add a context-based Govdao pattern before merging.

<details><summary>Contributors' checklist...</summary>

- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>

---------

Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
@moul moul added this to the 🏗4️⃣ test4.gno.land milestone Jul 8, 2024
@zivkovicmilos zivkovicmilos merged commit a40ac61 into gnolang:master Jul 8, 2024
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧾 package/realm Tag used for new Realms or Packages.
Projects
Status: Done
Status: ✅ Done
Status: Done
Development

Successfully merging this pull request may close these issues.

None yet

3 participants