hcd

command module
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2022 License: ISC Imports: 68 Imported by: 0

README

hcd

ISC License

What is HyperCash(HC)?

hcd is a Hc full node implementation written in Go (golang).

This acts as a chain daemon for the Hc cryptocurrency. hcd maintains the entire past transactional ledger of Hc and allows relaying of quantum resistant transactions to other Hc nodes across the world.

Note: To send or receive funds and join Proof-of-Stake mining, you will also need hcwallet.

HC is forked from Decred and btcd which are full node implementations written in Go. Both projects are ongoing and under active development. Since hcd is synced and will merge with upstream commits from hcd and btcd, it will get the benefit of both hcd and btcd's ongoing upgrades to staking, voting, peer and connection handling, database optimization and other blockchain related technology improvements. Advances made by hcd can also be pulled back upstream to hcd and btcd including quantum resistant signature schemes and more.

Development Process

The master branch is regularly built and tested, but is not guaranteed to be completely stable. Tags are created regularly to indicate new official, stable release versions of hcd.

Requirements

Go 1.13 or newer.

Getting Started

  • hcd (and utilities) will now be installed in either $GOROOT/bin or $GOPATH/bin depending on your configuration. If you did not already add the bin directory to your system path during Go installation, we recommend you do so now.

Installing

Build from Source

Getting the source:

For a first time installation, the project and dependency sources can be obtained manually with git

git clone https://github.com/nbit99/hcd $GOPATH/src/github.com/nbit99/hcd
cd $GOPATH/src/github.com/nbit99/hcd
go install . ./cmd/...

To update an existing source tree, pull the latest changes and install the matching dependencies:

cd $GOPATH/src/github.com/nbit99/hcd
git pull
go install . ./cmd/...

Running

Make sure you are working the correct GOPATH and run the following in your terminal:

hcd -u YOURUNIQUERPCUSERNAME -P YOURUNIQUERPCPASSWORD --testnet

To use your node for mining add the miningaddr flag when running hcd:

hcd -u YOURUNIQUERPCUSERNAME -P YOURUNIQUERPCPASSWORD --testnet --miningaddr=YOURTESTNETADDRESS

To generate a testnet mining address you must install hcwallet

To begin CPU mining after hcd is already running you can run the following in your terminal:

hcctl -u YOURUNIQUEUSERNAME -P YOURUNIQUEPASSWORD --testnet setgenerate true

REINSTALL

Linux
$ rm -rf $HOME/.hcd
$ rm -rf $HOME/.hcwallet
$ cd $HOME/go/src/github.com/nbit99/hcd
$ git pull
$ go install $(glide nv)
Mac/OSX
$ rm -rf $HOME/Library/Application\ Support/Hcwallet
$ rm -rf $HOME/Library/Application\ Support/Hcd
$ cd $HOME/go/src/github.com/nbit99/hcd
$ git pull
$ go install $(glide nv)

Issue Tracker

The integrated github issue tracker is used for this project.

Documentation

The documentation is a work-in-progress. It is located in the docs folder.

License

hcd is licensed under the copyfree ISC License.

Documentation

Overview

hcd is a full-node HC implementation written in Go.

The default options are sane for most users. This means hcd will work 'out of the box' for most users. However, there are also a wide variety of flags that can be used to control it.

The following section provides a usage overview which enumerates the flags. An interesting point to note is that the long form of all of these options (except -C) can be specified in a configuration file that is automatically parsed when hcd starts up. By default, the configuration file is located at ~/.hcd/hcd.conf on POSIX-style operating systems and %LOCALAPPDATA%\hcd\hcd.conf on Windows. The -C (--configfile) flag, as shown below, can be used to override this location.

Usage:

hcd [OPTIONS]

Application Options:

-V, --version             Display version information and exit
-C, --configfile=         Path to configuration file
-b, --datadir=            Directory to store data
    --logdir=             Directory to log output.
-a, --addpeer=            Add a peer to connect with at startup
    --connect=            Connect only to the specified peers at startup
    --nolisten            Disable listening for incoming connections -- NOTE:
                          Listening is automatically disabled if the --connect
                          or --proxy options are used without also specifying
                          listen interfaces via --listen
    --listen=             Add an interface/port to listen for connections
                          (default all interfaces port: 14008, testnet: 12008)
    --maxpeers=           Max number of inbound and outbound peers (125)
    --nobanning           Disable banning of misbehaving peers
    --banduration=        How long to ban misbehaving peers.  Valid time units
                          are {s, m, h}.  Minimum 1 second (24h0m0s)
    --banthreshold=       Maximum allowed ban score before disconnecting and
                          banning misbehaving peers.
    --whitelist=          Add an IP network or IP that will not be banned.
                          (eg. 192.168.1.0/24 or ::1)
-u, --rpcuser=            Username for RPC connections
-P, --rpcpass=            Password for RPC connections
    --rpclimituser=       Username for limited RPC connections
    --rpclimitpass=       Password for limited RPC connections
    --rpclisten=          Add an interface/port to listen for RPC connections
                          (default port: 14009, testnet: 12009)
    --rpccert=            File containing the certificate file
    --rpckey=             File containing the certificate key
    --rpcmaxclients=      Max number of RPC clients for standard connections
                          (10)
    --rpcmaxwebsockets=   Max number of RPC websocket connections (25)
    --norpc               Disable built-in RPC server -- NOTE: The RPC server
                          is disabled by default if no rpcuser/rpcpass or
                          rpclimituser/rpclimitpass is specified
    --notls               Disable TLS for the RPC server -- NOTE: This is only
                          allowed if the RPC server is bound to localhost
    --nodnsseed           Disable DNS seeding for peers
    --externalip=         Add an ip to the list of local addresses we claim to
                          listen on to peers
    --proxy=              Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)
    --proxyuser=          Username for proxy server
    --proxypass=          Password for proxy server
    --onion=              Connect to tor hidden services via SOCKS5 proxy
                          (eg. 127.0.0.1:9050)
    --onionuser=          Username for onion proxy server
    --onionpass=          Password for onion proxy server
    --noonion             Disable connecting to tor hidden services
    --torisolation        Enable Tor stream isolation by randomizing user
                          credentials for each connection.
    --testnet             Use the test network
    --simnet              Use the simulation test network
    --nocheckpoints       Disable built-in checkpoints.  Don't do this unless
                          you know what you're doing.
    --dbtype=             Database backend to use for the Block Chain (ffldb)
    --profile=            Enable HTTP profiling on given [addr:]port -- NOTE: port
                          must be between 1024 and 65536
    --cpuprofile=         Write CPU profile to the specified file
    --memprofile=         Write mem profile to the specified file
    --dumpblockchain=     Write blockchain as a gob-encoded map to the
                          specified file
    --miningtimeoffset=   Offset the mining timestamp of a block by this many
                          seconds (positive values are in the past)
-d, --debuglevel=         Logging level for all subsystems {trace, debug,
                          info, warn, error, critical} -- You may also specify
                          <subsystem>=<level>,<subsystem2>=<level>,... to set
                          the log level for individual subsystems -- Use show
                          to list available subsystems (info)
    --upnp                Use UPnP to map our listening port outside of NAT
    --minrelaytxfee=      The minimum transaction fee in HC/kB to be
                          considered a non-zero fee.
    --limitfreerelay=     Limit relay of transactions with no transaction fee
                          to the given amount in thousands of bytes per
                          minute (15)
    --norelaypriority     Do not require free or low-fee transactions to have
                          high priority for relaying
    --maxorphantx=        Max number of orphan transactions to keep in memory
                          (1000)
    --generate            Generate (mine) bitcoins using the CPU
    --miningaddr=         Add the specified payment address to the list of
                          addresses to use for generated blocks -- At least
                          one address is required if the generate option is
                          set
    --blockminsize=       Mininum block size in bytes to be used when creating
                          a block
    --blockmaxsize=       Maximum block size in bytes to be used when creating
                          a block (750000)
    --blockprioritysize=  Size in bytes for high-priority/low-fee transactions
                          when creating a block (50000)
    --getworkkey=         DEPRECATED -- Use the --miningaddr option instead
    --nonaggressive       Disable mining off of the parent block of the blockchain
                          if there aren't enough voters
    --nominingstatesync   Disable synchronizing the mining state with other nodes
    --allowoldvotes       Enable the addition of very old votes to the mempool

    --nopeerbloomfilters  Disable bloom filtering support.
    --sigcachemaxsize=    The maximum number of entries in the signature
                          verification cache.
    --blocksonly          Do not accept transactions from remote peers.
    --relaynonstd         Relay non-standard transactions regardless of the
                          default settings for the active network.
    --rejectnonstd        Reject non-standard transactions regardless of the
                          default settings for the active network.

Help Options:

-h, --help           Show this help message

Directories

Path Synopsis
Package addrmgr implements concurrency safe hcd address manager.
Package addrmgr implements concurrency safe hcd address manager.
Package blockchain implements HC block handling and chain selection rules.
Package blockchain implements HC block handling and chain selection rules.
chaingen
Package chaingen provides facilities for generating a full chain of blocks.
Package chaingen provides facilities for generating a full chain of blocks.
indexers
Package indexers implements optional block chain indexes.
Package indexers implements optional block chain indexes.
internal/dbnamespace
Package dbnamespace contains constants that define the database namespaces for the purpose of the blockchain, so that external callers may easily access this data.
Package dbnamespace contains constants that define the database namespaces for the purpose of the blockchain, so that external callers may easily access this data.
stake
Package stake contains code for all of hcd's stake transaction chain handling and other portions related to the Proof-of-Stake (PoS) system.
Package stake contains code for all of hcd's stake transaction chain handling and other portions related to the Proof-of-Stake (PoS) system.
stake/internal/dbnamespace
Package dbnamespace contains constants that define the database namespaces for the purpose of the blockchain, so that external callers may easily access this data.
Package dbnamespace contains constants that define the database namespaces for the purpose of the blockchain, so that external callers may easily access this data.
stake/internal/tickettreap
Package tickettreap implements a treap data structure that is used to hold live tickets ordered by their key along with some associated data using a combination of binary search tree and heap semantics.
Package tickettreap implements a treap data structure that is used to hold live tickets ordered by their key along with some associated data using a combination of binary search tree and heap semantics.
Package chaincfg defines chain configuration parameters.
Package chaincfg defines chain configuration parameters.
chainec
Package chainec provides wrapper functions to abstract the ec functions.
Package chainec provides wrapper functions to abstract the ec functions.
chainhash
Package chainhash provides abstracted hash functionality.
Package chainhash provides abstracted hash functionality.
cmd
Package connmgr implements a generic Hcd network connection manager.
Package connmgr implements a generic Hcd network connection manager.
Package database provides a block and metadata storage database.
Package database provides a block and metadata storage database.
ffldb
Package ffldb implements a driver for the database package that uses leveldb for the backing metadata and flat files for block storage.
Package ffldb implements a driver for the database package that uses leveldb for the backing metadata and flat files for block storage.
internal/treap
Package treap implements a treap data structure that is used to hold ordered key/value pairs using a combination of binary search tree and heap semantics.
Package treap implements a treap data structure that is used to hold ordered key/value pairs using a combination of binary search tree and heap semantics.
hcec
ed25519
Package ed25519 implements the Ed25519 signature algorithm.
Package ed25519 implements the Ed25519 signature algorithm.
ed25519/edwards25519
Package edwards25519 implements operations in GF(2**255-19) and on an Edwards curve that is isomorphic to curve25519.
Package edwards25519 implements operations in GF(2**255-19) and on an Edwards curve that is isomorphic to curve25519.
secp256k1
Package secp256k1 implements support for the elliptic curves needed for HC.
Package secp256k1 implements support for the elliptic curves needed for HC.
Package hcjson provides primitives for working with the HC JSON-RPC API.
Package hcjson provides primitives for working with the HC JSON-RPC API.
Package hcutil provides hc-specific convenience functions and types.
Package hcutil provides hc-specific convenience functions and types.
base58
Package base58 provides an API for working with modified base58 and Base58Check encodings.
Package base58 provides an API for working with modified base58 and Base58Check encodings.
hdkeychain
Package hdkeychain provides an API for HC hierarchical deterministic extended keys (based on BIP0032).
Package hdkeychain provides an API for HC hierarchical deterministic extended keys (based on BIP0032).
Package mining includes all mining and policy types, and will house all mining code in the future.
Package mining includes all mining and policy types, and will house all mining code in the future.
Package peer provides a common base for creating and managing Hcd network peers.
Package peer provides a common base for creating and managing Hcd network peers.
Package rpctest provides a hcd-specific RPC testing harness crafting and executing integration tests by driving a `hcd` instance via the `RPC` interface.
Package rpctest provides a hcd-specific RPC testing harness crafting and executing integration tests by driving a `hcd` instance via the `RPC` interface.
Package sampleconfig provides a single constant that contains the contents of the sample configuration file for hcd.
Package sampleconfig provides a single constant that contains the contents of the sample configuration file for hcd.
Package txscript implements the HC transaction script language.
Package txscript implements the HC transaction script language.
Package wire implements the HC wire protocol.
Package wire implements the HC wire protocol.

Jump to

Keyboard shortcuts

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