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

New eventually-consistent staging (for local dev and gno.land) #1131

Closed
1 of 4 tasks
moul opened this issue Sep 16, 2023 · 8 comments
Closed
1 of 4 tasks

New eventually-consistent staging (for local dev and gno.land) #1131

moul opened this issue Sep 16, 2023 · 8 comments
Assignees
Labels
📦 ⛰️ gno.land Issues or PRs gno.land package related

Comments

@moul
Copy link
Member

moul commented Sep 16, 2023

I suggest the creation of a special staging/testnet that resets regularly while retaining past transactions. After each reset, it will update (git pull), rebuild, and reload the examples/ directory, attempting to replay previous raw transactions. If any issues arise, it will continue without interruption. This approach combines the advantages of a constantly refreshed test environment with the consistency of older ones.

This testnet not only provides an ideal space for iterative testing but also facilitates experimentation with chain upgradability. It serves as a playground for understanding and testing migrations, which is a crucial upcoming feature for our platform.

From the perspective of a contract developer, if my new concepts don't gain immediate traction, I can simply wait a day and try again. As long as the API of my previous contracts remains consistent, most transactions are likely to remain the same, even if there are changes behind the scenes. This can be particularly beneficial for features like our r/gnoland/blog, which is currently challenging to update and may encounter URL issues during potential migrations. I believe it can also serve as an excellent platform for a more dynamic r/demo/boards.

To do

  • Naming: Decide on a distinctive name for the new testnet. Consider rebranding or removing the current staging. -> gno.land
  • History Storage: Develop a fast method for storing and retrieving transaction histories.
  • Script Updates: Refine infrastructure scripts to cater to the unique needs of the new testnet.
  • Tools to build valid genesis files (PoC for Genesis Manipulation Libraries and Tools #1189)
@moul moul changed the title Eventually-consistent Staging New eventually-consistent staging/testnet Sep 16, 2023
@moul moul added this to the 🌟 main.gno.land (wanted) milestone Sep 16, 2023
@dongwon8247
Copy link
Member

Thank you, @moul, for the proposal. I like the idea because this new testnet concept will provide a stable testing environment and access to the latest features from master. It will also benefit contract developers by allowing them to continue development on a single testnet (not having to migrate to a next testnet) while retaining archived transaction histories for debugging.

I have a couple of questions:

  1. What would be the time frame for a regular reset? I think it would be how often we want to sync the testnet with master. Maybe a month? but it should be done in a regular time frame so that indexers (e.g. Gnoscan) can expect a reset and respond to changes (e.g. Archive transactions and reset UIs to new block data in Gnoscan. **Archived transactions will remain searchable by transaction hashes).
  2. When reset, will past transactions be included in the next genesis, or will they be saved separately for reference without inclusion in the genesis?
  3. When reset, will the block number start from genesis every time? or will the testnet remember the last block and continue it there?

@albttx
Copy link
Member

albttx commented Sep 18, 2023

I like the idea!

Can we move to a something like a semver for the chain, and deploy upgrades to every major/minor version?

For the nodes, I can manage an infra with

  • 1 validator
  • 1-x RPCs
  • 1 history node (with daily / weekly snapshots)

For the naming, I propose to keep the test{1...x} for other testnet and call this one testnet-x

@moul
Copy link
Member Author

moul commented Sep 27, 2023

Let's adapt the existing staging.gno.land to make it eventually persistent.

Edit: better idea; let's make gno.land this new special testnet. Depends on #1176

@moul
Copy link
Member Author

moul commented Oct 1, 2023

Bonuses:

Assigned @zivkovicmilos so he can lead the initiative and make sure to take in consideration his work on #546.

@moul
Copy link
Member Author

moul commented Oct 2, 2023

Hey @zivkovicmilos, I've updated the original meta issue #1108 (portal loop) and created new related sub-issues:

I apologize for any confusion, but the documentation is being progressively improved. Please feel free to continue. I have made the important bootstrap. Now, I suggest you continue drafting the plans with the team. Count on me for reviewing and providing feedback if you need it.

Edit: I suggest prioritizing local development improvement instead of solely focusing on production. Check out #1174. Consider reaching out to @gfanton for assistance.

@moul moul added the 📦 ⛰️ gno.land Issues or PRs gno.land package related label Oct 3, 2023
@moul moul changed the title New eventually-consistent staging/testnet New eventually-consistent staging (for local dev and gno.land) Oct 3, 2023
@zivkovicmilos
Copy link
Member

@moul
We have created a tool that aims to replace gnotxsync, with all the bells and whistles of gnotxsync and more:
https://github.com/gnolang/tx-archive

This tool also has the ability to support new sources of transactions (ex. the upcoming indexer), so it should be a good foundation. It falls under the History Storage: Develop a fast method for storing and retrieving transaction histories. in your top-level issue

@zivkovicmilos
Copy link
Member

I have also created the issue that @ajnavarro has taken up in parallel for this effort, so we can track in the project board:
#1204

The idea is that we can use these Lego blocks to build out complicated functionality. The base functionality is:

  • start node
  • stop node
  • restore txs
  • backup txs

After #1203 and #1189 , the Lego blocks will also be:

  • create genesis
  • modify genesis

@moul
Copy link
Member Author

moul commented Oct 11, 2023

By the way, @zivkovicmilos, I just recalled that I opened this issue on Hackerspace: gnolang/hackerspace#23.

moul added a commit that referenced this issue Oct 20, 2023
Addresses #1131

## Completed Tasks

-  [x] Completed the home page by adding static content and blocks.
-  [x] Implemented support for redirects and aliases to improve SEO.
- [x] Made some improvements to p/demo/ui, but more work is still
needed.
-  [x] Enhanced p/demo/blog by adding widget support.
-  [x] Transferred previous static webpages to realms.
- [x] Created a new personal realm `p/manfred/present` for a Gno-powered
presentation.
- [x] Refactored gnoweb to remove static pages, improve maintainability
and design consistency, and added optional analytics.

## Next Steps after Merging

- Anyone:
  - Improve r/gnoland/home.
- Create and enhance additional `p/demo/*` pages to simplify maintenance
of `r/gnoland/home`.
- Start writing personal and team realms to incorporate more dynamic
data on-chain. Consider adding these realms as widgets on the homepage.
- Encourage individuals to create dedicated realms, preferably dynamic
ones. Then, import these new realms into the homepage to include widgets
such as "upcoming events."
- Manfred:
- Develop dynamic contracts for Worxdao, including project, team, and
people directories. Also, implement DAO features v0 and contributor
profiles.

---------

Signed-off-by: moul <[email protected]>
thehowl pushed a commit to thehowl/gno that referenced this issue Oct 21, 2023
)

Addresses gnolang#1131

## Completed Tasks

-  [x] Completed the home page by adding static content and blocks.
-  [x] Implemented support for redirects and aliases to improve SEO.
- [x] Made some improvements to p/demo/ui, but more work is still
needed.
-  [x] Enhanced p/demo/blog by adding widget support.
-  [x] Transferred previous static webpages to realms.
- [x] Created a new personal realm `p/manfred/present` for a Gno-powered
presentation.
- [x] Refactored gnoweb to remove static pages, improve maintainability
and design consistency, and added optional analytics.

## Next Steps after Merging

- Anyone:
  - Improve r/gnoland/home.
- Create and enhance additional `p/demo/*` pages to simplify maintenance
of `r/gnoland/home`.
- Start writing personal and team realms to incorporate more dynamic
data on-chain. Consider adding these realms as widgets on the homepage.
- Encourage individuals to create dedicated realms, preferably dynamic
ones. Then, import these new realms into the homepage to include widgets
such as "upcoming events."
- Manfred:
- Develop dynamic contracts for Worxdao, including project, team, and
people directories. Also, implement DAO features v0 and contributor
profiles.

---------

Signed-off-by: moul <[email protected]>
gfanton pushed a commit to gfanton/gno that referenced this issue Nov 9, 2023
)

Addresses gnolang#1131

## Completed Tasks

-  [x] Completed the home page by adding static content and blocks.
-  [x] Implemented support for redirects and aliases to improve SEO.
- [x] Made some improvements to p/demo/ui, but more work is still
needed.
-  [x] Enhanced p/demo/blog by adding widget support.
-  [x] Transferred previous static webpages to realms.
- [x] Created a new personal realm `p/manfred/present` for a Gno-powered
presentation.
- [x] Refactored gnoweb to remove static pages, improve maintainability
and design consistency, and added optional analytics.

## Next Steps after Merging

- Anyone:
  - Improve r/gnoland/home.
- Create and enhance additional `p/demo/*` pages to simplify maintenance
of `r/gnoland/home`.
- Start writing personal and team realms to incorporate more dynamic
data on-chain. Consider adding these realms as widgets on the homepage.
- Encourage individuals to create dedicated realms, preferably dynamic
ones. Then, import these new realms into the homepage to include widgets
such as "upcoming events."
- Manfred:
- Develop dynamic contracts for Worxdao, including project, team, and
people directories. Also, implement DAO features v0 and contributor
profiles.

---------

Signed-off-by: moul <[email protected]>
moul pushed a commit that referenced this issue Nov 12, 2023
## Description

This PR introduces a bash script and simple Makefile to control local
development.
It starts a node instance, along with the appropriate backup / restore
processes.

Parent task: #1131 

Docker equivalent: #1238

<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: Guilhem Fanton <[email protected]>
moul pushed a commit to moul/gno that referenced this issue Nov 14, 2023
## Description

This PR introduces a bash script and simple Makefile to control local
development.
It starts a node instance, along with the appropriate backup / restore
processes.

Parent task: gnolang#1131 

Docker equivalent: gnolang#1238

<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: Guilhem Fanton <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📦 ⛰️ gno.land Issues or PRs gno.land package related
Projects
Status: 🚀 Needed for Launch
Status: Done
Development

No branches or pull requests

4 participants