duod

command module
v0.0.0-...-b512313 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2021 License: ISC Imports: 30 Imported by: 0

README

The Parallelcoin Node ISC License GoDoc

Next generation full node for Parallelcoin, forked from btcd

Hard Fork 1: Plan 9 from Crypto Space

TODO: update this!

9 algorithms can be used when mining:

  • Blake14lr (decred)
  • Skein (myriadcoin) Cryptonote7v2
  • Lyra2REv2 (sia)
  • Keccac (maxcoin, smartcash)
  • Scrypt (litecoin)
  • SHA256D (bitcoin)
  • GOST Stribog *
  • Skein
  • X11 (dash)
Stochastic Binomial Filter Difficulty Adjustment

After the upcoming hardfork, Parallelcoin will have the following features in its difficulty adjustment regime:

  • Exponential curve with power of 3 to respond gently the natural drift while moving the difficulty fast in below 10% of target and 10x target, to deal with recovering after a large increase in network hashpower

  • 293 second blocks (7 seconds less than 5 minutes), 1439 block averaging window (about 4.8 days) that is varied by interpreting byte 0 of the sha256d hash of newest block hash as a signed 8 bit integer to further disturb any inherent rhythm (like dithering).

  • Difficulty adjustments are based on a window ending at the previous block of each algorithm, meaning sharp rises from one algorithm do not immediately affect the other algorithms, allowing a smoother recovery from a sudden drop in hashrate, soaking up energetic movements more robustly and resiliently, and reducing vulnerability to time distortion attacks.

  • Deterministic noise is added to the difficulty adjustment in a similar way as is done with digital audio and images to improve the effective resolution of the signal by reducing unwanted artifacts caused by the sampling process. Miners are random generators, and a block time is like a tuning filter, so the same principles apply.

  • Rewards will be computed according to a much smoother, satoshi-precision exponential decay curve that will produce a flat annual 5% supply expansion. Increasing the precision of the denomination is planned for the next release cycle, at 0.00000001 as the minimum denomination, there may be issues as userbase increases.

  • Fair Hardfork - Rewards will slowly rise from the initial hard fork at an inverse exponential rate to bring the block reward from 0.02 up to 2 in 2000 blocks, as the adjustment to network capacity takes time, so rewards will closely match the time interval they relate to until it starts faster from the minimum target stabilises in response to what miners create.

Installation

For the main full node server:

go get github.com/parallelcointeam/parallelcoin

You probably will also want CLI client (can also speak to other bitcoin protocol RPC endpoints also):

go get github.com/p9c/pod/cmd/podctl

Requirements

Go 1.11 or newer.

Installation

Windows not available yet

When it is, it will be available here:

https://github.com/p9c/pod/releases

Linux/BSD/MacOSX/POSIX - Build from Source
$ go version
$ go env GOROOT GOPATH

NOTE: The GOROOT and GOPATH above must not be the same path. It is recommended that GOPATH is set to a directory in your home directory such as ~/goprojects to avoid write permission issues. It is also recommended to add $GOPATH/bin to your PATH at this point.

  • Run the following commands to obtain pod, all dependencies, and install it:
$ go get github.com/parallelcointeam/parallelcoin
  • pod (and utilities) will now be installed in $GOPATH/bin. If you did not already add the bin directory to your system path during Go installation, we recommend you do so now.

Updating

Windows

Install a newer MSI

Linux/BSD/MacOSX/POSIX - Build from Source
  • Run the following commands to update pod, all dependencies, and install it:
$ cd $GOPATH/src/github.com/parallelcointeam/parallelcoin
$ git pull && glide install
$ go install . ./cmd/...

Getting Started

pod has several configuration options available to tweak how it runs, but all of the basic operations described in the intro section work with zero configuration.

Windows (Installed from MSI)

Launch pod from your Start menu.

Linux/BSD/POSIX/Source
$ ./pod

Discord

Come and chat at our (discord server](https://discord.gg/nJKts94)

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

pod is licensed under the copyfree ISC License.

Documentation

Overview

Package node is a full-node Parallelcoin implementation written in Go.

The default options are sane for most users. This means pod 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/--configfile and -D --datadir) can be specified in a configuration file that is automatically parsed when pod starts up. By default, the configuration file is located at ~/.pod/pod. conf on POSIX-style operating systems and %LOCALAPPDATA%\pod\pod. conf on Windows. The -D (--datadir) flag, can be used to override this location.

NAME:

pod node - start parallelcoin full node

USAGE:

pod node [global options] command [command options] [arguments...]

VERSION:

v0.0.1

COMMANDS:

dropaddrindex  drop the address search index
droptxindex    drop the address search index
dropcfindex    drop the address search index

GLOBAL OPTIONS:

--help, -h  show help

Directories

Path Synopsis
cmd
pkg
addrmgr
Package addrmgr implements concurrency safe Bitcoin address manager.
Package addrmgr implements concurrency safe Bitcoin address manager.
amt
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.
blockchain
Package blockchain implements bitcoin block handling and chain selection rules.
Package blockchain implements bitcoin block handling and chain selection rules.
btcjson
Package btcjson provides primitives for working with the bitcoin JSON-RPC
Package btcjson provides primitives for working with the bitcoin JSON-RPC
chaincfg
Package chaincfg defines chain configuration parameters.
Package chaincfg defines chain configuration parameters.
chainhash
Package chainhash provides abstracted hash functionality.
Package chainhash provides abstracted hash functionality.
connmgr
Package connmgr implements a generic Bitcoin network connection manager.
Package connmgr implements a generic Bitcoin network connection manager.
control/hashrate
Package hashrate is a message type for Simplebuffers generated by miners to broadcast an IP address, a count and version number and current height of mining work just completed.
Package hashrate is a message type for Simplebuffers generated by miners to broadcast an IP address, a count and version number and current height of mining work just completed.
database
Package database provides a block and metadata storage database.
Package database provides a block and metadata storage database.
database/ffldb
Package ffldb implements a driver for the database package that uses leveldb or the backing metadata and flat files for block storage.
Package ffldb implements a driver for the database package that uses leveldb or the backing metadata and flat files for block storage.
ecc
Package ec implements support for the elliptic curves needed for bitcoin.
Package ec implements support for the elliptic curves needed for bitcoin.
fec
Package fec implements Reed Solomon 9/3 forward error correction,
Package fec implements Reed Solomon 9/3 forward error correction,
fork
Package fork handles tracking the hard fork status and is used to determine which consensus rules apply on a block
Package fork handles tracking the hard fork status and is used to determine which consensus rules apply on a block
gcm
gcs
Package gcs provides an API for building and using a Golomb-coded set filter.
Package gcs provides an API for building and using a Golomb-coded set filter.
hdkeychain
Package hdkeychain provides an API for bitcoin hierarchical deterministic extended keys (BIP0032).
Package hdkeychain provides an API for bitcoin hierarchical deterministic extended keys (BIP0032).
helpers
Package helpers provides convenience functions to simplify wallet code.
Package helpers provides convenience functions to simplify wallet code.
indexers
Package indexers implements optional block chain indexes.
Package indexers implements optional block chain indexes.
indexers/index
Package indexers implements optional block chain indexes.
Package indexers implements optional block chain indexes.
integration/rpctest
Package rpctest provides a pod-specific RPC testing harness crafting and executing integration tests by driving a `pod` instance via the `RPC` interface.
Package rpctest provides a pod-specific RPC testing harness crafting and executing integration tests by driving a `pod` instance via the `RPC` interface.
mempool
Package mempool provides a policy-enforced pool of unmined bitcoin transactions.
Package mempool provides a policy-enforced pool of unmined bitcoin transactions.
netsync
Package netsync implements a concurrency safe block syncing protocol.
Package netsync implements a concurrency safe block syncing protocol.
opts
Package opts is a configuration system to fit with the all-in-one philosophy guiding the design of the parallelcoin pod.
Package opts is a configuration system to fit with the all-in-one philosophy guiding the design of the parallelcoin pod.
opts/genopts
This generator reads a podcfg.Configs map and spits out a podcfg.Config struct
This generator reads a podcfg.Configs map and spits out a podcfg.Config struct
peer
Package peer provides a common base for creating and managing Bitcoin network peers.
Package peer provides a common base for creating and managing Bitcoin network peers.
pipe/consume
Package consume turns off and on the Serve logging messages and provides a way to receive and process the log messages
Package consume turns off and on the Serve logging messages and provides a way to receive and process the log messages
pipe/serve
Package serve receives log.Entry messages on a channel and sends them when it has been told to Run by Consume, and pauses when it is told Pause
Package serve receives log.Entry messages on a channel and sends them when it has been told to Run by Consume, and pauses when it is told Pause
pod
rpcclient
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
transport
Package transport provides a listener and sender channel for unicast and multicast UDP IPv4 short message chat protocol with a pre shared key, forward error correction facilities with a nice friendly declaration syntax
Package transport provides a listener and sender channel for unicast and multicast UDP IPv4 short message chat protocol with a pre shared key, forward error correction facilities with a nice friendly declaration syntax
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.
txscript
Package txscript implements the bitcoin transaction script language.
Package txscript implements the bitcoin transaction script language.
util
Package util provides bitcoin-specific convenience functions and types.
Package util provides bitcoin-specific convenience functions and types.
walletdb
Package walletdb provides a namespaced database interface for btcwallet.
Package walletdb provides a namespaced database interface for btcwallet.
walletdb/bdb
Package bdb implements an instance of walletdb that uses boltdb for the backing datastore.
Package bdb implements an instance of walletdb that uses boltdb for the backing datastore.
walletdb/ci
Package walletdbtest provides exported tests that can be imported and consumed by walletdb driver tests to help ensure that drivers confirm to the database driver interface correctly.
Package walletdbtest provides exported tests that can be imported and consumed by walletdb driver tests to help ensure that drivers confirm to the database driver interface correctly.
wire
Package wire implements the bitcoin wire protocol.
Package wire implements the bitcoin wire protocol.
zero
Package zero Copyright (c) 2015 The btcsuite developers
Package zero Copyright (c) 2015 The btcsuite developers

Jump to

Keyboard shortcuts

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