A full node Bitcoin (BSV) implementation written in Go

bsvd

Build Status Go Report Card ISC License GoDoc

bsvd is a full node Bitcoin (BSV) implementation written in Go (golang).

This project is a port of the bchd codebase to Bitcoin (BSV). It provides a high powered and reliable blockchain server which makes it a suitable backend to serve blockchain data to lite clients and block explorers or to power your local wallet.

bsvd does not include any wallet functionality by design as it makes the codebase more modular and easy to maintain. The bsvwallet is a separate application that provides a secure Bitcoin (BSV) wallet that communicates with your running bsvd instance via the API.

Table of Contents

Requirements

Go 1.9 or newer.

Install

Install Pre-built Packages

The easiest way to run the server is to download a pre-built binary. You can find binaries of our latest release for each operating system at the releases page.

Build from Source

If you prefer to install from source do the following:

  • Install Go according to the installation instructions here: http://golang.org/doc/install

  • Run the following commands to obtain btcd, all dependencies, and install it:

$ go get github.com/bitcoinsv/bsvd

This will download and compile bsvd and put it in your path.

If you are a bsvd contributor and would like to change the default config file (bsvd.conf), make any changes to sample-bsvd.conf and then run the following commands:

$ go-bindata sample-bsvd.conf  # requires github.com/go-bindata/go-bindata/
$ gofmt -s -w bindata.go

Getting Started

To start bsvd with default options just run:

$ ./bsvd

You'll find a large number of runtime options on the help menu. All of which can also be set in a config file. See the sample config file for an example of how to use it.

Docker

Building and running bsvd in docker is quite painless. To build the image:

docker build . -t bsvd

To run the image:

docker run bsvd

To run bsvctl and connect to your bsvd instance:

# Find the running bsvd container.
docker ps

# Exec bsvctl.
docker exec <container> bsvctl <command>

Documentation

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

Contributing

Contributions are definitely welcome! Please read the contributing guidelines before starting.

Security Disclosures

To report security issues please contact:

Chris Pacia ([email protected]) - GPG Fingerprint: 0150 2502 DD3A 928D CE52 8CB9 B895 6DBF EE7C 105C

or

Josh Ellithorpe ([email protected]) - GPG Fingerprint: B6DE 3514 E07E 30BB 5F40 8D74 E49B 7E00 0022 8DDD

License

bsvd is licensed under the copyfree ISC License.

Similar Resources

Store data on Bitcoin for 350 sats/KB up to 185 KB by using P2SH-P2WSH witness scripts

Bitcandle Store data on Bitcoin for 350 sats/KB up to 185 kB by using P2SH-P2WSH witness scripts. 225ed8bc432d37cf434f80717286fd5671f676f12b573294db72

Aug 12, 2022

A curated Golang toolkit for creating Bitcoin SV powered apps

A curated Golang toolkit for creating Bitcoin SV powered apps

bsv A curated Golang toolkit for creating Bitcoin SV powered apps Table of Contents Installation Maintainers License Installation bsv requires a suppo

May 10, 2022

A work-in-progress Bitcoin wallet based on Output Descriptors

go-wallet A work-in-progress Bitcoin wallet Descriptors go-wallet is designed around Bitcoin Descriptors. It implements a Output Script Descriptors la

May 4, 2022

Bitcoin futures curve from Deribit as a JSON webservice

Curve Bitcoin futures curve from Deribit as a JSON webservice Building go build . Running ./curve Expiration date and annualised yield of each contr

Dec 13, 2021

Bitcoin Core integration/staging tree

Bitcoin Core integration/staging tree https://bitcoincore.org For an immediately usable, binary version of the Bitcoin Core software, see https://bitc

Dec 30, 2022

Mastering Bitcoin 2nd Edition - Programming the Open Blockchain

Code Examples: Mastering Bitcoin Mastering Bitcoin is a book for developers, although the first two chapters cover bitcoin at a level that is also app

Jan 1, 2023

Bitcoin Improvement Proposals

People wishing to submit BIPs, first should propose their idea or document to the [email protected] mailing list (do not assign a

Jan 2, 2023

A simple, concurrent bitcoin miner framework implemented in Go.

Bitcoin Miner A simple, concurrent bitcoin miner framework implemented in Go. Disclaimer: this is not a product intended to be used for real mining, s

Dec 29, 2022

Bitcoin address balance checker on steroids.

BTCSteroids Bitcoin address balance checker on steroids. Table of contents Quick start What's included Use Cases Thanks Copyright and license Quick st

Dec 12, 2022
Comments
  • Increase MaxScriptElementSize in txscript package

    Increase MaxScriptElementSize in txscript package

    Recently, a transaction with 17kb of OP_RETURN data was mined by coingeek. https://blockchair.com/bitcoin-sv/address/d-3f5c7cbe8927da73271dba9c1bc1abb4

    If this is going to become a thing, txscript pkg will need updating. Not sure what the new limit will be if any.

    To test, I changed script.go line 46 from a value of 520, to 20520 MaxScriptElementSize = 20520 // Max bytes pushable to the stack.

    This was all that was required to generate a large tx. Not sure what is required for broadcasting, or what else would be effected as I'm using this for tx utils, not running a node.

  • increase maxscriptsize from 520 to 100000 bytes

    increase maxscriptsize from 520 to 100000 bytes

    refs #1

    There are a few things to consider with this:

    • txscript tests might need to be restructured a bit. They iterate a lot now, and take several orders of magnitude longer to complete.
    • There are test parameters in txscript/data/script_tests.json that would require very large string payloads to make them pass (one 'b' character per byte). Not sure how these should be handled.
    • The wire package also has a limit in const MaxFilterAddDataSize of 520 bytes in wire/msgfilteradd.go According to this: https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki the maximum payload size is 36,000 bytes, which is exceeded by this new limit.
    • Also some of the tests in wire seem to assume 3 bytes max for OP_PUSHDATA_2 instead of 5 for OP_PUSHDATA_4
  • Update chainsvrresults.go

    Update chainsvrresults.go

    fix Node.Transactions height 739992 err: call GetBlockVerbose err: json: cannot unmarshal number 3268550057 into Go struct field GetBlockVerboseResult.size of type int32

  • absurdly-high-fee Error

    absurdly-high-fee Error

    My node is running but

    When i try to insert same data into the BSV node frequently then its giving me error "absurdly-high-fee Error"

    When i insert insert values in the node after some time interval it's working fine !

    What will be the issue ? can anyone please explain me ?

Related tags
Full bitcoin solution written in Go (golang)
Full bitcoin solution written in Go (golang)

About Gocoin Gocoin is a full Bitcoin solution written in Go language (golang). The software architecture is focused on maximum performance of the nod

Dec 20, 2022
The go-to Bitcoin Node (BN) Go library.

go-bitcoin Go wrapper for bitcoin RPC RPC services Start by creating a connection to a bitcoin node b, err := New("rcp host", rpc port, "rpc usernam

Feb 13, 2022
A fully validating Bitcoin node with Utreexo support

btcd btcd is an alternative full node bitcoin implementation written in Go (golang). This project is currently under active development and is in a Be

Dec 21, 2022
Btc-globe - Visualize Bitcoin node locations using golang
Btc-globe - Visualize Bitcoin node locations using golang

btc-globe Visualize Bitcoin nodes by location using Golang

Jan 19, 2022
Go Implementation of the Spacemesh protocol full node. 💾⏰💪
Go Implementation of the Spacemesh protocol full node. 💾⏰💪

A Programmable Cryptocurrency go-spacemesh ?? ⏰ ?? Thanks for your interest in this open source project. This repo is the go implementation of the Spa

Dec 29, 2022
collection of tools to gleam insights from a full bitclout node's data
collection of tools to gleam insights from a full bitclout node's data

bitcloutscripts collection of tools to gleam insights from a full bitclout node's data bitcloutscripts $ ./bcs bcs posts # print all posts

Jul 11, 2021
Bitcoin CPU miner written in Go.

CPU Miner Bitcoin CPU miner written in Go. Introduction This is a CPU miner written in Go. It is a proof of concept and is not intended for production

Dec 29, 2022
A db for bitcoin-sv & BTC

Welcome to go-svdb Project =========== Boquan Team The Boquan is a team dedicated to promoting and developing true bitcoin. The team has successfully

Sep 3, 2021
Moeing chain is an EVM&Web3 compatible sidechain for Bitcoin Cash

Full node client of smartBCH This repository contains the code of the full node client of smartBCH, an EVM&Web3 compatible sidechain for Bitcoin Cash.

Nov 29, 2022