Skip to content

Commit cbe39a3

Browse files
author
Jeff Garzik
committed
Add "bitcoin-tx" command line utility and supporting modules.
This is a simple utility that provides command line manipulation of a hex-encoded TX. The utility takes a hex string on the command line as input, performs zero or more mutations, and outputs a hex string to standard output. This utility is also an intentional exercise of the "bitcoin library" concept. It is designed to require minimal libraries, and works entirely without need for any RPC or P2P communication. See "bitcoin-tx --help" for command and options summary.
1 parent 3ce7e66 commit cbe39a3

13 files changed

+1655
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
src/bitcoin
55
src/bitcoind
66
src/bitcoin-cli
7+
src/bitcoin-tx
78
src/test/test_bitcoin
89
src/qt/test/test_bitcoin-qt
910

src/Makefile.am

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@ LIBBITCOIN_COMMON=libbitcoin_common.a
3434
LIBBITCOIN_CLI=libbitcoin_cli.a
3535
LIBBITCOIN_UTIL=libbitcoin_util.a
3636
LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
37+
LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
3738
LIBBITCOINQT=qt/libbitcoinqt.a
3839

3940
noinst_LIBRARIES = \
4041
libbitcoin_server.a \
4142
libbitcoin_common.a \
4243
libbitcoin_cli.a \
4344
libbitcoin_util.a \
45+
univalue/libbitcoin_univalue.a \
4446
crypto/libbitcoin_crypto.a
4547
if ENABLE_WALLET
4648
BITCOIN_INCLUDES += $(BDB_CPPFLAGS)
@@ -58,6 +60,8 @@ if BUILD_BITCOIN_CLI
5860
bin_PROGRAMS += bitcoin-cli
5961
endif
6062

63+
bin_PROGRAMS += bitcoin-tx
64+
6165
.PHONY: FORCE
6266
# bitcoin core #
6367
BITCOIN_CORE_H = \
@@ -178,6 +182,13 @@ crypto_libbitcoin_crypto_a_SOURCES = \
178182
crypto/sha1.h \
179183
crypto/ripemd160.h
180184

185+
# univalue JSON library
186+
univalue_libbitcoin_univalue_a_SOURCES = \
187+
univalue/univalue.cpp \
188+
univalue/univalue_read.cpp \
189+
univalue/univalue_write.cpp \
190+
univalue/univalue.h
191+
181192
# common: shared between bitcoind, and bitcoin-qt and non-server tools
182193
libbitcoin_common_a_CPPFLAGS = $(BITCOIN_INCLUDES)
183194
libbitcoin_common_a_SOURCES = \
@@ -229,6 +240,7 @@ nodist_libbitcoin_util_a_SOURCES = $(srcdir)/obj/build.h
229240
bitcoind_LDADD = \
230241
$(LIBBITCOIN_SERVER) \
231242
$(LIBBITCOIN_COMMON) \
243+
$(LIBBITCOIN_UNIVALUE) \
232244
$(LIBBITCOIN_UTIL) \
233245
$(LIBBITCOIN_CRYPTO) \
234246
$(LIBLEVELDB) \
@@ -267,6 +279,17 @@ endif
267279
bitcoin_cli_CPPFLAGS = $(BITCOIN_INCLUDES)
268280
#
269281

282+
# bitcoin-tx binary #
283+
bitcoin_tx_LDADD = \
284+
$(LIBBITCOIN_UNIVALUE) \
285+
$(LIBBITCOIN_COMMON) \
286+
$(LIBBITCOIN_UTIL) \
287+
$(LIBBITCOIN_CRYPTO) \
288+
$(BOOST_LIBS)
289+
bitcoin_tx_SOURCES = bitcoin-tx.cpp
290+
bitcoin_tx_CPPFLAGS = $(BITCOIN_INCLUDES)
291+
#
292+
270293
if TARGET_WINDOWS
271294
bitcoin_cli_SOURCES += bitcoin-cli-res.rc
272295
endif

src/Makefile.qt.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ qt_bitcoin_qt_LDADD = qt/libbitcoinqt.a $(LIBBITCOIN_SERVER)
359359
if ENABLE_WALLET
360360
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_WALLET)
361361
endif
362-
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBLEVELDB) $(LIBMEMENV) \
362+
qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
363363
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS)
364364
if USE_LIBSECP256K1
365365
qt_bitcoin_qt_LDADD += secp256k1/libsecp256k1.la

src/Makefile.qttest.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ qt_test_test_bitcoin_qt_LDADD = $(LIBBITCOINQT) $(LIBBITCOIN_SERVER)
3030
if ENABLE_WALLET
3131
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_WALLET)
3232
endif
33-
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBLEVELDB) \
33+
qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) \
3434
$(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
3535
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS)
3636
if USE_LIBSECP256K1

src/Makefile.test.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ endif
6464

6565
test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES)
6666
test_test_bitcoin_CPPFLAGS = $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS)
67-
test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBLEVELDB) $(LIBMEMENV) \
67+
test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
6868
$(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB)
6969
if ENABLE_WALLET
7070
test_test_bitcoin_LDADD += $(LIBBITCOIN_WALLET)

0 commit comments

Comments
 (0)