diff --git a/posts/2024-01-18_myg-7/README.md b/posts/2024-01-18_myg-7/README.md new file mode 100644 index 00000000..ba5fda3c --- /dev/null +++ b/posts/2024-01-18_myg-7/README.md @@ -0,0 +1,57 @@ +# The More You Gno: Gno.land Monthly Updates - 7 +Welcome to the latest edition of *The More You Gno*, your regular source of updates from the Gno.land core team and contributor ecosystem. After a well-deserved rest during the holiday break, we’re kicking off 2024 with renewed energy and plenty of exciting initiatives, including a new staging testnet (the Portal Loop), the official Gno.land docs page, several merged PRs (including native bindings!), and many updates across the board. Dive in to find out what we’re working on and what our ecosystem partners and grantees have been up to. + +## Gno Core Team Updates TL;DR + +Short on time? Skim the highlights from the core team in the list below. You’ll find additional details in the next section if you want to explore any topic in greater detail. + +- **Native Bindings** - If you’ve been following our journey or experimenting with the platform, you’ll hear virtual champagne pops as Morgan’s ongoing work with native bindings is finally merged [PR 859](https://github.com/gnolang/gno/pull/859). +- **Gnodev** - Thanks to Guilhem’s gnodev initiative [PR 1386](https://github.com/gnolang/gno/pull/1386), you can now develop contracts with a single command. +- **Gno.land Offical Docs** - Check out [docs.gno.land](docs.gno.land) for how-to guides, getting started, and an overview of key concepts of the platform. +- **Effective Gno** - Taking inspiration from *Effective Go*, Manfred’s begun listing common patterns and examples of the differences between Gno and Go. +- **Assignment in GnoVM** - Jae is working on approaches to fixing assignment in the GnoVM and issues that deal with persistence [(issue 1326)](https://github.com/gnolang/gno/issues/1326). +- **Portal Loop** - The [Portal Loop](portal.gnoteam.com) has been released in a staging domain and is being tested. +- **Roadmap** - We’re working on a fully-fledged Gno.land roadmap and will share a detailed DAG and important goals and milestones with you soon. +- **Tendermint2 Update** - There are several PRs aimed at removing the dependencies between Tendermint2 and GnoVM. +- **Gno.land Tokenomics** - We continue to make progress in defining the structure of Gno.land’s DAOs and the design of reward schemes for contributors. + +### Native Bindings (PR859) Has Been Merged +[PR 859](https://github.com/gnolang/gno/pull/859) (native bindings) was submitted by Morgan in May 2023, and he and the development team have been working on how to improve native bindings using the GnoVM in native function calls tirelessly ever since. Native function calls are well-defined in Go code generation and Go templates, but they needed modifications for the GnoVM because new native functions that already existed in the Gno code didn’t yield the desired result when we tried to define a native call function. Issues with native bindings in the GnoVM have caused many headaches while developing dApps like GnoChess, and after an eight-month-long endeavor of creating panics and writing out native functions, this PR has finally been merged. +### Gnodev Has Been Merged +[PR 1386](https://github.com/gnolang/gno/pull/1386) (gnodev) has been merged. Guilhem worked hard to bring this over the line, fixing many bugs and implementing features like real hot reload and enabling use with APIs without having to develop other tools around it. Now you can use gnodev to efficiently develop contracts, using a single command to launch gnoweb + the blockchain + perform the deployment of contracts. Play around with it, and let us know how you get on. There may be a few bugs still and Guilhem is happily accepting feedback. +### The Gno.land Official Docs Page Is Live +We’re excited to have the Gno.land Official Docs page live on the docs.gno.land domain. This will always be a work in progress as we expand the docs, make iterations to existing issues, and refine some of the core concepts, but it’s an excellent resource for anyone wanting to find out more about Gno and for onboarding new developers to the platform. A big thanks to the Onbloc team, whose developer portal was a huge inspiration for this. We’re looking for feedback, so leave your reviews and let us know where the docs can be improved and what else you would like to see. +### Effective Gno +Manfred has been working on a document called [Effective Gno (PR 1000)](https://github.com/gnolang/gno/pull/1000), which takes inspiration from *Effective Go* and will become a large reference document for Gno devs to explore common patterns and crucial differences in how we program compared to Go. We’ll be iterating on this as we progress, but you can already find plenty of examples. If you’re just getting into Gno and coming from a Go background, this is a great resource. Read this document and provide some comments if you have any. +### The Portal Loop Is Live +The Portal Loop has been released on a staging domain, and you can check it out now at portal.gnoteam.com. The Portal Loop will replace the Gno.land website once we’ve finished squashing bugs and adding features. We’re still testing it and have identified several issues. For example, from the last three merged PRs, only one triggered a redeploy when we expected two or three deploys. We will also add a faucet. +Since the Portal Loop is a testnet that nobody is using, we don’t have enough transit testing transactions. So, one of the tasks we want to do to prove that the Portal Loop is working well enough is to write a kind of monitoring-oriented oracle that will try to make transactions, perhaps incrementing a counter every minute. We’re looking for help writing a script or a daemon for this oracle, so let us know if you want to contribute. Once the Portal Loop is finished, we will focus on testnet 4. +### Assignment Issues in the GnoVM +Morgan came across a bug [issue 1326](https://github.com/gnolang/gno/issues/1326), which returned an unexpected unreal object when assigning a local variable to a global variable in the GnoVM. Jae has been spending some time working on approaches to solving this and fixing assignment that will also work for saving escaped objects that don't have a parent (like variables whose pointers are referenced on a persisted object). This is a tough one to figure out, so if there are any other VM issues that deal with persistence and detached parentless objects, now is the time to add them to Jae’s plate. +### An Update on Tendermint2 +[PR 1438](https://github.com/gnolang/gno/pull/1483) has the same goal as [PR 1438](https://github.com/gnolang/gno/pull/1438): to make Tendermint2 completely unaware of gnovm and gno.land. Over the coming weeks, we will be working on abstracting away the dependencies from GnoVM and Gno.land from Tendermint2 so there are no dependencies on the runtime. Watch this space. +### Gno.land Engineering Retreat +In the last *The More You Gno*, we covered the Gno.land and AIB company-wide retreat, which was an invaluable opportunity to work together, code together, and get to know our peers outside of work. It was such a success that the Gno core dev team held another retreat in December in Rouen, France, where many of the above issues and PRs were tackled and merged. We look forward to more productive and frequent face-to-face meetings in the year ahead. +### Gno.land DAOs and Tokenomics +With the input of Manfred, Jae, and the rest of the team, Michael continues to make advancements on Gno.land’s system of DAOs and tokenomics. One key change since the last edition is that the WorxDAO (responsible for governance and all issues related to development in Gno.land) will now be known as the GovDAO. The DAO will likely have seven tiers but initially launch with three or four. The main benefits of moving up tiers are increased voting power, increased monthly awards, and the authority to promote members from lower tiers. GovDA will be assisted by WorxDAO, which will encompass several different sub-DAOs, such as engineering, funding, and projects. + +We’re currently exploring different reward systems for contributors, whereby each member of the same tier level will receive the same amount of rewards, either directly or indirectly, in the GNOT native gas token or USD, in a type of salary-based scheme. We may also elect to distribute rewards based on a contribution/work “hash difficulty” (total number and tier split of active contributors that month). We may also adopt a hybrid of these two models. + +Michael is also working on a bounty system to make Game of Realms (GoR) more accessible and evaluating contributions easier for judges. High ranking GoR competitors will likely receive Gno.land tier levels based on their leaderboard placing in addition to ATOM rewards. It’s important to note that these discussions are ongoing, and the information here may be deprecated. +### Making Testing Faster + +Thanks to Petar, [PR1417](https://github.com/gnolang/gno/pull/1417), we have improved the entire VM testing suite runtime by around four minutes, which is an incredible achievement. We just need to refactor some test scenarios that are not very concurrent-friendly, but this PR makes interacting with the platform so much easier. + +### Bug Fixes and Miscellaneous Items + +Thanks to Joon from Onbloc, we were able to add support for octals without 'o' (check out [PR 1131](https://github.com/gnolang/gno/pull/1331) for more details), and thanks to Dragos [PR 1309](https://github.com/gnolang/gno/pull/1309), we extended the GRC721 interface so that it now supports setting a token URI. These are both extremely welcomed contributions, and we appreciate our ecosystem partners. + +From the core team, a special shout out to Dylan for killing it fixing bugs, and getting many PRs ([#1451](https://github.com/gnolang/gno/pull/1451), [#1315](https://github.com/gnolang/gno/pull/1315), and [#1305](https://github.com/gnolang/gno/pull/1305), to name a few) merged over the last few weeks. Props also go to Marc for [PR 1177](https://github.com/gnolang/gno/pull/1177), which has just been merged, which fixes append in certain key situations. We’ve also welcomed a new security engineer, Kristov, to the team. + +## Grantee and Ecosystem Updates + + + + + +