diff --git a/README.md b/README.md index eeffc9adefc..89bfd96d74f 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ repository offers more resources to dig into. We are eager to see your first PR! * [examples](./examples) - Smart-contract examples and guides for new Gno developers. * [gnovm](./gnovm) - GnoVM and Gnolang. -* [gno.land](./gno.land) - Gno.land blockchain and tools. +* [gno.land](./gno.land) - gno.land blockchain and tools. * [tm2](./tm2) - Tendermint2. * [docs](./docs) - Official documentation, deployed under [docs.gno.land](https://docs.gno.land). * [contribs](./contribs) - Collection of enhanced tools for Gno. diff --git a/docs/concepts/namespaces.md b/docs/concepts/namespaces.md index 0f9176bcbf1..c7f03ec1f0a 100644 --- a/docs/concepts/namespaces.md +++ b/docs/concepts/namespaces.md @@ -28,7 +28,7 @@ Here's a breakdown of the structure of a package path: - `p/`: [Package](packages.md) - `r/`: [Realm](realms.md) - Namespace: A namespace can be included after the type (e.g., user or organization name). Namespaces are a - way to group related packages or realms, but currently ownership cannot be claimed. (see + way to group related packages or realms, but currently ownership cannot be claimed. (see [Issue#1107](https://github.com/gnolang/gno/issues/1107) for more info) - Remaining Path: The remaining part of the path. - Can only contain alphanumeric characters (letters and numbers) and underscores. @@ -74,8 +74,8 @@ After successful registration, you can add a package under the registered namesp ## Anonymous Namespace -Gno.land offers the ability to add a package without having a registered namespace. -You can do this by using your own address as a namespace. This is formatted as `{p,r}/{std.Address}/**`. +gno.land offers the ability to add a package without having a registered namespace. +You can do this by using your own address as a namespace. This is formatted as `{p,r}/{std.Address}/**`. > ex: with `test1` user adding a package `microblog` using his own address as namespace ```bash diff --git a/docs/concepts/testnets.md b/docs/concepts/testnets.md index 730795d3742..4df8e3a4b86 100644 --- a/docs/concepts/testnets.md +++ b/docs/concepts/testnets.md @@ -5,10 +5,10 @@ id: testnets # Gno Testnets This page documents all gno.land testnets, what their properties are, and how -they are meant to be used. For testnet configuration, visit the +they are meant to be used. For testnet configuration, visit the [reference section](../reference/network-config.md). -Gno.land testnets are categorized by 4 main points: +gno.land testnets are categorized by 4 main points: - **Persistence of state** - Is the state and transaction history persisted? - **Timeliness of code** @@ -21,25 +21,25 @@ Gno.land testnets are categorized by 4 main points: Below you can find a breakdown of each existing testnet by these categories. ## Portal Loop -Portal Loop is an always up-to-date rolling testnet. It is meant to be used as +Portal Loop is an always up-to-date rolling testnet. It is meant to be used as a nightly build of the Gno tech stack. The home page of [gno.land](https://gno.land) -is the `gnoweb` render of the Portal Loop testnet. +is the `gnoweb` render of the Portal Loop testnet. - **Persistence of state:** - - State is kept on a best-effort basis + - State is kept on a best-effort basis - Transactions that are affected by breaking changes will be discarded - **Timeliness of code:** - Packages & realms which are available in the `examples/` folder on the [Gno -monorepo](https://github.com/gnolang/gno) exist on the Portal Loop in matching +monorepo](https://github.com/gnolang/gno) exist on the Portal Loop in matching state - they are refreshed with every new commit to the `master` branch. - **Intended purpose** - Providing access the latest version of Gno for fast development & demoing - **Versioning strategy**: - Portal Loop infrastructure is managed within the -[`misc/loop`](https://github.com/gnolang/gno/tree/master/misc/loop) folder in the +[`misc/loop`](https://github.com/gnolang/gno/tree/master/misc/loop) folder in the monorepo -For more information on the Portal Loop, and how it can be best utilized, +For more information on the Portal Loop, and how it can be best utilized, check out the [Portal Loop concept page](./portal-loop.md). Also, you can find the Portal Loop faucet on [`gno.land/faucet`](https://gno.land/faucet). @@ -76,7 +76,7 @@ Staging is a testnet that is reset once every 60 minutes. These testnets are deprecated and currently serve as archives of previous progress. ### Test3 -Test3 is the most recent persistent Gno testnet. It is still being used, but +Test3 is the most recent persistent Gno testnet. It is still being used, but most packages, such as the AVL package, are outdated. - **Persistence of state:** @@ -85,28 +85,28 @@ most packages, such as the AVL package, are outdated. - Test3 is at commit [1ca2d97](https://github.com/gnolang/gno/commit/1ca2d973817b174b5b06eb9da011e1fcd2cca575) of Gno, and it can contain new on-chain code - **Intended purpose** - - Running a full node, building an indexer, showing demos, persisting history + - Running a full node, building an indexer, showing demos, persisting history - **Versioning strategy**: - There is no versioning strategy for test3. It will stay the way it is, until the team chooses to shut it down. -Since gno.land is designed with open-source in mind, anyone can see currently -available code by browsing the [test3 homepage](https://test3.gno.land/). +Since gno.land is designed with open-source in mind, anyone can see currently +available code by browsing the [test3 homepage](https://test3.gno.land/). -Test3 is a single-node testnet, ran by the Gno core team. There is no plan to -upgrade test3 to a multi-node testnet. +Test3 is a single-node testnet, ran by the Gno core team. There is no plan to +upgrade test3 to a multi-node testnet. -Launch date: November 4th 2022 +Launch date: November 4th 2022 Release commit: [1ca2d97](https://github.com/gnolang/gno/commit/1ca2d973817b174b5b06eb9da011e1fcd2cca575) ### Test2 (archive) The second Gno testnet. Find archive data [here](https://github.com/gnolang/tx-exports/tree/main/test2.gno.land). -Launch date: July 10th 2022 -Release commit: [652dc7a](https://github.com/gnolang/gno/commit/652dc7a3a62ee0438093d598d123a8c357bf2499) +Launch date: July 10th 2022 +Release commit: [652dc7a](https://github.com/gnolang/gno/commit/652dc7a3a62ee0438093d598d123a8c357bf2499) ### Test1 (archive) The first Gno testnet. Find archive data [here](https://github.com/gnolang/tx-exports/tree/main/test1.gno.land). -Launch date: May 6th 2022 +Launch date: May 6th 2022 Release commit: [797c7a1](https://github.com/gnolang/gno/commit/797c7a132d65534df373c63b837cf94b7831ac6e) diff --git a/docs/getting-started/local-setup/installation.md b/docs/getting-started/local-setup/installation.md index 272d0069ee5..e05c2f9b205 100644 --- a/docs/getting-started/local-setup/installation.md +++ b/docs/getting-started/local-setup/installation.md @@ -69,7 +69,7 @@ go run ./cmd/gno --help ### `gnodev` `gnodev` is the go-to Gno development helper tool - it comes with a built in -Gno.land node, a `gnoweb` server to display the state of your smart contracts +gno.land node, a `gnoweb` server to display the state of your smart contracts (realms), and a watcher system to actively track changes in your code. Read more about `gnodev` [here](../../gno-tooling/cli/gnodev.md). diff --git a/docs/getting-started/playground-start.md b/docs/getting-started/playground-start.md index f62e2748efe..0da950b69c0 100644 --- a/docs/getting-started/playground-start.md +++ b/docs/getting-started/playground-start.md @@ -6,17 +6,17 @@ id: playground-start ## Overview -The Gno Playground is an innovative web-based editor and sandbox that enables developers to +The Gno Playground is an innovative web-based editor and sandbox that enables developers to interactively work with the Gno language. It makes coding, testing, and deploying simple with its diverse set of tools and features. Users can -share code, run tests, and deploy projects to gno.land networks, +share code, run tests, and deploy projects to gno.land networks, making it the perfect tool to get started with Gno development. ## Prerequisites - **A gno.land compatible wallet** - Currently, [Adena](https://www.adena.app/) is the preferred wallet for -Gno.land, with more wallets being introduced in the future. +gno.land, with more wallets being introduced in the future. ## Playground Features @@ -44,25 +44,25 @@ ensuring the shared code remains accessible over an extended period. ### Deploy -The **Deploy** feature allows users to seamlessly deploy their Gno code to the -chain. After connecting a gno.land wallet, users can select their desired +The **Deploy** feature allows users to seamlessly deploy their Gno code to the +chain. After connecting a gno.land wallet, users can select their desired package path and network for deployment. ![default_deploy](../assets/getting-started/playground/default_deploy.png) -After inputting your desired package path, you can select the network you would +After inputting your desired package path, you can select the network you would like to deploy to, such as [Portal Loop](../concepts/portal-loop.md) or local, and click deploy. :::info -The Playground will automatically provide enough test tokens to cover the gas +The Playground will automatically provide enough test tokens to cover the gas cost at the time of deployment, removing the need for using a faucet. ::: ### Format The **Format** feature utilizes the Monaco editor and -[`gofmt`](https://pkg.go.dev/cmd/gofmt) to automatically refine and standardize +[`gofmt`](https://pkg.go.dev/cmd/gofmt) to automatically refine and standardize your Gno code's syntax. ### Run @@ -82,7 +82,7 @@ View the code [here](https://play.gno.land/p/nBq2W8drjMy). ### Test -The **Test** feature will look for `_test.gno` files in your playground and run +The **Test** feature will look for `_test.gno` files in your playground and run the`gno test -v` command on them. Testing your code will open a terminal that will show you the output of the test. Read more about how Gno tests work [here](../concepts/gno-test.md). @@ -95,10 +95,10 @@ It provides a command-line interface for hands-on learning, iterative testing, a ## Learning about gno.land & writing Gno code If you're new here, don't worry—content is regularly produced to breakdown -Gno.land to explain its features. Dive into the essentials of gno.land by +gno.land to explain its features. Dive into the essentials of gno.land by exploring the [Concepts](../concepts/concepts.md) section. To get started writing Gno code, check out the [How-to](../how-to-guides/how-to-guides.md) section, the `examples/` folder on -the [Gno monorepo](https://github.com/gnolang/gno), or one of many community projects and tutorials found in the +the [Gno monorepo](https://github.com/gnolang/gno), or one of many community projects and tutorials found in the [awesome-gno](https://github.com/gnolang/awesome-gno/blob/main/README.md) repo on GitHub. diff --git a/docs/gno-infrastructure/validators/faq.md b/docs/gno-infrastructure/validators/faq.md index 1a065a5ca56..940d3abe7a1 100644 --- a/docs/gno-infrastructure/validators/faq.md +++ b/docs/gno-infrastructure/validators/faq.md @@ -8,7 +8,7 @@ id: validators-faq ### What is a gno.land validator? -Gno.land is based on [Tendermint2](https://docs.gno.land/concepts/tendermint2) that relies on a set of validators +gno.land is based on [Tendermint2](https://docs.gno.land/concepts/tendermint2) that relies on a set of validators selected based on [Proof of Contribution](https://docs.gno.land/concepts/proof-of-contribution) (PoC) to secure the network. Validators are tasked with participating in consensus by committing new blocks and broadcasting votes. Validators are compensated with a portion of transaction fees generated in the network. In gno.land, the voting power of @@ -45,7 +45,7 @@ network. ### What stage is the gno.land project in? -Gno.land is currently in Testnet 3, the single-node testnet stage. The next version, Testnet 4, is scheduled to go live +gno.land is currently in Testnet 3, the single-node testnet stage. The next version, Testnet 4, is scheduled to go live in Q3 2024, which will include a validator set implementation for a multinode environment. ## Becoming a Validator @@ -69,11 +69,11 @@ validators for their work. All validators fairly receive an equal amount of rewa The exact plans for mainnet are still TBD. Based on the latest discussions between contributors, the mainnet will likely have an inital validator set size of 20~50, which will gradually scale with the development and decentralization of the -Gno.land project. +gno.land project. ### How do I make my first contribution? -Gno.land is in active development and external contributions are always welcome! If you’re looking for tasks to begin +gno.land is in active development and external contributions are always welcome! If you’re looking for tasks to begin with, we suggest you visit the [Bounties &](https://github.com/orgs/gnolang/projects/35/views/3) [Worx](https://github.com/orgs/gnolang/projects/35/views/3) board and search for open tasks up for grabs. Start from small challenges and work your way up to the bigger ones. Every diff --git a/docs/gno-infrastructure/validators/overview.md b/docs/gno-infrastructure/validators/overview.md index 918bd218f50..e0973ad22d1 100644 --- a/docs/gno-infrastructure/validators/overview.md +++ b/docs/gno-infrastructure/validators/overview.md @@ -6,7 +6,7 @@ id: validators-overview ## Introduction -Gno.land is a blockchain powered by the Gno tech stack, which consists of +gno.land is a blockchain powered by the Gno tech stack, which consists of the [Gno Language](https://docs.gno.land/concepts/gno-language/) (Gno), [Tendermint2](https://docs.gno.land/concepts/tendermint2/) (TM2), and [GnoVM](https://docs.gno.land/concepts/gnovm/). Unlike @@ -17,7 +17,7 @@ selected via governance based on their contribution to the project and technical network is equally distributed across all validators to achieve a high nakamoto coefficient. A portion of all transaction fees paid to the network are evenly shared between all validators to provide a fair incentive structure. -| **Blockchain** | Cosmos | Gno.land | +| **Blockchain** | Cosmos | gno.land | |--------------------------------------|-------------------------|-------------------------------| | **Consensus Protocol** | Comet BFT | Tendermint2 | | **Consensus Mechanism** | Proof of Stake | Proof of Contribution | @@ -78,9 +78,9 @@ be expected from a good, reliable validator. Join the official gno.land community in various channels to receive the latest updates about the project and actively communicate with other validators and contributors. -- [Gno.land Blog](https://gno.land/r/gnoland/blog) -- [Gno.land Discord](https://discord.gg/YFtMjWwUN7) -- [Gno.land Twitter](https://x.com/_gnoland) +- [gno.land Blog](https://gno.land/r/gnoland/blog) +- [gno.land Discord](https://discord.gg/YFtMjWwUN7) +- [gno.land Twitter](https://x.com/_gnoland) :::info diff --git a/docs/how-to-guides/connecting-from-go.md b/docs/how-to-guides/connecting-from-go.md index 971007e5cef..1c0478234fc 100644 --- a/docs/how-to-guides/connecting-from-go.md +++ b/docs/how-to-guides/connecting-from-go.md @@ -2,7 +2,7 @@ id: connect-from-go --- -# How to connect a Go app to gno.land +# How to connect a Go app to gno.land This guide will show you how to connect to a gno.land network from your Go application, using the [gnoclient](../reference/gnoclient/gnoclient.md) package. @@ -46,7 +46,7 @@ go get github.com/gnolang/gno/gno.land/pkg/gnoclient ## Main components -The `gnoclient` package exposes a `Client` struct containing a `Signer` and +The `gnoclient` package exposes a `Client` struct containing a `Signer` and `RPCClient` connector. `Client` exposes all available functionality for talking to a gno.land chain. @@ -60,11 +60,11 @@ type Client struct { ### Signer The `Signer` provides functionality to sign transactions with a gno.land keypair. -The keypair can be accessed from a local keybase, or it can be generated +The keypair can be accessed from a local keybase, or it can be generated in-memory from a BIP39 mnemonic. :::info -The keybase directory path is set with the `gnokey --home` flag. +The keybase directory path is set with the `gnokey --home` flag. ::: ### RPCClient @@ -74,7 +74,7 @@ The `RPCCLient` provides connectivity to a gno.land network via HTTP or WebSocke ## Initialize the Signer -For this example, we will initialize the `Signer` from a local keybase: +For this example, we will initialize the `Signer` from a local keybase: ```go package main @@ -92,14 +92,14 @@ func main() { signer := gnoclient.SignerFromKeybase{ Keybase: keybase, Account: "", // Name of your keypair in keybase - Password: "", // Password to decrypt your keypair + Password: "", // Password to decrypt your keypair ChainID: "", // id of gno.land chain } } ``` A few things to note: -- You can view keys in your local keybase by running `gnokey list`. +- You can view keys in your local keybase by running `gnokey list`. - You can get the password from a user input using the IO package. - `Signer` can also be initialized in-memory from a BIP39 mnemonic, using the [`SignerFromBip39`](https://gnolang.github.io/gno/github.com/gnolang/gno@v0.0.0/gno.land/pkg/gnoclient.html#SignerFromBip39) @@ -116,10 +116,10 @@ if err != nil { } ``` -A list of gno.land network endpoints & chain IDs can be found in the +A list of gno.land network endpoints & chain IDs can be found in the [Gno RPC endpoints](../reference/network-config.md) page. -With this, we can initialize the `gnoclient.Client` struct: +With this, we can initialize the `gnoclient.Client` struct: ```go package main @@ -138,7 +138,7 @@ func main() { signer := gnoclient.SignerFromKeybase{ Keybase: keybase, Account: "", // Name of your keypair in keybase - Password: "", // Password to decrypt your keypair + Password: "", // Password to decrypt your keypair ChainID: "", // id of gno.land chain } @@ -147,7 +147,7 @@ func main() { if err != nil { panic(err) } - + // Initialize the gnoclient client := gnoclient.Client{ Signer: signer, @@ -161,7 +161,7 @@ We can now communicate with the gno.land chain. Let's explore some of the functi ## Query account info from a chain -To send transactions to the chain, we need to know the account number (ID) and +To send transactions to the chain, we need to know the account number (ID) and sequence (nonce). We can get this information by querying the chain with the `QueryAccount` function: @@ -219,7 +219,7 @@ txCfg := gnoclient.BaseTxCfg{ ``` For calling an exported (public) function in a Gno realm, we can use the `MsgCall` -message type. We will use the wrapped ugnot realm for this example, wrapping +message type. We will use the wrapped ugnot realm for this example, wrapping `1000000ugnot` (1 $GNOT) for demonstration purposes. ```go @@ -250,11 +250,11 @@ if err != nil { } ``` -Before running your code, make sure your keypair has enough funds to send the -transaction. +Before running your code, make sure your keypair has enough funds to send the +transaction. -If everything went well, you've just sent a state-changing transaction to a -Gno.land chain! +If everything went well, you've just sent a state-changing transaction to a +gno.land chain! ## Reading on-chain state @@ -288,9 +288,7 @@ Congratulations 🎉 You've just built a small demo app in Go that connects to a gno.land chain to query account info, send a transaction, and read on-chain state. -Check out the full example app code [here](https://github.com/leohhhn/connect-gno/blob/master/main.go). +Check out the full example app code [here](https://github.com/leohhhn/connect-gno/blob/master/main.go). To see a real-world example CLI tool use `gnoclient`, check out [gnoblog-cli](https://github.com/gnolang/blog/tree/main/cmd/gnoblog-cli). - - diff --git a/docs/overview.md b/docs/overview.md index 3619e507dba..a687c878dde 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -1,7 +1,7 @@ --- id: overview slug: / -description: "Gno.land is a Layer 1 blockchain platform that enables the execution of Smart Contracts using an interpreted +description: "gno.land is a Layer 1 blockchain platform that enables the execution of Smart Contracts using an interpreted version of the Go programming language called Gno." --- @@ -9,17 +9,17 @@ version of the Go programming language called Gno." ## What is gno.land? -Gno.land is a Layer 1 blockchain platform that enables the execution of Smart Contracts using an interpreted +gno.land is a Layer 1 blockchain platform that enables the execution of Smart Contracts using an interpreted version of the Go programming language called Gno. ### Key Features and Technology -1. **Interpreted Gno**: Gno.land utilizes the Gno programming language, which is based on Go. It is executed +1. **Interpreted Gno**: gno.land utilizes the Gno programming language, which is based on Go. It is executed through a specialized virtual machine called the GnoVM, purpose-built for blockchain development with built-in determinism and a modified standard library. While Gno shares similarities with Go in terms of syntax, it currently lacks go routine support. However, this feature is planned for future development, ensuring deterministic GnoVM executions. -2. **Consensus Protocol - Tendermint2**: Gno.land achieves consensus between blockchain nodes using the Tendermint2 +2. **Consensus Protocol - Tendermint2**: gno.land achieves consensus between blockchain nodes using the Tendermint2 consensus protocol. This approach ensures secure and reliable network operation. 3. **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. @@ -37,19 +37,19 @@ The decision to base gno.land's language on Go was influenced by the following f In comparison to Ethereum, gno.land offers distinct advantages: -1. **Transparent and Auditable Smart Contracts**: Gno.land Smart Contracts are fully transparent and auditable by users +1. **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 requires contracts to be precompiled into bytecode, leading to less transparency as bytecode is stored on the blockchain, not the human-readable source code. Smart contracts in gno.land can be used as libraries with a simple import statement, making gno.land a defacto source-code repository for the ecosystem. -2. **General-Purpose Language**: Gno.land's Gno is a general-purpose language, similar to Go, extending its +2. **General-Purpose Language**: gno.land's Gno is a general-purpose language, similar to Go, extending its usability beyond the context of blockchain. In contrast, Solidity is designed specifically for Smart Contracts on the Ethereum platform. ## Using the gno.land Documentation -Gno.land's documentation adopts the [Diataxis](https://diataxis.fr/) framework, ensuring structured and predictable content. It includes: +gno.land's documentation adopts the [Diataxis](https://diataxis.fr/) framework, ensuring structured and predictable content. It includes: - A [Getting Started](getting-started/local-setup/local-setup.md) section, covering simple instructions on how to begin your journey into gno.land. - Concise how-to guides for specific technical tasks. - Conceptual explanations, offering context and usage insights. diff --git a/examples/gno.land/r/gnoland/home/home.gno b/examples/gno.land/r/gnoland/home/home.gno index 57570902f5a..c6b3929a16c 100644 --- a/examples/gno.land/r/gnoland/home/home.gno +++ b/examples/gno.land/r/gnoland/home/home.gno @@ -246,7 +246,7 @@ func discoverLinks() ui.Element { - Tokenomics (soon) - [Partners, Fund, Grants](/partners) - [Explore the Ecosystem](/ecosystem) -- [Careers](https://jobs.lever.co/allinbits?department=Gno.land) +- [Careers](https://jobs.ashbyhq.com/allinbits) diff --git a/examples/gno.land/r/gnoland/home/home_filetest.gno b/examples/gno.land/r/gnoland/home/home_filetest.gno index 89721fd8d08..b22c22567b3 100644 --- a/examples/gno.land/r/gnoland/home/home_filetest.gno +++ b/examples/gno.land/r/gnoland/home/home_filetest.gno @@ -33,7 +33,7 @@ func main() { // - Tokenomics (soon) // - [Partners, Fund, Grants](/partners) // - [Explore the Ecosystem](/ecosystem) -// - [Careers](https://jobs.lever.co/allinbits?department=Gno.land) +// - [Careers](https://jobs.ashbyhq.com/allinbits) // // // diff --git a/examples/gno.land/r/gnoland/pages/page_about.gno b/examples/gno.land/r/gnoland/pages/page_about.gno index 6b1f5a6c556..99a879b4ba3 100644 --- a/examples/gno.land/r/gnoland/pages/page_about.gno +++ b/examples/gno.land/r/gnoland/pages/page_about.gno @@ -2,28 +2,28 @@ package gnopages func init() { path := "about" - title := "Gno.land Is A Platform To Write Smart Contracts In Gno" + title := "gno.land Is A Platform To Write Smart Contracts In Gno" // XXX: description := "On gno.land, developers write smart contracts and other blockchain apps using Gno without learning a language that’s exclusive to a single ecosystem." body := ` -Gno.land is a next-generation smart contract platform using Gno, an interpreted version of the general-purpose Go +gno.land is a next-generation smart contract platform using Gno, an interpreted version of the general-purpose Go programming language. On gno.land, smart contracts can be uploaded on-chain only by publishing their full source code, -making it trivial to verify the contract or fork it into an improved version. With a system to publish reusable code -libraries on-chain, gno.land serves as the “GitHub” of the ecosystem, with realms built using fully transparent, +making it trivial to verify the contract or fork it into an improved version. With a system to publish reusable code +libraries on-chain, gno.land serves as the “GitHub” of the ecosystem, with realms built using fully transparent, auditable code that anyone can inspect and reuse. -Gno.land addresses many pressing issues in the blockchain space, starting with the ease of use and intuitiveness of -smart contract platforms. Developers can write smart contracts without having to learn a new language that’s exclusive +gno.land addresses many pressing issues in the blockchain space, starting with the ease of use and intuitiveness of +smart contract platforms. Developers can write smart contracts without having to learn a new language that’s exclusive to a single ecosystem or limited by design. Go developers can easily port their existing web apps to gno.land or build new ones from scratch, making web3 vastly more accessible. -Secured by Proof of Contribution (PoC), a DAO-managed Proof-of-Authority consensus mechanism, gno.land prioritizes -fairness and merit, rewarding the people most active on the platform. PoC restructures the financial incentives that -often corrupt blockchain projects, opting instead to reward contributors for their work based on expertise, commitment, and -alignment. +Secured by Proof of Contribution (PoC), a DAO-managed Proof-of-Authority consensus mechanism, gno.land prioritizes +fairness and merit, rewarding the people most active on the platform. PoC restructures the financial incentives that +often corrupt blockchain projects, opting instead to reward contributors for their work based on expertise, commitment, and +alignment. One of our inspirations for gno.land is the gospels, which built a system of moral code that lasted thousands of years. -By observing a minimal production implementation, gno.land’s design will endure over time and serve as a reference for -future generations with censorship-resistant tools that improve their understanding of the world. +By observing a minimal production implementation, gno.land’s design will endure over time and serve as a reference for +future generations with censorship-resistant tools that improve their understanding of the world. ` _ = b.NewPost("", path, title, body, "2022-05-20T13:17:22Z", nil, nil) } diff --git a/examples/gno.land/r/gnoland/pages/page_ecosystem.gno b/examples/gno.land/r/gnoland/pages/page_ecosystem.gno index c6e7c22ae48..514ea7b2a98 100644 --- a/examples/gno.land/r/gnoland/pages/page_ecosystem.gno +++ b/examples/gno.land/r/gnoland/pages/page_ecosystem.gno @@ -3,48 +3,48 @@ package gnopages func init() { var ( path = "ecosystem" - title = "Discover Gno.land Ecosystem Projects & Initiatives" + title = "Discover gno.land Ecosystem Projects & Initiatives" // XXX: description = "Dive further into the gno.land ecosystem and discover the core infrastructure, projects, smart contracts, and tooling we’re building." body = ` ### [Gno Playground](https://play.gno.land) -Gno Playground is a simple web interface that lets you write, test, and experiment with your Gno code to improve your +Gno Playground is a simple web interface that lets you write, test, and experiment with your Gno code to improve your understanding of the Gno language. You can share your code, run unit tests, deploy your realms and packages, and execute -functions in your code using the repo. +functions in your code using the repo. Visit the playground at [play.gno.land](https://play.gno.land)! ### [Gno Studio Connect](https://gno.studio/connect) -Gno Studio Connect provides seamless access to realms, making it simple to explore, interact, and engage -with gno.land’s smart contracts through function calls. Connect focuses on function calls, enabling users to interact -with any realm’s exposed function(s) on gno.land. +Gno Studio Connect provides seamless access to realms, making it simple to explore, interact, and engage +with gno.land’s smart contracts through function calls. Connect focuses on function calls, enabling users to interact +with any realm’s exposed function(s) on gno.land. See your realm interactions in [Gno Studio Connect](https://gno.studio/connect) ### [Gnoscan](https://gnoscan.io) Developed by the Onbloc team, Gnoscan is gno.land’s blockchain explorer. Anyone can use Gnoscan to easily find -information that resides on the gno.land blockchain, such as wallet addresses, TX hashes, blocks, and contracts. +information that resides on the gno.land blockchain, such as wallet addresses, TX hashes, blocks, and contracts. Gnoscan makes our on-chain data easy to read and intuitive to discover. Explore the gno.land blockchain at [gnoscan.io](https://gnoscan.io)! ### Adena -Adena is a user-friendly non-custodial wallet for gno.land. Open-source and developed by Onbloc, Adena allows gnomes to +Adena is a user-friendly non-custodial wallet for gno.land. Open-source and developed by Onbloc, Adena allows gnomes to interact easily with the chain. With an emphasis on UX, Adena is built to handle millions of realms and tokens with a high-quality interface, support for NFTs and custom tokens, and seamless integration. Install Adena via the [official website](https://www.adena.app/) ### Gnoswap -Gnoswap is currently under development and led by the Onbloc team. Gnoswap will be the first DEX on gno.land and is an +Gnoswap is currently under development and led by the Onbloc team. Gnoswap will be the first DEX on gno.land and is an automated market maker (AMM) protocol written in Gno that allows for permissionless token exchanges on the platform. ### Flippando Flippando is a simple on-chain memory game, ported from Solidity to Gno, which starts with an empty matrix to flip tiles -on to see what’s underneath. If the tiles match, they remain uncovered; if not, they are briefly shown, and the player +on to see what’s underneath. If the tiles match, they remain uncovered; if not, they are briefly shown, and the player must memorize their colors until the entire matrix is uncovered. The end result can be minted as an NFT, which can later be assembled into bigger, more complex NFTs, creating a digital “painting” with the uncovered tiles. Play the game at [Flippando](https://gno.flippando.xyz/flip) diff --git a/examples/gno.land/r/gnoland/pages/page_gnolang.gno b/examples/gno.land/r/gnoland/pages/page_gnolang.gno index 13fc4072b1a..ac7bd9025b0 100644 --- a/examples/gno.land/r/gnoland/pages/page_gnolang.gno +++ b/examples/gno.land/r/gnoland/pages/page_gnolang.gno @@ -3,7 +3,7 @@ package gnopages func init() { var ( path = "gnolang" - title = "About the Gno, the Language for Gno.land" + title = "About the Gno, the Language for gno.land" // TODO fix broken images body = ` diff --git a/examples/gno.land/r/gnoland/pages/page_testnets.gno b/examples/gno.land/r/gnoland/pages/page_testnets.gno index 900ee2e3bf7..0811cd68e6d 100644 --- a/examples/gno.land/r/gnoland/pages/page_testnets.gno +++ b/examples/gno.land/r/gnoland/pages/page_testnets.gno @@ -2,9 +2,9 @@ package gnopages func init() { path := "testnets" - title := "Gno.land Testnet List" + title := "gno.land Testnet List" body := ` -- [Portal Loop](https://docs.gno.land/concepts/portal-loop) - a rolling testnet +- [Portal Loop](https://docs.gno.land/concepts/portal-loop) - a rolling testnet - [staging.gno.land](https://staging.gno.land) - wiped every commit to monorepo master - _[test4.gno.land](https://test4.gno.land) (latest)_ diff --git a/examples/gno.land/r/gnoland/pages/page_tokenomics.gno b/examples/gno.land/r/gnoland/pages/page_tokenomics.gno index f51364c36e6..3070e58cc6f 100644 --- a/examples/gno.land/r/gnoland/pages/page_tokenomics.gno +++ b/examples/gno.land/r/gnoland/pages/page_tokenomics.gno @@ -3,7 +3,7 @@ package gnopages func init() { var ( path = "tokenomics" - title = "Gno.land Tokenomics" + title = "gno.land Tokenomics" // XXX: description = """ body = `Lorem Ipsum` ) diff --git a/examples/gno.land/r/gnoland/pages/pages_test.gno b/examples/gno.land/r/gnoland/pages/pages_test.gno index 074e80e1892..16984a1c7ff 100644 --- a/examples/gno.land/r/gnoland/pages/pages_test.gno +++ b/examples/gno.land/r/gnoland/pages/pages_test.gno @@ -30,8 +30,8 @@ func TestAbout(t *testing.T) { printedOnce := false got := Render("p/about") expectedSubtrings := []string{ - "Gno.land Is A Platform To Write Smart Contracts In Gno", - "Gno.land is a next-generation smart contract platform using Gno, an interpreted version of the general-purpose Go\nprogramming language.", + "gno.land Is A Platform To Write Smart Contracts In Gno", + "gno.land is a next-generation smart contract platform using Gno, an interpreted version of the general-purpose Go\nprogramming language.", } for _, substring := range expectedSubtrings { if !strings.Contains(got, substring) { diff --git a/examples/gno.land/r/stefann/home/home.gno b/examples/gno.land/r/stefann/home/home.gno index f40329ebf7e..9586f377311 100644 --- a/examples/gno.land/r/stefann/home/home.gno +++ b/examples/gno.land/r/stefann/home/home.gno @@ -57,7 +57,7 @@ func init() { `Hey there! I’m Stefan, a student of Computer Science. I’m all about exploring and adventure — whether it’s diving into the latest tech or discovering a new city, I’m always up for the challenge!`, `### Contributions`, - `I'm just getting started, but you can follow my journey through Gno.land right [here](https://github.com/gnolang/hackerspace/issues/94) 🔗`, + `I'm just getting started, but you can follow my journey through gno.land right [here](https://github.com/gnolang/hackerspace/issues/94) 🔗`, }, } @@ -282,7 +282,7 @@ func renderSponsors() string { out += ufmt.Sprintf( `
  • - %d. %s + %d. %s %s
  • `, padding, border, i+1, formatAddress(sponsor.Address.String()), sponsor.Amount.String(), diff --git a/gno.land/README.md b/gno.land/README.md index 7da2a8574de..8f7f9c32945 100644 --- a/gno.land/README.md +++ b/gno.land/README.md @@ -1,6 +1,6 @@ -# Gno.land +# gno.land -Gno.land is a layer-1 blockchain that integrates various cutting-edge technologies, including [Tendermint2](../tm2), [GnoVM](../gnovm), Proof-of-Contributions consensus mechanism, on-chain governance through a new DAO framework with support for sub-DAOs, and a unique licensing model that allows open-source code to be monetized by default. +gno.land is a layer-1 blockchain that integrates various cutting-edge technologies, including [Tendermint2](../tm2), [GnoVM](../gnovm), Proof-of-Contributions consensus mechanism, on-chain governance through a new DAO framework with support for sub-DAOs, and a unique licensing model that allows open-source code to be monetized by default. ## Getting started @@ -12,7 +12,7 @@ To add a web interface and faucet to your localnet, use [`gnoweb`](./cmd/gnoweb) ## Interchain -Gno.land aims to offer security, high-quality contract libraries, and scalability to other Gnolang chains, while also prioritizing interoperability with existing and emerging chains. +gno.land aims to offer security, high-quality contract libraries, and scalability to other Gnolang chains, while also prioritizing interoperability with existing and emerging chains. Post mainnet launch, gno.land aims to integrate IBCv1 to connect with existing Cosmos chains and implement ICS1 for security through the existing chains. Afterwards, the platform plans to improve IBC by adding new capabilities for interchain smart-contracts. diff --git a/gno.land/genesis/README.md b/gno.land/genesis/README.md index 55fdb3d0dfd..4fb81baaaa0 100644 --- a/gno.land/genesis/README.md +++ b/gno.land/genesis/README.md @@ -1,3 +1,3 @@ -# Gno.land genesis +# gno.land genesis **WIP: see https://github.com/gnolang/independence-day** diff --git a/gno.land/pkg/gnoclient/README.md b/gno.land/pkg/gnoclient/README.md index a2f00895dbd..4b3854b1bcc 100644 --- a/gno.land/pkg/gnoclient/README.md +++ b/gno.land/pkg/gnoclient/README.md @@ -1,4 +1,4 @@ -# Gno.land Go Client +# gno.land Go Client The gno.land Go client is a dedicated library for interacting seamlessly with the gno.land RPC API. This library simplifies the process of querying or sending transactions to the gno.land RPC API and interpreting the responses. @@ -18,4 +18,3 @@ The roadmap for the gno.land Go client includes: - **Initial Development:** Kickstart the development specifically for gno.land. Subsequently, transition the generic functionalities to other modules like `tm2`, `gnovm`, `gnosdk`. - **Integration:** Begin incorporating this library within various components such as `gno.land/cmd/*` and other external clients, including `gnoblog-client`, the Discord community faucet bot, and [GnoMobile](https://github.com/gnolang/gnomobile). - **Enhancements:** Once the generic client establishes a robust foundation, we aim to utilize code generation for contracts. This will streamline the creation of type-safe, contract-specific clients. - diff --git a/gno.land/pkg/gnoweb/views/faucet.html b/gno.land/pkg/gnoweb/views/faucet.html index 1c9ca1de53c..938b8993e0e 100644 --- a/gno.land/pkg/gnoweb/views/faucet.html +++ b/gno.land/pkg/gnoweb/views/faucet.html @@ -1,97 +1,139 @@ {{- define "app" -}} - + - - {{ template "html_head" . }} - Gno.land - - -
    - -
    - This is the gno.land (test) {{ if .Data.Config.CaptchaSite }} - - {{ end }} - + + {{ template "html_head" . }} + gno.land + + +
    + +
    + This is the gno.land (test) {{ if .Data.Config.CaptchaSite }} + + {{ end }} + - + // Reset the captcha + grecaptcha.reset(); + }); + }; + -
    -
    -
    - {{ if .Data.Config.CaptchaSite }} -
    - {{ end }} -
    -
    -
    - -
    - {{ template "footer" }} -
    - {{ template "js" }} - +
    +
    +
    + {{ if .Data.Config.CaptchaSite }} +
    + {{ end }} +
    + +
    +
    +
    + +
    + {{ template "footer" }} +
    + {{ template "js" }} + {{- end -}} diff --git a/gno.land/pkg/gnoweb/views/funcs.html b/gno.land/pkg/gnoweb/views/funcs.html index 626d01d8448..5a3a086e155 100644 --- a/gno.land/pkg/gnoweb/views/funcs.html +++ b/gno.land/pkg/gnoweb/views/funcs.html @@ -1,220 +1,337 @@ {{- define "header_buttons" -}}
    - +
    -{{- end -}} - -{{- define "html_head" -}} +{{- end -}} {{- define "html_head" -}} -{{if .Data.Description}}{{end}} +{{if .Data.Description}}{{end}} - - - - + + + + - + - + -{{- end -}} - -{{- define "logo" -}} +{{- end -}} {{- define "logo" -}} -{{- end -}} - -{{- define "footer" -}} -
    - {{ template "logo" }} -
    -{{- end -}} - -{{- define "js" -}} +{{- end -}} {{- define "footer" -}} +
    {{ template "logo" }}
    +{{- end -}} {{- define "js" -}} -{{ template "analytics" .}} -{{- end -}} - -{{- define "analytics" -}} -{{- if .Data.Config.WithAnalytics -}} +{{ template "analytics" .}} {{- end -}} {{- define "analytics" -}} {{- if +.Data.Config.WithAnalytics -}} - -{{- end -}} -{{- end -}} - -{{- define "subscribe" -}} + +{{- end -}} {{- end -}} {{- define "subscribe" -}}
    -
    - -
    -
    - - - -
    -
    - - -
    - -
    -
    +
    + +
    +
    + + + +
    +
    + + +
    + +
    +
    {{- end -}} diff --git a/gno.land/pkg/gnoweb/views/generic.html b/gno.land/pkg/gnoweb/views/generic.html index 5bcd14c3a46..a917ad34c03 100644 --- a/gno.land/pkg/gnoweb/views/generic.html +++ b/gno.land/pkg/gnoweb/views/generic.html @@ -1,21 +1,24 @@ {{- define "app" -}} - + - - Gno.land - {{ .Data.Title }} - {{ template "html_head" . }} - - -
    - -
    -
    +    
    +        gno.land - {{ .Data.Title }}
    +        {{ template "html_head" . }}
    +    
    +    
    +        
    + +
    +
               {{- .Data.MainContent -}}
    -        
    -
    - {{ template "footer" }} -
    - {{ template "js" .}} - +
    +
    + {{ template "footer" }} +
    + {{ template "js" .}} + {{- end -}} diff --git a/gno.land/pkg/gnoweb/views/package_dir.html b/gno.land/pkg/gnoweb/views/package_dir.html index 793ebd40b84..ed7cd9a8347 100644 --- a/gno.land/pkg/gnoweb/views/package_dir.html +++ b/gno.land/pkg/gnoweb/views/package_dir.html @@ -1,33 +1,37 @@ {{- define "app" -}} - + - - {{ template "html_head" . }} - Gno.land - {{.Data.DirPath}} - - -
    - - -
    {{ template "dir_contents" . }}
    - {{ template "footer" }} -
    - {{ template "js" . }} - + + {{ template "html_head" . }} + gno.land - {{.Data.DirPath}} + + +
    + + +
    + {{ template "dir_contents" . }} +
    + {{ template "footer" }} +
    + {{ template "js" . }} + -{{- end -}} - -{{- define "dir_contents" -}} +{{- end -}} {{- define "dir_contents" -}}
    - {{ $dirPath := .Data.DirPath }} -
      - {{ range .Data.Files }} -
    • - {{ . }} -
    • - {{ end }} -
    + {{ $dirPath := .Data.DirPath }} +
      + {{ range .Data.Files }} +
    • + {{ . }} +
    • + {{ end }} +
    {{- end -}} diff --git a/gno.land/pkg/gnoweb/views/package_file.html b/gno.land/pkg/gnoweb/views/package_file.html index 43e7820b29f..32d8af9e174 100644 --- a/gno.land/pkg/gnoweb/views/package_file.html +++ b/gno.land/pkg/gnoweb/views/package_file.html @@ -1,23 +1,28 @@ {{- define "app" -}} - + - - {{ template "html_head" . }} - Gno.land - {{.Data.DirPath}}/{{.Data.FileName}} - - -
    - -
    - {{ .Data.DirPath }}/{{ .Data.FileName }} -
    -
    - {{ .Data.FileContents }} -
    + + {{ template "html_head" . }} + gno.land - {{.Data.DirPath}}/{{.Data.FileName}} + + +
    + +
    + + {{ .Data.DirPath }}/{{ + .Data.FileName }} + +
    +
    + {{ .Data.FileContents }} +
    - {{ template "footer" }} -
    - {{ template "js" .}} - + {{ template "footer" }} +
    + {{ template "js" .}} + {{- end -}} diff --git a/gno.land/pkg/gnoweb/views/realm_help.html b/gno.land/pkg/gnoweb/views/realm_help.html index 7bde8fef7fa..f33bb50e9e6 100644 --- a/gno.land/pkg/gnoweb/views/realm_help.html +++ b/gno.land/pkg/gnoweb/views/realm_help.html @@ -1,89 +1,100 @@ {{- define "app" -}} - + - - {{ template "html_head" . }} - Gno.land - {{.Data.DirPath}} - - -
    -
    - - + + {{ template "html_head" . }} + gno.land - {{.Data.DirPath}} + + +
    +
    + +
    + + {{ .Data.DirPath }}$help + +
    -
    -
    - These are the realm's exposed functions ("public smart contracts").
    -
    - My address: (see `gnokey list`)
    -
    -
    - {{ template "func_specs" . }} -
    +
    +
    + These are the realm's exposed functions ("public smart + contracts").
    +
    + My address: + (see + `gnokey list`)
    +
    +
    + {{ template "func_specs" . }} +
    - {{ template "footer" }} -
    - {{ template "js" . }} - - + {{ template "footer" }} +
    + {{ template "js" . }} + + -{{- end -}} - -{{- define "func_specs" -}} +{{- end -}} {{- define "func_specs" -}}
    - {{ $funcName := .Data.FuncName }} {{ $found := false }} {{ if eq $funcName "" }} {{ range .Data.FunctionSignatures }} {{ template "func_spec" . }} {{ end }} {{ else }} {{ range - .Data.FunctionSignatures }} {{ if eq .FuncName $funcName }} {{ $found = true }} {{ template "func_spec" . }} {{ end }} {{ end }} {{ if not $found }} {{ $funcName }} not found. {{ end }} {{ end }} + {{ $funcName := .Data.FuncName }} {{ $found := false }} {{ if eq $funcName + "" }} {{ range .Data.FunctionSignatures }} {{ template "func_spec" . }} {{ + end }} {{ else }} {{ range .Data.FunctionSignatures }} {{ if eq .FuncName + $funcName }} {{ $found = true }} {{ template "func_spec" . }} {{ end }} {{ + end }} {{ if not $found }} {{ $funcName }} not found. {{ end }} {{ end }}
    -{{- end -}} - -{{- define "func_spec" -}} +{{- end -}} {{- define "func_spec" -}}
    - - - - - - - - - - - - - - - - - -
    contract{{ .FuncName }}(...)
    params - - {{ range .Params }}{{ template "func_param" . }}{{ end }} -
    -
    results - - {{ range .Results }}{{ template "func_result" . }}{{ end }} -
    -
    command -
    -
    + + + + + + + + + + + + + + + + + +
    contract{{ .FuncName }}(...)
    params + + {{ range .Params }}{{ template "func_param" . }}{{ end }} +
    +
    results + + {{ range .Results }}{{ template "func_result" . }}{{ end }} +
    +
    command +
    +
    -{{- end -}} - -{{- define "func_param" -}} +{{- end -}} {{- define "func_param" -}} - {{ .Name }} - - - - {{ .Type }} + {{ .Name }} + + + + {{ .Type }} -{{- end -}} - -{{- define "func_result" -}} +{{- end -}} {{- define "func_result" -}} - {{ .Name }} - {{ .Type }} + {{ .Name }} + {{ .Type }} {{ end }} diff --git a/gno.land/pkg/gnoweb/views/realm_render.html b/gno.land/pkg/gnoweb/views/realm_render.html index 1b5842cba1f..978b6afed46 100644 --- a/gno.land/pkg/gnoweb/views/realm_render.html +++ b/gno.land/pkg/gnoweb/views/realm_render.html @@ -1,35 +1,40 @@ {{- define "app" -}} - + - - {{ template "html_head" . }} - Gno.land - {{.Data.RealmName}} - - -
    - -
    - /r/{{ .Data.RealmName }} - {{- if .Data.Query -}}:{{- end -}} {{- range $index, $link := .Data.PathLinks -}} {{- if (gt $index 0) }}/{{ end -}} - {{ $link.Text }} - {{- end -}} - - - {{ if .Data.HasReadme }} - [readme] - {{ end }} - [source] - [help] - -
    + + {{ template "html_head" . }} + gno.land - {{.Data.RealmName}} + + +
    + +
    + /r/{{ .Data.RealmName }} + {{- if .Data.Query -}}:{{- end -}} {{- range $index, $link + := .Data.PathLinks -}} {{- if (gt $index 0) }}/{{ end -}} + {{ $link.Text }} + {{- end -}} + + + {{ if .Data.HasReadme }} + [readme] + {{ end }} + [source] + [help] + +
    -
    -
    {{ .Data.Contents }}
    -
    - {{ template "footer" }} -
    - {{ template "js" .}} - +
    +
    {{ .Data.Contents }}
    +
    + {{ template "footer" }} +
    + {{ template "js" .}} + {{- end -}} diff --git a/gnovm/pkg/gnolang/store.go b/gnovm/pkg/gnolang/store.go index dfb1e9f114c..9410eede29e 100644 --- a/gnovm/pkg/gnolang/store.go +++ b/gnovm/pkg/gnolang/store.go @@ -29,7 +29,7 @@ type PackageGetter func(pkgPath string, store Store) (*PackageNode, *PackageValu type NativeStore func(pkgName string, name Name) func(m *Machine) // Store is the central interface that specifies the communications between the -// GnoVM and the underlying data store; currently, generally the Gno.land +// GnoVM and the underlying data store; currently, generally the gno.land // blockchain, or the file system. type Store interface { // STABLE