Giter VIP home page Giter VIP logo

utcd's Introduction

utcd

ISC License

utcd is a fork of btcd, an alternative full node bitcoin implementation written in Go (golang). utcd implements the Utreexo accumulator into btcd.

This project is currently under active development, but is a work in progress. The current release is only a demo release and should be treated like so.

Requirements

Go 1.15 or newer.

Build

Without secp256k1:

env CGO_ENABLED=0 go build

With secp256k1:

$ git submodule init
$ git submodule update
$ cd btcec/secp256k1
$ ./autogen.sh
$ ./configure --prefix=$PWD
$ make all
$ make check
$ make install
$ cd ../..
$ go build

Basically just build the secp256k1 library with --prefix set to the btcec/secp256k1 directory and then go build. utcd with secp256k1 isn't supported on Windows.

Getting Started

1: Running a bridgenode. For mainnet, at least 1tb of disk space is required.

./btcd --utreexo

2: Running a coordinator node

./btcd --utreexocsn --utreexomain --nolisten --norpc --blocksonly --connect=IP_OF_THE_BRIDGENODE

3: Running a worker node. Recommended to set --numworkers flag equal to that of the logical cores on your machine. --mainnodeip is also required if the coordinator node is on a remote machine.

./btcd --utreexocsn --utreexoworker --numworkers=1 --nolisten --nocfilters --norpc --blocksonly --connect=IP_OF_THE_BRIDGENODE --mainnodeip=IP_OF_THE_COORDINATOR_NODE

Replicating IBD benchmarks

There were three setups completed for the IBD benchmarks:

  1. Bridgenode and IBD node on two different machines.
  • Set up the bridgenode on a separate machine. Note the public ip address of this machine.
  • Run the coordinator node with flag --connect=IP_OF_THE_BRIDGENODE then run the worker node on the same machine also with --connect=IP_OF_THE_BRIDGENODE.
  • When the coordinator node is finished with the IBD, it'll display this log 2021-05-11 05:13:22.501 [INF] BTCD: Done verifying all roots
  • Subtract the start time from this time.
  1. Bridgenode and IBD node on the same machine.
  • Set up the bridgenode.
  • Run the coordinator node with flag --connect=127.0.0.1 then run the worker node on the same machine also with flag --connect=127.0.0.1
  • When the coordinator node is finished with the IBD, it'll display this log 2021-05-11 05:13:22.501 [INF] BTCD: Done verifying all roots
  • Subtract the start time from this time.
  1. Bridgenode and two IBD nodes for multi-machine IBD.
  • Set up the bridgenode on a separate machine. Note the public ip address of this machine.
  • Run the coordinator node with flag --connect=IP_OF_THE_BRIDGENODE then run the worker node on the same machine also with --connect=IP_OF_THE_BRIDGENODE. Note the public ip address of this machine. Port 18330 is used to communicate with a remote worker. You can change this port number by editing worker.go. Just find all the 18330s and replace with whatever port you want.
  • On a different machine, run a worker node with flag --mainnodeip=IP_OF_THE_COORDINATOR_NODE. Make sure the port 18330 is open on the coordinator node side.
  • When the coordinator node is finished with the IBD, it'll display this log 2021-05-11 05:13:22.501 [INF] BTCD: Done verifying all roots
  • Subtract the start time from this time.

IRC

  • irc.libera.chat
  • channel #utreexo

License

utcd is licensed under the copyfree ISC License.

utcd's People

Contributors

0xmichalis avatar aakselrod avatar alexbosworth avatar cfromknecht avatar dajohi avatar davecgh avatar dirbaio avatar drahn avatar federicobond avatar flammit avatar guggero avatar halseth avatar jakesylvestre avatar jcvernaleo avatar jimmysong avatar jongillham avatar jrick avatar kcalvinalvin avatar lindlof avatar martelletto avatar onyb avatar owainga avatar rjected avatar roasbeef avatar stevenroose avatar torkelrogstad avatar tsenart avatar tuxcanfly avatar wallclockbuilder avatar wpaulino avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.