WIP: Feature/6/jeffreypicard/dockerize for deployment #7
6 changed files with 838 additions and 543 deletions
|
@ -123,7 +123,7 @@ func normalizeAddress(addr string, chain *chaincfg.Params, useWallet bool) (stri
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "18332"
|
defaultPort = "18332"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "18334"
|
defaultPort = "19245"
|
||||||
}
|
}
|
||||||
case &chaincfg.SimNetParams:
|
case &chaincfg.SimNetParams:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
|
@ -149,7 +149,7 @@ func normalizeAddress(addr string, chain *chaincfg.Params, useWallet bool) (stri
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "8332"
|
defaultPort = "8332"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "8334"
|
defaultPort = "9245"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
index.md
|
|
296
docs/README.md
Normal file
296
docs/README.md
Normal file
|
@ -0,0 +1,296 @@
|
||||||
|
### Table of Contents
|
||||||
|
1. [About](#About)
|
||||||
|
2. [Getting Started](#GettingStarted)
|
||||||
|
1. [Installation](#Installation)
|
||||||
|
1. [Windows](#WindowsInstallation)
|
||||||
|
2. [Linux/BSD/MacOSX/POSIX](#PosixInstallation)
|
||||||
|
1. [Gentoo Linux](#GentooInstallation)
|
||||||
|
2. [Configuration](#Configuration)
|
||||||
|
3. [Controlling and Querying btcd via btcctl](#BtcctlConfig)
|
||||||
|
4. [Mining](#Mining)
|
||||||
|
3. [Help](#Help)
|
||||||
|
1. [Startup](#Startup)
|
||||||
|
1. [Using bootstrap.dat](#BootstrapDat)
|
||||||
|
2. [Network Configuration](#NetworkConfig)
|
||||||
|
3. [Wallet](#Wallet)
|
||||||
|
4. [Contact](#Contact)
|
||||||
|
1. [IRC](#ContactIRC)
|
||||||
|
2. [Mailing Lists](#MailingLists)
|
||||||
|
5. [Developer Resources](#DeveloperResources)
|
||||||
|
1. [Code Contribution Guidelines](#ContributionGuidelines)
|
||||||
|
2. [JSON-RPC Reference](#JSONRPCReference)
|
||||||
|
3. [The btcsuite Bitcoin-related Go Packages](#GoPackages)
|
||||||
|
|
||||||
|
<a name="About" />
|
||||||
|
|
||||||
|
### 1. About
|
||||||
|
|
||||||
|
btcd is a full node bitcoin implementation written in [Go](http://golang.org),
|
||||||
|
licensed under the [copyfree](http://www.copyfree.org) ISC License.
|
||||||
|
|
||||||
|
This project is currently under active development and is in a Beta state. It
|
||||||
|
is extremely stable and has been in production use since October 2013.
|
||||||
|
|
||||||
|
It properly downloads, validates, and serves the block chain using the exact
|
||||||
|
rules (including consensus bugs) for block acceptance as Bitcoin Core. We have
|
||||||
|
taken great care to avoid btcd causing a fork to the block chain. It includes a
|
||||||
|
full block validation testing framework which contains all of the 'official'
|
||||||
|
block acceptance tests (and some additional ones) that is run on every pull
|
||||||
|
request to help ensure it properly follows consensus. Also, it passes all of
|
||||||
|
the JSON test data in the Bitcoin Core code.
|
||||||
|
|
||||||
|
It also properly relays newly mined blocks, maintains a transaction pool, and
|
||||||
|
relays individual transactions that have not yet made it into a block. It
|
||||||
|
ensures all individual transactions admitted to the pool follow the rules
|
||||||
|
required by the block chain and also includes more strict checks which filter
|
||||||
|
transactions based on miner requirements ("standard" transactions).
|
||||||
|
|
||||||
|
One key difference between btcd and Bitcoin Core is that btcd does *NOT* include
|
||||||
|
wallet functionality and this was a very intentional design decision. See the
|
||||||
|
blog entry [here](https://web.archive.org/web/20171125143919/https://blog.conformal.com/btcd-not-your-moms-bitcoin-daemon)
|
||||||
|
for more details. This means you can't actually make or receive payments
|
||||||
|
directly with btcd. That functionality is provided by the
|
||||||
|
[btcwallet](https://github.com/btcsuite/btcwallet) and
|
||||||
|
[Paymetheus](https://github.com/btcsuite/Paymetheus) (Windows-only) projects
|
||||||
|
which are both under active development.
|
||||||
|
|
||||||
|
<a name="GettingStarted" />
|
||||||
|
|
||||||
|
### 2. Getting Started
|
||||||
|
|
||||||
|
<a name="Installation" />
|
||||||
|
|
||||||
|
**2.1 Installation**
|
||||||
|
|
||||||
|
The first step is to install btcd. See one of the following sections for
|
||||||
|
details on how to install on the supported operating systems.
|
||||||
|
|
||||||
|
<a name="WindowsInstallation" />
|
||||||
|
|
||||||
|
**2.1.1 Windows Installation**<br />
|
||||||
|
|
||||||
|
* Install the MSI available at: https://github.com/btcsuite/btcd/releases
|
||||||
|
* Launch btcd from the Start Menu
|
||||||
|
|
||||||
|
<a name="PosixInstallation" />
|
||||||
|
|
||||||
|
**2.1.2 Linux/BSD/MacOSX/POSIX Installation**
|
||||||
|
|
||||||
|
|
||||||
|
- Install Go according to the installation instructions here:
|
||||||
|
http://golang.org/doc/install
|
||||||
|
|
||||||
|
- Ensure Go was installed properly and is a supported version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ 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 btcd, all dependencies, and install it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git clone https://github.com/btcsuite/btcd $GOPATH/src/github.com/btcsuite/btcd
|
||||||
|
$ cd $GOPATH/src/github.com/btcsuite/btcd
|
||||||
|
$ GO111MODULE=on go install -v . ./cmd/...
|
||||||
|
```
|
||||||
|
|
||||||
|
- btcd (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**
|
||||||
|
|
||||||
|
- Run the following commands to update btcd, all dependencies, and install it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd $GOPATH/src/github.com/btcsuite/btcd
|
||||||
|
$ git pull && GO111MODULE=on go install -v . ./cmd/...
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="GentooInstallation" />
|
||||||
|
|
||||||
|
**2.1.2.1 Gentoo Linux Installation**
|
||||||
|
|
||||||
|
* Install Layman and enable the Bitcoin overlay.
|
||||||
|
* https://gitlab.com/bitcoin/gentoo
|
||||||
|
* Copy or symlink `/var/lib/layman/bitcoin/Documentation/package.keywords/btcd-live` to `/etc/portage/package.keywords/`
|
||||||
|
* Install btcd: `$ emerge net-p2p/btcd`
|
||||||
|
|
||||||
|
<a name="Configuration" />
|
||||||
|
|
||||||
|
**2.2 Configuration**
|
||||||
|
|
||||||
|
btcd has a number of [configuration](http://godoc.org/github.com/btcsuite/btcd)
|
||||||
|
options, which can be viewed by running: `$ btcd --help`.
|
||||||
|
|
||||||
|
<a name="BtcctlConfig" />
|
||||||
|
|
||||||
|
**2.3 Controlling and Querying btcd via btcctl**
|
||||||
|
|
||||||
|
btcctl is a command line utility that can be used to both control and query btcd
|
||||||
|
via [RPC](http://www.wikipedia.org/wiki/Remote_procedure_call). btcd does
|
||||||
|
**not** enable its RPC server by default; You must configure at minimum both an
|
||||||
|
RPC username and password or both an RPC limited username and password:
|
||||||
|
|
||||||
|
* btcd.conf configuration file
|
||||||
|
```
|
||||||
|
[Application Options]
|
||||||
|
rpcuser=myuser
|
||||||
|
rpcpass=SomeDecentp4ssw0rd
|
||||||
|
rpclimituser=mylimituser
|
||||||
|
rpclimitpass=Limitedp4ssw0rd
|
||||||
|
```
|
||||||
|
* btcctl.conf configuration file
|
||||||
|
```
|
||||||
|
[Application Options]
|
||||||
|
rpcuser=myuser
|
||||||
|
rpcpass=SomeDecentp4ssw0rd
|
||||||
|
```
|
||||||
|
OR
|
||||||
|
```
|
||||||
|
[Application Options]
|
||||||
|
rpclimituser=mylimituser
|
||||||
|
rpclimitpass=Limitedp4ssw0rd
|
||||||
|
```
|
||||||
|
For a list of available options, run: `$ btcctl --help`
|
||||||
|
|
||||||
|
<a name="Mining" />
|
||||||
|
|
||||||
|
**2.4 Mining**
|
||||||
|
|
||||||
|
btcd supports the `getblocktemplate` RPC.
|
||||||
|
The limited user cannot access this RPC.
|
||||||
|
|
||||||
|
|
||||||
|
**1. Add the payment addresses with the `miningaddr` option.**
|
||||||
|
|
||||||
|
```
|
||||||
|
[Application Options]
|
||||||
|
rpcuser=myuser
|
||||||
|
rpcpass=SomeDecentp4ssw0rd
|
||||||
|
miningaddr=12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX
|
||||||
|
miningaddr=1M83ju3EChKYyysmM2FXtLNftbacagd8FR
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. Add btcd's RPC TLS certificate to system Certificate Authority list.**
|
||||||
|
|
||||||
|
`cgminer` uses [curl](http://curl.haxx.se/) to fetch data from the RPC server.
|
||||||
|
Since curl validates the certificate by default, we must install the `btcd` RPC
|
||||||
|
certificate into the default system Certificate Authority list.
|
||||||
|
|
||||||
|
**Ubuntu**
|
||||||
|
|
||||||
|
1. Copy rpc.cert to /usr/share/ca-certificates: `# cp /home/user/.btcd/rpc.cert /usr/share/ca-certificates/btcd.crt`
|
||||||
|
2. Add btcd.crt to /etc/ca-certificates.conf: `# echo btcd.crt >> /etc/ca-certificates.conf`
|
||||||
|
3. Update the CA certificate list: `# update-ca-certificates`
|
||||||
|
|
||||||
|
**3. Set your mining software url to use https.**
|
||||||
|
|
||||||
|
`$ cgminer -o https://127.0.0.1:9245 -u rpcuser -p rpcpassword`
|
||||||
|
|
||||||
|
<a name="Help" />
|
||||||
|
|
||||||
|
### 3. Help
|
||||||
|
|
||||||
|
<a name="Startup" />
|
||||||
|
|
||||||
|
**3.1 Startup**
|
||||||
|
|
||||||
|
Typically btcd will run and start downloading the block chain with no extra
|
||||||
|
configuration necessary, however, there is an optional method to use a
|
||||||
|
`bootstrap.dat` file that may speed up the initial block chain download process.
|
||||||
|
|
||||||
|
<a name="BootstrapDat" />
|
||||||
|
|
||||||
|
**3.1.1 bootstrap.dat**
|
||||||
|
|
||||||
|
* [Using bootstrap.dat](https://github.com/btcsuite/btcd/tree/master/docs/using_bootstrap_dat.md)
|
||||||
|
|
||||||
|
<a name="NetworkConfig" />
|
||||||
|
|
||||||
|
**3.1.2 Network Configuration**
|
||||||
|
|
||||||
|
* [What Ports Are Used by Default?](https://github.com/btcsuite/btcd/tree/master/docs/default_ports.md)
|
||||||
|
* [How To Listen on Specific Interfaces](https://github.com/btcsuite/btcd/tree/master/docs/configure_peer_server_listen_interfaces.md)
|
||||||
|
* [How To Configure RPC Server to Listen on Specific Interfaces](https://github.com/btcsuite/btcd/tree/master/docs/configure_rpc_server_listen_interfaces.md)
|
||||||
|
* [Configuring btcd with Tor](https://github.com/btcsuite/btcd/tree/master/docs/configuring_tor.md)
|
||||||
|
|
||||||
|
<a name="Wallet" />
|
||||||
|
|
||||||
|
**3.1 Wallet**
|
||||||
|
|
||||||
|
btcd was intentionally developed without an integrated wallet for security
|
||||||
|
reasons. Please see [btcwallet](https://github.com/btcsuite/btcwallet) for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
|
||||||
|
<a name="Contact" />
|
||||||
|
|
||||||
|
### 4. Contact
|
||||||
|
|
||||||
|
<a name="ContactIRC" />
|
||||||
|
|
||||||
|
**4.1 IRC**
|
||||||
|
|
||||||
|
* [irc.freenode.net](irc://irc.freenode.net), channel `#btcd`
|
||||||
|
|
||||||
|
<a name="MailingLists" />
|
||||||
|
|
||||||
|
**4.2 Mailing Lists**
|
||||||
|
|
||||||
|
* <a href="mailto:btcd+subscribe@opensource.conformal.com">btcd</a>: discussion
|
||||||
|
of btcd and its packages.
|
||||||
|
* <a href="mailto:btcd-commits+subscribe@opensource.conformal.com">btcd-commits</a>:
|
||||||
|
readonly mail-out of source code changes.
|
||||||
|
|
||||||
|
<a name="DeveloperResources" />
|
||||||
|
|
||||||
|
### 5. Developer Resources
|
||||||
|
|
||||||
|
<a name="ContributionGuidelines" />
|
||||||
|
|
||||||
|
* [Code Contribution Guidelines](https://github.com/btcsuite/btcd/tree/master/docs/code_contribution_guidelines.md)
|
||||||
|
|
||||||
|
<a name="JSONRPCReference" />
|
||||||
|
|
||||||
|
* [JSON-RPC Reference](https://github.com/btcsuite/btcd/tree/master/docs/json_rpc_api.md)
|
||||||
|
* [RPC Examples](https://github.com/btcsuite/btcd/tree/master/docs/json_rpc_api.md#ExampleCode)
|
||||||
|
|
||||||
|
<a name="GoPackages" />
|
||||||
|
|
||||||
|
* The btcsuite Bitcoin-related Go Packages:
|
||||||
|
* [btcrpcclient](https://github.com/btcsuite/btcd/tree/master/rpcclient) - Implements a
|
||||||
|
robust and easy to use Websocket-enabled Bitcoin JSON-RPC client
|
||||||
|
* [btcjson](https://github.com/btcsuite/btcd/tree/master/btcjson) - Provides an extensive API
|
||||||
|
for the underlying JSON-RPC command and return values
|
||||||
|
* [wire](https://github.com/btcsuite/btcd/tree/master/wire) - Implements the
|
||||||
|
Bitcoin wire protocol
|
||||||
|
* [peer](https://github.com/btcsuite/btcd/tree/master/peer) -
|
||||||
|
Provides a common base for creating and managing Bitcoin network peers.
|
||||||
|
* [blockchain](https://github.com/btcsuite/btcd/tree/master/blockchain) -
|
||||||
|
Implements Bitcoin block handling and chain selection rules
|
||||||
|
* [blockchain/fullblocktests](https://github.com/btcsuite/btcd/tree/master/blockchain/fullblocktests) -
|
||||||
|
Provides a set of block tests for testing the consensus validation rules
|
||||||
|
* [txscript](https://github.com/btcsuite/btcd/tree/master/txscript) -
|
||||||
|
Implements the Bitcoin transaction scripting language
|
||||||
|
* [btcec](https://github.com/btcsuite/btcd/tree/master/btcec) - Implements
|
||||||
|
support for the elliptic curve cryptographic functions needed for the
|
||||||
|
Bitcoin scripts
|
||||||
|
* [database](https://github.com/btcsuite/btcd/tree/master/database) -
|
||||||
|
Provides a database interface for the Bitcoin block chain
|
||||||
|
* [mempool](https://github.com/btcsuite/btcd/tree/master/mempool) -
|
||||||
|
Package mempool provides a policy-enforced pool of unmined bitcoin
|
||||||
|
transactions.
|
||||||
|
* [btcutil](https://github.com/btcsuite/btcutil) - Provides Bitcoin-specific
|
||||||
|
convenience functions and types
|
||||||
|
* [chainhash](https://github.com/btcsuite/btcd/tree/master/chaincfg/chainhash) -
|
||||||
|
Provides a generic hash type and associated functions that allows the
|
||||||
|
specific hash algorithm to be abstracted.
|
||||||
|
* [connmgr](https://github.com/btcsuite/btcd/tree/master/connmgr) -
|
||||||
|
Package connmgr implements a generic Bitcoin network connection manager.
|
1052
docs/json_rpc_api.md
1052
docs/json_rpc_api.md
File diff suppressed because it is too large
Load diff
|
@ -28,7 +28,7 @@ type params struct {
|
||||||
// to emulate the full reference implementation RPC API.
|
// to emulate the full reference implementation RPC API.
|
||||||
var mainNetParams = params{
|
var mainNetParams = params{
|
||||||
Params: &chaincfg.MainNetParams,
|
Params: &chaincfg.MainNetParams,
|
||||||
rpcPort: "8334",
|
rpcPort: "9245",
|
||||||
}
|
}
|
||||||
|
|
||||||
// regressionNetParams contains parameters specific to the regression test
|
// regressionNetParams contains parameters specific to the regression test
|
||||||
|
@ -37,7 +37,7 @@ var mainNetParams = params{
|
||||||
// details.
|
// details.
|
||||||
var regressionNetParams = params{
|
var regressionNetParams = params{
|
||||||
Params: &chaincfg.RegressionNetParams,
|
Params: &chaincfg.RegressionNetParams,
|
||||||
rpcPort: "18334",
|
rpcPort: "29245",
|
||||||
}
|
}
|
||||||
|
|
||||||
// testNet3Params contains parameters specific to the test network (version 3)
|
// testNet3Params contains parameters specific to the test network (version 3)
|
||||||
|
@ -45,7 +45,7 @@ var regressionNetParams = params{
|
||||||
// reference implementation - see the mainNetParams comment for details.
|
// reference implementation - see the mainNetParams comment for details.
|
||||||
var testNet3Params = params{
|
var testNet3Params = params{
|
||||||
Params: &chaincfg.TestNet3Params,
|
Params: &chaincfg.TestNet3Params,
|
||||||
rpcPort: "18334",
|
rpcPort: "19245",
|
||||||
}
|
}
|
||||||
|
|
||||||
// simNetParams contains parameters specific to the simulation test network
|
// simNetParams contains parameters specific to the simulation test network
|
||||||
|
|
|
@ -38,7 +38,7 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
connCfg := &rpcclient.ConnConfig{
|
connCfg := &rpcclient.ConnConfig{
|
||||||
Host: "localhost:8334",
|
Host: "localhost:9245",
|
||||||
Endpoint: "ws",
|
Endpoint: "ws",
|
||||||
User: "yourrpcuser",
|
User: "yourrpcuser",
|
||||||
Pass: "yourrpcpass",
|
Pass: "yourrpcpass",
|
||||||
|
|
|
@ -198,16 +198,16 @@
|
||||||
; rpclisten=0.0.0.0
|
; rpclisten=0.0.0.0
|
||||||
; All ipv6 interfaces on default port:
|
; All ipv6 interfaces on default port:
|
||||||
; rpclisten=::
|
; rpclisten=::
|
||||||
; All interfaces on port 8334:
|
; All interfaces on port 9245:
|
||||||
; rpclisten=:8334
|
; rpclisten=:9245
|
||||||
; All ipv4 interfaces on port 8334:
|
; All ipv4 interfaces on port 9245:
|
||||||
; rpclisten=0.0.0.0:8334
|
; rpclisten=0.0.0.0:9245
|
||||||
; All ipv6 interfaces on port 8334:
|
; All ipv6 interfaces on port 9245:
|
||||||
; rpclisten=[::]:8334
|
; rpclisten=[::]:9245
|
||||||
; Only ipv4 localhost on port 8334:
|
; Only ipv4 localhost on port 9245:
|
||||||
; rpclisten=127.0.0.1:8334
|
; rpclisten=127.0.0.1:9245
|
||||||
; Only ipv6 localhost on port 8334:
|
; Only ipv6 localhost on port 9245:
|
||||||
; rpclisten=[::1]:8334
|
; rpclisten=[::1]:9245
|
||||||
; Only ipv4 localhost on non-standard port 8337:
|
; Only ipv4 localhost on non-standard port 8337:
|
||||||
; rpclisten=127.0.0.1:8337
|
; rpclisten=127.0.0.1:8337
|
||||||
; All interfaces on non-standard port 8337:
|
; All interfaces on non-standard port 8337:
|
||||||
|
|
Loading…
Reference in a new issue