metalgo

module
v0.0.0-...-a38d99b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2024 License: BSD-3-Clause

README


Node implementation for the Metal network. At its core Metal is a fork of the Avalanche project and aims to maintain upstream changes.

Installation

The minimum recommended hardware specification for nodes connected to Mainnet is:

  • CPU: Equivalent of 8 AWS vCPU
  • RAM: 16 GiB
  • Storage: 250GiB
  • OS: Ubuntu 20.04/22.04 or macOS >= 12
  • Network: Reliable IPv4 or IPv6 network connection, with an open public port.

If you plan to build MetalGo from source, you will also need the following software:

  • Go version >= 1.20.10
  • gcc
  • g++

Building From Source

Clone The Repository

Clone the MetalGo repository:

git clone git@github.com:MetalBlockchain/metalgo.git
cd metalgo

This will clone and checkout the master branch.

Building the Metal Executable

Build Metal using the build script:

./scripts/build.sh

The Metal binary, named metalgo, is in the build directory.

Docker Install

Make sure Docker is installed on the machine - so commands like docker run etc. are available.

Building the docker image of latest metalgo branch can be done by running:

./scripts/build_image.sh

To check the built image, run:

docker image ls

The image should be tagged as metalblockchain/metalgo:xxxxxxxx, where xxxxxxxx is the shortened commit of the Metal source it was built from. To run the Metal node, run:

docker run -ti -p 9650:9650 -p 9651:9651 metalblockchain/metalgo:xxxxxxxx /metalgo/build/metalgo

Running Metal

Connecting to Mainnet

To connect to the Metal Mainnet, run:

./build/metalgo

You should see some pretty ASCII art and log messages.

You can use Ctrl+C to kill the node.

Connecting to Tahoe

To connect to the Tahoe Testnet, run:

./build/metalgo --network-id=tahoe

Supported Platforms

MetalGo can run on different platforms, with different support tiers:

  • Tier 1: Fully supported by the maintainers, guaranteed to pass all tests including e2e and stress tests.
  • Tier 2: Passes all unit and integration tests but not necessarily e2e tests.
  • Tier 3: Builds but lightly tested (or not), considered experimental.
  • Not supported: May not build and not tested, considered unsafe. To be supported in the future.

The following table lists currently supported platforms and their corresponding MetalGo support tiers:

Architecture Operating system Support tier
amd64 Linux 1
arm64 Linux 2
amd64 Darwin 2
amd64 Windows 3
arm Linux Not supported
i386 Linux Not supported
arm64 Darwin Not supported

To officially support a new platform, one must satisfy the following requirements:

MetalGo continuous integration Tier 1 Tier 2 Tier 3
Build passes
Unit and integration tests pass
End-to-end and stress tests pass

Security Bugs

We and our community welcome responsible disclosures.

We're working on a bug bountry program, in the meantime please submit any bugs or vulnerabilities to bugs@metalblockchain.org

Directories

Path Synopsis
api
server
Package server is a generated GoMock package.
Package server is a generated GoMock package.
atomic
Package atomic is a generated GoMock package.
Package atomic is a generated GoMock package.
Package codec is a generated GoMock package.
Package codec is a generated GoMock package.
Package database is a generated GoMock package.
Package database is a generated GoMock package.
ids
Package message is a generated GoMock package.
Package message is a generated GoMock package.
p2p
proto
consensus/snowman
Package snowman is a generated GoMock package.
Package snowman is a generated GoMock package.
engine/avalanche/state
Package state manages the meta-data required by consensus for an avalanche dag.
Package state manages the meta-data required by consensus for an avalanche dag.
engine/avalanche/vertex
Package vertex is a generated GoMock package.
Package vertex is a generated GoMock package.
engine/common
Package common is a generated GoMock package.
Package common is a generated GoMock package.
engine/snowman/block
Package block is a generated GoMock package.
Package block is a generated GoMock package.
networking/handler
Package handler is a generated GoMock package.
Package handler is a generated GoMock package.
networking/router
Package router is a generated GoMock package.
Package router is a generated GoMock package.
networking/sender
Package sender is a generated GoMock package.
Package sender is a generated GoMock package.
networking/timeout
Package timeout is a generated GoMock package.
Package timeout is a generated GoMock package.
networking/tracker
Package tracker is a generated GoMock package.
Package tracker is a generated GoMock package.
uptime
Package uptime is a generated GoMock package.
Package uptime is a generated GoMock package.
validators
Package validators is a generated GoMock package.
Package validators is a generated GoMock package.
e2e
e2e/banff
Implements tests for the banff network upgrade.
Implements tests for the banff network upgrade.
e2e/c
AUTOMATICALLY GENERATED.
AUTOMATICALLY GENERATED.
e2e/x/transfer
Implements X-chain transfer tests.
Implements X-chain transfer tests.
bag
crypto/keychain
Package keychain is a generated GoMock package.
Package keychain is a generated GoMock package.
filesystem
Package filesystem is a generated GoMock package.
Package filesystem is a generated GoMock package.
hashing
Package hashing is a generated GoMock package.
Package hashing is a generated GoMock package.
ips
resource
Package resource is a generated GoMock package.
Package resource is a generated GoMock package.
rpc
set
vms
Package vms is a generated GoMock package.
Package vms is a generated GoMock package.
avm
avm/block
Package block is a generated GoMock package.
Package block is a generated GoMock package.
avm/block/executor
Package executor is a generated GoMock package.
Package executor is a generated GoMock package.
avm/metrics
Package metrics is a generated GoMock package.
Package metrics is a generated GoMock package.
avm/state
Package state is a generated GoMock package.
Package state is a generated GoMock package.
avm/txs
Package txs is a generated GoMock package.
Package txs is a generated GoMock package.
avm/txs/mempool
Package mempool is a generated GoMock package.
Package mempool is a generated GoMock package.
components/avax
Package avax is a generated GoMock package.
Package avax is a generated GoMock package.
components/verify
Package verify is a generated GoMock package.
Package verify is a generated GoMock package.
fx
platformvm/block
Package block is a generated GoMock package.
Package block is a generated GoMock package.
platformvm/block/executor
Package executor is a generated GoMock package.
Package executor is a generated GoMock package.
platformvm/fx
Package fx is a generated GoMock package.
Package fx is a generated GoMock package.
platformvm/state
Package state is a generated GoMock package.
Package state is a generated GoMock package.
platformvm/txs
Package txs is a generated GoMock package.
Package txs is a generated GoMock package.
platformvm/txs/mempool
Package mempool is a generated GoMock package.
Package mempool is a generated GoMock package.
platformvm/utxo
Package utxo is a generated GoMock package.
Package utxo is a generated GoMock package.
proposervm
Package proposervm is a generated GoMock package.
Package proposervm is a generated GoMock package.
proposervm/proposer
Package proposer is a generated GoMock package.
Package proposer is a generated GoMock package.
proposervm/scheduler
Package scheduler is a generated GoMock package.
Package scheduler is a generated GoMock package.
proposervm/state
Package state is a generated GoMock package.
Package state is a generated GoMock package.
registry
Package registry is a generated GoMock package.
Package registry is a generated GoMock package.
wallet
x
merkledb
Package merkledb is a generated GoMock package.
Package merkledb is a generated GoMock package.
sync
Package sync is a generated GoMock package.
Package sync is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL