Skip to content

Commit bec5f3f

Browse files
authored
Merge pull request #390 from evoskuil/version3
Backport master/v4 commits for a version3/v3.1 release.
2 parents 8488c39 + ac0c8e8 commit bec5f3f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1788
-1840
lines changed

Makefile.am

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,22 @@ lib_LTLIBRARIES = src/libbitcoin-server.la
3535
src_libbitcoin_server_la_CPPFLAGS = -I${srcdir}/include -DSYSCONFDIR=\"${sysconfdir}\" ${bitcoin_protocol_CPPFLAGS} ${bitcoin_node_CPPFLAGS}
3636
src_libbitcoin_server_la_LIBADD = ${bitcoin_protocol_LIBS} ${bitcoin_node_LIBS}
3737
src_libbitcoin_server_la_SOURCES = \
38-
src/address_key.cpp \
3938
src/configuration.cpp \
4039
src/parser.cpp \
4140
src/server_node.cpp \
4241
src/settings.cpp \
43-
src/interface/address.cpp \
4442
src/interface/blockchain.cpp \
45-
src/interface/protocol.cpp \
43+
src/interface/subscribe.cpp \
4644
src/interface/transaction_pool.cpp \
45+
src/interface/unsubscribe.cpp \
4746
src/messages/message.cpp \
4847
src/messages/route.cpp \
48+
src/messages/subscription.cpp \
4949
src/services/block_service.cpp \
5050
src/services/heartbeat_service.cpp \
5151
src/services/query_service.cpp \
5252
src/services/transaction_service.cpp \
53-
src/utility/authenticator.cpp \
54-
src/utility/fetch_helpers.cpp \
53+
src/workers/authenticator.cpp \
5554
src/workers/notification_worker.cpp \
5655
src/workers/query_worker.cpp
5756

@@ -102,15 +101,16 @@ include_bitcoin_server_HEADERS = \
102101

103102
include_bitcoin_server_interfacedir = ${includedir}/bitcoin/server/interface
104103
include_bitcoin_server_interface_HEADERS = \
105-
include/bitcoin/server/interface/address.hpp \
106104
include/bitcoin/server/interface/blockchain.hpp \
107-
include/bitcoin/server/interface/protocol.hpp \
108-
include/bitcoin/server/interface/transaction_pool.hpp
105+
include/bitcoin/server/interface/subscribe.hpp \
106+
include/bitcoin/server/interface/transaction_pool.hpp \
107+
include/bitcoin/server/interface/unsubscribe.hpp
109108

110109
include_bitcoin_server_messagesdir = ${includedir}/bitcoin/server/messages
111110
include_bitcoin_server_messages_HEADERS = \
112111
include/bitcoin/server/messages/message.hpp \
113-
include/bitcoin/server/messages/route.hpp
112+
include/bitcoin/server/messages/route.hpp \
113+
include/bitcoin/server/messages/subscription.hpp
114114

115115
include_bitcoin_server_servicesdir = ${includedir}/bitcoin/server/services
116116
include_bitcoin_server_services_HEADERS = \
@@ -119,14 +119,9 @@ include_bitcoin_server_services_HEADERS = \
119119
include/bitcoin/server/services/query_service.hpp \
120120
include/bitcoin/server/services/transaction_service.hpp
121121

122-
include_bitcoin_server_utilitydir = ${includedir}/bitcoin/server/utility
123-
include_bitcoin_server_utility_HEADERS = \
124-
include/bitcoin/server/utility/address_key.hpp \
125-
include/bitcoin/server/utility/authenticator.hpp \
126-
include/bitcoin/server/utility/fetch_helpers.hpp
127-
128122
include_bitcoin_server_workersdir = ${includedir}/bitcoin/server/workers
129123
include_bitcoin_server_workers_HEADERS = \
124+
include/bitcoin/server/workers/authenticator.hpp \
130125
include/bitcoin/server/workers/notification_worker.hpp \
131126
include/bitcoin/server/workers/query_worker.hpp
132127

README.md

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ The libbitcoin toolkit is a set of cross platform C++ libraries for building bit
2020

2121
**About Libbitcoin Server**
2222

23-
A full Bitcoin peer-to-peer node, Libbitcoin Server is also a high performance blockchain query server. It can be built as a single portable executable for Linux, OSX or Windows and is available for download as a signed single executable for each. It is trivial to deploy, just run the single process and allow it about two days to synchronize the Bitcoin blockchain.
23+
A full Bitcoin peer-to-peer node, Libbitcoin Server is also a high performance blockchain query server. It can be built as a single portable executable for Linux, macOS or Windows and is available for download as a signed single executable for each. It is trivial to deploy, just run the single process and allow it about two days to synchronize the Bitcoin blockchain.
2424

2525
Libbitcoin Server exposes a custom query TCP API built based on the [ZeroMQ](http://zeromq.org) networking stack. It supports server, and optionally client, identity certificates and wire encryption via [CurveZMQ](http://curvezmq.org) and the [Sodium](http://libsodium.org) cryptographic library.
2626

@@ -83,22 +83,23 @@ Next download the [install script](https://github.com/libbitcoin/libbitcoin-serv
8383
$ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin-server/version3/install.sh
8484
$ chmod +x install.sh
8585
```
86-
Finally install Libbitcoin Server:
86+
Finally install Libbitcoin Server with default [build options](#build-notes-for-linux--macos):
8787
```sh
8888
$ sudo ./install.sh
8989
```
9090
Libbitcoin Server is now installed in `/usr/local/bin` and can be invoked as `$ bs`.
9191

9292
### Macintosh
9393

94-
The OSX installation differs from Linux in the installation of the compiler and packaged dependencies. Libbitcoin Server supports both [Homebrew](http://brew.sh) and [MacPorts](https://www.macports.org) package managers. Both require Apple's [Xcode](https://developer.apple.com/xcode) command line tools. Neither requires Xcode as the tools may be installed independently.
94+
The macOS installation differs from Linux in the installation of the compiler and packaged dependencies. Libbitcoin Server supports both [Homebrew](http://brew.sh) and [MacPorts](https://www.macports.org) package managers. Both require Apple's [Xcode](https://developer.apple.com/xcode) command line tools. Neither requires Xcode as the tools may be installed independently.
9595

96-
Libbitcoin Server compiles with Clang on OSX and requires C++11 support. Installation has been verified using Clang based on [LLVM 3.5](http://llvm.org/releases/3.5.0/docs/ReleaseNotes.html). This version or newer should be installed as part of the Xcode command line tools.
96+
Libbitcoin Server compiles with Clang on macOS and requires C++11 support. Installation has been verified using Clang based on [LLVM 3.5](http://llvm.org/releases/3.5.0/docs/ReleaseNotes.html). This version or newer should be installed as part of the Xcode command line tools.
9797

9898
To see your Clang/LLVM version:
9999
```sh
100100
$ clang++ --version
101101
```
102+
You may encounter a prompt to install the Xcode command line developer tools, in which case accept the prompt.
102103
```
103104
Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
104105
Target: x86_64-apple-darwin14.0.0
@@ -111,12 +112,10 @@ $ xcode-select --install
111112

112113
#### Using Homebrew
113114

114-
First install Homebrew. Installation requires [Ruby](https://www.ruby-lang.org/en) and [cURL](http://curl.haxx.se), which are pre-installed on OSX.
115+
First install [Homebrew](https://brew.sh).
115116
```sh
116117
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
117118
```
118-
You may encounter a prompt to install the Xcode command line developer tools, in which case accept the prompt.
119-
120119
Next install the [build system](http://wikipedia.org/wiki/GNU_build_system) and [wget](http://www.gnu.org/software/wget):
121120
```sh
122121
$ brew install autoconf automake libtool pkgconfig wget
@@ -130,7 +129,7 @@ Next download the [install script](https://github.com/libbitcoin/libbitcoin-serv
130129
$ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin-server/version3/install.sh
131130
$ chmod +x install.sh
132131
```
133-
Finally install Libbitcoin Server:
132+
Finally install Libbitcoin Server with default [build options](#build-notes-for-linux--macos):
134133
```sh
135134
$ ./install.sh
136135
```
@@ -153,13 +152,13 @@ Next download the [install script](https://github.com/libbitcoin/libbitcoin-serv
153152
$ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin-server/version3/install.sh
154153
$ chmod +x install.sh
155154
```
156-
Finally install Libbitcoin Server:
155+
Finally install Libbitcoin Server with default [build options](#build-notes-for-linux--macos):
157156
```sh
158157
$ ./install.sh
159158
```
160159
Libbitcoin Server is now installed in `/usr/local/bin` and can be invoked as `$ bs`.
161160

162-
### Configuration Options
161+
### Build Notes for Linux / macOS
163162

164163
Any set of `./configure` options can be passed via the build script, several examples follow.
165164

@@ -170,9 +169,9 @@ $ sudo ./install.sh CXXFLAGS="-Os -s"
170169

171170
> The `-s` option is not supported by the Clang compiler. Instead use the command `$ strip bs` after the build.
172171
173-
Building with NDEBUG (no debug assertions) defined:
172+
Building without NDEBUG (i.e. with debug assertions) defined:
174173
```sh
175-
$ sudo ./install.sh --enable-ndebug
174+
$ sudo ./install.sh --disable-ndebug
176175
```
177176
Building without building tests:
178177
```sh
@@ -196,7 +195,7 @@ $ ./install.sh --disable-shared --build-boost --prefix=/home/me/myprefix
196195
```
197196
Building a small statically-linked executable most quickly:
198197
```sh
199-
$ ./install.sh CXXFLAGS="-Os -s" --enable-ndebug --without-tests --disable-shared --build-boost --prefix=/home/me/myprefix
198+
$ ./install.sh CXXFLAGS="-Os -s" --without-tests --disable-shared --build-boost --prefix=/home/me/myprefix
200199
```
201200
Building with bash-completion support:
202201

builds/msvc/vs2013/libbitcoin-server/libbitcoin-server.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,12 @@
7474
<ClInclude Include="..\..\..\..\include\bitcoin\server.hpp" />
7575
<ClInclude Include="..\..\..\..\include\bitcoin\server\configuration.hpp" />
7676
<ClInclude Include="..\..\..\..\include\bitcoin\server\define.hpp" />
77-
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\address.hpp" />
77+
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\subscribe.hpp" />
7878
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\blockchain.hpp" />
79-
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\protocol.hpp" />
8079
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\transaction_pool.hpp" />
80+
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\unsubscribe.hpp" />
8181
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\message.hpp" />
82+
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\subscription.hpp" />
8283
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\route.hpp" />
8384
<ClInclude Include="..\..\..\..\include\bitcoin\server\parser.hpp" />
8485
<ClInclude Include="..\..\..\..\include\bitcoin\server\server_node.hpp" />
@@ -87,20 +88,20 @@
8788
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\query_service.hpp" />
8889
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\transaction_service.hpp" />
8990
<ClInclude Include="..\..\..\..\include\bitcoin\server\settings.hpp" />
90-
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\address_key.hpp" />
91-
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\authenticator.hpp" />
9291
<ClInclude Include="..\..\..\..\include\bitcoin\server\version.hpp" />
92+
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\authenticator.hpp" />
9393
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\notification_worker.hpp" />
9494
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\query_worker.hpp" />
9595
<ClInclude Include="..\..\resource.h" />
9696
</ItemGroup>
9797
<ItemGroup>
9898
<ClCompile Include="..\..\..\..\src\configuration.cpp" />
99-
<ClCompile Include="..\..\..\..\src\interface\address.cpp" />
99+
<ClCompile Include="..\..\..\..\src\interface\subscribe.cpp" />
100100
<ClCompile Include="..\..\..\..\src\interface\blockchain.cpp" />
101-
<ClCompile Include="..\..\..\..\src\interface\protocol.cpp" />
102101
<ClCompile Include="..\..\..\..\src\interface\transaction_pool.cpp" />
102+
<ClCompile Include="..\..\..\..\src\interface\unsubscribe.cpp" />
103103
<ClCompile Include="..\..\..\..\src\messages\message.cpp" />
104+
<ClCompile Include="..\..\..\..\src\messages\subscription.cpp" />
104105
<ClCompile Include="..\..\..\..\src\messages\route.cpp" />
105106
<ClCompile Include="..\..\..\..\src\parser.cpp" />
106107
<ClCompile Include="..\..\..\..\src\server_node.cpp" />
@@ -109,8 +110,7 @@
109110
<ClCompile Include="..\..\..\..\src\services\query_service.cpp" />
110111
<ClCompile Include="..\..\..\..\src\services\transaction_service.cpp" />
111112
<ClCompile Include="..\..\..\..\src\settings.cpp" />
112-
<ClCompile Include="..\..\..\..\src\utility\address_key.cpp" />
113-
<ClCompile Include="..\..\..\..\src\utility\authenticator.cpp" />
113+
<ClCompile Include="..\..\..\..\src\workers\authenticator.cpp" />
114114
<ClCompile Include="..\..\..\..\src\workers\notification_worker.cpp" />
115115
<ClCompile Include="..\..\..\..\src\workers\query_worker.cpp" />
116116
</ItemGroup>

builds/msvc/vs2013/libbitcoin-server/libbitcoin-server.vcxproj.filters

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@
2828
<Filter Include="include\bitcoin\server\messages">
2929
<UniqueIdentifier>{9f17e891-9f2a-4eb0-a2be-65d9ebf5aae1}</UniqueIdentifier>
3030
</Filter>
31-
<Filter Include="include\bitcoin\server\utility">
32-
<UniqueIdentifier>{81095e51-7dfd-482b-bf2b-8b88a05591ff}</UniqueIdentifier>
33-
</Filter>
34-
<Filter Include="src\utility">
35-
<UniqueIdentifier>{6284645b-ec72-461f-9046-dfa5ea049fb0}</UniqueIdentifier>
36-
</Filter>
3731
<Filter Include="include\bitcoin\server\workers">
3832
<UniqueIdentifier>{34c1e606-eb9c-4a7f-a60b-3e903634a9fa}</UniqueIdentifier>
3933
</Filter>
@@ -70,15 +64,9 @@
7064
<ClInclude Include="..\..\..\..\include\bitcoin\server\settings.hpp">
7165
<Filter>include\bitcoin\server</Filter>
7266
</ClInclude>
73-
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\protocol.hpp">
74-
<Filter>include\bitcoin\server\interface</Filter>
75-
</ClInclude>
7667
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\transaction_pool.hpp">
7768
<Filter>include\bitcoin\server\interface</Filter>
7869
</ClInclude>
79-
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\address.hpp">
80-
<Filter>include\bitcoin\server\interface</Filter>
81-
</ClInclude>
8270
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\blockchain.hpp">
8371
<Filter>include\bitcoin\server\interface</Filter>
8472
</ClInclude>
@@ -91,18 +79,12 @@
9179
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\block_service.hpp">
9280
<Filter>include\bitcoin\server\services</Filter>
9381
</ClInclude>
94-
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\authenticator.hpp">
95-
<Filter>include\bitcoin\server\utility</Filter>
96-
</ClInclude>
9782
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\heartbeat_service.hpp">
9883
<Filter>include\bitcoin\server\services</Filter>
9984
</ClInclude>
10085
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\transaction_service.hpp">
10186
<Filter>include\bitcoin\server\services</Filter>
10287
</ClInclude>
103-
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\fetch_helpers.hpp">
104-
<Filter>include\bitcoin\server\utility</Filter>
105-
</ClInclude>
10688
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\notification_worker.hpp">
10789
<Filter>include\bitcoin\server\workers</Filter>
10890
</ClInclude>
@@ -112,8 +94,17 @@
11294
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\message.hpp">
11395
<Filter>include\bitcoin\server\messages</Filter>
11496
</ClInclude>
115-
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\address_key.hpp">
116-
<Filter>include\bitcoin\server\utility</Filter>
97+
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\authenticator.hpp">
98+
<Filter>include\bitcoin\server\workers</Filter>
99+
</ClInclude>
100+
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\subscribe.hpp">
101+
<Filter>include\bitcoin\server\interface</Filter>
102+
</ClInclude>
103+
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\unsubscribe.hpp">
104+
<Filter>include\bitcoin\server\interface</Filter>
105+
</ClInclude>
106+
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\subscription.hpp">
107+
<Filter>include\bitcoin\server\messages</Filter>
117108
</ClInclude>
118109
</ItemGroup>
119110
<ItemGroup>
@@ -126,24 +117,15 @@
126117
<ClCompile Include="..\..\..\..\src\interface\transaction_pool.cpp">
127118
<Filter>src\interface</Filter>
128119
</ClCompile>
129-
<ClCompile Include="..\..\..\..\src\interface\address.cpp">
130-
<Filter>src\interface</Filter>
131-
</ClCompile>
132120
<ClCompile Include="..\..\..\..\src\interface\blockchain.cpp">
133121
<Filter>src\interface</Filter>
134122
</ClCompile>
135-
<ClCompile Include="..\..\..\..\src\interface\protocol.cpp">
136-
<Filter>src\interface</Filter>
137-
</ClCompile>
138123
<ClCompile Include="..\..\..\..\src\configuration.cpp">
139124
<Filter>src</Filter>
140125
</ClCompile>
141126
<ClCompile Include="..\..\..\..\src\settings.cpp">
142127
<Filter>src</Filter>
143128
</ClCompile>
144-
<ClCompile Include="..\..\..\..\src\utility\fetch_helpers.cpp">
145-
<Filter>src\utility</Filter>
146-
</ClCompile>
147129
<ClCompile Include="..\..\..\..\src\workers\query_worker.cpp">
148130
<Filter>src\workers</Filter>
149131
</ClCompile>
@@ -153,9 +135,6 @@
153135
<ClCompile Include="..\..\..\..\src\services\block_service.cpp">
154136
<Filter>src\services</Filter>
155137
</ClCompile>
156-
<ClCompile Include="..\..\..\..\src\utility\authenticator.cpp">
157-
<Filter>src\utility</Filter>
158-
</ClCompile>
159138
<ClCompile Include="..\..\..\..\src\services\transaction_service.cpp">
160139
<Filter>src\services</Filter>
161140
</ClCompile>
@@ -171,8 +150,17 @@
171150
<ClCompile Include="..\..\..\..\src\messages\message.cpp">
172151
<Filter>src\messages</Filter>
173152
</ClCompile>
174-
<ClCompile Include="..\..\..\..\src\address_key.cpp">
175-
<Filter>src\utility</Filter>
153+
<ClCompile Include="..\..\..\..\src\workers\authenticator.cpp">
154+
<Filter>src\workers</Filter>
155+
</ClCompile>
156+
<ClCompile Include="..\..\..\..\src\interface\subscribe.cpp">
157+
<Filter>src\interface</Filter>
158+
</ClCompile>
159+
<ClCompile Include="..\..\..\..\src\interface\unsubscribe.cpp">
160+
<Filter>src\interface</Filter>
161+
</ClCompile>
162+
<ClCompile Include="..\..\..\..\src\messages\subscription.cpp">
163+
<Filter>src\messages</Filter>
176164
</ClCompile>
177165
</ItemGroup>
178166
<ItemGroup>

configure.ac

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,18 +157,18 @@ AS_CASE([${bash_completiondir}], [yes],
157157
AC_MSG_NOTICE([bash_completion_LIBS : ${bash_completion_LIBS}])],
158158
[AC_SUBST([bash_completion_PKG], [])])
159159

160-
# Require bitcoin-node of at least version 3.0.0 and output ${bitcoin_node_CPPFLAGS/LIBS/PKG}.
160+
# Require bitcoin-node of at least version 3.1.0 and output ${bitcoin_node_CPPFLAGS/LIBS/PKG}.
161161
#------------------------------------------------------------------------------
162-
PKG_CHECK_MODULES([bitcoin_node], [libbitcoin-node >= 3.0.0])
163-
AC_SUBST([bitcoin_node_PKG], ['libbitcoin-node >= 3.0.0'])
162+
PKG_CHECK_MODULES([bitcoin_node], [libbitcoin-node >= 3.1.0])
163+
AC_SUBST([bitcoin_node_PKG], ['libbitcoin-node >= 3.1.0'])
164164
AC_SUBST([bitcoin_node_CPPFLAGS], [${bitcoin_node_CFLAGS}])
165165
AC_MSG_NOTICE([bitcoin_node_CPPFLAGS : ${bitcoin_node_CPPFLAGS}])
166166
AC_MSG_NOTICE([bitcoin_node_LIBS : ${bitcoin_node_LIBS}])
167167

168-
# Require bitcoin-protocol of at least version 3.0.0 and output ${bitcoin_protocol_CPPFLAGS/LIBS/PKG}.
168+
# Require bitcoin-protocol of at least version 3.1.0 and output ${bitcoin_protocol_CPPFLAGS/LIBS/PKG}.
169169
#------------------------------------------------------------------------------
170-
PKG_CHECK_MODULES([bitcoin_protocol], [libbitcoin-protocol >= 3.0.0])
171-
AC_SUBST([bitcoin_protocol_PKG], ['libbitcoin-protocol >= 3.0.0'])
170+
PKG_CHECK_MODULES([bitcoin_protocol], [libbitcoin-protocol >= 3.1.0])
171+
AC_SUBST([bitcoin_protocol_PKG], ['libbitcoin-protocol >= 3.1.0'])
172172
AC_SUBST([bitcoin_protocol_CPPFLAGS], [${bitcoin_protocol_CFLAGS}])
173173
AC_MSG_NOTICE([bitcoin_protocol_CPPFLAGS : ${bitcoin_protocol_CPPFLAGS}])
174174
AC_MSG_NOTICE([bitcoin_protocol_LIBS : ${bitcoin_protocol_LIBS}])

0 commit comments

Comments
 (0)