πŸ“š gno - Awesome Go Library for Blockchain

Go Gopher mascot for gno

A comprehensive smart contract suite built with Golang and Gnolang, a deterministic, purpose-built Go variant for blockchains.

🏷️ Blockchain
πŸ“‚ Tools for building blockchains.
⭐ 886 stars
View on GitHub πŸ”—

Detailed Description of gno

Gno

At first, there was Bitcoin, out of entropy soup of the greater All. Then, there was Ethereum, which was created in the likeness of Bitcoin, but made Turing complete.

Among these were Tendermint and Cosmos to engineer robust PoS and IBC. Then came Gno upon Cosmos and there spring forth Gnoland, simulated by the Gnomes of the Greater Resistance.

Gno is an interpreted and fully-deterministic implementation of the Go programming language, designed to build succinct and composable smart contracts. The first blockchain to use it is gno.land, a Proof of Contribution-based chain, backed by a variation of the Tendermint consensus engine.

Getting started

If you haven't already, take a moment to check out our website.

The website is a deployment of our gnoweb frontend; you can use it to check out some example contracts.

Use the [source] button in the header to inspect the program's source; use the [help] button to view how you can use gnokey to interact with the chain from your command line.

If you have already played around with the website, use our Getting Started guide to learn how to write and deploy your first smart contract. No local set-up required!

Once you're done, learn how to set up your local environment with the quickstart guide and the contributing guide.

You can discover additional details about current tools and Gno documentation on our official documentation. Additionally, the awesome-gno repository offers more resources to dig into. We are eager to see your first PR!

Gno Playground

play.gno.land

Gno Playground, available at play.gno.land, is a web app that allows users to write, share, and deploy Gno code. Developers can seamlessly test, debug, and deploy realms and packages on gno.land, while being able to collaborate with peers to work on projects together and seek assistance. A key feature of Gno Playground is the ability to get started without the need to install any tools or manage any services, offering immediate access and convenience for users.

Repository structure

  • examples - Smart-contract examples and guides for new Gno developers.
  • gnovm - GnoVM and Gnolang.
  • gno.land - Gno.land blockchain and tools.
  • tm2 - Tendermint2.
  • docs - Official documentation, deployed under docs.gno.land.
  • contribs - Collection of enhanced tools for Gno.

Socials & Contact

  • Discord: good for general chat-based conversations, as well as for asking support on developing with Gno.
  • Reddit: more "permanent" and forum-style discussions. Feel free to post anything Gno-related, as well as any question related to Gno programming!
  • Telegram: unofficial Telegram group.
  • Twitter: official Twitter account. Follow us to know about new developments, events & official announcements about Gno!
  • YouTube: here we post all of our video content, like workshops, talks and public development calls. Follow along on our development journey!
Short doc about all the commands

User commands:

  • gnokey - key manipulation, also general interaction with gnoland
  • gnoland - runs the blockchain node
  • gnoweb - serves gno website, along with user-defined content

Developer commands:

  • gno - handy tool for developing gno packages & realms
  • goscan - dumps imports from specified file’s AST
  • genproto - helper for generating .proto implementations
  • gnofaucet - serves GNOT faucet
CI/CD/Tools badges and links

GitHub Actions:

  • gno.land
  • gnovm
  • tm2
  • examples
  • docker

Codecov:

  • General: codecov
  • tm2: codecov
  • gnovm: codecov
  • gno.land: codecov
  • examples: TODO

Go Report Card:

  • Go Report Card
  • tm2, gnovm, gno.land: TODO (blocked by tm2 split, because we need go mod workspaces)

Pkg.go.dev

  • Go Reference
    (pkg.go.dev will not show our repository as it has a license it doesn't recognise)