libbitcoin / libbitcoin-explorer Goto Github PK
View Code? Open in Web Editor NEWBitcoin Command Line Tool
License: Other
Bitcoin Command Line Tool
License: Other
The plan is to port all existing examples, all of which are also being validated in component tests.
travis.yml should load packaged dependencies separately via the build script and the build script should be able to remain identical across Linux and OSX and without conditionality.
This will need to wait as Travis is not currently accepting OSX requests.
Use code generation to set build version into literal for bx help
.
The plan of record is to migrate to the new libbitcoin_client implementation of the Obelisk interface, which resolves some blocking issues. This will subsequently be migrated to the proposed libbitcoin_protocol.
Need to map the XML content to/from project into a public translation service and manage the community. All localizable text is isolated to the command manifest.
The static build on Yosemite/10.10, using the instructions documented for Linux, fails in the first few steps. Looks like compiler configuration.
The output from base16-decode
and base64-decode
is unencoded (i.e. not "printable") and as a result can create unexpected results when piped to another command that expects raw input.
This is documenting the fact that we have intentionally dropped support for the obelisk API implementation of fetch-prefix
and watch-address
. These commands now require libbitcoin-server
or will fail.
These commands accept input types as raw
, which means all bytes are expected to be handled when streamed:
But all STDIN parameterization is trimmed for white space, which is consistent with (unquoted) command line handling. This could lead to unexpected results. However if we don't trim then piping from bx base16-decode
and bx base64-decode
would need to no longer emit line feed terminators.
The libbitcoin-explorer testsuite is failing on testnet build. It seems like there's no real problem---just some mainnet-specific tests are failing.
Console output from running sudo ./install-bx.sh --enable-testnet
:
...lots of build output omitted...
============================================================================
Testsuite summary for libitcoin-explorer 2.0.0
============================================================================
# TOTAL: 1
# PASS: 0
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
Please report to [email protected]
============================================================================
Contents of test-suite.log:
================================================
libitcoin-explorer 2.0.0: ./test-suite.log
================================================
# TOTAL: 1
# PASS: 0
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: run-tests.sh
==================
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
Running 508 test cases...
Platform: linux
Compiler: GNU C++ version 4.8.2
STL : GNU libstdc++ version 20140404
Boost : 1.54.0
************test/commands/hd-to-address.cpp(33): fatal error in
"hd_to_address__invoke__mainnet_private_key__okay_output": critical
check output.str() == "15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma\n" failed
[mkHGce7dctSxHgaWSSbmmrRWsZfzz7MxMk
!= 15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma
]
test/commands/hd-to-address.cpp(41): fatal error in
"hd_to_address__invoke__mainnet_public_key__okay_output": critical
check output.str() == "15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma\n" failed
[mkHGce7dctSxHgaWSSbmmrRWsZfzz7MxMk
!= 15mKKb2eos1hWa6tisdPwwDC1a5J1y9nma
]
*test/commands/hd-to-wif.cpp(33): fatal error in
"hd_to_wif__invoke__mainnet_key__okay_output": critical check
output.str() ==
"KxL385uvhm2PhgTjk6gvHPE81xNwCDd1WeQXPMR4DMZfVNJRSvwF\n" failed
[cNh2azun8pies7w18WW3ehjBeBgLrfihagYzVmsZiUDfk7PiQDrW
!= KxL385uvhm2PhgTjk6gvHPE81xNwCDd1WeQXPMR4DMZfVNJRSvwF
]
test/commands/script-to-address.cpp(44): fatal error in
"script_to_address__invoke__multisig__okay_output": critical check
output.str() == "3CS58tZGJtjz4qBFyNgQRtneKaWUjeEZVM\n" failed
[2N3zHCdVHvMFLGcooeWJH3qmuXvieWfEFKG
!= 3CS58tZGJtjz4qBFyNgQRtneKaWUjeEZVM
]
*Unexpected error: the argument
('5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ') for option is
invalid
Travis does not yet have Windows build targets but has it on their roadmap.
..\vs2013\libbitcoin-explorer.sln
The input line is too long.
The syntax of the command is incorrect.
Cause
Windows batch file line length limit
Workaround
Build in Visual Studio
Work in progress.
The build script currently builds only develop
, even when running a CI build in master
.
The build script is designed to work for the manual user, with nothing but the script file. It's also designed to work in Travis as our CI build. This ensures that the user always has a good product. However we want the CI build to build the modified branch, not just develop
. Also we want the user who obtains a copy of the script, without modification or parameterization, to be building against master
.
See comments on pull request #22.
Single, multiple, stealth single, and stealth multiple.
boost::program_options fails to link, affects bx only.
Yosemite/10.10
Currently only the common --help/-h
and --config/-c
arguments are supported.
Same machine dynamic build is good, static build on Windows is good, non-network calls good everywhere. Settings verified good. See Linux static build instructions.
This requires a server update to allow for the fetch of transactions by bitcoin address prefix, in addition to stealth address prefix. This may not be possible given current libbitcoin-server
indexing. However without it there is a privacy problem that cannot be resolved. This also creates symmetry with watch-address
.
The server change to subscriptions is problematic, as the drop of a subscription after 10 minutes requires that the subscribe both poll and fetch after polling, in order to ensure no transactions are missed in the interim. The current implementation is a workaround and not sufficiently reliable. Ultimately the server should change.
Running on testnet build with server obelisk-testnet.airbitz.co:9091
. Wait time bumped up to 5000ms from 2000ms but otherwise all defaults are preserved. The command still reports new transactions to the watched address, so it's not hung---just hogging CPU.
Edit: The rest of this issue has been cut and moved to a new separate Issue 154
There is a conflict in the GSL code generation presently. This is holding up code generation of the necessary binding data from the return type metadata
The limit of 50 minutes too low. Travis can't run a public repo in a private account, so we can't even pay for more time. They this issue on their roadmap.
Work in progress.
@genjix - the b83235e patch for gcc-4.7 breaks the OSX/clang build (below). There are any number of ways to work around this, but...
I lowered the libbitcoin build gcc version from 4.8 to 4.7 for Travis and the build hangs in the test compile. So is there a compelling reason to target gcc-4.7 given that gcc-4.9 is now released?
src/commands/settings.cpp:44:27: error: no viable conversion from 'primitives::uri' to 'std::__1::basic_string<char>'
list["mainnet.url"] = get_mainnet_url_setting();
^~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1293:5: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'const std::__1::basic_string<char> &' for 1st argument
basic_string(const basic_string& __str);
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1297:5: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'std::__1::basic_string<char> &&' for 1st argument
basic_string(basic_string&& __str)
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1302:31: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'const value_type *' (aka 'const char *') for 1st argument
_LIBCPP_INLINE_VISIBILITY basic_string(const value_type* __s);
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1323:5: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'initializer_list<value_type>' for 1st argument
basic_string(initializer_list<value_type> __il);
^
./include/bitcoin/explorer/primitives/uri.hpp:62:13: note: candidate function
BCX_API operator const uri_parse_result() const;
^
./include/bitcoin/explorer/primitives/uri.hpp:68:13: note: candidate function
BCX_API operator const std::string() const;
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1333:44: note: passing argument to parameter '__str' here
basic_string& operator=(basic_string&& __str)
^
src/commands/settings.cpp:45:27: error: no viable conversion from 'primitives::uri' to 'std::__1::basic_string<char>'
list["testnet.url"] = get_testnet_url_setting();
^~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1293:5: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'const std::__1::basic_string<char> &' for 1st argument
basic_string(const basic_string& __str);
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1297:5: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'std::__1::basic_string<char> &&' for 1st argument
basic_string(basic_string&& __str)
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1302:31: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'const value_type *' (aka 'const char *') for 1st argument
_LIBCPP_INLINE_VISIBILITY basic_string(const value_type* __s);
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1323:5: note: candidate constructor not viable: no known conversion from 'primitives::uri' to
'initializer_list<value_type>' for 1st argument
basic_string(initializer_list<value_type> __il);
^
./include/bitcoin/explorer/primitives/uri.hpp:62:13: note: candidate function
BCX_API operator const uri_parse_result() const;
^
./include/bitcoin/explorer/primitives/uri.hpp:68:13: note: candidate function
BCX_API operator const std::string() const;
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:1333:44: note: passing argument to parameter '__str' here
basic_string& operator=(basic_string&& __str)
CXX test/commands/test_libbitcoin_explorer_test-wrap-encode.o
In file included from /home/eric/Packages/include/google/protobuf/message.h:120:0,
from /home/eric/Packages/include/bitcoin/protocol/interface.pb.h:23,
from /home/eric/Packages/include/bitcoin/protocol.hpp:25,
from /home/eric/Packages/include/bitcoin/client.hpp:34,
from ./include/bitcoin/explorer.hpp:26,
from test/commands/command.hpp:28,
from test/commands/wrap-encode.cpp:21:
/home/eric/Packages/include/google/protobuf/descriptor.h:1478:61: warning: extra ‘;’ [-Wpedantic]
PROTOBUF_DEFINE_OPTIONS_ACCESSOR(Descriptor, MessageOptions);
^
/home/eric/Packages/include/google/protobuf/descriptor.h:1524:62: warning: extra ‘;’ [-Wpedantic]
PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumDescriptor, EnumOptions);
^
/home/eric/Packages/include/google/protobuf/descriptor.h:1539:68: warning: extra ‘;’ [-Wpedantic]
PROTOBUF_DEFINE_OPTIONS_ACCESSOR(ServiceDescriptor, ServiceOptions);
^
/home/eric/Packages/include/google/protobuf/descriptor.h:1546:66: warning: extra ‘;’ [-Wpedantic]
PROTOBUF_DEFINE_OPTIONS_ACCESSOR(MethodDescriptor, MethodOptions);
^
/home/eric/Packages/include/google/protobuf/descriptor.h:1557:62: warning: extra ‘;’ [-Wpedantic]
PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FileDescriptor, FileOptions);
Currently watch-address
is based on the Obelisk API, which is limited to full address monitoring, but the libbitcoin-server
API supports prefix monitoring for both bitcoin addresses and stealth addresses. This is a simple change, since libbitcoin-client
now supports it, we just need to add a watch-prefix
command.
Implement metadata handler based on the 'formerly' attribute.
The best I've found for encrypting deterministic seeds is https://github.com/7trXMk6Z/simple-electrum-seed-encryption, but I can't comment on the script's flexibility and I'm not sure how it compares security wise to using symmetric GPG or CURVE25519. @7trXMk6Z's utility produces a very small QR code though. It is the same size as a regular Bitcoin address, and much smaller than BIP38. Just thought it'd be cool to see this in bx
.
#!/bin/bash
# generate mnemonic wallet backup phrase
mnemonic=$(bx seed -b 128 | bx mnemonic-encode)
echo "mnemonic: $mnemonic"
# convert mnemonic wallet backup phrase to seed
seed=$(echo "$mnemonic" | bx mnemonic-decode)
echo "seed: $seed"
# convert seed to base58 representation
b58=$(echo "$seed" | bx base16-encode | bx base58-encode)
echo "seed (b58): $b58"
# convert seed to GPG encrypted base58 representation
gpg_seed=$(echo "$seed" | gpg1 --armor --symmetric --no-emit-version - | bx base16-encode | bx base58-encode)
echo "GPG seed: $gpg_seed"
# convert seed to stripped GPG encrypted base58 representation
gpg_stripped_seed=$(echo "$seed" | gpg1 --symmetric --no-emit-version - | bx base16-encode | bx base58-encode)
echo "GPG stripped seed: $gpg_stripped_seed"
# convert seed to PCP encrypted base58 representation
#pcp_seed=$(echo "$seed" | pcp1 -e | bx base16-encode | bx base58-encode)
#echo "PCP seed: $pcp_seed"
# convert seed to PBP encrypted base58 representation
pbp_seed=$(echo "$seed" | pbp --armor --encrypt -i - -o - | bx base16-encode | bx base58-encode)
echo "PBP seed: $pbp_seed"
#
# Example output
#
# addr: 1CZRgbAMRBoUqYuYGJpctAV9bNqC5vhFex
# aesseed: KkVHJWMZNrg6poWbe5kdZExNCXWMHB4Pr # see: https://github.com/7trXMk6Z
# bip38: 6PRVp69f8JSsNs8xmPgsuPrkcpSzqSFMkKVHCNEPg2ZqLpsnccZGej19pp
# pbpseed: 7ksaVYYdPkaVyNiZtRvpcwm2G5DqBfYTJdzdEECUfjpj2soeXmedK9g4juzbZGzyMcAZKgXFr5WCKdZ3GwnBHsrudwwpvFKBMFoa2
# gpgseed: ccmxi1sUGpkz8mNivzePVMLC418n4pdvRReawaytEUpv7M59fCa4yh5sdpi8u6Fc37gmFeQ6FuXjjS6GkWgcr3iKzvgNoEEXVSkYcvMDYX1tmNeZfNj4QR5HzZGVzAmWh2ajPX5K5kZ6bN
#
read -d '' bip38electrum <<'EOF'
FYI BIP38 has two modes:
- Generating random keys (you cannot control which key comes out really)
so not useful
- Encrypting existing keys
An electrum seed is only 16 bytes or 128 bits equivalence. For example:
"nothing belief whistle nod cruel expect tap soul snake marry clean
however" is equal to: 0xf13e5a21ea250d349660d0cc35b189f4
However, bip38 uses scrypt and AES to encrypt 32 bytes of data.
So, to encrypt it with BIP38, first you would have to pad it out to the
size of a bitcoin private key, perhaps with zero's.
Next you would have to choose a suitable password. I would argue, that
your password should be at least 128 bits in strength. In order to make
a secure password strong enough to protect what you want to encrypt,
you should use something like electrum to make one for you, then use it
as the BIP38 password.
Now you are protecting one electrum passphrase with another electrum
passphrase... you might as well have simply memorized the first one and
skipped all this.
However, if you want to memorize a much smaller password, please remember
that while BIP38 is strong today, it wont be forever, becaues many people
are working on hardware scrypt. You can choose a shorter passphrase for
bip38 if you must.
https://www.reddit.com/r/Bitcoin/comments/2ai449/how_to_bip38_encrypt_my_electrum_seed/civlxn6
EOF
Note the presence of /opt/local/lib/libboost_unit_test_framework.dylib
in linkage (dynamic build):
/opt/local/lib/libboost_chrono.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_program_options.dylib (compatibility version 0.0.0, current version 0.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libbitcoin-client.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libbitcoin-protocol.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libbitcoin.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/opt/local/lib/libboost_date_time.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_filesystem.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_regex.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_unit_test_framework.dylib (compatibility version 0.0.0, current version 0.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libsecp256k1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/opt/local/lib/libgmp.10.dylib (compatibility version 13.0.0, current version 13.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libprotobuf.9.dylib (compatibility version 10.0.0, current version 10.0.0)
/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libczmq++.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libczmq.1.dylib (compatibility version 3.0.0, current version 3.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libzmq.4.dylib (compatibility version 5.0.0, current version 5.0.0)
/Users/Eric/BX-EVOSKUIL-PREFIX/lib/libsodium.13.dylib (compatibility version 14.0.0, current version 14.3.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
There are no obvious references to the unit test framework in the bx main library build, so presumably this is being linked because the build was --with-tests
, resulting in passage of this condition:
AS_IF([test x$with_tests != xno], [AX_BOOST_UNIT_TEST_FRAMEWORK])
... and causing linkage to be established by libtool.
CXXLD test/libbitcoin_explorer_test
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
Running 508 test cases...
Platform: linux
Compiler: GNU C++ version 4.8.1
STL : GNU libstdc++ version 20130604
Boost : 1.49.0
******************************************
*******test/parameter.cpp(175): fatal error in "parameter__initialize__short_only__sets_limit_0": critical check parameter.get_format_name() == "-m" failed [-m [ -- ] != -m]
**
PASS: run-tests.sh
=============
1 test passed
=============
Need to modify the generation script to exclude based on obsolete
attribute.
This is a cross-library exception issue. Boost exceptions are disabled, but still being thrown from packaged compiled binaries. There is no material affect on application behavior except the appearance of the core dump vs. clean exit.
All localizable content has been isolated to the XML code generation source. Need to provide a little bit of tooling to facilitate build or run-time language selection.
Here's one example. bx script-to-address
doesn't accept serialized script (unlike sx scripthash
). So following the SX multisig example, instead of cat msig.script | sx scripthash
, I want to do:
$ cat msig.script | bx script-decode | bx script-to-address
37xnxAAtVbceQXeudE7edjmToaLPuh2bz3
Right now, this doesn't work when the base16 script in msig.script deserializes to more than one token (which is most of the time) because script-to-address
tries to parse the input from stdin as a single token. Instead I have to use xargs
:
$ cat msig.script | bx script-decode | xargs bx script-to-address
34CRZpt8j81rgh9QhzuBepqPi4cBQSjhjr
which is twice as long as the SX command.
I may add additional examples here as I play around with it more.
In file included from ./include/bitcoin/explorer/utility/utility.hpp:353:0,
from ./include/bitcoin/explorer/primitives/point.hpp:32,
from src/primitives/input.cpp:31:
./include/bitcoin/explorer/impl/utility.ipp: In function ‘void libbitcoin::explorer::deserialize(Value&, const string&) [with Value = unsigned int; std::string = std::basic_string<char>]’:
./include/bitcoin/explorer/impl/utility.ipp:79:5: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
value = boost::lexical_cast<Value>(trimmed);
^
CXX src/primitives/src_libbitcoin_explorer_la-output.lo
In file included from ./include/bitcoin/explorer/utility/utility.hpp:353:0,
from ./include/bitcoin/explorer/primitives/point.hpp:32,
from src/primitives/output.cpp:32:
./include/bitcoin/explorer/impl/utility.ipp: In function ‘void libbitcoin::explorer::deserialize(Value&, const string&) [with Value = long unsigned int; std::string = std::basic_string<char>]’:
./include/bitcoin/explorer/impl/utility.ipp:79:5: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
value = boost::lexical_cast<Value>(trimmed);
^
CXX src/primitives/src_libbitcoin_explorer_la-point.lo
In file included from ./include/bitcoin/explorer/utility/utility.hpp:353:0,
from ./include/bitcoin/explorer/primitives/point.hpp:32,
from src/primitives/point.cpp:21:
./include/bitcoin/explorer/impl/utility.ipp: In function ‘std::istream& libbitcoin::explorer::primitives::operator>>(std::istream&, libbitcoin::explorer::primitives::point&)’:
./include/bitcoin/explorer/impl/utility.ipp:79:5: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
value = boost::lexical_cast<Value>(trimmed);
^
In file included from /usr/local/include/boost/program_options/value_semantic.hpp:14:0,
from /usr/local/include/boost/program_options/options_description.hpp:13,
from /usr/local/include/boost/program_options.hpp:15,
from ./include/bitcoin/explorer/primitives/point.hpp:28,
from src/primitives/point.cpp:21:
/usr/local/include/boost/lexical_cast.hpp:1972:24: note: ‘result’ was declared here
Target result;
^
The technique of pulling from the repository results in a good test of the user install but doesn't test the current pull request.
Several commands that were implemented in Python have been obsoleted and others have been re-implemented.
These are previously-existing commands that have been stubbed in pending implementation in C++.
Previously-existing network commands that were dropped from original python implementation.
Previously-existing Electrum commands that need to be rewritten to BIP-39.
New commands, based on BIP-38.
New command, previously envisioned but not implemented.
Possibly related to libbitcoin/libbitcoin-client#84.
Building with:
./autogen.sh
CC=clang CXX=clang CXXFLAGS=-stdlib=libstdc++ LDLIBS=-lstdc++ ./configure \
--prefix=/usr \
--sbindir=/usr/bin \
--libexecdir=/usr/lib/libbitcoin-explorer \
--sysconfdir=/etc \
--sharedstatedir=/usr/share/libbitcoin-explorer \
--localstatedir=/var/lib/libbitcoin-explorer \
--with-bash-completion-dir=/usr/share/bash-completion/completions \
--with-gnu-ld \
--without-tests
CC=clang CXX=clang CXXFLAGS=-stdlib=libstdc++ LDLIBS=-lstdc++ make
In file included from src/console/main.cpp:22:
In file included from /bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/iostream:38:
In file included from /bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/x86_64-unknown-linux-gnu/bits/c++config.h:430:
In file included from /bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/x86_64-unknown-linux-gnu/bits/os_defines.h:39:
/usr/include/features.h:328:4: warning: _FORTIFY_SOURCE requires compiling with optimization (-O)
[-W#warnings]
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
^
1 warning generated.
CXXLD bx
clang: warning: argument unused during compilation: '-stdlib=libstdc++'
/bin/ld: src/.libs/libbitcoin-explorer.a(src_libbitcoin_explorer_la-dispatch.o): undefined reference to symbol '__cxa_free_exception@@CXXABI_1.3'
/usr/lib/libstdc++.so.6: error adding symbols: DSO missing from command line
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:1847: recipe for target 'bx' failed
make: *** [bx] Error
Tto consolidate payment detection and pay/spend transaction generations.
[Spawned from Issue 153]
watch-address
seems to report only brand new (unconfirmed) transactions. New blocks are not reported, so each output always contains the line
block 0000000000000000000000000000000000000000000000000000000000000000
Seems redundant. It would be much nicer if there were a way to count transaction confirmations without resorting to polling. I mentioned this in Issue 13 and Eric's reply suggests that the intended behaviour for watch-address
is to continue reporting with each new block in the blockchain.
This is the result of insufficient exports (for Windows builds) in the various libbitcoin libraries, all of which require augmentation:
This builds but there is a run-time failure to return in bx network-based commands.
This is a work in progress, need to connect some dots. Help content is all in place, generated into command headers and reachable from the help
command.
Currently inputs are limited to command line args and in some cases complex types built in Base16 blobs. To implement this we need to generalize from Base16 to boost property tree input and apply the necessary parser.
This should be migrated to BIP-39.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.