Categorygithub.com/qwSlane/go-quai
modulepackage
0.1.2
Repository: https://github.com/qwslane/go-quai.git
Documentation: pkg.go.dev

# README

Go Quai

The reference implementation of the Quai protocol, written in Go.

API Reference Go Report Card Discord

Usage

Building from source

Once you have the necessary prerequisites, clone the go-quai repository and navigate to it using:

git clone https://github.com/dominant-strategies/go-quai.git
cd go-quai
make go-quai

After a successful build, the binary will be located at build/bin/go-quai.

Running a node

To run a go-quai node, simply execute the go-quai start command. Be sure to specify the parameters you wish to use, such as your coinbase address (if you plan on mining), and which slices you wish to participate in.

For example, here is the run command for miner (0x00a3e45aa16163F2663015b6695894D918866d19) in cyprus-1 (zone-0-0) on the "garden" test network:

./build/bin/go-quai start --node.slices "[0 0]" --node.coinbases "0x00a3e45aa16163F2663015b6695894D918866d19" --node.environment "garden"

For the full list of available options and their default values, consult the help menu:

./build/go-quai --help

All configuration options may be supplied in a config file too, located in the directory specified by --global.config-dir. Note specified on the command-line will override options specified in the config file.

Running tests

To run the included unit tests, run the following command:

./build/go-quai test

Contributing

We welcome community contributions! If you find a bug, have a feature request, or would like to help out with development, we would love to hear from you; no fix is too small. Please take a look at [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines for contributing to the project.

License

This software is licensed under the GNU Genreral Public License, Version 3. See LICENSE for details.

# Packages

No description provided by the author
Package common contains various helper functions.
Package consensus implements different Quai consensus engines.
Package miner implements Quai block creation and mining.
No description provided by the author
Package ethdb defines the interfaces for an Quai data store.
Package event deals with subscriptions to real-time events.
No description provided by the author
No description provided by the author
Package node sets up multi-protocol Quai nodes.
No description provided by the author
No description provided by the author
No description provided by the author
Package ethclient provides a client for the Quai RPC API.
Package quaistats implements the network stats reporting service.
Package rlp implements the RLP serialization format.
Package rpc implements bi-directional JSON-RPC 2.0 on multiple transports.
Package trie implements Merkle Patricia Tries.

# Variables

NotFound is returned by API methods if the requested item does not exist.

# Structs

CallMsg contains parameters for contract calls.
FilterQuery contains options for contract log filtering.
SyncProgress gives progress indications when the node is synchronising with the Quai network.

# Interfaces

ChainReader provides access to the blockchain.
ChainStateReader wraps access to the state trie of the canonical blockchain.
ChainSyncReader wraps access to the node's current sync status.
A ContractCaller provides contract calls, essentially transactions that are executed by the EVM but not mined into the blockchain.
GasEstimator wraps EstimateGas, which tries to estimate the gas needed to execute a specific transaction based on the pending state.
GasPricer wraps the gas price oracle, which monitors the blockchain to determine the optimal gas price given current fee market conditions.
LogFilterer provides access to contract log events using a one-off query or continuous event subscription.
PendingContractCaller can be used to perform calls against the pending state.
A PendingStateEventer provides access to real time notifications about changes to the pending state.
A PendingStateReader provides access to the pending state, which is the result of all known executable transactions which have not yet been included in the blockchain.
Subscription represents an event subscription where events are delivered on a data channel.
TransactionReader provides access to past transactions and their receipts.
TransactionSender wraps transaction sending.