# core
**Repository Path**: mirrors_collective/core
## Basic Information
- **Project Name**: core
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-06-16
- **Last Updated**: 2026-05-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
The full-node software implementation of the Terra blockchain.
Explore the Docs »
Terra Core reference
·
Go API
·
Rest API
·
Finder
·
Station
## Terra migration guides
Visit the [migration guide](https://migrate.terra.money) to learn how to migrate from Terra Classic to the new Terra blockchain.
## Table of Contents
- [What is Terra?](#what-is-terra)
- [Installation](#installation)
- [From Binary](#from-binary)
- [From Source](#from-source)
- [terrad](#terrad)
- [Node Setup](#node-setup)
- [Terra node quickstart](#terra-node-quickstart)
- [Join the mainnet](#join-the-mainnet)
- [Join a testnet](#join-a-testnet)
- [Run a local testnet](#run-a-local-testnet)
- [Run a single node testnet](#run-a-single-node-testnet)
- [Set up a production environment](#set-up-a-production-environment)
- [Increase maximum open files](#increase-maximum-open-files)
- [Create a dedicated user](#create-a-dedicated-user)
- [Port configuration](#port-configuration)
- [Run the server as a daemon](#run-the-server-as-a-daemon)
- [Register terrad as a service](#register-terrad-as-a-service)
- [Start, stop, or restart service](#start-stop-or-restart-service)
- [Access logs](#access-logs)
- [Resources](#resources)
- [Community](#community)
- [Contributing](#contributing)
- [License](#license)
## What is Terra?
**[Terra](https://terra.money)** is a public, open-source, proof-of-stake blockchain. **The Terra Core** is the reference implementation of the Terra protocol written in Golang. The Terra Core is powered by the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) and [Tendermint](https://github.com/tendermint/tendermint) BFT consensus.
## Installation
### From Binary
The easiest way to install the Terra Core is to download a pre-built binary. You can find the latest binaries on the [releases](https://github.com/terra-money/core/releases) page.
### From Source
**Step 1: Install Golang**
Go v1.18+ or higher is required for The Terra Core.
1. Install [Go 1.18+ from the official site](https://go.dev/dl/). Ensure that your `GOPATH` and `GOBIN` environment variables are properly set up by using the following commands:
For Windows:
```sh
wget
sudo tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$(go env GOPATH)/bin
```
For Mac:
```sh
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$(go env GOPATH)/bin
```
2. Confirm your Go installation by checking the version:
```sh
go version
```
**Step 2: Get Terra Core source code**
Clone the Terra Core from the [official repo](https://github.com/terra-money/core/) and check out the `main` branch for the latest stable release.
```bash
git clone https://github.com/terra-money/core/
cd core
git checkout main
```
**Step 3: Build Terra core**
Run the following command to install `terrad` to your `GOPATH` and build the Terra Core. `terrad` is the node daemon and CLI for interacting with a Terra node.
```bash
# COSMOS_BUILD_OPTIONS=rocksdb make install
make install
```
**Step 4: Verify your installation**
Verify your installation with the following command:
```bash
terrad version --long
```
A successful installation will return the following:
```bash
name: terra
server_name: terrad
version:
commit:
build_tags: netgo,ledger
go: go version go1.18.2 darwin/amd64
```
## `terrad`
`terrad` is the all-in-one CLI and node daemon for interacting with the Terra blockchain.
To view various subcommands and their expected arguments, use the following command:
``` sh
$ terrad --help
```
```
Stargate Terra App
Usage:
terrad [command]
Available Commands:
add-genesis-account Add a genesis account to genesis.json
collect-gentxs Collect genesis txs and output a genesis.json file
debug Tool for helping with debugging your application
export Export state to JSON
gentx Generate a genesis tx carrying a self delegation
help Help about any command
init Initialize private validator, p2p, genesis, and application configuration files
keys Manage your application's keys
migrate Migrate genesis to a specified target version
query Querying subcommands
rosetta spin up a rosetta server
start Run the full node
status Query remote node for status
tendermint Tendermint subcommands
testnet Initialize files for a terrad testnet
tx Transactions subcommands
unsafe-reset-all Resets the blockchain database, removes address book files, and resets data/priv_validator_state.json to the genesis state
validate-genesis validates the genesis file at the default location or at the location passed as an arg
version Print the application binary version information
Flags:
-h, --help help for terrad
--home string directory for config and data (default "/Users/evan/.terra")
--log_format string The logging format (json|plain) (default "plain")
--log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info")
--trace print out full stack trace on errors
Use "terrad [command] --help" for more information about a command.
```
Visit the [terrad documentation page](https://docs.terra.money/docs/develop/how-to/terrad/README.html) for more info on usage.
## Node Setup
Once you have `terrad` installed, you will need to set up your node to be part of the network.
### Join the mainnet
The following requirements are recommended for running a mainnet node:
- Four or more CPU cores
- At least 32 GB of memory
- At least 300 mbps of network bandwidth
- At least 2 TB NVME SSD
- A Linux distribution
### Terra node quickstart
```
terrad init nodename
wget -O ~/.terra/config/genesis.json https://cloudflare-ipfs.com/ipfs/QmZAMcdu85Qr8saFuNpL9VaxVqqLGWNAs72RVFhchL9jWs
curl https://network.terra.dev/addrbook.json > ~/.terrad/config/addrbook.json
terrad start
```
### Join a testnet
Several testnets might exist simultaneously. Ensure that your version of `terrad` is compatible with the network you want to join.
To set up a node on the latest testnet, visit [the testnet repo](https://github.com/terra-money/testnet).
#### Run a local testnet
The easiest way to set up a local testing environment is to run [LocalTerra](https://github.com/terra-money/LocalTerra), a zero-configuration complete testing environment.
### Run a single node testnet
You can also run a local testnet using a single node. On a local testnet, you will be the sole validator signing blocks.
**Step 1: Create network and account**
First, initialize your genesis file to bootstrap your network. Create a name for your local testnet and provide a moniker to refer to your node:
```bash
terrad init --chain-id=
```
Next, create a Terra account by running the following command:
```bash
terrad keys add
```
**Step 2: Add account to genesis**
Add your account to genesis and set an initial balance to start. Run the following commands to add your account and set the initial balance:
```bash
terrad add-genesis-account $(terrad keys show -a) 100000000uluna
terrad gentx 10000000uluna --chain-id=
terrad collect-gentxs
```
**Step 3: Run terrad**
Now you can start your private Terra network:
```bash
terrad start
```
Your `terrad` node will be running a node on `tcp://localhost:26656`, listening for incoming transactions and signing blocks.
## Set up a production environment
**Note**: This guide only covers general settings for a production-level full node. Visit the [Terra validator's guide](https://docs.terra.money/docs/full-node/manage-a-terra-validator/README.html) for more information.
**This guide has been tested against Linux distributions only. To ensure you successfully set up your production environment, consider setting it up on an Linux system.**
### Increase maximum open files
By default, `terrad` can't open more than 1024 files at once.
You can increase this limit by modifying `/etc/security/limits.conf` and raising the `nofile` capability.
```
* soft nofile 65535
* hard nofile 65535
```
### Create a dedicated user
It is recommended that you run `terrad` as a normal user. Super-user accounts are only recommended during setup to create and modify files.
### Port configuration
`terrad` uses several TCP ports for different purposes.
- `26656`: The default port for the P2P protocol. Use this port to communicate with other nodes. While this port must be open to join a network, it does not have to be open to the public. Validator nodes should configure `persistent_peers` and close this port to the public.
- `26657`: The default port for the RPC protocol. This port is used for querying / sending transactions and must be open to serve queries from `terrad`. **DO NOT** open this port to the public unless you are planning to run a public node.
- `1317`: The default port for [Lite Client Daemon](https://docs.terra.money/docs/develop/how-to/start-lcd.html) (LCD), which can be enabled in `~/.terra/config/app.toml`. The LCD provides an HTTP RESTful API layer to allow applications and services to interact with your `terrad` instance through RPC. Check the [Terra REST API](https://lcd.terra.dev/swagger/#/) for usage examples. Don't open this port unless you need to use the LCD.
- `26660`: The default port for interacting with the [Prometheus](https://prometheus.io) database. You can use Promethues to monitor an environment. This port is closed by default.
### Run the server as a daemon
**Important**:
Keep `terrad` running at all times. The simplest solution is to register `terrad` as a `systemd` service so that it automatically starts after system reboots and other events.
### Register terrad as a service
First, create a service definition file in `/etc/systemd/system`.
**Sample file: `/etc/systemd/system/terrad.service`**
```
[Unit]
Description=Terra Daemon
After=network.target
[Service]
Type=simple
User=terra
ExecStart=/data/terra/go/bin/terrad start
Restart=on-abort
[Install]
WantedBy=multi-user.target
[Service]
LimitNOFILE=65535
```
Modify the `Service` section from the given sample above to suit your settings.
Note that even if you raised the number of open files for a process, you still need to include `LimitNOFILE`.
After creating a service definition file, you should execute `systemctl daemon-reload`.
### Start, stop, or restart service
Use `systemctl` to control (start, stop, restart)
```bash
# Start
systemctl start terrad
# Stop
systemctl stop terrad
# Restart
systemctl restart terrad
```
### Access logs
```bash
# Entire log
journalctl -t terrad
# Entire log reversed
journalctl -t terrad -r
# Latest and continuous
journalctl -t terrad -f
```
## Resources
Developer Tools:
- [Terra docs](https://docs.terra.money): Developer documentation.
- [Faucet](https://faucet.terra.money): Get testnet Luna.
- [LocalTerra](https://www.github.com/terra-money/LocalTerra): A dockerized local blockchain testnet.
Developer Forums:
- [Terra Developer Discord](https://discord.com/channels/464241079042965516/591812948867940362)
- [Terra Developer Telegram room](https://t.me/+gCxCPohmVBkyNDRl)
Block Explorer:
- [Terra Finder](https://finder.terra.money): Terra's basic block explorer.
Wallets:
- [Terra Station](https://station.terra.money): The official Terra wallet.
- Terra Station Mobile:
- [iOS](https://apps.apple.com/us/app/terra-station/id1548434735)
- [Android](https://play.google.com/store/apps/details?id=money.terra.station&hl=en_US&gl=US)
Research:
- [Agora](https://agora.terra.money): Research forum
## Community
- [Offical Website](https://terra.money)
- [Discord](https://discord.gg/e29HWwC2Mz)
- [Telegram](https://t.me/terra_announcements)
- [Twitter](https://twitter.com/terra_money)
- [YouTube](https://goo.gl/3G4T1z)
## Contributing
If you are interested in contributing to Terra Core source, please review our [code of conduct](./CODE_OF_CONDUCT.md).
## License
This software is [licensed under the Apache 2.0 license](LICENSE).
© 2022 Terraform Labs, PTE LTD