dcrd/chaincfg
Josh Rickmar e206421edd Optimize coinbase output tax check.
Profiling indicated that significant time was being spent validating
coinbase outputs, ensuring that they paid to the development
organization's P2SH tax address.  This check was more inefficient than
necessary for a couple of reasons:

* The tax address was always decoded from a string to a dcrutil.Address.

* The actual script being validated was always parsed for addresses to
  check if they matched the tax address.

Neither of these are needed.  To optimize the algorithm, only the
equality of the output script and script version are checked.
2016-10-07 16:39:40 -04:00
..
chainec blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
chainhash Replace fastsha256 with crypto/sha256 (#319) 2016-08-24 11:18:48 -05:00
doc.go Initial Decred Commit. 2016-02-07 14:00:12 -05:00
genesis_test.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
genesis.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
internal_test.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
params_test.go chaincfg: Register networks instead of hard coding. 2016-06-01 14:34:02 -05:00
params.go Optimize coinbase output tax check. 2016-10-07 16:39:40 -04:00
premine.go multi: Update with result of gofmt -s. 2016-05-30 12:40:44 -05:00
README.md docs: Make various README.md files consistent. 2016-05-20 16:00:12 -05:00
register_test.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00

chaincfg

[Build Status] (https://travis-ci.org/decred/dcrd) ![ISC License] (http://img.shields.io/badge/license-ISC-blue.svg) [GoDoc] (http://godoc.org/github.com/decred/dcrd/chaincfg)

Package chaincfg defines chain configuration parameters for the three standard Decred networks and provides the ability for callers to define their own custom Decred networks.

Although this package was primarily written for dcrd, it has intentionally been designed so it can be used as a standalone package for any projects needing to use parameters for the standard Decred networks or for projects needing to define their own network.

Sample Use

package main

import (
	"flag"
	"fmt"
	"log"

	"github.com/decred/dcrutil"
	"github.com/decred/dcrd/chaincfg"
)

var testnet = flag.Bool("testnet", false, "operate on the testnet Decred network")

// By default (without -testnet), use mainnet.
var chainParams = &chaincfg.MainNetParams

func main() {
	flag.Parse()

	// Modify active network parameters if operating on testnet.
	if *testnet {
		chainParams = &chaincfg.TestNetParams
	}

	// later...

	// Create and print new payment address, specific to the active network.
	pubKeyHash := make([]byte, 20)
	addr, err := btcutil.NewAddressPubKeyHash(pubKeyHash, chainParams)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(addr)
}

Installation and Updating

$ go get -u github.com/decred/dcrd/chaincfg

License

Package chaincfg is licensed under the copyfree ISC License.