# avalanche_go
**Repository Path**: Rcvisual/avalanche_go
## Basic Information
- **Project Name**: avalanche_go
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-11-30
- **Last Updated**: 2021-11-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
---
Node implementation for the [Avalanche](https://avax.network) network -
a blockchains platform with high throughput, and blazing fast transactions.
## Installation
Avalanche is an incredibly lightweight protocol, so the minimum computer requirements are quite modest.
Note that as network usage increases, hardware requirements may change.
- CPU: Equivalent of 8 AWS vCPU
- RAM: 16 GB
- Storage: 200 GB
- OS: Ubuntu 18.04/20.04 or MacOS >= Catalina
- Network: Reliable IPv4 or IPv6 network connection, with an open public port.
- Software Dependencies:
- [Go](https://golang.org/doc/install) version >= 1.16.8 and set up [`$GOPATH`](https://github.com/golang/go/wiki/SettingGOPATH).
- [gcc](https://gcc.gnu.org/)
- g++
### Native Install
Clone the AvalancheGo repository:
```sh
go get -v -d github.com/ava-labs/avalanchego/...
cd $GOPATH/src/github.com/ava-labs/avalanchego
```
#### Building the Avalanche Executable
Build Avalanche using the build script:
```sh
./scripts/build.sh
```
The Avalanche binary, named `avalanchego`, is in the `build` directory.
### Binary Repository
Install AvalancheGo using an `apt` repository.
#### Adding the APT Repository
If you have already added the APT repository, you do not need to add it again.
To add the repository on Ubuntu 18.04 (Bionic), run:
```sh
sudo su -
wget -O - https://downloads.avax.network/avalanchego.gpg.key | apt-key add -
echo "deb https://downloads.avax.network/apt bionic main" > /etc/apt/sources.list.d/avalanche.list
exit
```
To add the repository on Ubuntu 20.04 (Focal), run:
```sh
sudo su -
wget -O - https://downloads.avax.network/avalanchego.gpg.key | apt-key add -
echo "deb https://downloads.avax.network/apt focal main" > /etc/apt/sources.list.d/avalanche.list
exit
```
#### Installing the Latest Version
After adding the APT repository, install avalanchego by running:
```sh
sudo apt update
sudo apt install avalanchego
```
### Binary Install
Download the [latest build](https://github.com/ava-labs/avalanchego/releases/latest) for your operating system and architecture.
The Avalanche binary to be executed is named `avalanchego`.
### Docker Install
Make sure docker is installed on the machine - so commands like `docker run` etc. are available.
Building the docker image of latest avalanchego branch can be done by running:
```sh
./scripts/build_image.sh
```
To check the built image, run:
```sh
docker image ls
```
The image should be tagged as `avaplatform/avalanchego:xxxxxxxx`, where `xxxxxxxx` is the shortened commit of the Avalanche source it was built from. To run the avalanche node, run:
```sh
docker run -ti -p 9650:9650 -p 9651:9651 avaplatform/avalanchego:xxxxxxxx /avalanchego/build/avalanchego
```
## Running Avalanche
### Connecting to Mainnet
To connect to the Avalanche Mainnet, run:
```sh
./build/avalanchego
```
You should see some pretty ASCII art and log messages.
You can use `Ctrl+C` to kill the node.
### Connecting to Fuji
To connect to the Fuji Testnet, run:
```sh
./build/avalanchego --network-id=fuji
```
### Creating a Local Testnet
To create a single node testnet, run:
```sh
./build/avalanchego --network-id=local --staking-enabled=false --snow-sample-size=1 --snow-quorum-size=1
```
This launches an Avalanche network with one node.
## Generating Code
Avalanchego uses multiple tools to generate efficient and boilerplate code.
### Running protobuf codegen
To regenerate the protobuf go code, run `scripts/protobuf_codegen.sh` from the root of the repo.
This should only be necessary when upgrading protobuf versions or modifying .proto definition files.
To use this script, you must have [protoc](https://grpc.io/docs/protoc-installation/) (v3.17.3), protoc-gen-go (v1.26.0) and protoc-gen-go-grpc (v1.1.0) installed. protoc must be on your $PATH.
To install the protoc dependencies:
```sh
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
```
If you have not already, you may need to add `$GOPATH/bin` to your `$PATH`:
```sh
export PATH="$PATH:$(go env GOPATH)/bin"
```
If you extract protoc to ~/software/protobuf/, the following should work:
```sh
export PATH=$PATH:~/software/protobuf/bin/:~/go/bin
go get google.golang.org/protobuf/cmd/protoc-gen-go
go get google.golang.org/protobuf/cmd/protoc-gen-go-grpc
scripts/protobuf_codegen.sh
```
For more information, refer to the [GRPC Golang Quick Start Guide](https://grpc.io/docs/languages/go/quickstart/).
### Running protobuf codegen from docker
```sh
docker build -t avalanche:protobuf_codegen -f Dockerfile.protoc .
docker run -t -i -v $(pwd):/opt/avalanche -w/opt/avalanche avalanche:protobuf_codegen bash -c "scripts/protobuf_codegen.sh"
```
## Security Bugs
**We and our community welcome responsible disclosures.**
If you've discovered a security vulnerability, please report it via our [bug bounty program](https://hackenproof.com/avalanche/). Valid reports will be eligible for a reward (terms and conditions apply).