metalgo

module
v1.11.12-rc.12 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 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/servermock
Package servermock is a generated GoMock package.
Package servermock is a generated GoMock package.
atomic/atomicmock
Package atomicmock is a generated GoMock package.
Package atomicmock is a generated GoMock package.
codecmock
Package codecmock is a generated GoMock package.
Package codecmock is a generated GoMock package.
codectest
Package codectest provides a test suite for testing codec implementations.
Package codectest provides a test suite for testing codec implementations.
databasemock
Package databasemock is a generated GoMock package.
Package databasemock is a generated GoMock package.
ids
idstest
Package codectest provides a test suite for testing functionality related to IDs.
Package codectest provides a test suite for testing functionality related to IDs.
messagemock
Package messagemock is a generated GoMock package.
Package messagemock is a generated GoMock package.
p2p
proto
consensus/snowman/snowmanmock
Package snowmanmock is a generated GoMock package.
Package snowmanmock 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/vertexmock
Package vertexmock is a generated GoMock package.
Package vertexmock is a generated GoMock package.
engine/common/commonmock
Package commonmock is a generated GoMock package.
Package commonmock is a generated GoMock package.
engine/snowman/block/blockmock
Package blockmock is a generated GoMock package.
Package blockmock is a generated GoMock package.
engine/snowman/job
Package job provides a Scheduler to manage and execute Jobs with dependencies.
Package job provides a Scheduler to manage and execute Jobs with dependencies.
networking/handler/handlermock
Package handlermock is a generated GoMock package.
Package handlermock is a generated GoMock package.
networking/router/routermock
Package routermock is a generated GoMock package.
Package routermock is a generated GoMock package.
networking/sender/sendermock
Package sendermock is a generated GoMock package.
Package sendermock is a generated GoMock package.
networking/timeout/timeoutmock
Package timeoutmock is a generated GoMock package.
Package timeoutmock is a generated GoMock package.
networking/tracker/trackermock
Package trackermock is a generated GoMock package.
Package trackermock is a generated GoMock package.
uptime/uptimemock
Package uptimemock is a generated GoMock package.
Package uptimemock is a generated GoMock package.
validators/validatorsmock
Package validatorsmock is a generated GoMock package.
Package validatorsmock 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/etna
Implements tests for the etna network upgrade.
Implements tests for the etna network upgrade.
e2e/x/transfer
Implements X-chain transfer tests.
Implements X-chain transfer tests.
bag
crypto/keychain/keychainmock
Package keychainmock is a generated GoMock package.
Package keychainmock is a generated GoMock package.
filesystem/filesystemmock
Package filesystemmock is a generated GoMock package.
Package filesystemmock is a generated GoMock package.
hashing/hashingmock
Package hashingmock is a generated GoMock package.
Package hashingmock is a generated GoMock package.
ips
resource/resourcemock
Package resourcemock is a generated GoMock package.
Package resourcemock is a generated GoMock package.
rpc
set
vms
avm
avm/block
Package block is a generated GoMock package.
Package block is a generated GoMock package.
avm/block/executor/executormock
Package executormock is a generated GoMock package.
Package executormock is a generated GoMock package.
avm/metrics/metricsmock
Package metricsmock is a generated GoMock package.
Package metricsmock is a generated GoMock package.
avm/state/statemock
Package statemock is a generated GoMock package.
Package statemock is a generated GoMock package.
avm/txs/mempool/mempoolmock
Package mempoolmock is a generated GoMock package.
Package mempoolmock is a generated GoMock package.
avm/txs/txsmock
Package txsmock is a generated GoMock package.
Package txsmock is a generated GoMock package.
components/avax/avaxmock
Package avaxmock is a generated GoMock package.
Package avaxmock is a generated GoMock package.
components/gas
The gas package implements dynamic gas pricing specified in ACP-103: https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/103-dynamic-fees
The gas package implements dynamic gas pricing specified in ACP-103: https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/103-dynamic-fees
components/verify/verifymock
Package verifymock is a generated GoMock package.
Package verifymock 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/executormock
Package executormock is a generated GoMock package.
Package executormock is a generated GoMock package.
platformvm/fx/fxmock
Package fxmock is a generated GoMock package.
Package fxmock is a generated GoMock package.
platformvm/signer/signermock
Package signermock is a generated GoMock package.
Package signermock is a generated GoMock package.
platformvm/state
Package state is a generated GoMock package.
Package state is a generated GoMock package.
platformvm/txs/mempool/mempoolmock
Package mempoolmock is a generated GoMock package.
Package mempoolmock is a generated GoMock package.
platformvm/txs/txsmock
Package txsmock is a generated GoMock package.
Package txsmock is a generated GoMock package.
platformvm/utxo/utxomock
Package utxomock is a generated GoMock package.
Package utxomock is a generated GoMock package.
proposervm
Package proposervm is a generated GoMock package.
Package proposervm is a generated GoMock package.
proposervm/proposer/proposermock
Package proposermock is a generated GoMock package.
Package proposermock is a generated GoMock package.
proposervm/scheduler/schedulermock
Package schedulermock is a generated GoMock package.
Package schedulermock is a generated GoMock package.
proposervm/state/statemock
Package statemock is a generated GoMock package.
Package statemock is a generated GoMock package.
registry/registrymock
Package registrymock is a generated GoMock package.
Package registrymock is a generated GoMock package.
vmsmock
Package vmsmock is a generated GoMock package.
Package vmsmock is a generated GoMock package.
wallet
x

Jump to

Keyboard shortcuts

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