____ _____ ____ Discover: Homepage - Main repo - Gnoverse / __ `/ __ \/ __ \ Networks: Portal Loop - Test4 (latest) / /_/ / / / / /_/ / Learn: Official Documentation - Gno by Example - Awesome Gno \__, /_/ /_/\____/ Social: Twitter - Discord - Reddit - YouTube /____/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Why Gno?
-
A better programming language for smart contracts: Gno.land utilizes the Gno programming language, which is an interpreted variation of Go. It is executed through a specialized virtual machine called the GnoVM, purpose-built for the Gno.land blockchain. There are some differences among the languages: Gno does not support Goroutines, channels and non-deterministic libraries like
crypto/rand
, and it supports additional features like automatic persistence of global variables for storing state. -
Consensus Protocol: Gno.land achieves consensus between nodes using the Tendermint2 consensus algorithm. Tendermint2 is a variation on the well-established Tendermint consensus algorithm used in many Cosmos blockchains, which is Byzantine Fault Tolerant, has instant finality (Users can be sure their transactions are finalized as soon as a block is created, unlike Bitcoin) and can easily be extracted to create new interoperable TM2-based blockchains.
-
Inter-Blockchain Communication (IBC): In the future, Gno.land will be able to communicate and exchange data with other blockchain networks within the Cosmos ecosystem through the Inter-Blockchain Communication (IBC) protocol.
Why Go Based?
The decision to base Gno.land's language on Go was influenced by the following factors:- An established language: using Go instead of creating a new programming language enables existing Go developers to bring over their knowledge to Gno, making adopting the language not an intrinsic time investment on the success of the blockchain. Gno re-uses the syntax and a majority of the standard libraries, adapts Go's package model and adapts it for the blockchain context.
- Security through the package model: by leveraging Go's existing package model, which distinguishes between exported and unexported symbols, realms (smart contracts) are capable of simply discriminating what functionality, types and data should be available for consumption outside of the realm. By enforcing all on-chain published code to be open source and creating a public on-chain registry of published re-usable packages, Gno realms (smart contracts and packages can be easily audited and build upon each other's reputation.
Coming from other blockchains like Ethereum?
Gno.land offers a few distinct advantages to Ethereum:
-
Transparent and Auditable Smart Contracts: Gno.land Smart Contracts are fully transparent and auditable by users because the actual source code is uploaded to the blockchain. In contrast, Ethereum uses Solidity, which requires precompilation into bytecode, leading to less transparency as bytecode is stored on the blockchain, not the human-readable source code.
-
General-Purpose Language: Gno.land's Gno is a general-purpose language, similar to Go, extending its usability beyond the context of blockchain, and allowing Gno to tap into the already existing ecosystem of Go packages. In contrast, Solidity is designed specifically for Smart Contracts on the Ethereum platform.
Build on Gno.land
-
[Blockchain Background] I want to learn a bit of blockchain's foundational elements first
-
[Getting Started] I want to get started with Gno as fast as possible
-
[Setup] I want to jump in and get started hacking on Gno.land
-
[Tools] I want to have a look at some of the code-editor support for Gno
-
[Team] I want to understand more about the team behind Gno.land
-
[Workshops] I want to know more by reviewing some of your previous workshops at various conferences/hackathons
Learn how to write Smart Contracts with Gno
-
[Quickstart] I want to get write a simple contract in Gno
-
[Playground] I want to learn Gnolang by writing and testing code on the Gno Playground
-
[Code-Editor Support] I want to have a look at which code editors are supported for Gno development
Contributing
Developer Resources
- Official Documentation: The official documentation of Gno.land.
- Gno CLI: The Gno CLI is Gno’s primary development and testing environment. All main realms and packages can be found here.
- How-To-Guides
- Local Setup
- Gno By Example
- Awesome-Gno
- Clients: