9

command module
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2019 License: ISC Imports: 5 Imported by: 0

README

9[all in one everything]

what is parallelcoin?

Parallelcoin is an altcoin that appeared around the time of the MtGox hack and the first appearance of ASIC miners on the market.

The original creator of the token shortly afterwards disappeared again, and hasn't been seen since.

It was adopted and after some time finally programmers were found to bring this old miner-focused coin into the next generation.

roadmap

where we've been
  1. Original creation of coin by Parallaxis, release 8 February 2014
  2. Community Takeover Announcement 23 June 2015
  3. Loki Verloren formally started working on a new server 8 June 2018 based on btcsuite's btcd
plan 9 from crypto space!
where we're going

We are very proud of the work so far and we think that people will love the new Parallelcoin:

  • 9 complex multi-algorithm orthogonal complexity proof of work hash functions
    • cryptonote 7 v2 for cache-heavy hashing
    • aurora2i, memory bus intensive
      • 9 different hash algorithms already with ASIC hardware
  • 4 part averaging algorithm:
    • All time average - to prevent long term drift
    • One day trailing simple average
    • Per-block exponential weighted average
    • Per-algorithm equal spacing averaging with exponential weighted average
  • strong resistance to timing and rhythm attacks by the use of multiple competing averagers
    • no hard limiters
    • tends towards equilibrium
  • default odds-following weighted randomising work schedulers
    • miners bias timing to the inner 2SD (9-27 seconds)
  • 9 second blocks with difficulty reduction damper to reduce coincidence of very short intervals between blocks
    • increases warmup cost of specialised miners with a shorter average time between blocks
    • decreases window of opportunity for pool miners via their inherent high latency, and the same for botnets
    • short time between blocks tends to favour miners nearer to the origin of the transaction - instead of going to the cheapest surplus electricity
    • more practical for face to face transactions due to shorter clearance time, without any additional systems overlaying it
  1. Release of Plan 9 from Crypto Space software suite, mid April 2019
  2. Hard Fork scheduled for ~ block 199999 ~ May 2019
  3. 3 months intensive monitoring and bug-catching until end of July
  4. Begin intensive work towards implementing the Distributed Journal Cache Protocol with its Proof of Causality logical clocks and probabalistic graph analysis, first working beta by January 2020
  5. Migrate DUO ledger to DJCP and and start building out SDK and first applications.

Application Feng Shui

Technologies develop slowly over time and they leave behind trails of arbitrary things that stuck despite no sensible reason for it. The carpal-tunnel-inducing intentionally difficult QWERTY keyboard, the kilogram, which still lacks a reference free derivation and upholds several pillars of physics, the heels on shoes that nobody uses to hang onto stirrups anymore...

Thus, every aspect we can examine and improve especially in user experience is under the microscope.

Take command line applications, for example: These were originally devised to be used on dumb terminals connected by slow analogue modem connections, to gigantic room and building sized computers with hefty megabytes of storage.

Even still, nowhere near enough people touch type, but it gets better with time. We are mostly used to even tapping away with two fingers at touch screens at a pace that gets within comfortable distance of hunt and peck typists.

The point is, all these things were influenced by conditions that no longer exist. We don't have the problem of colliding hammers on the typewriter anymore, instead we have other problems, like a keyboard layout designed to make typing slower and harder work.

user types
casual users

These people will just download the binary and run it in their GUI environment. So when 9 is run without parameters, as happens from a double click, it launches the GUI, which will select the default profile directory for one user. For devs, this can also be launched with the path of another profile folder, for allowing use of testnets and so forth.

miner users

Miners will just want something simple and automatic that just works. For miners, running 1-3 full nodes to punch out their blocks, in a 50-200sqm space, all connected by 100/1000mbit ethernet, and located near a major optic fibre backbone. For them, the informative and mostly keyboard driven CLI interface for configuration will be a pleasure, and saves them wasting their time just to learn yet another arbitrarily complex and specific configuration scheme.

They are used to using ssh connections, and the simplicity of the miner work dispatch push subscriptions, and the confidence in knowing that what costs they lay down to mine this coin, will not be worthless overnight. To not have to read endless help files and search forums, it just works, it tells you everything you need it to and doesn't ask for rubbish you don't need.

Plus, because we wrote it in Go, there's more machines that can run it (easily) than non-Go crypto software, and you will be able to get it in binary form from day zero.

developers

These people are running exchanges, building websites, running websites, and so on. Though the configuration syntax is a tiny bit different from the usual, it is easy to understand, and the interactive CLI configuration doubles as a lightweight user manual. Such users may cry a bit about not being able to quickly change a setting right after watching a previous result.

But it's so simple to add such things and likely even some skulk around in the dark corners of the codebase.

But the nicest bit, for especially such as the authors of the software, is the testnet configuration tools. Print a score of default-based nodes all configured to only connect together, and then a second command starts it up and can rapidly set up arbitrary scenarios.

Plus, hopefully you'll enjoy that part so much you want to help make it better.

Building

9 is built with Go 1.12 with modules fully enabled. You can just go build or go install in the root of the repository and voila.

Documentation

See the doc directory for more information.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
ctl
gui
ll
node
pod is a full-node Parallelcoin implementation written in Go.
pod is a full-node Parallelcoin implementation written in Go.
node/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.
node/mempool
Package mempool provides a policy-enforced pool of unmined bitcoin transactions.
Package mempool provides a policy-enforced pool of unmined bitcoin transactions.
spv
pkg
chain
Package blockchain implements bitcoin block handling and chain selection rules.
Package blockchain implements bitcoin block handling and chain selection rules.
chain/fork
Package fork handles tracking the hard fork status and is used to determine which consensus rules apply on a block TODO: add trailing auto-checkpoint system and hard fork block time change
Package fork handles tracking the hard fork status and is used to determine which consensus rules apply on a block TODO: add trailing auto-checkpoint system and hard fork block time change
chain/hash
Package chainhash provides abstracted hash functionality.
Package chainhash provides abstracted hash functionality.
chain/index
Package indexers implements optional block chain indexes.
Package indexers implements optional block chain indexes.
chain/sync
Package netsync implements a concurrency safe block syncing protocol.
Package netsync implements a concurrency safe block syncing protocol.
chain/tx
Package wallettx provides ...
Package wallettx provides ...
chain/tx/author
Package txauthor provides transaction creation code for wallets.
Package txauthor provides transaction creation code for wallets.
chain/tx/mgr
Package wtxmgr provides an implementation of a transaction database handling spend tracking for a bitcoin wallet.
Package wtxmgr provides an implementation of a transaction database handling spend tracking for a bitcoin wallet.
chain/tx/rules
Package txrules provides transaction rules that should be followed by transaction authors for wide mempool acceptance and quick mining.
Package txrules provides transaction rules that should be followed by transaction authors for wide mempool acceptance and quick mining.
chain/tx/script
Package txscript implements the bitcoin transaction script language.
Package txscript implements the bitcoin transaction script language.
chain/tx/sort
Package txsort provides the transaction sorting according to BIP 69.
Package txsort provides the transaction sorting according to BIP 69.
chain/wire
Package wire implements the bitcoin wire protocol.
Package wire implements the bitcoin wire protocol.
db
Package database provides a block and metadata storage database.
Package database provides a block and metadata storage database.
db/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.
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.
peer/addrmgr
Package addrmgr implements concurrency safe Bitcoin address manager.
Package addrmgr implements concurrency safe Bitcoin address manager.
peer/connmgr
Package connmgr implements a generic Bitcoin network connection manager.
Package connmgr implements a generic Bitcoin network connection manager.
pod
rpc/client
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
rpc/json
NOTE: This file is intended to house the RPC commands that are supported by a wallet server with btcwallet extensions.
NOTE: This file is intended to house the RPC commands that are supported by a wallet server with btcwallet extensions.
rpc/server
Package rpcserver implements the RPC API and is used by the main package to start gRPC services.
Package rpcserver implements the RPC API and is used by the main package to start gRPC services.
rpc/sub
Package sub is a short message publication/subscription library that uses UDP transport, Reed Solomon erasure coding, ed25519 EC signatures for tamper-resistance, for allowing clients to subscribe to updates from a server for time-sensitive messaging, written to implement a low latency work delivery system for Parallelcoin miners.
Package sub is a short message publication/subscription library that uses UDP transport, Reed Solomon erasure coding, ed25519 EC signatures for tamper-resistance, for allowing clients to subscribe to updates from a server for time-sensitive messaging, written to implement a low latency work delivery system for Parallelcoin miners.
rpc/wallet
Package walletrpc is a generated protocol buffer package.
Package walletrpc is a generated protocol buffer package.
util
Package util provides bitcoin-specific convenience functions and types.
Package util provides bitcoin-specific convenience functions and types.
util/base58
AUTOGENERATED by genalphabet.go; do not edit.
AUTOGENERATED by genalphabet.go; do not edit.
util/base58/genalphabet
+build ignore
+build ignore
util/bech32
Package bech32 provides a Go implementation of the bech32 format specified in BIP 173.
Package bech32 provides a Go implementation of the bech32 format specified in BIP 173.
util/cl
Package cl is clog, the channel logger
Package cl is clog, the channel logger
util/elliptic
Package ec implements support for the elliptic curves needed for bitcoin.
Package ec implements support for the elliptic curves needed for bitcoin.
util/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.
util/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).
util/helpers
Package helpers provides convenience functions to simplify wallet code.
Package helpers provides convenience functions to simplify wallet code.
util/interrupt
+build darwin dragonfly freebsd linux netbsd openbsd solaris
+build darwin dragonfly freebsd linux netbsd openbsd solaris
util/log
Package log defines an interface and default implementation for subsystem logging.
Package log defines an interface and default implementation for subsystem logging.
util/sub
Package sub is a short message publication/subscription library that uses UDP transport, Reed Solomon erasure coding, ed25519 EC signatures for tamper-resistance, for allowing clients to subscribe to updates from a server for time-sensitive messaging, written to implement a low latency work delivery system for Parallelcoin miners.
Package sub is a short message publication/subscription library that uses UDP transport, Reed Solomon erasure coding, ed25519 EC signatures for tamper-resistance, for allowing clients to subscribe to updates from a server for time-sensitive messaging, written to implement a low latency work delivery system for Parallelcoin miners.
util/tcell
Package tcell provides a lower-level, portable API for building programs that interact with terminals or consoles.
Package tcell provides a lower-level, portable API for building programs that interact with terminals or consoles.
util/tcell/_demos
boxes just displays random colored boxes on your terminal screen.
boxes just displays random colored boxes on your terminal screen.
util/tcell/termbox
Package termbox is a compatibility layer to allow tcells to emulate the github.com/nsf/termbox package.
Package termbox is a compatibility layer to allow tcells to emulate the github.com/nsf/termbox package.
util/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.
util/tview
Package tview implements rich widgets for terminal based user interfaces.
Package tview implements rich widgets for terminal based user interfaces.
util/tview/demos/box
Demo code for the Box primitive.
Demo code for the Box primitive.
util/tview/demos/button
Demo code for the Button primitive.
Demo code for the Button primitive.
util/tview/demos/checkbox
Demo code for the Checkbox primitive.
Demo code for the Checkbox primitive.
util/tview/demos/dropdown
Demo code for the DropDown primitive.
Demo code for the DropDown primitive.
util/tview/demos/flex
Demo code for the Flex primitive.
Demo code for the Flex primitive.
util/tview/demos/form
Demo code for the Form primitive.
Demo code for the Form primitive.
util/tview/demos/frame
Demo code for the Frame primitive.
Demo code for the Frame primitive.
util/tview/demos/grid
Demo code for the Grid primitive.
Demo code for the Grid primitive.
util/tview/demos/inputfield
Demo code for the InputField primitive.
Demo code for the InputField primitive.
util/tview/demos/list
Demo code for the List primitive.
Demo code for the List primitive.
util/tview/demos/modal
Demo code for the Modal primitive.
Demo code for the Modal primitive.
util/tview/demos/pages
Demo code for the Pages primitive.
Demo code for the Pages primitive.
util/tview/demos/presentation
A presentation of the tview package, implemented with tview.
A presentation of the tview package, implemented with tview.
util/tview/demos/primitive
Demo code which illustrates how to implement your own primitive.
Demo code which illustrates how to implement your own primitive.
util/tview/demos/table
Demo code for the Table primitive.
Demo code for the Table primitive.
util/tview/demos/textview
Demo code for the TextView primitive.
Demo code for the TextView primitive.
util/tview/demos/treeview
Demo code for the TreeView primitive.
Demo code for the TreeView primitive.
util/tview/demos/unicode
Demo code for unicode support (demonstrates wide Chinese characters).
Demo code for unicode support (demonstrates wide Chinese characters).
util/zero
Package zero contains functions to clear data from byte slices and multi-precision integers.
Package zero contains functions to clear data from byte slices and multi-precision integers.
wallet
Package wallet provides ...
Package wallet provides ...
wallet/addrmgr
Package waddrmgr provides a secure hierarchical deterministic wallet address manager.
Package waddrmgr provides a secure hierarchical deterministic wallet address manager.
wallet/db
Package walletdb provides a namespaced database interface for btcwallet.
Package walletdb provides a namespaced database interface for btcwallet.
wallet/db/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.
wallet/db/test
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.
wallet/votingpool
Package votingpool provides voting pool functionality for btcwallet.
Package votingpool provides voting pool functionality for btcwallet.

Jump to

Keyboard shortcuts

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