Search Apps Documentation Source Content File Folder Download Copy

The More You Gno: Gno.land Monthly Updates - 6

Welcome to the latest edition of The More You Gno, your regular source of updates from the Gno.land core team and contributor ecosystem. There’s a lot to cover this month, from a company engineering retreat to new core members and contributors. We’ve made progress across the board to fix important bugs and issues and provide additional features. There’s a new way to dynamically call realms, Gno.land’s tokenomics and governance are advancing, our standard library list is expanding, and our grantees are killing it with their deliverables. Without further ado, let’s dive in.

Gno Core Team Updates - TL;DR

Only got time to skim the updates? You’ll find the highlights in the list below. If you want to dive deeper into the topics, track our progress, understand the rationale behind our decisions, or explore the issues we came across, grab a coffee, kick back, and savor the full details.

  • The Portal Loop – Much of our focus over the past few months has been on the Portal Loop (issue 1108), which will make developing on Gno smoother, faster, and more intuitive. The Portal Loop will speed up deploying dApps and improve the UX for Gno.land devs.

  • Dynamic Realm Caller – We’ve added a new way to call realms dynamically so that dApps no longer have to manually import GRC20/721 tokens (PR 1262).

  • DAO Structure & Tokenomics – We’re close to finalizing the DAO structure of Gno.land and its tokenomics. There will be three main DAOs, GovDAO, EvaluationDAO, and SupportDAO. We’re exploring staking options for GNOT holders and working on transaction fees and gas.

  • Gno Playground – Gno Playground is an awesome way for developers to collaborate, share, and test their code. The full version isn’t ready yet, but we’re sharing the beta with anyone who wants to help us iterate and improve this week.

  • Gno Standard Libraries – In issue 1267, you can find our current wishlist for Gno standard libraries. If you want to see what we have and what’s lacking, or you want to contribute, open an issue or a PR.

  • Gno Language Server (Gnols) – An implementation of the Language Server Protocol (LSP) for Gno, Gnols makes writing code simpler and works with several editors. Visit the CONTRIBUTING.md file to try it out.

  • RustVM Implementation – The RustVM implementation is almost ready and is in the debugging stages. We’re also looking at adding a Jit compiler and researching the topics of determinism and concurrency.

  • Bytecode Go VM Implementation – The Parscan project is progressing well toward completion of the spec. We look to provide support for interfaces in the interpreter by extending the standard reflect package, also to the benefit of the entire Go community.

Engineering Retreat

Gno core engineering team got together last month in our first company-wide retreat. It was an invaluable opportunity to work face-to-face, brainstorm ideas, code together, and fix several high-level concerns. We made many improvements to the technical aspects of the project, including major advances on the Portal Loop, and strengthened our alignment through team bonding activities, socializing, and having fun.

We made multiple bug fixes and resolved many of the issues that arose out of GnoChess development, and Manfred and the Onbloc team (who joined us on the retreat) demonstrated a new way to dynamically call contracts using dependency injection with a registry. This, combined with Golang's interface capabilities, can achieve a good balance between dynamism, explicitness, and security (including type safety). This pattern could enable massive DeFi applications when used with GRC interfaces. It could also support contract-based DAOs where features can be added later, opening the door to new design patterns around contract upgrades. Check out PR 1262 for more details.

It was invaluable for everyone to get plenty of 1:1 time with Jae. Morgan was able to bring the Native Bindings topic (PR 859) much closer to completion. This has been a recurring theme in our developer calls for the last few months as it’s a complex topic that aims to change how Gno can use Go code while still being understood by static analysis tools like gno doc. Michael got greater clarity over the DAO structure and GNOT tokenomics, Milos was able to merge PR 546, after many months of effort, which adds file-based transaction indexing, and Thomas created instructions for getting started with the Gno Language Server (gnols), to give just some examples. It was productive and enjoyable and unblocked many issues.

AiB engineers were also at the retreat, Zooma from Teritori, and Dongwon, ByeongJun, and Ray from Onbloc, creating plenty of opportunities for interesting discussions and showcasing our work. We also welcomed new core members Dylan and Danny to the team. Dylan is a senior software engineer, and Danny is supporting DevEx. We enjoyed meeting and hacking together with like-minded people and would like to do it more often with a broader audience. How about a Gnome contributor festival next year? Stay tuned.

Gno.land DAOs and Tokenomics

Throughout the retreat and ongoing, we’ve made major advances to the DAO structure for Gno.land and the tokenomics of the chain. We’re still hammering out the final details, but we’ve decided on three main DAOs – GovDAO, EvaluationDAO, and SupportDAO – that will work together alongside other domain-specific DAOs, such as EngineeringDAO or ProjectsDAO, making Gno.land more decentralized over time.

The multi-tiered GovDAO will be responsible for voting on all decisions that affect the chain, such as parameter changes or validator acceptance/denial. GovDAO members will assess new contributors to the chain and allocate them a score and corresponding membership tier. EvaluationDAO will assist with specific contributions, lending its expertise and critic reviews as needed. SupportDAO will provide knowledge-specific services such as HR, marketing, and finance.

Regarding transaction fees, we're exploring something similar to how Ethereum deals with gas in its EIP 1559 update. Essentially, a combination of comparing a new block’s size with the last block to gauge demand and some small parameters we’re looking at. We’re also experimenting with staking alternatives where contributors can stake their tokens to support certain projects in return for staking rewards. It’s still early days, so watch this space. We’ll be releasing more details soon.

Gno Playground

Gno Playground is a simple web interface that lets you share your code, run unit tests, deploy your realm and package, and execute functions in your code using the repo for a smoother and more collaborative developer experience. We’re excited to release Gno Playground out in the wild later this month in a soft launch set for November 28. If you’re interested in testing it out, head over to our Discord channel. We’re looking for feedback and help to identify bugs and improve the UX before its full launch in the new year. It will be interesting to see how people interact with the Playground and how they use it so we can iterate and attract more gnomes to our growing community.

The Portal Loop

The Portal Loop is an effort to create a continuously-deployed staging testnet to be hosted on the official gno.land website. The testnet will be reset at each commit on our repository, but it will re-play all the transactions from its previous version, dropping any that might fail following breaking changes in the code. The Portal Loop will provide a central place where you can experiment with the latest Gno.land updates, resolving the problem our existing testnets have faced (becoming stale only a few months after their launch) while also paving the way for building DAOs and on-chain Game of Realms and Proof-of-Contribution systems.

Within the Portal Loop efforts, we’re also building systems to more efficiently iterate locally on your Gno realms, similar to the previously described testnet. The Portal Loop will help to create an iterative cycle focused on development, testing, and feedback, enhancing local development and the Gno.land website. As developers are discovering, when building dApps like GnoChess, GnoMobile, or Flippando, they run into issues with the repo, GnoVM, and client libraries when developing locally.

The Portal Loop will enable much quicker feedback so we can iterate, uncover, and fix problems faster. Devs will get a greatly improved UI, with UX contributions and issues much easier to resolve, and the same CI/CD experience as web2 applications, where each time something is published on Git, they get instant feedback on how it works in staging, not only in terms of code but also in terms of data. Stay tuned, the Portal Loop is coming soon!

Standard Library Wish List

The standard library wish list in issue 1267 is intended to be a starting place for anyone who wants to add new standard libraries to Gno. It's an opinionated collection of libraries that we would like to see added. So, if you see something missing that you’d like added to our standard libraries, leave a comment explaining your reasoning. If you want to port over a standard library from the list, make an issue for it and assign yourself, or if you can do it quickly, make a PR referencing the issue. You can see the global status of our standard libraries (as compared to Go) on our Go<>Gno compatibility document.

Dreaming with SOGNO

The Sogno project is a dream Morgan has about improvements he plans to make on GnoVM. From his experience working on GnoChess, he found that many features were lacking that would have improved the workflow, for example, an improved debugging system, enhanced representation of the values within the VM, having maps as sortable data structures, and adding reflection. Morgan plans to work on this project on the side as a fork when he has time, so Sogno won’t be merged into the master branch for now. If you want to check it out and see if you can contribute, visit the hackerspace PR 44.

The Future of the Gno Language Server (Gnols)

The Gno Language Server (gnols) is an implementation of the Language Server Protocol (LSP) for the Gno programming language. It is similar to the equivalent “gopls” project for Go, as they can be plugged into your code editor through extensions and allow you to access handy features, such as autocompletion, formatting, and compile-time warnings/errors. Gnols makes writing code simpler, working with several editors to suit your preferences. To try it out, visit the CONTRIBUTING.md file, which contains instructions to get you started. Our current documentation targets Vim, Neovim, and SublimeText, but can likely be used with any editor that supports LSP. Feel free to contribute to improving Gnols and adding more features. It’s well-written, and simple to dive into the code and add more capabilities.

RustVM Implementation

Petar continues progressing on the RustVM implementation and has almost finished, apart from a few bug fixes. As the design is now complete, he will enter the testing stages. He is also looking at how to add a Jit compiler to the current design. Petar was initially concerned that the garbage collector might have presented serious issues, but this has turned out not to present a problem. Adding a Jit compiler will require a lot of work (at least six months) to support everything in the language, but it should be possible.

Petar is also looking at implementing concurrency the way it is in Go to have a fully functional virtual machine as it is in the spec. This would likely attract more external contributors to developing the VM. One advantage of Rust is that, with the concurrency model, there is already an extensive library called Tokio which he can use. Petar stresses that this isn’t easy, but he believes it’s achievable, at least as a research topic around determinism and concurrency.

Go Bytecode VM Implementation

Marc continues to develop Parscan, another bytecode VM, but entirely based on the Go runtime, with the advantage of reusing the type-checking system, concurrency model, and memory management already part of the existing Go runtime. In the last month, the support for all missing declaration statements (constants, variables, and types) was added in the code generator.

Grantee and Ecosystem Updates

Our ecosystem partners and grantees are working flat out on their contributions. We’re close to seeing the on-chain memory game Flippando launch, Adena and Gnoswap are incorporating some major new features, Zack’s released another informative tutorial as part of the Go to Gno series, and we’ve received several new grant proposals as well. We’ve even welcomed a new contributing team, Varmeta, to the fold. Scroll through the details below. TL;DR?

  • On-chain memory game Flippando is coming soon
  • Gnomobile is almost complete and will be receiving a rebrand soon
  • Gnosocial will allow devs to experiment with social media dApps
  • Experiment with content moderation using the ModerationDAO or create your own DAO
  • Gnoswap AMM DEX beta will launch in December
  • Adena to implement new ‘Air-Gap’ feature
  • Varmeta is working on Gno.land Unity SDK to make Gno more accessible to game developers

Dragos

Dragos has been working on porting his on-chain memory game Flippando from Solidity to Gno, and we’re looking forward to playing it soon after seeing an awesome demo earlier this month. When you play Flippando, you uncover a matrix of matching visual symbols. There are 2 levels of difficulty (matrix made of 16 tiles or 64 tiles). For the launch, Dragos aims to have visual symbols containing basic colors, dice, hexagrams, or various gradients. Once you’ve matched all the pairs and completed a matrix, you mint an NFT that can be assembled as artwork on-chain and traded in a marketplace. Dragos is currently looking at the initial tokenomics for Flippando, with a fixed supply of 1 billion and no airdrop distribution (more details soon).

Dragos has been a mobile app developer for over 10 years, with an interest in blockchain for around seven years. He enjoys working with Gno, although having to reset the chain and redeploy programs each time he makes a change was a challenge. The Portal Loop solves these issues in local development and will allow him to deploy Flippando sooner. As part of the work for Flippando, Dragos also added PR 1309 to improve our GRC721 implementation]. He is also applying for a grant to port his project management system on-chain for Gno, and he gave us a demo. An on-chain project management tool will be essential for organizing the DAO system, focusing on our team’s needs, organizing tasks, setting goals, and more. Keep up with Dragos’ progress by visiting his hackerspace.

Berty

Berty has been powering ahead with Gnomobile (which will soon receive a new name to better reflect its functionality), Gnosocial, and Gno core. Some highlights include significant progress on the GRPC interface (see [demo video]https://www.loom.com/share/d1cef60199c0487e86deab2a9e61d61c). As the interface to Protobuf has many more data types available than the interface to the language bridge, GRPC greatly simplifies the app and improves the UX. The API is almost complete and now includes wallet functions, such as creating an account and restoring an account from the recovery phase, and an event stream when calling a realm function (demo video available here).To help developers, Gnomobile also includes example apps. Here is a demo video of the latest minimal hello app.

Berty created PR 1235 relating to Amino. They start with a Go struct and add comments explaining all the fields. Previously, when they ran Amino and generated a Protobuf structure, all their comments disappeared. This PR allows them to preserve the comments. They also created PR 1213 since Amino should create a Protobuf structure where the fields follow official naming conventions. Thanks to help from the Gno devs, these PRs are merged. Berty is also focused on building a decentralized social media application using the Gnomobile framework, which is almost complete. The aim is to create a testbed where dApp builders can see how their implementations integrate and function with web2-like social media features, opening the door to interesting experiments such as DAO collaboration and content modification. Berty is building a decentralized Twitter-like application and plans to finish it in six months. Check their progress on their hackerspace here and look for more upcoming demos.

Teritori

Teritori has been focusing on Escrows in the past couple of months, aiming to make improvements that facilitate on-chain project management. The team is also iterating the Moderation DAO and has identified a need for a conflict solver module to call an external authority to solve a conflict between two parties (for example, the buyer and the seller). They have called this module the Conflict Solver Module and integrated several options like Justice DAO (composed of humans) or any realms (e.g. GnoChess) to solve the conflict. They are researching work on VRF to implement randomness so that the module selects a person (or group of people) with no conflicts of interest in the issue. PR 11 provides more details. A true randomness function will also be handy for the Flippando game that doesn’t currently rely on true randomness.

In other news from Teritori, the moderation DAO is live! You can head to the Teritori site to play around with it and even try deploying your own DAO, creating a user profile, and adding a social feed. The team has deployed V1 of a “Soundcloud-like” app on the Gnosocial feed in which you can listen to music while browsing features, publish your own music as an artist that appears on your profile, comment on tracks, tip artists, and more. Keep updated with Teritori on their hackerspace here.

Zack Scholl

Our resident tinkerer Zack gave a workshop last month as part of his “Go to Gno” series called Go to Gno: ByteBeat - Generating Audio with Smart Contracts. This is a really interesting tutorial on how to build Bytebeat (a minimal programming language for synthesized music) with smart contracts and follows on from his microblogging workshop. Be sure to check it out. If you want to hear more about Zack, you can also watch Getting to Gno with Zack Scholl, a Fireside Chat series that talks about contributors’ work, lives, and motivations to be on the Gno.land journey with us.

Onbloc

As always, the Onbloc team has been busy! Over the past few weeks, they have been working on extending the functionality of Gnoswap, integrating APIs and realms with the interface, improving the governance page UI, and integrating the Adena wallet. Onbloc expects to launch the beta of Gnoswap next month, and we’re super excited to see it in action. To improve the UX and UI of Adena and make the wallet even more secure, the team is implementing a feature called Air-Gap which allows the wallet to broadcast transactions signed from an offline environment without the user needing to import their keys to Adena. Onbloc has also started a discussion around ideas to improve the usability of QR Codes for secure data transmissions between offline signers and watch-only wallets in Issue 1375. We’ll keep you updated on the work here. You can also find more information on Onbloc’s informative blog.

As well as developing core tooling for Gno, Onbloc is working on Gno core to help us build important functionality. The team welcomed a new hire, Lee ByeongJun as a core engineer and to help with work on three core areas: contract interaction (enabling realms to interact with other realms), the multinode testnet, and porting essential Go packages to Gno. You can find more details and keep track of everything Onbloc is working on in their hackerspace issue here.

Varmeta

We’re excited to welcome a new contributor Varmeta to Gno.land. Varmeta was founded in 2020 to focus on blockchain and virtual reality/augmented reality technologies and has grown from a team of three to over 40 engineers. Varmeta is excited by the vision behind Gno.land and its philosophy for rewarding developers. The team is committed to supporting Gno’s success by providing various applications for the ecosystem, starting with the Gno.land Unity SDK to make blockchain more accessible to game developers. Track Varmeta’s progress on their hackerspace here.

Gno @ Devconnect Istanbul 2023

Gno.land core team members organized a small, unofficial meetup in Istanbul during Devconnect week from November 13-17. The engineering-focused meetup was accompanied by a Happy Hour and snacks, where attendees got the chance to learn about Gno.land in an informal way and how they can easily develop dApps in Gno, as well as contribute to the project.

That's all for now! Be sure to check back again with us for the next edition of The More You Gno to keep up with all our progress. Do you want to contribute to Gno.land's monthly updates? If you're building on Gno.land and want to highlight your development, project, event, or idea, let us know, and we'll include your contribution.


Tags: #gnoland #ecosystem #updates #gnovm #tm2

Written by christina on 29 Nov 2023

Published by g125em6arxsnj49vx35f0n0z34putv5ty3376fg5 to gno.land's blog