# Introduction

## Welcome to GGEZ1 Chain

GGEZ1 is a Layer 1 blockchain ecosystem dedicated to tokenizing high-value sustainability assets to create stable and transparent asset-backed cryptocurrencies. The platform is designed to bridge Web3 technology with real-world investments in sustainability, promoting Regenerative Finance (ReFi) to accelerate the transition to a sustainable economy​.

GGEZ1 is built on the Cosmos SDK, ensuring scalability, interoperability, and cost efficiency. It provides an infrastructure that enables fast, low-cost transactions, smart contract functionality, decentralized applications (dApps), and asset-backed cryptocurrencies like the GG ReFi Coin and GGEZ1 Governance Coin​.

This documentation provides technical guides, APIs, and smart contract integrations to help developers build on the GGEZ1 blockchain. Whether you're creating a dApp, issuing tokenized assets, or exploring ReFi opportunities, GGEZ1 provides the infrastructure for the next generation of sustainable finance.


# GGEZ1 ReFi

Discover how GGEZ1 is revolutionizing regenerative finance (ReFi) with sustainable, blockchain-powered solutions. Learn about our innovative approach to eco-friendly growth, tokenomics, and real-world impact. Dive into the details by reading the [GGEZ1 ReFi Whitepaper](https://ggez.one/pdfs/GGEZ1_ReFi.pdf).


# GGEZ1 GameFi

Explore the future of gaming with GGEZ1 GameFi! Learn how we're merging blockchain technology with immersive gameplay, rewarding players with real value. Discover our GameFi ecosystem, token utilities, and play-to-earn mechanics in the [GGEZ1 GameFi Whitepaper](https://ggez.one/pdfs/GGEZ1_GameFi.pdf).


# Blockchain Information

**Chain Name**: GGEZ1 ReFi Blockchain Ecosystem

**Blockchain Explorer:** <https://explorer.ggez.one/ggezchain>

**Ticker:** coin: ggez1 / unit: uggez1

**Coin or Token:** Coin

**GitHub Repository / Node URL / SDK URL**: <https://github.com/GGEZLabs>

**Coin-Supported Wallet & Download Link:** <https://www.keplr.app/get>


# Specifications

**Native Coin:** uggez1

**Decimal Places (Exponent):** 6

**Block Generation Speed:** 5-6 seconds

**Consensus Mechanism:** CometBFT

**Number of Block Confirmations Required for Finality:** 8

**Based on Blockchain Network:** Cosmos SDK

**Current Block Height / Ledger Height:** <https://rest.ggez.one/cosmos/base/tendermint/v1beta1/blocks/latest>


# Security & Cryptographic Details

**Address Generation & Format:**\
The Cosmos SDK uses Bech32 encoding with a custom prefix (e.g., ggez for GGEZ1 Chain). Bech32 encoding provides error-detection and human-readable parts (HRP), making addresses recognizable and compatible within the ecosystem.

**Offline Address & Private Key Generation:**\
Use the SECP256k1 curve for key generation. Derive the public key from the private key using elliptic curve multiplication. Address Derivation.

**Regular Verification Rules for Addresses:** /^ggez\[A-Za-z0-9]{30,80}$/


# API Reference

This section provides details on the available API endpoints for both the GGEZ1 Mainnet and Testnet. These endpoints allow developers to interact with the GGEZ1 blockchain, retrieve blockchain data, execute transactions, and manage tokenized assets.


# Base URLs

### Mainnet (Live Network)

**REST API Base URL:** <https://rest.ggez.one>

**RPC API Base URL:** <https://bc.ggez.one:8443>

**gRPC API Base URL:** grpc.ggez.one:4443

**WebSocket API Base URL:** wss\://bc.ggez.one:8443

### Testnet (Developer Sandbox)

**REST API Base URL:** <https://drest.ggez.one>

**RPC API Base URL:** <https://dbc.ggez.one:26657>

**WebSocket API Base URL:** wss\://dbc.ggez.one:26657


# API Endpoints


# Blockchain Data Retrieval

### **Supply**

<https://rest.ggez.one/cosmos/bank/v1beta1/supply>

### **Circulating supply**

<https://node.ggez.one/ggezchain/supply?metric=circulating_supply>

### **Bonded supply**

<https://node.ggez.one/ggezchain/supply?metric=bonded_supply>

### **Obtain Block Information by Block Height**

[https://rest.ggez.one/cosmos/base/tendermint/v1beta1/blocks/{height}](https://rest.ggez.one/cosmos/base/tendermint/v1beta1/blocks/%7Bheight%7D)

**Example:**\
<https://rest.ggez.one/cosmos/base/tendermint/v1beta1/blocks/200000>

### **Obtain Transaction Details by TXID**

[https://rest.ggez.one/cosmos/tx/v1beta1/txs/{hash}](https://rest.ggez.one/cosmos/tx/v1beta1/txs/A5A36246D74C08C214CF182FF4F7AD3E6CB24CE07CE597EAD52BE716B93FEB34)

**Example:**\
<https://rest.ggez.one/cosmos/tx/v1beta1/txs/A5A36246D74C08C214CF182FF4F7AD3E6CB24CE07CE597EAD52BE716B93FEB34>

### **Obtain Address Balance:**

#### Get balance:

[https://rest.ggez.one/cosmos/bank/v1beta1/balances/{address}](https://rest.ggez.one/cosmos/bank/v1beta1/balances/%7Baddress%7D)

**Example:**\
<https://rest.ggez.one/cosmos/bank/v1beta1/balances/ggez1u7374gx6efl39vsd6mhwn0pw7nhwzqtfjumkfh>

#### Get balance by denom:

[https://rest.ggez.one/cosmos/bank/v1beta1/balances/{address}/by\_denom?denom=uggez1](https://rest.ggez.one/cosmos/bank/v1beta1/balances/%7Baddress%7D/by_denom?denom=uggez1)

**Example:**\
<https://rest.ggez.one/cosmos/bank/v1beta1/balances/ggez1u7374gx6efl39vsd6mhwn0pw7nhwzqtfjumkfh/by_denom?denom=uggez1>

#### Get spendable balance:

[https://rest.ggez.one/cosmos/bank/v1beta1/spendable\_balances/{address}](https://rest.ggez.one/cosmos/bank/v1beta1/spendable_balances/%7Baddress%7D)

**Example:** <https://rest.ggez.one/cosmos/bank/v1beta1/spendable_balances/ggez1u7374gx6efl39vsd6mhwn0pw7nhwzqtfjumkfh>

#### Get spendable balance by denom:

[https://rest.ggez.one/cosmos/bank/v1beta1/spendable\_balances/{address}/by\_denom?denom=uggez1](https://rest.ggez.one/cosmos/bank/v1beta1/spendable_balances/%7Baddress%7D/by_denom?denom=uggez1)

**Example :** <https://rest.ggez.one/cosmos/bank/v1beta1/spendable_balances/ggez1u7374gx6efl39vsd6mhwn0pw7nhwzqtfjumkfh/by_denom?denom=uggez1>


# Transaction Management

**Broadcast / Transaction Transmission API:** <https://bc.ggez.one:8443/broadcast_tx_asyn>

**Transaction Fee Calculation:** tx\_fee= gas\_limit\* gas\_price

**Conversion Rate of Transaction Units with the Main Unit:**\
1 GGEZ1 = 1,000 MGGEZ = 1,000,000 UGGEZ1

**Transaction Success Validation Criteria:**\
Based on Response Code, if code is 0 then transaction is successful.

**Memo/Tag Support:** Yes

## Send Token Example

Send token using Keplr wallet.

**@cosmjs/stargate** and **@keplr-wallet/types** packages required to complete transaction.\
Also **chain info** file:\
<https://github.com/chainapsis/keplr-chain-registry/blob/main/cosmos/ggezchain.json>

{% code overflow="wrap" lineNumbers="true" fullWidth="false" %}

````typescript
```typescript
import { ChainInfo } from "./chainInfo";
import { Coin, SigningStargateClient, StdFee } from "@cosmjs/stargate";
import { Window as KeplrWindow } from "@keplr-wallet/types";

declare global {
  interface Window extends KeplrWindow {}
}

export async function sendTokenExample() {
  const { keplr } = window;

  if (!keplr) {
    return { error: "You need to install Keplr" };
  }

  try {
    await keplr.experimentalSuggestChain(ChainInfo);
    await keplr.enable(ChainInfo.chainId);

    const offlineSigner = keplr.getOfflineSigner!(ChainInfo.chainId);
    if (!offlineSigner) {
      return { error: "Error while getting offlineSigner" };
    }

    const signerAddress = (await offlineSigner.getAccounts())[0].address;

    const client = await SigningStargateClient.connectWithSigner(
      '"wss://bc.ggez.one:26657"',
      offlineSigner
    );
    const toAddress = "ggez1u7374gx6efl39vsd6mhwn0pw7nhwzqtfjumkfh";
    const amount: Coin[] = [
      {
        amount: "1000000", // 1000000 uggez1 = 1 GGEZ1
        denom: "uggez1",
      },
    ];
    const fee: StdFee = {
      amount: [
        {
          amount: "100000", // Fee = gas * gas_price = 200000 * 0.5
          denom: "uggez1",
        },
      ],
      gas: "200000",
    };
    const memo = "Add memo here"; // It is optional
    const response = await client.sendTokens(
      signerAddress,
      toAddress,
      amount,
      fee,
      memo
    );
    // If code equal 0 transaction should be successful
    if (response.code === 0) {
      console.log("Successful Transaction");
    } else {
      console.log(`Error: ${response.rawLog}`);
    }
  } catch (error) {
    console.error(error);
  }
}

```
````

{% endcode %}


# Nodes and Validators


# Node Setup

Instruction to install and configure the ggezchaind binary.

{% hint style="info" %}
For the tutorial, it is assumed that you are using an Ubuntu LTS release.
{% endhint %}

## Install Requirements <a href="#build-requirements" id="build-requirements"></a>

### Install necessary tools

```
sudo apt update
sudo apt install -y gcc build-essential
```

### Install Go

{% hint style="info" %}
**Go 1.21+** is required.
{% endhint %}

Follow these instructions to install Go.

```
wget https://golang.org/dl/go1.21.13.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.13.linux-amd64.tar.gz
```

Then set these in the `.profile` in the user's home (i.e. `~/`) folder:

```
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
```

After updating your `~/.profile` you will need to source it:

```
source ~/.profile
```

### Install Cosmovisor

```
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0
```

In the `.profile` file, usually located at `~/.profile`, add:

```
export DAEMON_NAME=ggezchain
export DAEMON_HOME=$HOME/.ggezchain
export DAEMON_RESTART_AFTER_UPGRADE=true
export DAEMON_ALLOW_DOWNLOAD_BINARIES=false
```

Run `cosmovisor version` to check the cosmovisor version.

### Install Ignite CLI

```
sudo curl https://get.ignite.com/cli! | sudo bash
```

## Install ggezchaind Binary

```
# from $HOME dir
git clone https://github.com/GGEZLabs/ggezchain.git
cd ggezchain
```

Build ggezchaind binary.

```
ignite chain build --release.targets linux:amd64 --output ./release --release
```

Extract build file.

```
cd release 
tar -xvzf ggezchain_linux_amd64.tar.gz
```

Now run `./ggezchaind -h` to check it.

## Configure ggezchaid

### Initialize Chain <a href="#initialize-chain" id="initialize-chain"></a>

Choose a custom moniker for the node and initialize. By default, the `init` command creates the `~/.ggezchain` directory with subfolders `config` and `data`. In the `/config` directory, the most important files for configuration are `app.toml` and `config.toml`.

```
ggezchaind init custom_moniker
```

### Genesis File <a href="#genesis-file" id="genesis-file"></a>

Once the node is initialized, download the genesis file and move to the `/config` directory of the **ggezchain** home directory.

```
wget https://raw.githubusercontent.com/GGEZLabs/ggez-mainnet/refs/heads/main/genesis/genesis.json
mv genesis.json ~/.ggezchain/config/genesis.json
```

### Seeds & Peers[​](https://hub.cosmos.network/main/hub-tutorials/join-mainnet#seeds--peers) <a href="#seeds--peers" id="seeds--peers"></a>

Upon startup the node will need to connect to peers. If there are specific nodes a node operator is interested in setting as seeds or as persistent peers, this can be configured in `~/.ggezchain/config/config.toml` .

```
# Comma separated list of seed nodes to connect to
seeds = "<seed node id 1>@<seed node address 1>:26656,<seed node id 2>@<seed node address 2>:26656"

# Comma separated list of nodes to keep persistent connections to
persistent_peers = "<node id 1>@<node address 1>:26656,<node id 2>@<node address 2>:26656"
```

### Gas Prices

For mainnet, the recommended `minimum-gas-prices` is `0.4uggez1`.

### REST API <a href="#rest-api" id="rest-api"></a>

{% hint style="info" %}
**Note**: This is an optional configuration.
{% endhint %}

By default, the REST API is disabled. To enable the REST API, edit the `~/.ggezchain/config/app.toml` file, and set `enable` to `true` in the `[api]` section.

```
[api]
# Enable defines if the API server should be enabled.
enable = true
# Swagger defines if swagger documentation should automatically be registered.
swagger = false
# Address defines the API server to listen on.
address = "tcp://0.0.0.0:1317"
```

### GRPC <a href="#grpc" id="grpc"></a>

{% hint style="info" %}
**Note**: This is an optional configuration.
{% endhint %}

By default, gRPC is enabled on port `9090`. The `~/.ggezchain/config/app.toml` file is where changes can be made in the gRPC section. To disable the gRPC endpoint, set `enable` to `false`. To change the port, use the `address` parameter.

```
[grpc]
# Enable defines if the gRPC server should be enabled.
enable = true
# Address defines the gRPC server address to bind to.
address = "0.0.0.0:9090"
```

### Connect to Other Nodes <a href="#prepare-and-connect-to-other-nodes" id="prepare-and-connect-to-other-nodes"></a>

Follow this [link](https://hub.cosmos.network/main/hub-tutorials/join-mainnet#sync-options) to sync to other nodes.

## Initialize Cosmovisor <a href="#initialize-chain" id="initialize-chain"></a>

Before start the node we will init `cosmovisor` .

```
cosmovisor init /path/to/ggezchaind
```

## Running via Background Process <a href="#running-via-background-process" id="running-via-background-process"></a>

To run the node in a background process with automatic restarts, it's recommended to use a service manager like `systemd`. To set this up run the following:

```
sudo tee /etc/systemd/system/<service name>.service > /dev/null <<EOF  
[Unit]
Description=GGEZ1 Chain Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=/bin/bash -l -c 'cosmovisor run start'
Restart=always
RestartSec=3
LimitNOFILE=4096
Environment="DAEMON_HOME=$HOME/.ggezchain"
Environment="DAEMON_NAME=ggezchain"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"

[Install]
WantedBy=multi-user.target
EOF
```

Run the following to setup the daemon:

```
sudo systemctl daemon-reload
sudo systemctl enable <service name>
```

Then start the process and confirm that it's running.

```
sudo systemctl start <service name>
sudo systemctl status <service name>
# For live status
journalctl -u <service name> -f
```


# Run Validator Node

Before setting up a validator node, make sure to have completed the [Node Setup](/ggez1-chain/nodes-and-validators/node-setup) guide.

## Create Account

We will create an account to control the validator.

```
ggezchaind keys add account_name
```

If you have already have an account add `--recover` flag to previous command.

{% hint style="info" %}
Activate the account by sending tokens to it.
{% endhint %}

## Create Validator

create a `validator.json` file:

```
{
  "pubkey": {
    "@type": "/cosmos.crypto.ed25519.PubKey",
    "key": "Pc1g/vSn3nT1BA/R6FdfAjlze1WBkU6IaAaNzB92ckw="
  },
  "amount": "<amount>uggez1",
  "moniker": "myvalidator",
  "website": "https://validator_website",
  "commission-rate": "0.1",
  "commission-max-rate": "0.2",
  "commission-max-change-rate": "0.01",
  "min-self-delegation": "1"
}
```

Now to create the validator.

```
ggezchaind tx staking create-validator path/to/validator.json --from account_name --gas auto --gas-prices 0.4uggez1 --gas-adjustment 1.5
```

Now if transaction processed successfully you can check your validator if it accepted.

```
ggezchaind q staking validators
```


# Brand Identity

## Assets

{% file src="/files/NBMd1XvjzfV9QS8eQVgi" %}
GGEZ1 Chain PNG
{% endfile %}

{% file src="/files/GebZHDvPOBqgkEgZskPh" %}
GGEZ1 Chain SVG
{% endfile %}

{% file src="/files/vEn3QpV7L3MGOctEPth3" %}
GGEZ1 PNG
{% endfile %}

{% file src="/files/0pOSK9t57WptHwhvgGhZ" %}
GGEZ1 SVG
{% endfile %}

{% file src="/files/ei8rPvEjiBEGsDTN7vpJ" %}
GGZ PNG
{% endfile %}

{% file src="/files/27fqQRKQov4LtYRvK98H" %}
GGZ SVG
{% endfile %}


