mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-22 00:00:55 +01:00
Compare commits
54 Commits
v0.17.0rc2
...
v0.14.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43a987c1cb | ||
|
|
ccf5e43ce0 | ||
|
|
589cd63b30 | ||
|
|
a80dc94554 | ||
|
|
eff783a0fe | ||
|
|
5e70912234 | ||
|
|
ad24256a65 | ||
|
|
58800e3556 | ||
|
|
8d2d08efaa | ||
|
|
1825a03f81 | ||
|
|
289204fbe0 | ||
|
|
1f83663bc2 | ||
|
|
a48b998ff3 | ||
|
|
08e0690f3f | ||
|
|
5aaac4d09e | ||
|
|
775cf54d0e | ||
|
|
69832aaad5 | ||
|
|
50953c2aad | ||
|
|
29bae0c6c5 | ||
|
|
50ae5c711a | ||
|
|
eddaa6b35d | ||
|
|
3584902eae | ||
|
|
fa230fde64 | ||
|
|
f00429666c | ||
|
|
95e68dfe35 | ||
|
|
3b2f7fdcae | ||
|
|
847e3753a6 | ||
|
|
99fd85cb44 | ||
|
|
05e906dbc6 | ||
|
|
749fe95fdc | ||
|
|
260c71cbb8 | ||
|
|
599c69abe3 | ||
|
|
9d3f9d2a59 | ||
|
|
9072395e5f | ||
|
|
7d75a5a93c | ||
|
|
e22c0671c7 | ||
|
|
ae1c4e24a6 | ||
|
|
3972a8efb2 | ||
|
|
861cb0c83d | ||
|
|
6552729f38 | ||
|
|
40c754cb38 | ||
|
|
2afefeade6 | ||
|
|
973e345f7f | ||
|
|
f873564231 | ||
|
|
04396bcc05 | ||
|
|
6187091411 | ||
|
|
1577f0731a | ||
|
|
871e19ac84 | ||
|
|
6d61a2b8c5 | ||
|
|
42f5f21287 | ||
|
|
268c390d02 | ||
|
|
1a02ecc73a | ||
|
|
f68e4414d7 | ||
|
|
bc69f34b35 |
@@ -57,8 +57,14 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
||||
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
|
||||
[$3], [optional], [ax_cxx_compile_cxx$1_required=false],
|
||||
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
|
||||
m4_if([$4], [], [ax_cxx_compile_cxx$1_try_default=true],
|
||||
[$4], [default], [ax_cxx_compile_cxx$1_try_default=true],
|
||||
[$4], [nodefault], [ax_cxx_compile_cxx$1_try_default=false],
|
||||
[m4_fatal([invalid fourth argument `$4' to AX_CXX_COMPILE_STDCXX])])
|
||||
AC_LANG_PUSH([C++])dnl
|
||||
ac_success=no
|
||||
|
||||
m4_if([$4], [nodefault], [], [dnl
|
||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
|
||||
ax_cv_cxx_compile_cxx$1,
|
||||
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
||||
@@ -66,7 +72,7 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
||||
[ax_cv_cxx_compile_cxx$1=no])])
|
||||
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
|
||||
ac_success=yes
|
||||
fi
|
||||
fi])
|
||||
|
||||
m4_if([$2], [noext], [], [dnl
|
||||
if test x$ac_success = xno; then
|
||||
|
||||
26
configure.ac
26
configure.ac
@@ -1,10 +1,10 @@
|
||||
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
|
||||
AC_PREREQ([2.60])
|
||||
define(_CLIENT_VERSION_MAJOR, 0)
|
||||
define(_CLIENT_VERSION_MINOR, 13)
|
||||
define(_CLIENT_VERSION_REVISION, 99)
|
||||
define(_CLIENT_VERSION_MINOR, 14)
|
||||
define(_CLIENT_VERSION_REVISION, 0)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, false)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||
define(_COPYRIGHT_YEAR, 2017)
|
||||
define(_COPYRIGHT_HOLDERS,[The %s developers])
|
||||
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
|
||||
@@ -55,7 +55,7 @@ case $host in
|
||||
;;
|
||||
esac
|
||||
dnl Require C++11 compiler (no GNU extensions)
|
||||
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
|
||||
AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
|
||||
dnl Check if -latomic is required for <std::atomic>
|
||||
CHECK_ATOMIC
|
||||
|
||||
@@ -192,6 +192,13 @@ AC_ARG_ENABLE([debug],
|
||||
[enable_debug=$enableval],
|
||||
[enable_debug=no])
|
||||
|
||||
# Turn warnings into errors
|
||||
AC_ARG_ENABLE([werror],
|
||||
[AS_HELP_STRING([--enable-werror],
|
||||
[Treat certain compiler warnings as errors (default is no)])],
|
||||
[enable_werror=$enableval],
|
||||
[enable_werror=no])
|
||||
|
||||
AC_LANG_PUSH([C++])
|
||||
AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
|
||||
|
||||
@@ -206,10 +213,19 @@ if test "x$enable_debug" = xyes; then
|
||||
fi
|
||||
fi
|
||||
|
||||
ERROR_CXXFLAGS=
|
||||
if test "x$enable_werror" = "xyes"; then
|
||||
if test "x$CXXFLAG_WERROR" = "x"; then
|
||||
AC_MSG_ERROR("enable-werror set but -Werror is not usable")
|
||||
fi
|
||||
AX_CHECK_COMPILE_FLAG([-Werror=vla],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=vla"],,[[$CXXFLAG_WERROR]])
|
||||
fi
|
||||
|
||||
if test "x$CXXFLAGS_overridden" = "xno"; then
|
||||
AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
|
||||
|
||||
## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
|
||||
@@ -1066,6 +1082,7 @@ AC_SUBST(BITCOIN_CLI_NAME)
|
||||
AC_SUBST(BITCOIN_TX_NAME)
|
||||
|
||||
AC_SUBST(RELDFLAGS)
|
||||
AC_SUBST(ERROR_CXXFLAGS)
|
||||
AC_SUBST(HARDENED_CXXFLAGS)
|
||||
AC_SUBST(HARDENED_CPPFLAGS)
|
||||
AC_SUBST(HARDENED_LDFLAGS)
|
||||
@@ -1155,6 +1172,7 @@ echo " with test = $use_tests"
|
||||
echo " with bench = $use_bench"
|
||||
echo " with upnp = $use_upnp"
|
||||
echo " debug enabled = $enable_debug"
|
||||
echo " werror = $enable_werror"
|
||||
echo
|
||||
echo " target os = $TARGET_OS"
|
||||
echo " build os = $BUILD_OS"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: "bitcoin-linux-0.13"
|
||||
name: "bitcoin-linux-0.14"
|
||||
enable_cache: true
|
||||
suites:
|
||||
- "trusty"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: "bitcoin-osx-0.13"
|
||||
name: "bitcoin-osx-0.14"
|
||||
enable_cache: true
|
||||
suites:
|
||||
- "trusty"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: "bitcoin-win-0.13"
|
||||
name: "bitcoin-win-0.14"
|
||||
enable_cache: true
|
||||
suites:
|
||||
- "trusty"
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
a06ede9a138d0fb86b0de17c42b936d9fe6e2158
|
||||
923dc447eaa8e017985b2afbbb12dd1283fbea0e
|
||||
71148b8947fe8b4d756822420a7f31c380159425
|
||||
6696b4635ceb9b47aaa63244bff9032fa7b08354
|
||||
812714fd80e96e28cd288c553c83838cecbfc2d9
|
||||
8a445c5651edb9a1f51497055b7ddf4402be9188
|
||||
e126d0c12ca66278d9e7b12187c5ff4fc02a7e6c
|
||||
3908fc4728059719bed0e1c7b1c8b388c2d4a8da
|
||||
8b66bf74e2a349e71eaa183af81fa63eaee76ad2
|
||||
05950427d310654774031764a7141a1a4fd9c6e4
|
||||
07fd147b9f12e9205afd66a624edce357977d615
|
||||
12e31127948fa4bb01c3bddc1b8c85b432f7465b
|
||||
8c87f175d335e9d9e93f987d871ae9f05f6a10a7
|
||||
46b249e578e8a3dfbe85bc7253a12e82ef4b658b
|
||||
a55716abe5662ec74c2f8af93023f1e7cca901fc
|
||||
f646275b90b1de93bc62b4c4d045d75ac0b96eee
|
||||
c252685aa5867631e9a5ef07ccae7c7c25cae8ff
|
||||
a7d55c93385359952d85decd5037843ac70ba3d4
|
||||
7dac1e5e9e887f5f6ff146e812a05bd3bf281eae
|
||||
2a524b8e8fe69ef487fd8ea1b4f7a03f473ed201
|
||||
ce5c1f4acae43477989cdf9a82ed33703919cda2
|
||||
2db4cbcc437f51f5dac82cc4de46f383b92e6f11
|
||||
7aa700424cbda387536373d8dfec88aee43f950e
|
||||
b99a093afed880f23fb279c443cc6ae5e379cc43
|
||||
b83264d9c7a8ddb79f64bd9540caddc8632ef31f
|
||||
57e337d40e94ba33d8cd265c134d6ef857b32b59
|
||||
a1dcf2e1087beaf3981739fd2bb74f35ecad630a
|
||||
d38b0d7a6b6056cba26999b702815775e2437d87
|
||||
815640ec6af9a38d6a2da4a4400056e2f4105080
|
||||
09c4fd157c5b88df2d97fad4826c79b094db90c9
|
||||
2efcfa5acfacb958973d9e8125e1d81f102e2dfd
|
||||
dc6dee41f7cf2ba93fcd0fea7c157e4b2775d439
|
||||
ad826b3df9f763b49f1e3e3d50c4efdd438c7547
|
||||
c1a52276848d8caa9a9789dff176408c1aa6b1ed
|
||||
3bf06e9bac57b5b5a746677b75e297a7b154bdbd
|
||||
72ae6f8cf0224370e8121d6769b21e612ca15d6f
|
||||
a143b88dbd4971ecfdd1d39a494489c8f2db0344
|
||||
76fec09d878d6dbf214bdb6228d480bd9195db4c
|
||||
93566e0c37c5ae104095474fea89f00dcb40f551
|
||||
407d9232ef5cb1ebf6cff21f3d13e07ea4158eeb
|
||||
9346f8429957e356d21c665bab59fe45bcf1f74e
|
||||
6eeac6e30d65f9a972067c1ea8c49978c8e631ac
|
||||
dc6b9406bdfab2af8c86cb080cb3e6cf8f2385d8
|
||||
9f554e03ebe5701c1b75ff03b3d6152095c0cad3
|
||||
05009935f9ac070197113954d680bc2c9150b9b3
|
||||
508404de98a8a5435f52916cef8f328e82651961
|
||||
ed0cc50afed146c27f6d8129c683c225fb940093
|
||||
6429cfa8a70308241c576aeb92ffe3db5203b2ef
|
||||
6898213409811b140843c3d89af43328c3b22fad
|
||||
5b2ea29cf4fd298346437bb16a54407f8c1f9dca
|
||||
e2a1a1ee895149c544d4ae295466611f0cec3094
|
||||
e82fb872ff5cc8fd22d43327c1ee3e755f61c562
|
||||
19b0f33de0efd9da788e8e4f3fdc2a9e159abdb1
|
||||
89de1538ce1f8c00f80e8d11f43e1b77e24d7dea
|
||||
de07fdcf77e97b8613091285e4d0a734f5de7492
|
||||
01680195f8aa586c55c44767397380def3a23b54
|
||||
05e1c85fb687c82ae477c72d4a7e2d6b0c692167
|
||||
c072b8fd95cd4fa84f08189a0cd8b173ea2dbb8e
|
||||
9a0ed08b40b15ae2b791aa8549b53e69934b4ea7
|
||||
53f8f226bd1d627c4a6dec5862a1d4ea5a933e45
|
||||
9d0f43b7ca7241d8a018fd35dd3bc01555235ec6
|
||||
f12d2b5a8ac397e4bcaefcc19898f8ff5705dea5
|
||||
8250de13587ed05ca45df3e12c5dc9bcb1500e2c
|
||||
d727f77e390426e9e463336bda08d50c451c7086
|
||||
484312bda2d43e3ea60047be076332299463adf8
|
||||
c7e05b35ab0a791c7a8e2d863e716fdec6f3f671
|
||||
b9c1cd81848da9de1baf9c2f29c19c50e549de13
|
||||
8ea7d31e384975019733b5778feabbd9955c79d8
|
||||
f798b891bcecea9548eedacae70eeb9906c1ddbf
|
||||
ebefe7a00b46579cdd1e033a8c7fd8ce9aa578e4
|
||||
ad087638ee4864d6244ec9381ff764bfa6ee5086
|
||||
66db2d62d59817320c9182fc18e75a93b76828ea
|
||||
7ce9ac5c83b1844a518ef2e12e87aae3cacdfe58
|
||||
4286f43025149cf44207c3ad98e4a1f068520ada
|
||||
cd0c5135ab2291aaa5410ac919bad3fc87249a4a
|
||||
66ed450d771a8fc01c159a8402648ebd1c35eb4c
|
||||
a82f03393a32842d49236e8666ee57805ca701f8
|
||||
f972b04d63eb8af79ff3cec1dc561ed13dfa6053
|
||||
ec45cc5e27668171b55271b0c735194c70e7da41
|
||||
715e9fd7454f7a48d7adba7d42f662c20a3e3367
|
||||
2e0a99037dcc35bc63ba0d54371bc678af737c8e
|
||||
7fa8d758598407f3bf0beb0118dc122ea5340736
|
||||
6a22373771edbc3c7513cacb9355f880c73c2cbf
|
||||
b89ef131147f71a96152a7b5c4374266cdf539b2
|
||||
01d8359983e2f77b5118fede3ffa947072c666c8
|
||||
58f0c929a3d70a4bff79cc200f1c186f71ef1675
|
||||
950be19727a581970591d8f8138dfe4725750382
|
||||
425278d17bd0edf8a3a7cc81e55016f7fd8e7726
|
||||
c028c7b7557da2baff7af8840108e8be4db8e0c6
|
||||
47a7cfb0aa2498f6801026d258a59f9de48f60b0
|
||||
f6b7df3155ddb4cedfbcf5d3eb3383d4614b3a85
|
||||
d72098038f3b55a714ed8adb34fab547b15eb0d5
|
||||
c49c825bd9f4764536b45df5a684d97173673fc7
|
||||
33799afe83eec4200ff140e9bf5eae83701a4d7f
|
||||
5c3f8ddcaa1164079105c452429fccf8127b01b6
|
||||
1f01443567b03ac75a91c810f1733f5c21b5699d
|
||||
b3e42b6d02e8d19658a9135e427ebceab5367779
|
||||
69b3a6dd9d9a0adf5506c8b9fde42187356bd4a8
|
||||
bafd075c5e6a1088ef0f1aa0b0b224e026a3d3e0
|
||||
7daa3adb242d9c8728fdb15c6af6596aaad5502f
|
||||
514993554c370f4cf30a109ac28d5d64893dbf0a
|
||||
c8d2473e6cb042e7275a10c49d3f6a4a91bf0166
|
||||
386f4385ab04b0b2c3d47bddc0dc0f2de7354964
|
||||
9f33dba05c01ecc5c56eb1284ab7d64d42f55171
|
||||
|
||||
@@ -12,17 +12,13 @@ for LINE in $(echo "$INPUT" | gpg --trust-model always "$@" 2>/dev/null); do
|
||||
case "$LINE" in
|
||||
"[GNUPG:] VALIDSIG "*)
|
||||
while read KEY; do
|
||||
case "$LINE" in "[GNUPG:] VALIDSIG $KEY "*) VALID=true;; esac
|
||||
[ "${LINE#?GNUPG:? VALIDSIG * * * * * * * * * }" = "$KEY" ] && VALID=true
|
||||
done < ./contrib/verify-commits/trusted-keys
|
||||
;;
|
||||
"[GNUPG:] REVKEYSIG "*)
|
||||
[ "$BITCOIN_VERIFY_COMMITS_ALLOW_REVSIG" != 1 ] && exit 1
|
||||
while read KEY; do
|
||||
case "$LINE" in "[GNUPG:] REVKEYSIG ${KEY#????????????????????????} "*)
|
||||
REVSIG=true
|
||||
GOODREVSIG="[GNUPG:] GOODSIG ${KEY#????????????????????????} "
|
||||
esac
|
||||
done < ./contrib/verify-commits/trusted-keys
|
||||
REVSIG=true
|
||||
GOODREVSIG="[GNUPG:] GOODSIG ${LINE#* * *}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
71A3B16735405025D447E8F274810B012346C9A6
|
||||
3F1888C6DCA92A6499C4911FDBA1A67379A1A931
|
||||
133EAC179436F14A5CF1B794860FEB804E669320
|
||||
32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC
|
||||
FE09B823E6D83A3BC7983EAA2D7F2372E50FE137
|
||||
B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B
|
||||
|
||||
@@ -38,7 +38,8 @@ $(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
cd $($(package)_build_subdir); ./autogen.sh
|
||||
cd $($(package)_build_subdir); ./autogen.sh && \
|
||||
sed -i.old "/define HAVE_PTHREADS/d" ld64/src/ld/InputFiles.h
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
||||
@@ -38,7 +38,7 @@ PROJECT_NAME = "Bitcoin Core"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 0.13.99
|
||||
PROJECT_NUMBER = 0.14.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.13.99
|
||||
Bitcoin Core 0.14.0
|
||||
=====================
|
||||
|
||||
Setup
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.13.99
|
||||
Bitcoin Core 0.14.0
|
||||
=====================
|
||||
|
||||
Intro
|
||||
|
||||
@@ -20,6 +20,7 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.13.0**):
|
||||
* [`BIP 66`](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki): The strict DER rules and associated version 3 blocks have been implemented since **v0.10.0** ([PR #5713](https://github.com/bitcoin/bitcoin/pull/5713)).
|
||||
* [`BIP 68`](https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki): Sequence locks have been implemented as of **v0.12.1** ([PR #7184](https://github.com/bitcoin/bitcoin/pull/7184)), and have been activated since *block 419328*.
|
||||
* [`BIP 70`](https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki) [`71`](https://github.com/bitcoin/bips/blob/master/bip-0071.mediawiki) [`72`](https://github.com/bitcoin/bips/blob/master/bip-0072.mediawiki): Payment Protocol support has been available in Bitcoin Core GUI since **v0.9.0** ([PR #5216](https://github.com/bitcoin/bitcoin/pull/5216)).
|
||||
* [`BIP 90`](https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki): Trigger mechanism for activation of BIPs 34, 65, and 66 has been simplified to block height checks since **v0.14.0** ([PR #8391](https://github.com/bitcoin/bitcoin/pull/8391)).
|
||||
* [`BIP 111`](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, and enforced for all peer versions as of **v0.13.0** ([PR #6579](https://github.com/bitcoin/bitcoin/pull/6579) and [PR #6641](https://github.com/bitcoin/bitcoin/pull/6641)).
|
||||
* [`BIP 112`](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki): The CHECKSEQUENCEVERIFY opcode has been implemented since **v0.12.1** ([PR #7524](https://github.com/bitcoin/bitcoin/pull/7524)) and has been activated since *block 419328*.
|
||||
* [`BIP 113`](https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki): Median time past lock-time calculations have been implemented since **v0.12.1** ([PR #6566](https://github.com/bitcoin/bitcoin/pull/6566)) and have been activated since *block 419328*.
|
||||
|
||||
@@ -1 +1,13 @@
|
||||
dist_man1_MANS=bitcoind.1 bitcoin-qt.1 bitcoin-cli.1 bitcoin-tx.1
|
||||
dist_man1_MANS=
|
||||
|
||||
if BUILD_BITCOIND
|
||||
dist_man1_MANS+=bitcoind.1
|
||||
endif
|
||||
|
||||
if ENABLE_QT
|
||||
dist_man1_MANS+=bitcoin-qt.1
|
||||
endif
|
||||
|
||||
if BUILD_BITCOIN_UTILS
|
||||
dist_man1_MANS+=bitcoin-cli.1 bitcoin-tx.1
|
||||
endif
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.5.
|
||||
.TH BITCOIN-CLI "1" "September 2016" "bitcoin-cli v0.13.0.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIN-CLI "1" "February 2017" "bitcoin-cli v0.14.0.0" "User Commands"
|
||||
.SH NAME
|
||||
bitcoin-cli \- manual page for bitcoin-cli v0.13.0.0
|
||||
bitcoin-cli \- manual page for bitcoin-cli v0.14.0.0
|
||||
.SH DESCRIPTION
|
||||
Bitcoin Core RPC client version v0.13.0.0
|
||||
Bitcoin Core RPC client version v0.14.0.0\-dirty
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
bitcoin\-cli [options] <command> [params]
|
||||
Send command to Bitcoin Core
|
||||
.TP
|
||||
bitcoin\-cli [options] help
|
||||
List commands
|
||||
.TP
|
||||
bitcoin\-cli [options] help <command>
|
||||
Get help for a command
|
||||
.IP
|
||||
bitcoin\-cli [options] \fB\-named\fR <command> [name=value] ... Send command to Bitcoin Core (with named arguments)
|
||||
bitcoin\-cli [options] help List commands
|
||||
bitcoin\-cli [options] help <command> Get help for a command
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
@@ -40,6 +38,10 @@ Enter regression test mode, which uses a special chain in which blocks
|
||||
can be solved instantly. This is intended for regression testing
|
||||
tools and app development.
|
||||
.HP
|
||||
\fB\-named\fR
|
||||
.IP
|
||||
Pass named instead of positional arguments (default: false)
|
||||
.HP
|
||||
\fB\-rpcconnect=\fR<ip>
|
||||
.IP
|
||||
Send commands to node running on <ip> (default: 127.0.0.1)
|
||||
@@ -69,7 +71,7 @@ Timeout during HTTP requests (default: 900)
|
||||
Read extra arguments from standard input, one per line until EOF/Ctrl\-D
|
||||
(recommended for sensitive information such as passphrases)
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2016 The Bitcoin Core developers
|
||||
Copyright (C) 2009-2017 The Bitcoin Core developers
|
||||
|
||||
Please contribute if you find Bitcoin Core useful. Visit
|
||||
<https://bitcoincore.org> for further information about the software.
|
||||
@@ -77,8 +79,8 @@ The source code is available from <https://github.com/bitcoin/bitcoin>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.5.
|
||||
.TH BITCOIN-QT "1" "September 2016" "bitcoin-qt v0.13.0.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIN-QT "1" "February 2017" "bitcoin-qt v0.14.0.0" "User Commands"
|
||||
.SH NAME
|
||||
bitcoin-qt \- manual page for bitcoin-qt v0.13.0.0
|
||||
bitcoin-qt \- manual page for bitcoin-qt v0.14.0.0
|
||||
.SH DESCRIPTION
|
||||
Bitcoin Core version v0.13.0.0 (64\-bit)
|
||||
Bitcoin Core version v0.14.0.0\-dirty (64\-bit)
|
||||
Usage:
|
||||
.IP
|
||||
bitcoin\-qt [command\-line options]
|
||||
@@ -27,13 +27,14 @@ long fork (%s in cmd is replaced by message)
|
||||
Execute command when the best block changes (%s in cmd is replaced by
|
||||
block hash)
|
||||
.HP
|
||||
\fB\-checkblocks=\fR<n>
|
||||
\fB\-assumevalid=\fR<hex>
|
||||
.IP
|
||||
How many blocks to check at startup (default: 288, 0 = all)
|
||||
.HP
|
||||
\fB\-checklevel=\fR<n>
|
||||
.IP
|
||||
How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3)
|
||||
If this block is in the chain assume that it and its ancestors are valid
|
||||
and potentially skip their script verification (0 to verify all,
|
||||
default:
|
||||
00000000000000000013176bf8d7dfeab4e1db31dc93bc311b436e82ab226b90,
|
||||
testnet:
|
||||
00000000000128796ee387cf110ccb9d2f36cffaf7f73079c995377c65ac0dcc)
|
||||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
@@ -62,11 +63,16 @@ Keep the transaction memory pool below <n> megabytes (default: 300)
|
||||
\fB\-mempoolexpiry=\fR<n>
|
||||
.IP
|
||||
Do not keep transactions in the mempool longer than <n> hours (default:
|
||||
72)
|
||||
336)
|
||||
.HP
|
||||
\fB\-blockreconstructionextratxn=\fR<n>
|
||||
.IP
|
||||
Extra transactions to keep in memory for compact block reconstructions
|
||||
(default: 100)
|
||||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
|
||||
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
@@ -75,13 +81,15 @@ Specify pid file (default: bitcoind.pid)
|
||||
.HP
|
||||
\fB\-prune=\fR<n>
|
||||
.IP
|
||||
Reduce storage requirements by enabling pruning (deleting) of old blocks.
|
||||
This allows the pruneblockchain RPC to be called to delete specific blocks,
|
||||
and enables automatic pruning of old blocks if a target size in MiB is
|
||||
provided. This mode is incompatible with \fB\-txindex\fR and \fB\-rescan\fR.
|
||||
Warning: Reverting this setting requires re\-downloading the entire blockchain.
|
||||
(default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, >550 =
|
||||
automatically prune block files to stay under the specified target size in MiB)
|
||||
Reduce storage requirements by enabling pruning (deleting) of old
|
||||
blocks. This allows the pruneblockchain RPC to be called to
|
||||
delete specific blocks, and enables automatic pruning of old
|
||||
blocks if a target size in MiB is provided. This mode is
|
||||
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
|
||||
setting requires re\-downloading the entire blockchain. (default:
|
||||
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
|
||||
>550 = automatically prune block files to stay under the
|
||||
specified target size in MiB)
|
||||
.HP
|
||||
\fB\-reindex\-chainstate\fR
|
||||
.IP
|
||||
@@ -123,7 +131,8 @@ for IPv6
|
||||
.HP
|
||||
\fB\-connect=\fR<ip>
|
||||
.IP
|
||||
Connect only to the specified node(s)
|
||||
Connect only to the specified node(s); \fB\-noconnect\fR or \fB\-connect\fR=\fI\,0\/\fR alone to
|
||||
disable automatic connections
|
||||
.HP
|
||||
\fB\-discover\fR
|
||||
.IP
|
||||
@@ -137,7 +146,7 @@ Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (def
|
||||
\fB\-dnsseed\fR
|
||||
.IP
|
||||
Query for peer addresses via DNS lookup, if low on addresses (default: 1
|
||||
unless \fB\-connect\fR)
|
||||
unless \fB\-connect\fR/\-noconnect)
|
||||
.HP
|
||||
\fB\-externalip=\fR<ip>
|
||||
.IP
|
||||
@@ -149,7 +158,8 @@ Always query for peer addresses via DNS lookup (default: 0)
|
||||
.HP
|
||||
\fB\-listen\fR
|
||||
.IP
|
||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
|
||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or
|
||||
\fB\-connect\fR/\-noconnect)
|
||||
.HP
|
||||
\fB\-listenonion\fR
|
||||
.IP
|
||||
@@ -204,6 +214,11 @@ Connect through SOCKS5 proxy
|
||||
Randomize credentials for every proxy connection. This enables Tor
|
||||
stream isolation (default: 1)
|
||||
.HP
|
||||
\fB\-rpcserialversion\fR
|
||||
.IP
|
||||
Sets the serialization of raw transaction or block hex returned in
|
||||
non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
|
||||
.HP
|
||||
\fB\-seednode=\fR<ip>
|
||||
.IP
|
||||
Connect to a node to retrieve peer addresses, and disconnect
|
||||
@@ -221,17 +236,22 @@ Tor control port to use if onion listening enabled (default:
|
||||
.IP
|
||||
Tor control port password (default: empty)
|
||||
.HP
|
||||
\fB\-upnp\fR
|
||||
.IP
|
||||
Use UPnP to map the listening port (default: 0)
|
||||
.HP
|
||||
\fB\-whitebind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and whitelist peers connecting to it. Use
|
||||
[host]:port notation for IPv6
|
||||
.HP
|
||||
\fB\-whitelist=\fR<netmask>
|
||||
\fB\-whitelist=\fR<IP address or network>
|
||||
.IP
|
||||
Whitelist peers connecting from the given netmask or IP address. Can be
|
||||
specified multiple times. Whitelisted peers cannot be DoS banned
|
||||
and their transactions are always relayed, even if they are
|
||||
already in the mempool, useful e.g. for a gateway
|
||||
Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
|
||||
CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
|
||||
times. Whitelisted peers cannot be DoS banned and their
|
||||
transactions are always relayed, even if they are already in the
|
||||
mempool, useful e.g. for a gateway
|
||||
.HP
|
||||
\fB\-whitelistrelay\fR
|
||||
.IP
|
||||
@@ -240,7 +260,7 @@ not relaying transactions (default: 1)
|
||||
.HP
|
||||
\fB\-whitelistforcerelay\fR
|
||||
.IP
|
||||
Force relay of transactions from whitelisted peers even they violate
|
||||
Force relay of transactions from whitelisted peers even if they violate
|
||||
local relay policy (default: 1)
|
||||
.HP
|
||||
\fB\-maxuploadtarget=\fR<n>
|
||||
@@ -287,13 +307,17 @@ Spend unconfirmed change when sending transactions (default: 1)
|
||||
\fB\-txconfirmtarget=\fR<n>
|
||||
.IP
|
||||
If paytxfee is not set, include enough fee so transactions begin
|
||||
confirmation on average within n blocks (default: 2)
|
||||
confirmation on average within n blocks (default: 6)
|
||||
.HP
|
||||
\fB\-usehd\fR
|
||||
.IP
|
||||
Use hierarchical deterministic key generation (HD) after BIP32. Only has
|
||||
effect during wallet creation/first start (default: 1)
|
||||
.HP
|
||||
\fB\-walletrbf\fR
|
||||
.IP
|
||||
Send transactions with full\-RBF opt\-in enabled (default: 0)
|
||||
.HP
|
||||
\fB\-upgradewallet\fR
|
||||
.IP
|
||||
Upgrade wallet to latest format on startup
|
||||
@@ -347,9 +371,9 @@ Append comment to the user agent string
|
||||
Output debugging information (default: 0, supplying <category> is
|
||||
optional). If <category> is not supplied or if <category> = 1,
|
||||
output all debugging information.<category> can be: addrman,
|
||||
alert, bench, coindb, db, http, libevent, lock, mempool,
|
||||
mempoolrej, net, proxy, prune, rand, reindex, rpc, selectcoins,
|
||||
tor, zmq, qt.
|
||||
alert, bench, cmpctblock, coindb, db, http, libevent, lock,
|
||||
mempool, mempoolrej, net, proxy, prune, rand, reindex, rpc,
|
||||
selectcoins, tor, zmq, qt.
|
||||
.HP
|
||||
\fB\-help\-debug\fR
|
||||
.IP
|
||||
@@ -422,6 +446,11 @@ Set maximum block size in bytes (default: 750000)
|
||||
.IP
|
||||
Set maximum size of high\-priority/low\-fee transactions in bytes
|
||||
(default: 0)
|
||||
.HP
|
||||
\fB\-blockmintxfee=\fR<amt>
|
||||
.IP
|
||||
Set lowest fee rate (in BTC/kB) for transactions to be included in block
|
||||
creation. (default: 0.00001)
|
||||
.PP
|
||||
RPC server options:
|
||||
.HP
|
||||
@@ -455,8 +484,10 @@ Password for JSON\-RPC connections
|
||||
.IP
|
||||
Username and hashed password for JSON\-RPC connections. The field
|
||||
<userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
|
||||
canonical python script is included in share/rpcuser. This option
|
||||
can be specified multiple times
|
||||
canonical python script is included in share/rpcuser. The client
|
||||
then connects normally using the
|
||||
rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
|
||||
option can be specified multiple times
|
||||
.HP
|
||||
\fB\-rpcport=\fR<port>
|
||||
.IP
|
||||
@@ -500,7 +531,7 @@ Show splash screen on startup (default: 1)
|
||||
.IP
|
||||
Reset all settings changed in the GUI
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2016 The Bitcoin Core developers
|
||||
Copyright (C) 2009-2017 The Bitcoin Core developers
|
||||
|
||||
Please contribute if you find Bitcoin Core useful. Visit
|
||||
<https://bitcoincore.org> for further information about the software.
|
||||
@@ -508,8 +539,8 @@ The source code is available from <https://github.com/bitcoin/bitcoin>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.5.
|
||||
.TH BITCOIN-TX "1" "September 2016" "bitcoin-tx v0.13.0.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIN-TX "1" "February 2017" "bitcoin-tx v0.14.0.0" "User Commands"
|
||||
.SH NAME
|
||||
bitcoin-tx \- manual page for bitcoin-tx v0.13.0.0
|
||||
bitcoin-tx \- manual page for bitcoin-tx v0.14.0.0
|
||||
.SH DESCRIPTION
|
||||
Bitcoin Core bitcoin\-tx utility version v0.13.0.0
|
||||
Bitcoin Core bitcoin\-tx utility version v0.14.0.0\-dirty
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
bitcoin\-tx [options] <hex\-tx> [commands]
|
||||
@@ -67,13 +67,28 @@ outaddr=VALUE:ADDRESS
|
||||
.IP
|
||||
Add address\-based output to TX
|
||||
.IP
|
||||
outpubkey=VALUE:PUBKEY[:FLAGS]
|
||||
.IP
|
||||
Add pay\-to\-pubkey output to TX. Optionally add the "W" flag to produce a
|
||||
pay\-to\-witness\-pubkey\-hash output. Optionally add the "S" flag to
|
||||
wrap the output in a pay\-to\-script\-hash.
|
||||
.IP
|
||||
outdata=[VALUE:]DATA
|
||||
.IP
|
||||
Add data\-based output to TX
|
||||
.IP
|
||||
outscript=VALUE:SCRIPT
|
||||
outscript=VALUE:SCRIPT[:FLAGS]
|
||||
.IP
|
||||
Add raw script output to TX
|
||||
Add raw script output to TX. Optionally add the "W" flag to produce a
|
||||
pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
|
||||
wrap the output in a pay\-to\-script\-hash.
|
||||
.IP
|
||||
outmultisig=VALUE:REQUIRED:PUBKEYS:PUBKEY1:PUBKEY2:....[:FLAGS]
|
||||
.IP
|
||||
Add Pay To n\-of\-m Multi\-sig output to TX. n = REQUIRED, m = PUBKEYS.
|
||||
Optionally add the "W" flag to produce a
|
||||
pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
|
||||
wrap the output in a pay\-to\-script\-hash.
|
||||
.IP
|
||||
sign=SIGHASH\-FLAGS
|
||||
.IP
|
||||
@@ -92,7 +107,7 @@ set=NAME:JSON\-STRING
|
||||
.IP
|
||||
Set register NAME to given JSON\-STRING
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2016 The Bitcoin Core developers
|
||||
Copyright (C) 2009-2017 The Bitcoin Core developers
|
||||
|
||||
Please contribute if you find Bitcoin Core useful. Visit
|
||||
<https://bitcoincore.org> for further information about the software.
|
||||
@@ -100,8 +115,8 @@ The source code is available from <https://github.com/bitcoin/bitcoin>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.5.
|
||||
.TH BITCOIND "1" "September 2016" "bitcoind v0.13.0.0" "User Commands"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH BITCOIND "1" "February 2017" "bitcoind v0.14.0.0" "User Commands"
|
||||
.SH NAME
|
||||
bitcoind \- manual page for bitcoind v0.13.0.0
|
||||
bitcoind \- manual page for bitcoind v0.14.0.0
|
||||
.SH DESCRIPTION
|
||||
Bitcoin Core Daemon version v0.13.0.0
|
||||
Bitcoin Core Daemon version v0.14.0.0\-dirty
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
bitcoind [options]
|
||||
@@ -28,13 +28,14 @@ long fork (%s in cmd is replaced by message)
|
||||
Execute command when the best block changes (%s in cmd is replaced by
|
||||
block hash)
|
||||
.HP
|
||||
\fB\-checkblocks=\fR<n>
|
||||
\fB\-assumevalid=\fR<hex>
|
||||
.IP
|
||||
How many blocks to check at startup (default: 288, 0 = all)
|
||||
.HP
|
||||
\fB\-checklevel=\fR<n>
|
||||
.IP
|
||||
How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3)
|
||||
If this block is in the chain assume that it and its ancestors are valid
|
||||
and potentially skip their script verification (0 to verify all,
|
||||
default:
|
||||
00000000000000000013176bf8d7dfeab4e1db31dc93bc311b436e82ab226b90,
|
||||
testnet:
|
||||
00000000000128796ee387cf110ccb9d2f36cffaf7f73079c995377c65ac0dcc)
|
||||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
@@ -67,11 +68,16 @@ Keep the transaction memory pool below <n> megabytes (default: 300)
|
||||
\fB\-mempoolexpiry=\fR<n>
|
||||
.IP
|
||||
Do not keep transactions in the mempool longer than <n> hours (default:
|
||||
72)
|
||||
336)
|
||||
.HP
|
||||
\fB\-blockreconstructionextratxn=\fR<n>
|
||||
.IP
|
||||
Extra transactions to keep in memory for compact block reconstructions
|
||||
(default: 100)
|
||||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
|
||||
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
@@ -80,13 +86,15 @@ Specify pid file (default: bitcoind.pid)
|
||||
.HP
|
||||
\fB\-prune=\fR<n>
|
||||
.IP
|
||||
Reduce storage requirements by enabling pruning (deleting) of old blocks.
|
||||
This allows the pruneblockchain RPC to be called to delete specific blocks,
|
||||
and enables automatic pruning of old blocks if a target size in MiB is
|
||||
provided. This mode is incompatible with \fB\-txindex\fR and \fB\-rescan\fR.
|
||||
Warning: Reverting this setting requires re\-downloading the entire blockchain.
|
||||
(default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, >550 =
|
||||
automatically prune block files to stay under the specified target size in MiB)
|
||||
Reduce storage requirements by enabling pruning (deleting) of old
|
||||
blocks. This allows the pruneblockchain RPC to be called to
|
||||
delete specific blocks, and enables automatic pruning of old
|
||||
blocks if a target size in MiB is provided. This mode is
|
||||
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
|
||||
setting requires re\-downloading the entire blockchain. (default:
|
||||
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
|
||||
>550 = automatically prune block files to stay under the
|
||||
specified target size in MiB)
|
||||
.HP
|
||||
\fB\-reindex\-chainstate\fR
|
||||
.IP
|
||||
@@ -128,7 +136,8 @@ for IPv6
|
||||
.HP
|
||||
\fB\-connect=\fR<ip>
|
||||
.IP
|
||||
Connect only to the specified node(s)
|
||||
Connect only to the specified node(s); \fB\-noconnect\fR or \fB\-connect\fR=\fI\,0\/\fR alone to
|
||||
disable automatic connections
|
||||
.HP
|
||||
\fB\-discover\fR
|
||||
.IP
|
||||
@@ -142,7 +151,7 @@ Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (def
|
||||
\fB\-dnsseed\fR
|
||||
.IP
|
||||
Query for peer addresses via DNS lookup, if low on addresses (default: 1
|
||||
unless \fB\-connect\fR)
|
||||
unless \fB\-connect\fR/\-noconnect)
|
||||
.HP
|
||||
\fB\-externalip=\fR<ip>
|
||||
.IP
|
||||
@@ -154,7 +163,8 @@ Always query for peer addresses via DNS lookup (default: 0)
|
||||
.HP
|
||||
\fB\-listen\fR
|
||||
.IP
|
||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
|
||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or
|
||||
\fB\-connect\fR/\-noconnect)
|
||||
.HP
|
||||
\fB\-listenonion\fR
|
||||
.IP
|
||||
@@ -209,6 +219,11 @@ Connect through SOCKS5 proxy
|
||||
Randomize credentials for every proxy connection. This enables Tor
|
||||
stream isolation (default: 1)
|
||||
.HP
|
||||
\fB\-rpcserialversion\fR
|
||||
.IP
|
||||
Sets the serialization of raw transaction or block hex returned in
|
||||
non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
|
||||
.HP
|
||||
\fB\-seednode=\fR<ip>
|
||||
.IP
|
||||
Connect to a node to retrieve peer addresses, and disconnect
|
||||
@@ -226,17 +241,22 @@ Tor control port to use if onion listening enabled (default:
|
||||
.IP
|
||||
Tor control port password (default: empty)
|
||||
.HP
|
||||
\fB\-upnp\fR
|
||||
.IP
|
||||
Use UPnP to map the listening port (default: 0)
|
||||
.HP
|
||||
\fB\-whitebind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and whitelist peers connecting to it. Use
|
||||
[host]:port notation for IPv6
|
||||
.HP
|
||||
\fB\-whitelist=\fR<netmask>
|
||||
\fB\-whitelist=\fR<IP address or network>
|
||||
.IP
|
||||
Whitelist peers connecting from the given netmask or IP address. Can be
|
||||
specified multiple times. Whitelisted peers cannot be DoS banned
|
||||
and their transactions are always relayed, even if they are
|
||||
already in the mempool, useful e.g. for a gateway
|
||||
Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
|
||||
CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
|
||||
times. Whitelisted peers cannot be DoS banned and their
|
||||
transactions are always relayed, even if they are already in the
|
||||
mempool, useful e.g. for a gateway
|
||||
.HP
|
||||
\fB\-whitelistrelay\fR
|
||||
.IP
|
||||
@@ -245,7 +265,7 @@ not relaying transactions (default: 1)
|
||||
.HP
|
||||
\fB\-whitelistforcerelay\fR
|
||||
.IP
|
||||
Force relay of transactions from whitelisted peers even they violate
|
||||
Force relay of transactions from whitelisted peers even if they violate
|
||||
local relay policy (default: 1)
|
||||
.HP
|
||||
\fB\-maxuploadtarget=\fR<n>
|
||||
@@ -292,13 +312,17 @@ Spend unconfirmed change when sending transactions (default: 1)
|
||||
\fB\-txconfirmtarget=\fR<n>
|
||||
.IP
|
||||
If paytxfee is not set, include enough fee so transactions begin
|
||||
confirmation on average within n blocks (default: 2)
|
||||
confirmation on average within n blocks (default: 6)
|
||||
.HP
|
||||
\fB\-usehd\fR
|
||||
.IP
|
||||
Use hierarchical deterministic key generation (HD) after BIP32. Only has
|
||||
effect during wallet creation/first start (default: 1)
|
||||
.HP
|
||||
\fB\-walletrbf\fR
|
||||
.IP
|
||||
Send transactions with full\-RBF opt\-in enabled (default: 0)
|
||||
.HP
|
||||
\fB\-upgradewallet\fR
|
||||
.IP
|
||||
Upgrade wallet to latest format on startup
|
||||
@@ -352,9 +376,9 @@ Append comment to the user agent string
|
||||
Output debugging information (default: 0, supplying <category> is
|
||||
optional). If <category> is not supplied or if <category> = 1,
|
||||
output all debugging information.<category> can be: addrman,
|
||||
alert, bench, coindb, db, http, libevent, lock, mempool,
|
||||
mempoolrej, net, proxy, prune, rand, reindex, rpc, selectcoins,
|
||||
tor, zmq.
|
||||
alert, bench, cmpctblock, coindb, db, http, libevent, lock,
|
||||
mempool, mempoolrej, net, proxy, prune, rand, reindex, rpc,
|
||||
selectcoins, tor, zmq.
|
||||
.HP
|
||||
\fB\-help\-debug\fR
|
||||
.IP
|
||||
@@ -427,6 +451,11 @@ Set maximum block size in bytes (default: 750000)
|
||||
.IP
|
||||
Set maximum size of high\-priority/low\-fee transactions in bytes
|
||||
(default: 0)
|
||||
.HP
|
||||
\fB\-blockmintxfee=\fR<amt>
|
||||
.IP
|
||||
Set lowest fee rate (in BTC/kB) for transactions to be included in block
|
||||
creation. (default: 0.00001)
|
||||
.PP
|
||||
RPC server options:
|
||||
.HP
|
||||
@@ -460,8 +489,10 @@ Password for JSON\-RPC connections
|
||||
.IP
|
||||
Username and hashed password for JSON\-RPC connections. The field
|
||||
<userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
|
||||
canonical python script is included in share/rpcuser. This option
|
||||
can be specified multiple times
|
||||
canonical python script is included in share/rpcuser. The client
|
||||
then connects normally using the
|
||||
rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
|
||||
option can be specified multiple times
|
||||
.HP
|
||||
\fB\-rpcport=\fR<port>
|
||||
.IP
|
||||
@@ -479,7 +510,7 @@ option can be specified multiple times
|
||||
.IP
|
||||
Set the number of threads to service RPC calls (default: 4)
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2016 The Bitcoin Core developers
|
||||
Copyright (C) 2009-2017 The Bitcoin Core developers
|
||||
|
||||
Please contribute if you find Bitcoin Core useful. Visit
|
||||
<https://bitcoincore.org> for further information about the software.
|
||||
@@ -487,8 +518,8 @@ The source code is available from <https://github.com/bitcoin/bitcoin>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <http://www.opensource.org/licenses/mit-license.php>.
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written
|
||||
by Eric Young and UPnP software written by Thomas Bernard.
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
(note: this is a temporary file, to be added-to by anybody, and moved to
|
||||
release-notes at release time)
|
||||
|
||||
Bitcoin Core version *version* is now available from:
|
||||
Bitcoin Core version 0.14.0 is now available from:
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-*version*/>
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.14.0/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
@@ -22,9 +22,9 @@ Compatibility
|
||||
Bitcoin Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support).
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities.
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
Bitcoin Core should also work on most other Unix-like systems but is not
|
||||
@@ -33,18 +33,250 @@ frequently tested on them.
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Performance Improvements
|
||||
--------------
|
||||
|
||||
Validation speed and network propagation performance have been greatly
|
||||
improved, leading to much shorter sync and initial block download times.
|
||||
|
||||
- The script signature cache has been reimplemented as a "cuckoo cache",
|
||||
allowing for more signatures to be cached and faster lookups.
|
||||
- Assumed-valid blocks have been introduced which allows script validation to
|
||||
be skipped for ancestors of known-good blocks, without changing the security
|
||||
model. See below for more details.
|
||||
- In some cases, compact blocks are now relayed before being fully validated as
|
||||
per BIP152.
|
||||
- P2P networking has been refactored with a focus on concurrency and
|
||||
throughput. Network operations are no longer bottlenecked by validation. As a
|
||||
result, block fetching is several times faster than previous releases in many
|
||||
cases.
|
||||
- The UTXO cache now claims unused mempool memory. This speeds up initial block
|
||||
download as UTXO lookups are a major bottleneck there, and there is no use for
|
||||
the mempool at that stage.
|
||||
|
||||
|
||||
Manual Pruning
|
||||
--------------
|
||||
|
||||
Bitcoin Core has supported automatically pruning the blockchain since 0.11. Pruning
|
||||
the blockchain allows for significant storage space savings as the vast majority of
|
||||
the downloaded data can be discarded after processing so very little of it remains
|
||||
on the disk.
|
||||
|
||||
Manual block pruning can now be enabled by setting `-prune=1`. Once that is set,
|
||||
the RPC command `pruneblockchain` can be used to prune the blockchain up to the
|
||||
specified height or timestamp.
|
||||
|
||||
`getinfo` Deprecated
|
||||
--------------------
|
||||
|
||||
The `getinfo` RPC command has been deprecated. Each field in the RPC call
|
||||
has been moved to another command's output with that command also giving
|
||||
additional information that `getinfo` did not provide. The following table
|
||||
shows where each field has been moved to:
|
||||
|
||||
|`getinfo` field | Moved to |
|
||||
|------------------|-------------------------------------------|
|
||||
`"version"` | `getnetworkinfo()["version"]`
|
||||
`"protocolversion"`| `getnetworkinfo()["protocolversion"]`
|
||||
`"walletversion"` | `getwalletinfo()["walletversion"]`
|
||||
`"balance"` | `getwalletinfo()["balance"]`
|
||||
`"blocks"` | `getblockchaininfo()["blocks"]`
|
||||
`"timeoffset"` | `getnetworkinfo()["timeoffset"]`
|
||||
`"connections"` | `getnetworkinfo()["connections"]`
|
||||
`"proxy"` | `getnetworkinfo()["networks"][0]["proxy"]`
|
||||
`"difficulty"` | `getblockchaininfo()["difficulty"]`
|
||||
`"testnet"` | `getblockchaininfo()["chain"] == "test"`
|
||||
`"keypoololdest"` | `getwalletinfo()["keypoololdest"]`
|
||||
`"keypoolsize"` | `getwalletinfo()["keypoolsize"]`
|
||||
`"unlocked_until"` | `getwalletinfo()["unlocked_until"]`
|
||||
`"paytxfee"` | `getwalletinfo()["paytxfee"]`
|
||||
`"relayfee"` | `getnetworkinfo()["relayfee"]`
|
||||
`"errors"` | `getnetworkinfo()["warnings"]`
|
||||
|
||||
ZMQ On Windows
|
||||
--------------
|
||||
|
||||
Previously the ZeroMQ notification system was unavailable on Windows
|
||||
due to various issues with ZMQ. These have been fixed upstream and
|
||||
now ZMQ can be used on Windows. Please see [this document](https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md) for
|
||||
help with using ZMQ in general.
|
||||
|
||||
Nested RPC Commands in Debug Console
|
||||
------------------------------------
|
||||
|
||||
The ability to nest RPC commands has been added to the debug console. This
|
||||
allows users to have the output of a command become the input to another
|
||||
command without running the commands separately.
|
||||
|
||||
The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can
|
||||
be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be
|
||||
done with square brackets where object values are accessed with either an
|
||||
array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both
|
||||
commas and spaces can be used to separate parameters in both the bracket syntax
|
||||
and normal RPC command syntax.
|
||||
|
||||
Network Activity Toggle
|
||||
-----------------------
|
||||
|
||||
A RPC command and GUI toggle have been added to enable or disable all p2p
|
||||
network activity. The network status icon in the bottom right hand corner
|
||||
is now the GUI toggle. Clicking the icon will either enable or disable all
|
||||
p2p network activity. If network activity is disabled, the icon will
|
||||
be grayed out with an X on top of it.
|
||||
|
||||
Additionally the `setnetworkactive` RPC command has been added which does
|
||||
the same thing as the GUI icon. The command takes one boolean parameter,
|
||||
`true` enables networking and `false` disables it.
|
||||
|
||||
Out-of-sync Modal Info Layer
|
||||
----------------------------
|
||||
|
||||
When Bitcoin Core is out-of-sync on startup, a semi-transparent information
|
||||
layer will be shown over top of the normal display. This layer contains
|
||||
details about the current sync progress and estimates the amount of time
|
||||
remaining to finish syncing. This layer can also be hidden and subsequently
|
||||
unhidden by clicking on the progress bar at the bottom of the window.
|
||||
|
||||
Support for JSON-RPC Named Arguments
|
||||
------------------------------------
|
||||
|
||||
Commands sent over the JSON-RPC interface and through the `bitcoin-cli` binary
|
||||
can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)
|
||||
for passing parameters by-name with an object.
|
||||
|
||||
`bitcoin-cli` has been updated to support this by parsing `name=value` arguments
|
||||
when the `-named` option is given.
|
||||
|
||||
Some examples:
|
||||
|
||||
src/bitcoin-cli -named help command="help"
|
||||
src/bitcoin-cli -named getblockhash height=0
|
||||
src/bitcoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
|
||||
src/bitcoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
|
||||
|
||||
The order of arguments doesn't matter in this case. Named arguments are also
|
||||
useful to leave out arguments that should stay at their default value. The
|
||||
rarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, can
|
||||
be left out. However, this is not yet implemented for many RPC calls, this is
|
||||
expected to land in a later release.
|
||||
|
||||
The RPC server remains fully backwards compatible with positional arguments.
|
||||
|
||||
Opt into RBF When Sending
|
||||
-------------------------
|
||||
|
||||
A new startup option, `-walletrbf`, has been added to allow users to have all
|
||||
transactions sent opt into RBF support. The default value for this option is
|
||||
currently `false`, so transactions will not opt into RBF by default. The new
|
||||
`bumpfee` RPC can be used to replace transactions that opt into RBF.
|
||||
|
||||
Sensitive Data Is No Longer Stored In Debug Console History
|
||||
-----------------------------------------------------------
|
||||
|
||||
The debug console maintains a history of previously entered commands that can be
|
||||
accessed by pressing the Up-arrow key so that users can easily reuse previously
|
||||
entered commands. Commands which have sensitive information such as passphrases and
|
||||
private keys will now have a `(...)` in place of the parameters when accessed through
|
||||
the history.
|
||||
|
||||
Retaining the Mempool Across Restarts
|
||||
-------------------------------------
|
||||
|
||||
The mempool will be saved to the data directory prior to shutdown
|
||||
to a `mempool.dat` file. This file preserves the mempool so that when the node
|
||||
restarts the mempool can be filled with transactions without waiting for new transactions
|
||||
to be created. This will also preserve any changes made to a transaction through
|
||||
commands such as `prioritisetransaction` so that those changes will not be lost.
|
||||
|
||||
Final Alert
|
||||
-----------
|
||||
|
||||
The Alert System was [disabled and deprecated](https://bitcoin.org/en/alert/2016-11-01-alert-retirement) in Bitcoin Core 0.12.1 and removed in 0.13.0.
|
||||
The Alert System was retired with a maximum sequence final alert which causes any nodes
|
||||
supporting the Alert System to display a static hard-coded "Alert Key Compromised" message which also
|
||||
prevents any other alerts from overriding it. This final alert is hard-coded into this release
|
||||
so that all old nodes receive the final alert.
|
||||
|
||||
GUI Changes
|
||||
-----------
|
||||
|
||||
- After resetting the options by clicking the `Reset Options` button
|
||||
in the options dialog or with the `-resetguioptions` startup option,
|
||||
the user will be prompted to choose the data directory again. This
|
||||
is to ensure that custom data directories will be kept after the
|
||||
option reset which clears the custom data directory set via the choose
|
||||
datadir dialog.
|
||||
|
||||
- Multiple peers can now be selected in the list of peers in the debug
|
||||
window. This allows for users to ban or disconnect multiple peers
|
||||
simultaneously instead of banning them one at a time.
|
||||
|
||||
- An indicator has been added to the bottom right hand corner of the main
|
||||
window to indicate whether the wallet being used is a HD wallet. This
|
||||
icon will be grayed out with an X on top of it if the wallet is not a
|
||||
HD wallet.
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
|
||||
- The first boolean argument to `getaddednodeinfo` has been removed. This is
|
||||
an incompatible change.
|
||||
|
||||
- RPC command `getmininginfo` loses the "testnet" field in favor of the more
|
||||
generic "chain" (which has been present for years).
|
||||
|
||||
- A new RPC command `preciousblock` has been added which marks a block as
|
||||
precious. A precious block will be treated as if it were received earlier
|
||||
than a competing block.
|
||||
|
||||
- A new RPC command `importmulti` has been added which receives an array of
|
||||
JSON objects representing the intention of importing a public key, a
|
||||
private key, an address and script/p2sh
|
||||
|
||||
- Use of `getrawtransaction` for retrieving confirmed transactions with unspent
|
||||
outputs has been deprecated. For now this will still work, but in the future
|
||||
it may change to only be able to retrieve information about transactions in
|
||||
the mempool or if `txindex` is enabled.
|
||||
|
||||
- A new RPC command `getmemoryinfo` has been added which will return information
|
||||
about the memory usage of Bitcoin Core. This was added in conjunction with
|
||||
optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753)
|
||||
for more information.
|
||||
|
||||
- A new RPC command `bumpfee` has been added which allows replacing an
|
||||
unconfirmed wallet transaction that signaled RBF (see the `-walletrbf`
|
||||
startup option above) with a new transaction that pays a higher fee, and
|
||||
should be more likely to get confirmed quickly.
|
||||
|
||||
HTTP REST Changes
|
||||
-----------------
|
||||
|
||||
- UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>
|
||||
/.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status
|
||||
code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)
|
||||
when requests contain invalid parameters.
|
||||
|
||||
Minimum Fee Rate Policies
|
||||
-------------------------
|
||||
|
||||
Since the changes in 0.12 to automatically limit the size of the mempool and improve the performance of block creation in mining code it has not been important for relay nodes or miners to set `-minrelaytxfee`. With this release the following concepts that were tied to this option have been separated out:
|
||||
- incremental relay fee used for calculating BIP 125 replacement and mempool limiting. (1000 satoshis/kB)
|
||||
- calculation of threshold for a dust output. (effectively 3 * 1000 satoshis/kB)
|
||||
- minimum fee rate of a package of transactions to be included in a block created by the mining code. If miners wish to set this minimum they can use the new `-blockmintxfee` option. (defaults to 1000 satoshis/kB)
|
||||
|
||||
The `-minrelaytxfee` option continues to exist but is recommended to be left unset.
|
||||
|
||||
Fee Estimation Changes
|
||||
----------------------
|
||||
|
||||
- Since 0.13.2 fee estimation for a confirmation target of 1 block has been
|
||||
disabled. This is only a minor behavior change as there was often insufficient
|
||||
disabled. The fee slider will no longer be able to choose a target of 1 block.
|
||||
This is only a minor behavior change as there was often insufficient
|
||||
data for this target anyway. `estimatefee 1` will now always return -1 and
|
||||
`estimatesmartfee 1` will start searching at a target of 2.
|
||||
|
||||
@@ -52,29 +284,29 @@ Fee Estimation Changes
|
||||
(previously 25) and for RPC calls (previously 2).
|
||||
|
||||
Removal of Priority Estimation
|
||||
-------------------------------
|
||||
------------------------------
|
||||
|
||||
- Estimation of "priority" needed for a transaction to be included within a target
|
||||
number of blocks has been removed. The rpc calls are deprecated and will either
|
||||
number of blocks has been removed. The RPC calls are deprecated and will either
|
||||
return -1 or 1e24 appropriately. The format for `fee_estimates.dat` has also
|
||||
changed to no longer save these priority estimates. It will automatically be
|
||||
converted to the new format which is not readable by prior versions of the
|
||||
software.
|
||||
|
||||
- The concept of "priority" (coin age) transactions is planned to be removed in
|
||||
the next major version. To prepare for this, the default for the rate limit of
|
||||
priority transactions (`-limitfreerelay`) has been set to `0` kB/minute. This
|
||||
is not to be confused with the `prioritisetransaction` RPC which will remain
|
||||
supported for adding fee deltas to transactions.
|
||||
- Support for "priority" (coin age) transaction sorting for mining is
|
||||
considered deprecated in Core and will be removed in the next major version.
|
||||
This is not to be confused with the `prioritisetransaction` RPC which will remain
|
||||
supported by Core for adding fee deltas to transactions.
|
||||
|
||||
P2P connection management
|
||||
--------------------------
|
||||
|
||||
- Peers manually added through the addnode option or addnode RPC now have their own
|
||||
- Peers manually added through the `-addnode` option or `addnode` RPC now have their own
|
||||
limit of eight connections which does not compete with other inbound or outbound
|
||||
connection usage and is not subject to the maxconnections limitation.
|
||||
connection usage and is not subject to the limitation imposed by the `-maxconnections`
|
||||
option.
|
||||
|
||||
- New connections to manually added peers are much faster.
|
||||
- New connections to manually added peers are performed more quickly.
|
||||
|
||||
Introduction of assumed-valid blocks
|
||||
-------------------------------------
|
||||
@@ -98,56 +330,547 @@ Introduction of assumed-valid blocks
|
||||
value adjusted to match the current chain shortly before release. The use
|
||||
of this default value can be disabled by setting -assumevalid=0
|
||||
|
||||
Fundrawtransaction change address reuse
|
||||
----------------------------------------
|
||||
|
||||
- Before 0.14, `fundrawtransaction` was by default wallet stateless. In
|
||||
almost all cases `fundrawtransaction` does add a change-output to the
|
||||
outputs of the funded transaction. Before 0.14, the used keypool key was
|
||||
never marked as change-address key and directly returned to the keypool
|
||||
(leading to address reuse). Before 0.14, calling `getnewaddress`
|
||||
directly after `fundrawtransaction` did generate the same address as
|
||||
the change-output address.
|
||||
|
||||
- Since 0.14, fundrawtransaction does reserve the change-output-key from
|
||||
the keypool by default (optional by setting `reserveChangeKey`, default =
|
||||
`true`)
|
||||
|
||||
- Users should also consider using `getrawchangeaddress()` in conjunction
|
||||
with `fundrawtransaction`'s `changeAddress` option.
|
||||
|
||||
Unused mempool memory used by coincache
|
||||
----------------------------------------
|
||||
|
||||
- Before 0.14, memory reserved for mempool (using the `-maxmempool` option)
|
||||
went unused during initial block download, or IBD. In 0.14, the UTXO DB cache
|
||||
(controlled with the `-dbcache` option) borrows memory from the mempool
|
||||
when there is extra memory available. This may result in an increase in
|
||||
memory usage during IBD for those previously relying on only the `-dbcache`
|
||||
option to limit memory during that time.
|
||||
|
||||
0.14.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
behavior, not code moves, minor refactors and string updates. For convenience
|
||||
in locating the code changes and accompanying discussion, both the pull request
|
||||
and git merge commit are mentioned.
|
||||
|
||||
### RPC and REST
|
||||
|
||||
UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>`) responses
|
||||
were changed to return status code HTTP_BAD_REQUEST (400) instead of HTTP_INTERNAL_SERVER_ERROR (500) when requests
|
||||
contain invalid parameters.
|
||||
|
||||
The first boolean argument to `getaddednodeinfo` has been removed. This is an incompatible change.
|
||||
|
||||
Call "getmininginfo" loses the "testnet" field in favor of the more generic "chain" (which has been present for years).
|
||||
|
||||
### Configuration and command-line options
|
||||
### RPC and other APIs
|
||||
- #8421 `b77bb95` httpserver: drop boost dependency (theuni)
|
||||
- #8638 `f061415` rest.cpp: change `HTTP_INTERNAL_SERVER_ERROR` to `HTTP_BAD_REQUEST` (djpnewton)
|
||||
- #8272 `91990ee` Make the dummy argument to getaddednodeinfo optional (sipa)
|
||||
- #8722 `bb843ad` bitcoin-cli: More detailed error reporting (laanwj)
|
||||
- #6996 `7f71a3c` Add preciousblock RPC (sipa)
|
||||
- #8788 `97c7f73` Give RPC commands more information about the RPC request (jonasschnelli)
|
||||
- #7948 `5d2c8e5` Augment getblockchaininfo bip9\_softforks data (mruddy)
|
||||
- #8980 `0e22855` importmulti: Avoid using boost::variant::operator!=, which is only in newer boost versions (luke-jr)
|
||||
- #9025 `4d8558a` Getrawtransaction should take a bool for verbose (jnewbery)
|
||||
- #8811 `5754e03` Add support for JSON-RPC named arguments (laanwj)
|
||||
- #9520 `2456a83` Deprecate non-txindex getrawtransaction and better warning (sipa)
|
||||
- #9518 `a65ced1` Return height of last block pruned by pruneblockchain RPC (ryanofsky)
|
||||
- #9222 `7cb024e` Add 'subtractFeeFromAmount' option to 'fundrawtransaction' (dooglus)
|
||||
- #8456 `2ef52d3` Simplified `bumpfee` command (mrbandrews)
|
||||
- #9516 `727a798` Bug-fix: listsinceblock: use fork point as reference for blocks in reorg'd chains (kallewoof)
|
||||
- #9640 `7bfb770` Bumpfee: bugfixes for error handling and feerate calculation (sdaftuar)
|
||||
- #9673 `8d6447e` Set correct metadata on bumpfee wallet transactions (ryanofsky)
|
||||
- #9650 `40f7e27` Better handle invalid parameters to signrawtransaction (TheBlueMatt)
|
||||
- #9682 `edc9e63` Require timestamps for importmulti keys (ryanofsky)
|
||||
- #9108 `d8e8b06` Use importmulti timestamp when importing watch only keys (on top of #9682) (ryanofsky)
|
||||
- #9756 `7a93af8` Return error when importmulti called with invalid address (ryanofsky)
|
||||
- #9778 `ad168ef` Add two hour buffer to manual pruning (morcos)
|
||||
- #9761 `9828f9a` Use 2 hour grace period for key timestamps in importmulti rescans (ryanofsky)
|
||||
- #9474 `48d7e0d` Mark the minconf parameter to move as ignored (sipa)
|
||||
- #9619 `861cb0c` Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates (luke-jr)
|
||||
- #9773 `9072395` Return errors from importmulti if complete rescans are not successful (ryanofsky)
|
||||
|
||||
### Block and transaction handling
|
||||
- #8391 `37d83bb` Consensus: Remove ISM (NicolasDorier)
|
||||
- #8365 `618c9dd` Treat high-sigop transactions as larger rather than rejecting them (sipa)
|
||||
- #8814 `14b7b3f` wallet, policy: ParameterInteraction: Don't allow 0 fee (MarcoFalke)
|
||||
- #8515 `9bdf526` A few mempool removal optimizations (sipa)
|
||||
- #8448 `101c642` Store mempool and prioritization data to disk (sipa)
|
||||
- #7730 `3c03dc2` Remove priority estimation (morcos)
|
||||
- #9111 `fb15610` Remove unused variable `UNLIKELY_PCT` from fees.h (fanquake)
|
||||
- #9133 `434e683` Unset fImporting for loading mempool (morcos)
|
||||
- #9179 `b9a87b4` Set `DEFAULT_LIMITFREERELAY` = 0 kB/minute (MarcoFalke)
|
||||
- #9239 `3fbf079` Disable fee estimates for 1-block target (morcos)
|
||||
- #7562 `1eef038` Bump transaction version default to 2 (btcdrak)
|
||||
- #9313,#9367 If we don't allow free txs, always send a fee filter (morcos)
|
||||
- #9346 `b99a093` Batch construct batches (sipa)
|
||||
- #9262 `5a70572` Prefer coins that have fewer ancestors, sanity check txn before ATMP (instagibbs)
|
||||
- #9288 `1ce7ede` Fix a bug if the min fee is 0 for FeeFilterRounder (morcos)
|
||||
- #9395 `0fc1c31` Add test for `-walletrejectlongchains` (morcos)
|
||||
- #9107 `7dac1e5` Safer modify new coins (morcos)
|
||||
- #9312 `a72f76c` Increase mempool expiry time to 2 weeks (morcos)
|
||||
- #8610 `c252685` Share unused mempool memory with coincache (sipa)
|
||||
- #9138 `f646275` Improve fee estimation (morcos)
|
||||
- #9408 `46b249e` Allow shutdown during LoadMempool, dump only when necessary (jonasschnelli)
|
||||
- #9310 `8c87f17` Assert FRESH validity in CCoinsViewCache::BatchWrite (ryanofsky)
|
||||
- #7871 `e2e624d` Manual block file pruning (mrbandrews)
|
||||
- #9507 `0595042` Fix use-after-free in CTxMemPool::removeConflicts() (sdaftuar)
|
||||
- #9380 `dd98f04` Separate different uses of minimum fees (morcos)
|
||||
- #9596 `71148b8` bugfix save feeDelta instead of priorityDelta in DumpMempool (morcos)
|
||||
- #9371 `4a1dc35` Notify on removal (morcos)
|
||||
- #9519 `9b4d267` Exclude RBF replacement txs from fee estimation (morcos)
|
||||
- #8606 `e2a1a1e` Fix some locks (sipa)
|
||||
- #8681 `6898213` Performance Regression Fix: Pre-Allocate txChanged vector (JeremyRubin)
|
||||
- #8223 `744d265` c++11: Use std::unique\_ptr for block creation (domob1812)
|
||||
- #9125 `7490ae8` Make CBlock a vector of shared\_ptr of CTransactions (sipa)
|
||||
- #8930 `93566e0` Move orphan processing to ActivateBestChain (TheBlueMatt)
|
||||
- #8580 `46904ee` Make CTransaction actually immutable (sipa)
|
||||
- #9240 `a1dcf2e` Remove txConflicted (morcos)
|
||||
- #8589 `e8cfe1e` Inline CTxInWitness inside CTxIn (sipa)
|
||||
- #9349 `2db4cbc` Make CScript (and prevector) c++11 movable (sipa)
|
||||
- #9252 `ce5c1f4` Release cs\_main before calling ProcessNewBlock, or processing headers (cmpctblock handling) (sdaftuar)
|
||||
- #9283 `869781c` A few more CTransactionRef optimizations (sipa)
|
||||
- #9499 `9c9af5a` Use recent-rejects, orphans, and recently-replaced txn for compact-block-reconstruction (TheBlueMatt)
|
||||
- #9813 `3972a8e` Read/write mempool.dat as a binary (paveljanik)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #8128 `1030fa7` Turn net structures into dumb storage classes (theuni)
|
||||
- #8282 `026c6ed` Feeler connections to increase online addrs in the tried table (EthanHeilman)
|
||||
- #8462 `53f8f22` Move AdvertiseLocal debug output to net category (Mirobit)
|
||||
- #8612 `84decb5` Check for compatibility with download in FindNextBlocksToDownload (sipa)
|
||||
- #8594 `5b2ea29` Do not add random inbound peers to addrman (gmaxwell)
|
||||
- #8085 `6423116` Begin encapsulation (theuni)
|
||||
- #8715 `881d7ea` only delete CConnman if it's been created (theuni)
|
||||
- #8707 `f07424a` Fix maxuploadtarget setting (theuni)
|
||||
- #8661 `d2e4655` Do not set an addr time penalty when a peer advertises itself (gmaxwell)
|
||||
- #8822 `9bc6a6b` Consistent checksum handling (laanwj)
|
||||
- #8936 `1230890` Report NodeId in misbehaving debug (rebroad)
|
||||
- #8968 `3cf496d` Don't hold cs\_main when calling ProcessNewBlock from a cmpctblock (TheBlueMatt)
|
||||
- #9002 `e1d1f57` Make connect=0 disable automatic outbound connections (gmaxwell)
|
||||
- #9050 `fcf61b8` Make a few values immutable, and use deterministic randomness for the localnonce (theuni)
|
||||
- #8969 `3665483` Decouple peer-processing-logic from block-connection-logic (#2) (TheBlueMatt)
|
||||
- #8708 `c8c572f` have CConnman handle message sending (theuni)
|
||||
- #8709 `1e50d22` Allow filterclear messages for enabling TX relay only (rebroad)
|
||||
- #9045 `9f554e0` Hash P2P messages as they are received instead of at process-time (TheBlueMatt)
|
||||
- #9026 `dc6b940` Fix handling of invalid compact blocks (sdaftuar)
|
||||
- #8996 `ab914a6` Network activity toggle (luke-jr)
|
||||
- #9131 `62af164` fNetworkActive is not protected by a lock, use an atomic (jonasschnelli)
|
||||
- #8872 `0c577f2` Remove block-request logic from INV message processing (TheBlueMatt)
|
||||
- #8690 `791b58d` Do not fully sort all nodes for addr relay (sipa)
|
||||
- #9128 `76fec09` Decouple CConnman and message serialization (theuni)
|
||||
- #9226 `3bf06e9` Remove fNetworkNode and pnodeLocalHost (gmaxwell)
|
||||
- #9352 `a7f7651` Attempt reconstruction from all compact block announcements (sdaftuar)
|
||||
- #9319 `a55716a` Break addnode out from the outbound connection limits (gmaxwell)
|
||||
- #9261 `2742568` Add unstored orphans with rejected parents to recentRejects (morcos)
|
||||
- #9441 `8b66bf7` Massive speedup. Net locks overhaul (theuni)
|
||||
- #9375 `3908fc4` Relay compact block messages prior to full block connection (TheBlueMatt)
|
||||
- #9400 `8a445c5` Set peers as HB peers upon full block validation (instagibbs)
|
||||
- #9561 `6696b46` Wake message handling thread when we receive a new block (TheBlueMatt)
|
||||
- #9535 `82274c0` Split CNode::cs\_vSend: message processing and message sending (TheBlueMatt)
|
||||
- #9606 `3f9f962` Consistently use GetTimeMicros() for inactivity checks (sdaftuar)
|
||||
- #9594 `fd70211` Send final alert message to older peers after connecting (gmaxwell)
|
||||
- #9626 `36966a1` Clean up a few CConnman cs\_vNodes/CNode things (TheBlueMatt)
|
||||
- #9609 `4966917` Fix remaining net assertions (theuni)
|
||||
- #9671 `7821db3` Fix super-unlikely race introduced in 236618061a445d2cb11e72 (TheBlueMatt)
|
||||
- #9730 `33f3b21` Remove bitseed.xf2.org form the dns seed list (jonasschnelli)
|
||||
- #9698 `2447c10` Fix socket close race (theuni)
|
||||
- #9708 `a06ede9` Clean up all known races/platform-specific UB at the time PR was opened (TheBlueMatt)
|
||||
- #9715 `b08656e` Disconnect peers which we do not receive VERACKs from within 60 sec (TheBlueMatt)
|
||||
- #9720 `e87ce95` Fix banning and disallow sending messages before receiving verack (theuni)
|
||||
- #9268 `09c4fd1` Fix rounding privacy leak introduced in #9260 (TheBlueMatt)
|
||||
- #9075 `9346f84` Decouple peer-processing-logic from block-connection-logic (#3) (TheBlueMatt)
|
||||
- #8688 `047ded0` Move static global randomizer seeds into CConnman (sipa)
|
||||
- #9289 `d9ae1ce` net: drop boost::thread\_group (theuni)
|
||||
|
||||
### Validation
|
||||
- #9014 `d04aeba` Fix block-connection performance regression (TheBlueMatt)
|
||||
- #9299 `d52ce89` Remove no longer needed check for premature v2 txs (morcos)
|
||||
- #9273 `b68685a` Remove unused `CDiskBlockPos*` argument from ProcessNewBlock (TheBlueMatt)
|
||||
- #8895 `b83264d` Better SigCache Implementation (JeremyRubin)
|
||||
- #9490 `e126d0c` Replace FindLatestBefore used by importmulti with FindEarliestAtLeast (gmaxwell)
|
||||
- #9484 `812714f` Introduce assumevalid setting to skip validation presumed valid scripts (gmaxwell)
|
||||
- #9511 `7884956` Don't overwrite validation state with corruption check (morcos)
|
||||
- #9765 `1e92e04` Harden against mistakes handling invalid blocks (sdaftuar)
|
||||
- #9779 `3c02b95` Update nMinimumChainWork and defaultAssumeValid (gmaxwell)
|
||||
- #8524 `19b0f33` Precompute sighashes (sipa)
|
||||
- #9791 `1825a03` Avoid VLA in hash.h (sipa)
|
||||
|
||||
### Build system
|
||||
|
||||
### Wallet
|
||||
|
||||
0.14.0 Fundrawtransaction change address reuse
|
||||
==============================================
|
||||
|
||||
Before 0.14, `fundrawtransaction` was by default wallet stateless. In almost all cases `fundrawtransaction` does add a change-output to the outputs of the funded transaction. Before 0.14, the used keypool key was never marked as change-address key and directly returned to the keypool (leading to address reuse).
|
||||
Before 0.14, calling `getnewaddress` directly after `fundrawtransaction` did generate the same address as the change-output address.
|
||||
|
||||
Since 0.14, fundrawtransaction does reserve the change-output-key from the keypool by default (optional by setting `reserveChangeKey`, default = `true`)
|
||||
|
||||
Users should also consider using `getrawchangeaddress()` in conjunction with `fundrawtransaction`'s `changeAddress` option.
|
||||
- #8238 `6caf3ee` ZeroMQ 4.1.5 && ZMQ on Windows (fanquake)
|
||||
- #8520 `b40e19c` Remove check for `openssl/ec.h` (laanwj)
|
||||
- #8617 `de07fdc` Include instructions to extract Mac OS X SDK on Linux using 7zip and SleuthKit (luke-jr)
|
||||
- #8566 `7b98895` Easy to use gitian building script (achow101)
|
||||
- #8604 `f256843` build,doc: Update for 0.13.0+ and OpenBSD 5.9 (laanwj)
|
||||
- #8640 `2663e51` depends: Remove Qt46 package (fanquake)
|
||||
- #8645 `8ea4440` Remove unused Qt 4.6 patch (droark)
|
||||
- #8608 `7e9ab95` Install manpages via make install, also add some autogenerated manpages (nomnombtc)
|
||||
- #8781 `ca69ef4` contrib: delete `qt_translations.py` (MarcoFalke)
|
||||
- #8783 `64dc645` share: remove qt/protobuf.pri (MarcoFalke)
|
||||
- #8423 `3166dff` depends: expat 2.2.0, ccache 3.3.1, fontconfig 2.12.1 (fanquake)
|
||||
- #8791 `b694b0d` travis: cross-mac: explicitly enable gui (MarcoFalke)
|
||||
- #8820 `dc64141` depends: Fix Qt compilation with Xcode 8 (fanquake)
|
||||
- #8730 `489a6ab` depends: Add libevent compatibility patch for windows (laanwj)
|
||||
- #8819 `c841816` depends: Boost 1.61.0 (fanquake)
|
||||
- #8826 `f560d95` Do not include `env_win.cc` on non-Windows systems (paveljanik)
|
||||
- #8948 `e077e00` Reorder Windows gitian build order to match Linux (Michagogo)
|
||||
- #8568 `078900d` new var `DIST_CONTRIB` adds useful things for packagers from contrib (nomnombtc)
|
||||
- #9114 `21e6c6b` depends: Set `OSX_MIN_VERSION` to 10.8 (fanquake)
|
||||
- #9140 `018a4eb` Bugfix: Correctly replace generated headers and fail cleanly (luke-jr)
|
||||
- #9156 `a8b2a82` Add compile and link options echo to configure (jonasschnelli)
|
||||
- #9393 `03d85f6` Include cuckoocache header in Makefile (MarcoFalke)
|
||||
- #9420 `bebe369` Fix linker error when configured with --enable-lcov (droark)
|
||||
- #9412 `53442af` Fix 'make deploy' for OSX (jonasschnelli)
|
||||
- #9475 `7014506` Let autoconf detect presence of `EVP_MD_CTX_new` (luke-jr)
|
||||
- #9513 `bbf193f` Fix qt distdir builds (theuni)
|
||||
- #9471 `ca615e6` depends: libevent 2.1.7rc (fanquake)
|
||||
- #9468 `f9117f2` depends: Dependency updates for 0.14.0 (fanquake)
|
||||
- #9469 `01c4576` depends: Qt 5.7.1 (fanquake)
|
||||
- #9574 `5ac6687` depends: Fix QT build on OSX (fanquake)
|
||||
- #9646 `720b579` depends: Fix cross build for qt5.7 (theuni)
|
||||
- #9705 `6a55515` Add options to override BDB cflags/libs (laanwj)
|
||||
- #8249 `4e1567a` Enable (and check for) 64-bit ASLR on Windows (laanwj)
|
||||
- #9758 `476cc47` Selectively suppress deprecation warnings (jonasschnelli)
|
||||
- #9783 `6d61a2b` release: bump gitian descriptors for a new 0.14 package cache (theuni)
|
||||
- #9789 `749fe95` build: add --enable-werror and warn on vla's (theuni)
|
||||
- #9831 `99fd85c` build: force a c++ standard to be specified (theuni)
|
||||
|
||||
### GUI
|
||||
- #8192 `c503863` Remove URLs from About dialog translations (fanquake)
|
||||
- #8540 `36404ae` Fix random segfault when closing "Choose data directory" dialog (laanwj)
|
||||
- #8517 `2468292` Show wallet HD state in statusbar (jonasschnelli)
|
||||
- #8463 `62a5a8a` Remove Priority from coincontrol dialog (MarcoFalke)
|
||||
- #7579 `0606f95` Show network/chain errors in the GUI (jonasschnelli)
|
||||
- #8583 `c19f8a4` Show XTHIN in GUI (rebroad)
|
||||
- #7783 `4335d5a` RPC-Console: support nested commands and simple value queries (jonasschnelli)
|
||||
- #8672 `6052d50` Show transaction size in transaction details window (Cocosoft)
|
||||
- #8777 `fec6af7` WalletModel: Expose disablewallet (MarcoFalke)
|
||||
- #8371 `24f72e9` Add out-of-sync modal info layer (jonasschnelli)
|
||||
- #8885 `b2fec4e` Fix ban from qt console (theuni)
|
||||
- #8821 `bf8e68a` sync-overlay: Don't block during reindex (MarcoFalke)
|
||||
- #8906 `088d1f4` sync-overlay: Don't show progress twice (MarcoFalke)
|
||||
- #8918 `47ace42` Add "Copy URI" to payment request context menu (luke-jr)
|
||||
- #8925 `f628d9a` Display minimum ping in debug window (rebroad)
|
||||
- #8774 `3e942a7` Qt refactors to better abstract wallet access (luke-jr)
|
||||
- #8985 `7b1bfa3` Use pindexBestHeader instead of setBlockIndexCandidates for NotifyHeaderTip() (jonasschnelli)
|
||||
- #8989 `d2143dc` Overhaul smart-fee slider, adjust default confirmation target (jonasschnelli)
|
||||
- #9043 `273bde3` Return useful error message on ATMP failure (MarcoFalke)
|
||||
- #9088 `4e57824` Reduce ambiguity of warning message (rebroad)
|
||||
- #8874 `e984730` Multiple Selection for peer and ban tables (achow101)
|
||||
- #9145 `924745d` Make network disabled icon 50% opaque (MarcoFalke)
|
||||
- #9130 `ac489b2` Mention the new network toggle functionality in the tooltip (paveljanik)
|
||||
- #9218 `4d955fc` Show progress overlay when clicking spinner icon (laanwj)
|
||||
- #9280 `e15660c` Show ModalOverlay by pressing the progress bar, allow hiding (jonasschnelli)
|
||||
- #9296 `fde7d99` Fix missed change to WalletTx structure (morcos)
|
||||
- #9266 `2044e37` Bugfix: Qt/RPCConsole: Put column enum in the right places (luke-jr)
|
||||
- #9255 `9851a84` layoutAboutToChange signal is called layoutAboutToBeChanged (laanwj)
|
||||
- #9330 `47e6a19` Console: add security warning (jonasschnelli)
|
||||
- #9329 `db45ad8` Console: allow empty arguments (jonasschnelli)
|
||||
- #8877 `6dc4c43` Qt RPC console: history sensitive-data filter, and saving input line when browsing history (luke-jr)
|
||||
- #9462 `649cf5f` Do not translate tilde character (MarcoFalke)
|
||||
- #9457 `123ea73` Select more files for translation (MarcoFalke)
|
||||
- #9413 `fd7d8c7` CoinControl: Allow non-wallet owned change addresses (jonasschnelli)
|
||||
- #9461 `b250686` Improve progress display during headers-sync and peer-finding (jonasschnelli)
|
||||
- #9588 `5086452` Use nPowTargetSpacing constant (MarcoFalke)
|
||||
- #9637 `d9e4d1d` Fix transaction details output-index to reflect vout index (jonasschnelli)
|
||||
- #9718 `36f9d3a` Qt/Intro: Various fixes (luke-jr)
|
||||
- #9735 `ec66d06` devtools: Handle Qt formatting characters edge-case in update-translations.py (laanwj)
|
||||
- #9755 `a441db0` Bugfix: Qt/Options: Restore persistent "restart required" notice (luke-jr)
|
||||
- #9817 `7d75a5a` Fix segfault crash when shutdown the GUI in disablewallet mode (jonasschnelli)
|
||||
|
||||
### Tests
|
||||
### Wallet
|
||||
- #8152 `b9c1cd8` Remove `CWalletDB*` parameter from CWallet::AddToWallet (pstratem)
|
||||
- #8432 `c7e05b3` Make CWallet::fFileBacked private (pstratem)
|
||||
- #8445 `f916700` Move CWallet::setKeyPool to private section of CWallet (pstratem)
|
||||
- #8564 `0168019` Remove unused code/conditions in ReadAtCursor (jonasschnelli)
|
||||
- #8601 `37ac678` Add option to opt into full-RBF when sending funds (rebase, original by petertodd) (laanwj)
|
||||
- #8494 `a5b20ed` init, wallet: ParameterInteraction() iff wallet enabled (MarcoFalke)
|
||||
- #8760 `02ac669` init: Get rid of some `ENABLE_WALLET` (MarcoFalke)
|
||||
- #8696 `a1f8d3e` Wallet: Remove last external reference to CWalletDB (pstratem)
|
||||
- #8768 `886e8c9` init: Get rid of fDisableWallet (MarcoFalke)
|
||||
- #8486 `ab0b411` Add high transaction fee warnings (MarcoFalke)
|
||||
- #8851 `940748b` Move key derivation logic from GenerateNewKey to DeriveNewChildKey (pstratem)
|
||||
- #8287 `e10af96` Set fLimitFree = true (MarcoFalke)
|
||||
- #8928 `c587577` Fix init segfault where InitLoadWallet() calls ATMP before genesis (TheBlueMatt)
|
||||
- #7551 `f2d7056` Add importmulti RPC call (pedrobranco)
|
||||
- #9016 `0dcb888` Return useful error message on ATMP failure (instagibbs)
|
||||
- #8753 `f8723d2` Locked memory manager (laanwj)
|
||||
- #8828 `a4fd8df` Move CWalletDB::ReorderTransactions to CWallet (pstratem)
|
||||
- #8977 `6a1343f` Refactor wallet/init interaction (Reaccept wtx, flush thread) (jonasschnelli)
|
||||
- #9036 `ed0cc50` Change default confirm target from 2 to 6 (laanwj)
|
||||
- #9071 `d1871da` Declare wallet.h functions inline (sipa)
|
||||
- #9132 `f54e460` Make strWalletFile const (jonasschnelli)
|
||||
- #9141 `5ea5e04` Remove unnecessary calls to CheckFinalTx (jonasschnelli)
|
||||
- #9165 `c01f16a` SendMoney: use already-calculated balance (instagibbs)
|
||||
- #9311 `a336d13` Flush wallet after abandontransaction (morcos)
|
||||
- #8717 `38e4887` Addition of ImmatureCreditCached to MarkDirty() (spencerlievens)
|
||||
- #9446 `510c0d9` SetMerkleBranch: remove unused code, remove cs\_main lock requirement (jonasschnelli)
|
||||
- #8776 `2a524b8` Wallet refactoring leading up to multiwallet (luke-jr)
|
||||
- #9465 `a7d55c9` Do not perform ECDSA signing in the fee calculation inner loop (gmaxwell)
|
||||
- #9404 `12e3112` Smarter coordination of change and fee in CreateTransaction (morcos)
|
||||
- #9377 `fb75cd0` fundrawtransaction: Keep change-output keys by default, make it optional (jonasschnelli)
|
||||
- #9578 `923dc44` Add missing mempool lock for CalculateMemPoolAncestors (TheBlueMatt)
|
||||
- #9227 `02464da` Make nWalletDBUpdated atomic to avoid a potential race (pstratem)
|
||||
- #9764 `f8af89a` Prevent "overrides a member function but is not marked 'override'" warnings (laanwj)
|
||||
- #9771 `e43a585` Add missing cs\_wallet lock that triggers new lock held assertion (ryanofsky)
|
||||
- #9316 `3097ea4` Disable free transactions when relay is disabled (MarcoFalke)
|
||||
- #9615 `d2c9e4d` Wallet incremental fee (morcos)
|
||||
- #9760 `40c754c` Remove importmulti always-true check (ryanofsky)
|
||||
|
||||
### Tests and QA
|
||||
- #8270 `6e5e5ab` Tests: Use portable #! in python scripts (/usr/bin/env) (ChoHag)
|
||||
- #8534,#8504 Remove java comparison tool (laanwj,MarcoFalke)
|
||||
- #8482 `740cff5` Use single cache dir for chains (MarcoFalke)
|
||||
- #8450 `21857d2` Replace `rpc_wallet_tests.cpp` with python RPC unit tests (pstratem)
|
||||
- #8671 `ddc3080` Minimal fix to slow prevector tests as stopgap measure (JeremyRubin)
|
||||
- #8680 `666eaf0` Address Travis spurious failures (theuni)
|
||||
- #8789 `e31a43c` pull-tester: Only print output when failed (MarcoFalke)
|
||||
- #8810 `14e8f99` tests: Add exception error message for JSONRPCException (laanwj)
|
||||
- #8830 `ef0801b` test: Add option to run bitcoin-util-test.py manually (jnewbery)
|
||||
- #8881 `e66cc1d` Add some verbose logging to bitcoin-util-test.py (jnewbery)
|
||||
- #8922 `0329511` Send segwit-encoded blocktxn messages in p2p-compactblocks (TheBlueMatt)
|
||||
- #8873 `74dc388` Add microbenchmarks to profile more code paths (ryanofsky)
|
||||
- #9032 `6a8be7b` test: Add format-dependent comparison to bctest (laanwj)
|
||||
- #9023 `774db92` Add logging to bitcoin-util-test.py (jnewbery)
|
||||
- #9065 `c9bdf9a` Merge `doc/unit-tests.md` into `src/test/README.md` (laanwj)
|
||||
- #9069 `ed64bce` Clean up bctest.py and bitcoin-util-test.py (jnewbery)
|
||||
- #9095 `b8f43e3` test: Fix test\_random includes (MarcoFalke)
|
||||
- #8894 `faec09b` Testing: Include fRelay in mininode version messages (jnewbery)
|
||||
- #9097 `e536499` Rework `sync_*` and preciousblock.py (MarcoFalke)
|
||||
- #9049 `71bc39e` Remove duplicatable duplicate-input check from CheckTransaction (TheBlueMatt)
|
||||
- #9136 `b422913` sync\_blocks cleanup (ryanofsky)
|
||||
- #9151 `4333b1c` proxy\_test: Calculate hardcoded port numbers (MarcoFalke)
|
||||
- #9206 `e662d28` Make test constant consistent with consensus.h (btcdrak)
|
||||
- #9139 `0de7fd3` Change sync\_blocks to pick smarter maxheight (on top of #9196) (ryanofsky)
|
||||
- #9100 `97ec6e5` tx\_valid: re-order inputs to how they are encoded (dcousens)
|
||||
- #9202 `e56cf67` bench: Add support for measuring CPU cycles (laanwj)
|
||||
- #9223 `5412c08` unification of Bloom filter representation (s-matthew-english)
|
||||
- #9257 `d7ba4a2` Dump debug logs on travis failures (sdaftuar)
|
||||
- #9221 `9e4bb31` Get rid of duplicate code (MarcoFalke)
|
||||
- #9274 `919db03` Use cached utxo set to fix performance regression (MarcoFalke)
|
||||
- #9276 `ea33f19` Some minor testing cleanups (morcos)
|
||||
- #9291 `8601784` Remove mapOrphanTransactionsByPrev from DoS\_tests (sipa)
|
||||
- #9309 `76fcd9d` Wallet needs to stay unlocked for whole test (morcos)
|
||||
- #9172 `5bc209c` Resurrect pstratem's "Simple fuzzing framework" (laanwj)
|
||||
- #9331 `c6fd923` Add test for rescan feature of wallet key import RPCs (ryanofsky)
|
||||
- #9354 `b416095` Make fuzzer actually test CTxOutCompressor (sipa)
|
||||
- #9390,#9416 travis: make distdir (MarcoFalke)
|
||||
- #9308 `0698639` test: Add CCoinsViewCache Access/Modify/Write tests (ryanofsky)
|
||||
- #9406 `0f921e6` Re-enable a blank v1 Tx JSON test (droark)
|
||||
- #9435 `dbc8a8c` Removed unused variable in test, fixing warning (ryanofsky)
|
||||
- #9436 `dce853e` test: Include tx data in `EXTRA_DIST` (MarcoFalke)
|
||||
- #9525 `02e5308` test: Include tx data in `EXTRA_DIST` (MarcoFalke)
|
||||
- #9498 `054d664` Basic CCheckQueue Benchmarks (JeremyRubin)
|
||||
- #9554 `0b96abc` test: Avoid potential NULL pointer dereference in `addrman_tests.cpp` (practicalswift)
|
||||
- #9628 `f895023` Increase a sync\_blocks timeout in pruning.py (sdaftuar)
|
||||
- #9638 `a7ea2f8` Actually test assertions in pruning.py (MarcoFalke)
|
||||
- #9647 `e99f0d7` Skip RAII event tests if libevent is built without `event_set_mem_functions` (luke-jr)
|
||||
- #9691 `fc67cd2` Init ECC context for `test_bitcoin_fuzzy` (gmaxwell)
|
||||
- #9712 `d304fef` bench: Fix initialization order in registration (laanwj)
|
||||
- #9707 `b860915` Fix RPC failure testing (jnewbery)
|
||||
- #9269 `43e8150` Align struct COrphan definition (sipa)
|
||||
- #9820 `599c69a` Fix pruning test broken by 2 hour manual prune window (ryanofsky)
|
||||
- #9824 `260c71c` qa: Check return code when stopping nodes (MarcoFalke)
|
||||
- #9875 `50953c2` tests: Fix dangling pwalletMain pointer in wallet tests (laanwj)
|
||||
- #9839 `eddaa6b` [qa] Make import-rescan.py watchonly check reliable (ryanofsky)
|
||||
|
||||
### Documentation
|
||||
- #8332 `806b9e7` Clarify witness branches in transaction.h serialization (dcousens)
|
||||
- #8935 `0306978` Documentation: Building on Windows with WSL (pooleja)
|
||||
- #9144 `c98f6b3` Correct waitforblockheight example help text (fanquake)
|
||||
- #9407 `041331e` Added missing colons in when running help command (anditto)
|
||||
- #9378 `870cd2b` Add documentation for CWalletTx::fFromMe member (ryanofsky)
|
||||
- #9297 `0b73807` Various RPC help outputs updated (Mirobit)
|
||||
- #9613 `07421cf` Clarify getbalance help string to explain interaction with bumpfee (ryanofsky)
|
||||
- #9663 `e30d928` Clarify listunspent amount description (instagibbs)
|
||||
- #9396 `d65a13b` Updated listsinceblock rpc documentation (accraze)
|
||||
- #8747 `ce43630` rpc: Fix transaction size comments and RPC help text (jnewbery)
|
||||
- #8058 `bbd9740` Doc: Add issue template (AmirAbrams)
|
||||
- #8567 `85d4e21` Add default port numbers to REST doc (djpnewton)
|
||||
- #8624 `89de153` build: Mention curl (MarcoFalke)
|
||||
- #8786 `9da7366` Mandatory copyright agreement (achow101)
|
||||
- #8823 `7b05af6` Add privacy recommendation when running hidden service (laanwj)
|
||||
- #9433 `caa2f10` Update the Windows build notes (droark)
|
||||
- #8879 `f928050` Rework docs (MarcoFalke)
|
||||
- #8887 `61d191f` Improve GitHub issue template (fanquake)
|
||||
- #8787 `279bbad` Add missing autogen to example builds (AmirAbrams)
|
||||
- #8892 `d270c30` Add build instructions for FreeBSD (laanwj)
|
||||
- #8890 `c71a654` Update Doxygen configuration file (fanquake)
|
||||
- #9207 `fa1f944` Move comments above bash command in build-unix (AmirAbrams)
|
||||
- #9219 `c4522e7` Improve windows build instructions using Linux subsystem (laanwj)
|
||||
- #8954 `932d02a` contrib: Add README for pgp keys (MarcoFalke)
|
||||
- #9093 `2fae5b9` release-process: Mention GitHub release and archived release notes (MarcoFalke)
|
||||
- #8743 `bae178f` Remove old manpages from contrib/debian in favour of doc/man (fanquake)
|
||||
- #9550 `4105cb6` Trim down the XP notice and say more about what we support (gmaxwell)
|
||||
- #9246 `9851498` Developer docs about existing subtrees (gmaxwell)
|
||||
- #9401 `c2ea1e6` Make rpcauth help message clearer, add example in example .conf (instagibbs)
|
||||
- #9022,#9033 Document dropping OS X 10.7 support (fanquake, MarcoFalke)
|
||||
- #8771 `bc9e3ab` contributing: Mention not to open several pulls (luke-jr)
|
||||
- #8852 `7b784cc` Mention Gitian building script in doc (Laudaa) (laanwj)
|
||||
- #8915 `03dd707` Add copyright/patent issues to possible NACK reasons (petertodd)
|
||||
- #8965 `23e03f8` Mention that PPA doesn't support Debian (anduck)
|
||||
- #9115 `bfc7aad` Mention reporting security issues responsibly (paveljanik)
|
||||
- #9840 `08e0690` Update sendfrom RPC help to correct coin selection misconception (ryanofsky)
|
||||
- #9865 `289204f` Change bitcoin address in RPC help message (marijnfs)
|
||||
|
||||
### Miscellaneous
|
||||
- #8274 `7a2d402` util: Update tinyformat (laanwj)
|
||||
- #8291 `5cac8b1` util: CopyrightHolders: Check for untranslated substitution (MarcoFalke)
|
||||
- #8557 `44691f3` contrib: Rework verifybinaries (MarcoFalke)
|
||||
- #8621 `e8ed6eb` contrib: python: Don't use shell=True (MarcoFalke)
|
||||
- #8813 `fb24d7e` bitcoind: Daemonize using daemon(3) (laanwj)
|
||||
- #9004 `67728a3` Clarify `listenonion` (unsystemizer)
|
||||
- #8674 `bae81b8` tools for analyzing, updating and adding copyright headers in source files (isle2983)
|
||||
- #8976 `8c6218a` libconsensus: Add input validation of flags (laanwj)
|
||||
- #9112 `46027e8` Avoid ugly exception in log on unknown inv type (laanwj)
|
||||
- #8837 `2108911` Allow bitcoin-tx to parse partial transactions (jnewbery)
|
||||
- #9204 `74ced54` Clarify CreateTransaction error messages (instagibbs)
|
||||
- #9265 `31bcc66` bitcoin-cli: Make error message less confusing (laanwj)
|
||||
- #9303 `72bf1b3` Update comments in ctaes (sipa)
|
||||
- #9417 `c4b7d4f` Do not evaluate hidden LogPrint arguments (sipa)
|
||||
- #9506 `593a00c` RFC: Improve style for if indentation (sipa)
|
||||
- #8883 `d5d4ad8` Add all standard TXO types to bitcoin-tx (jnewbery)
|
||||
- #9531 `23281a4` Release notes for estimation changes (morcos)
|
||||
- #9486 `f62bc10` Make peer=%d log prints consistent (TheBlueMatt)
|
||||
- #9552 `41cb05c` Add IPv6 support to qos.sh (jamesmacwhite)
|
||||
- #9542 `e9e7993` Docs: Update CONTRIBUTING.md (jnewbery)
|
||||
- #9649 `53ab12d` Remove unused clang format dev script (MarcoFalke)
|
||||
- #9625 `77bd8c4` Increase minimum debug.log size to 10MB after shrink (morcos)
|
||||
- #9070 `7b22e50` Lockedpool fixes (kazcw)
|
||||
- #8779 `7008e28` contrib: Delete spendfrom (MarcoFalke)
|
||||
- #9587,#8793,#9496,#8191,#8109,#8655,#8472,#8677,#8981,#9124 Avoid shadowing of variables (paveljanik)
|
||||
- #9063 `f2a6e82` Use deprecated `MAP_ANON` if `MAP_ANONYMOUS` is not defined (paveljanik)
|
||||
- #9060 `1107653` Fix bloom filter init to isEmpty = true (robmcl4)
|
||||
- #8613 `613bda4` LevelDB 1.19 (sipa)
|
||||
- #9225 `5488514` Fix some benign races (TheBlueMatt)
|
||||
- #8736 `5fa7b07` base58: Improve DecodeBase58 performance (wjx)
|
||||
- #9039 `e81df49` Various serialization simplifcations and optimizations (sipa)
|
||||
- #9010 `a143b88` Split up AppInit2 into multiple phases, daemonize after datadir lock errors (laanwj)
|
||||
- #9230 `c79e52a` Fix some benign races in timestamp logging (TheBlueMatt)
|
||||
- #9183,#9260 Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp}) (TheBlueMatt)
|
||||
- #9236 `7f72568` Fix races for strMiscWarning and `fLargeWork*Found`, make QT runawayException use GetWarnings (gmaxwell)
|
||||
- #9243 `7aa7004` Clean up mapArgs and mapMultiArgs Usage (TheBlueMatt)
|
||||
- #9387 `cfe41d7` RAII of libevent stuff using unique ptrs with deleters (kallewoof)
|
||||
- #9472 `fac0f30` Disentangle progress estimation from checkpoints and update it (sipa)
|
||||
- #9512 `6012967` Fix various things -fsanitize complains about (sipa)
|
||||
- #9373,#9580 Various linearization script issues (droark)
|
||||
- #9674 `dd163f5` Lock debugging: Always enforce strict lock ordering (try or not) (TheBlueMatt)
|
||||
- #8453,#9334 Update to latest libsecp256k1 (laanwj,sipa)
|
||||
- #9656 `7c93952` Check verify-commits on pushes to master (TheBlueMatt)
|
||||
- #9679 `a351162` Access WorkQueue::running only within the cs lock (TheBlueMatt)
|
||||
- #9777 `8dee822` Handle unusual maxsigcachesize gracefully (jnewbery)
|
||||
- #8863,#8807 univalue: Pull subtree (MarcoFalke)
|
||||
- #9798 `e22c067` Fix Issue #9775 (Check returned value of fopen) (kirit93)
|
||||
- #9856 `69832aa` Terminate immediately when allocation fails (theuni)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- accraze
|
||||
- adlawren
|
||||
- Alex Morcos
|
||||
- Alexey Vesnin
|
||||
- Amir Abrams
|
||||
- Anders Øyvind Urke-Sætre
|
||||
- Anditto Heristyo
|
||||
- Andrew Chow
|
||||
- anduck
|
||||
- Anthony Towns
|
||||
- Brian Deery
|
||||
- BtcDrak
|
||||
- Chris Moore
|
||||
- Chris Stewart
|
||||
- Christian Barcenas
|
||||
- Christian Decker
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- CryptAxe
|
||||
- CryptoVote
|
||||
- Dagur Valberg Johannsson
|
||||
- Daniel Cousens
|
||||
- Daniel Kraft
|
||||
- Derek Miller
|
||||
- djpnewton
|
||||
- Don Patterson
|
||||
- Doug
|
||||
- Douglas Roark
|
||||
- Ethan Heilman
|
||||
- fsb4000
|
||||
- Gaurav Rana
|
||||
- Geoffrey Tsui
|
||||
- Greg Walker
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- Hampus Sjöberg
|
||||
- isle2983
|
||||
- Ivo van der Sangen
|
||||
- James White
|
||||
- Jameson Lopp
|
||||
- Jeremy Rubin
|
||||
- Jiaxing Wang
|
||||
- jnewbery
|
||||
- John Newbery
|
||||
- Johnson Lau
|
||||
- Jon Lund Steffensen
|
||||
- Jonas Schnelli
|
||||
- jonnynewbs
|
||||
- Jorge Timón
|
||||
- Justin Camarena
|
||||
- Karl-Johan Alm
|
||||
- Kaz Wesley
|
||||
- kirit93
|
||||
- Koki Takahashi
|
||||
- Lauda
|
||||
- leijurv
|
||||
- lizhi
|
||||
- Luke Dashjr
|
||||
- maiiz
|
||||
- MarcoFalke
|
||||
- Marijn Stollenga
|
||||
- Marty Jones
|
||||
- Masahiko Hyuga
|
||||
- Matt Corallo
|
||||
- Matthew King
|
||||
- matthias
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Michael Rotarius
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Nicolas DORIER
|
||||
- nomnombtc
|
||||
- Patrick Strateman
|
||||
- Pavel Janík
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- poole\_party
|
||||
- practicalswift
|
||||
- R E Broadley
|
||||
- randy-waterhouse
|
||||
- Richard Kiss
|
||||
- Robert McLaughlin
|
||||
- rodasmith
|
||||
- Russell Yanofsky
|
||||
- S. Matthew English
|
||||
- Sev
|
||||
- Spencer Lievens
|
||||
- Stanislas Marion
|
||||
- Steven
|
||||
- Suhas Daftuar
|
||||
- Thomas Snider
|
||||
- UdjinM6
|
||||
- unsystemizer
|
||||
- whythat
|
||||
- Will Binns
|
||||
- Wladimir J. van der Laan
|
||||
- wodry
|
||||
- Zak Wilcox
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
@@ -469,7 +469,9 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||
# locked wallet test
|
||||
self.nodes[1].encryptwallet("test")
|
||||
self.nodes.pop(1)
|
||||
stop_nodes(self.nodes)
|
||||
stop_node(self.nodes[0], 0)
|
||||
stop_node(self.nodes[1], 2)
|
||||
stop_node(self.nodes[2], 3)
|
||||
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||
# This test is not meant to test fee estimation and we'd like
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
"""Test rescan behavior of importaddress, importpubkey, importprivkey, and
|
||||
importmulti RPCs with different types of keys and rescan options.
|
||||
|
||||
In the first part of the test, node 0 creates an address for each type of
|
||||
import RPC call and sends BTC to it. Then other nodes import the addresses,
|
||||
and the test makes listtransactions and getbalance calls to confirm that the
|
||||
importing node either did or did not execute rescans picking up the send
|
||||
transactions.
|
||||
In the first part of the test, node 1 creates an address for each type of
|
||||
import RPC call and node 0 sends BTC to it. Then other nodes import the
|
||||
addresses, and the test makes listtransactions and getbalance calls to confirm
|
||||
that the importing node either did or did not execute rescans picking up the
|
||||
send transactions.
|
||||
|
||||
In the second part of the test, node 0 sends more BTC to each address, and the
|
||||
test makes more listtransactions and getbalance calls to confirm that the
|
||||
@@ -81,6 +81,12 @@ class Variant(collections.namedtuple("Variant", "call data rescan prune")):
|
||||
assert_equal(tx["txid"], txid)
|
||||
assert_equal(tx["confirmations"], confirmations)
|
||||
assert_equal("trusted" not in tx, True)
|
||||
# Verify the transaction is correctly marked watchonly depending on
|
||||
# whether the transaction pays to an imported public key or
|
||||
# imported private key. The test setup ensures that transaction
|
||||
# inputs will not be from watchonly keys (important because
|
||||
# involvesWatchonly will be true if either the transaction output
|
||||
# or inputs are watchonly).
|
||||
if self.data != Data.priv:
|
||||
assert_equal(tx["involvesWatchonly"], True)
|
||||
else:
|
||||
@@ -106,11 +112,11 @@ RESCAN_WINDOW = 2 * 60 * 60
|
||||
class ImportRescanTest(BitcoinTestFramework):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.num_nodes = 1 + len(IMPORT_NODES)
|
||||
self.num_nodes = 2 + len(IMPORT_NODES)
|
||||
|
||||
def setup_network(self):
|
||||
extra_args = [["-debug=1"] for _ in range(self.num_nodes)]
|
||||
for i, import_node in enumerate(IMPORT_NODES, 1):
|
||||
for i, import_node in enumerate(IMPORT_NODES, 2):
|
||||
if import_node.prune:
|
||||
extra_args[i] += ["-prune=1"]
|
||||
|
||||
@@ -123,9 +129,9 @@ class ImportRescanTest(BitcoinTestFramework):
|
||||
# each possible type of wallet import RPC.
|
||||
for i, variant in enumerate(IMPORT_VARIANTS):
|
||||
variant.label = "label {} {}".format(i, variant)
|
||||
variant.address = self.nodes[0].validateaddress(self.nodes[0].getnewaddress(variant.label))
|
||||
variant.key = self.nodes[0].dumpprivkey(variant.address["address"])
|
||||
variant.initial_amount = 25 - (i + 1) / 4.0
|
||||
variant.address = self.nodes[1].validateaddress(self.nodes[1].getnewaddress(variant.label))
|
||||
variant.key = self.nodes[1].dumpprivkey(variant.address["address"])
|
||||
variant.initial_amount = 10 - (i + 1) / 4.0
|
||||
variant.initial_txid = self.nodes[0].sendtoaddress(variant.address["address"], variant.initial_amount)
|
||||
|
||||
# Generate a block containing the initial transactions, then another
|
||||
@@ -142,7 +148,7 @@ class ImportRescanTest(BitcoinTestFramework):
|
||||
for variant in IMPORT_VARIANTS:
|
||||
variant.expect_disabled = variant.rescan == Rescan.yes and variant.prune and variant.call == Call.single
|
||||
expect_rescan = variant.rescan == Rescan.yes and not variant.expect_disabled
|
||||
variant.node = self.nodes[1 + IMPORT_NODES.index(ImportNode(variant.prune, expect_rescan))]
|
||||
variant.node = self.nodes[2 + IMPORT_NODES.index(ImportNode(variant.prune, expect_rescan))]
|
||||
variant.do_import(timestamp)
|
||||
if expect_rescan:
|
||||
variant.expected_balance = variant.initial_amount
|
||||
@@ -156,7 +162,7 @@ class ImportRescanTest(BitcoinTestFramework):
|
||||
# Create new transactions sending to each address.
|
||||
fee = self.nodes[0].getnetworkinfo()["relayfee"]
|
||||
for i, variant in enumerate(IMPORT_VARIANTS):
|
||||
variant.sent_amount = 25 - (2 * i + 1) / 8.0
|
||||
variant.sent_amount = 10 - (2 * i + 1) / 8.0
|
||||
variant.sent_txid = self.nodes[0].sendtoaddress(variant.address["address"], variant.sent_amount)
|
||||
|
||||
# Generate a block containing the new transactions.
|
||||
|
||||
@@ -18,6 +18,11 @@ import os
|
||||
|
||||
MIN_BLOCKS_TO_KEEP = 288
|
||||
|
||||
# Rescans start at the earliest block up to 2 hours before a key timestamp, so
|
||||
# the manual prune RPC avoids pruning blocks in the same window to be
|
||||
# compatible with pruning based on key creation time.
|
||||
RESCAN_WINDOW = 2 * 60 * 60
|
||||
|
||||
|
||||
def calc_usage(blockdir):
|
||||
return sum(os.path.getsize(blockdir+f) for f in os.listdir(blockdir) if os.path.isfile(blockdir+f)) / (1024. * 1024.)
|
||||
@@ -239,7 +244,7 @@ class PruneTest(BitcoinTestFramework):
|
||||
|
||||
def height(index):
|
||||
if use_timestamp:
|
||||
return node.getblockheader(node.getblockhash(index))["time"]
|
||||
return node.getblockheader(node.getblockhash(index))["time"] + RESCAN_WINDOW
|
||||
else:
|
||||
return index
|
||||
|
||||
|
||||
@@ -35,11 +35,9 @@ class RPCBindTest(BitcoinTestFramework):
|
||||
base_args += ['-rpcallowip=' + x for x in allow_ips]
|
||||
binds = ['-rpcbind='+addr for addr in addresses]
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, [base_args + binds], connect_to)
|
||||
try:
|
||||
pid = bitcoind_processes[0].pid
|
||||
assert_equal(set(get_bind_addrs(pid)), set(expected))
|
||||
finally:
|
||||
stop_nodes(self.nodes)
|
||||
pid = bitcoind_processes[0].pid
|
||||
assert_equal(set(get_bind_addrs(pid)), set(expected))
|
||||
stop_nodes(self.nodes)
|
||||
|
||||
def run_allowip_test(self, allow_ips, rpchost, rpcport):
|
||||
'''
|
||||
@@ -48,13 +46,10 @@ class RPCBindTest(BitcoinTestFramework):
|
||||
'''
|
||||
base_args = ['-disablewallet', '-nolisten'] + ['-rpcallowip='+x for x in allow_ips]
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, [base_args])
|
||||
try:
|
||||
# connect to node through non-loopback interface
|
||||
node = get_rpc_proxy(rpc_url(0, "%s:%d" % (rpchost, rpcport)), 0)
|
||||
node.getnetworkinfo()
|
||||
finally:
|
||||
node = None # make sure connection will be garbage collected and closed
|
||||
stop_nodes(self.nodes)
|
||||
# connect to node through non-loopback interface
|
||||
node = get_rpc_proxy(rpc_url(0, "%s:%d" % (rpchost, rpcport)), 0)
|
||||
node.getnetworkinfo()
|
||||
stop_nodes(self.nodes)
|
||||
|
||||
def run_test(self):
|
||||
# due to OS-specific network stats queries, this test works only on Linux
|
||||
|
||||
@@ -130,10 +130,14 @@ class SegWitTest(BitcoinTestFramework):
|
||||
print("Verify sigops are counted in GBT with pre-BIP141 rules before the fork")
|
||||
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
|
||||
tmpl = self.nodes[0].getblocktemplate({})
|
||||
assert(tmpl['sizelimit'] == 1000000)
|
||||
assert('weightlimit' not in tmpl)
|
||||
assert(tmpl['sigoplimit'] == 20000)
|
||||
assert(tmpl['transactions'][0]['hash'] == txid)
|
||||
assert(tmpl['transactions'][0]['sigops'] == 2)
|
||||
tmpl = self.nodes[0].getblocktemplate({'rules':['segwit']})
|
||||
assert(tmpl['sizelimit'] == 1000000)
|
||||
assert('weightlimit' not in tmpl)
|
||||
assert(tmpl['sigoplimit'] == 20000)
|
||||
assert(tmpl['transactions'][0]['hash'] == txid)
|
||||
assert(tmpl['transactions'][0]['sigops'] == 2)
|
||||
@@ -241,6 +245,8 @@ class SegWitTest(BitcoinTestFramework):
|
||||
print("Verify sigops are counted in GBT with BIP141 rules after the fork")
|
||||
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
|
||||
tmpl = self.nodes[0].getblocktemplate({'rules':['segwit']})
|
||||
assert(tmpl['sizelimit'] >= 3999577) # actual maximum size is lower due to minimum mandatory non-witness data
|
||||
assert(tmpl['weightlimit'] == 4000000)
|
||||
assert(tmpl['sigoplimit'] == 80000)
|
||||
assert(tmpl['transactions'][0]['txid'] == txid)
|
||||
assert(tmpl['transactions'][0]['sigops'] == 8)
|
||||
@@ -250,6 +256,8 @@ class SegWitTest(BitcoinTestFramework):
|
||||
try:
|
||||
tmpl = self.nodes[0].getblocktemplate({})
|
||||
assert(len(tmpl['transactions']) == 1) # Doesn't include witness tx
|
||||
assert(tmpl['sizelimit'] == 1000000)
|
||||
assert('weightlimit' not in tmpl)
|
||||
assert(tmpl['sigoplimit'] == 20000)
|
||||
assert(tmpl['transactions'][0]['hash'] == txid)
|
||||
assert(tmpl['transactions'][0]['sigops'] == 2)
|
||||
|
||||
@@ -375,28 +375,19 @@ def stop_node(node, i):
|
||||
node.stop()
|
||||
except http.client.CannotSendRequest as e:
|
||||
print("WARN: Unable to stop node: " + repr(e))
|
||||
bitcoind_processes[i].wait(timeout=BITCOIND_PROC_WAIT_TIMEOUT)
|
||||
return_code = bitcoind_processes[i].wait(timeout=BITCOIND_PROC_WAIT_TIMEOUT)
|
||||
assert_equal(return_code, 0)
|
||||
del bitcoind_processes[i]
|
||||
|
||||
def stop_nodes(nodes):
|
||||
for node in nodes:
|
||||
try:
|
||||
node.stop()
|
||||
except http.client.CannotSendRequest as e:
|
||||
print("WARN: Unable to stop node: " + repr(e))
|
||||
del nodes[:] # Emptying array closes connections as a side effect
|
||||
wait_bitcoinds()
|
||||
for i, node in enumerate(nodes):
|
||||
stop_node(node, i)
|
||||
assert not bitcoind_processes.values() # All connections must be gone now
|
||||
|
||||
def set_node_times(nodes, t):
|
||||
for node in nodes:
|
||||
node.setmocktime(t)
|
||||
|
||||
def wait_bitcoinds():
|
||||
# Wait for all bitcoinds to cleanly exit
|
||||
for bitcoind in bitcoind_processes.values():
|
||||
bitcoind.wait(timeout=BITCOIND_PROC_WAIT_TIMEOUT)
|
||||
bitcoind_processes.clear()
|
||||
|
||||
def connect_nodes(from_connection, node_num):
|
||||
ip_port = "127.0.0.1:"+str(p2p_port(node_num))
|
||||
from_connection.addnode(ip_port, "onetry")
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
DIST_SUBDIRS = secp256k1 univalue
|
||||
|
||||
AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS)
|
||||
AM_CXXFLAGS = $(HARDENED_CXXFLAGS)
|
||||
AM_CXXFLAGS = $(HARDENED_CXXFLAGS) $(ERROR_CXXFLAGS)
|
||||
AM_CPPFLAGS = $(HARDENED_CPPFLAGS)
|
||||
EXTRA_LIBRARIES =
|
||||
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
|
||||
//! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it
|
||||
#define CLIENT_VERSION_MAJOR 0
|
||||
#define CLIENT_VERSION_MINOR 13
|
||||
#define CLIENT_VERSION_REVISION 99
|
||||
#define CLIENT_VERSION_MINOR 14
|
||||
#define CLIENT_VERSION_REVISION 0
|
||||
#define CLIENT_VERSION_BUILD 0
|
||||
|
||||
//! Set to true for release, false for prerelease or test build
|
||||
#define CLIENT_VERSION_IS_RELEASE false
|
||||
#define CLIENT_VERSION_IS_RELEASE true
|
||||
|
||||
/**
|
||||
* Copyright year (2009-this)
|
||||
|
||||
@@ -25,9 +25,9 @@ public:
|
||||
static const size_t OUTPUT_SIZE = CSHA256::OUTPUT_SIZE;
|
||||
|
||||
void Finalize(unsigned char hash[OUTPUT_SIZE]) {
|
||||
unsigned char buf[sha.OUTPUT_SIZE];
|
||||
unsigned char buf[CSHA256::OUTPUT_SIZE];
|
||||
sha.Finalize(buf);
|
||||
sha.Reset().Write(buf, sha.OUTPUT_SIZE).Finalize(hash);
|
||||
sha.Reset().Write(buf, CSHA256::OUTPUT_SIZE).Finalize(hash);
|
||||
}
|
||||
|
||||
CHash256& Write(const unsigned char *data, size_t len) {
|
||||
@@ -49,9 +49,9 @@ public:
|
||||
static const size_t OUTPUT_SIZE = CRIPEMD160::OUTPUT_SIZE;
|
||||
|
||||
void Finalize(unsigned char hash[OUTPUT_SIZE]) {
|
||||
unsigned char buf[sha.OUTPUT_SIZE];
|
||||
unsigned char buf[CSHA256::OUTPUT_SIZE];
|
||||
sha.Finalize(buf);
|
||||
CRIPEMD160().Write(buf, sha.OUTPUT_SIZE).Finalize(hash);
|
||||
CRIPEMD160().Write(buf, CSHA256::OUTPUT_SIZE).Finalize(hash);
|
||||
}
|
||||
|
||||
CHash160& Write(const unsigned char *data, size_t len) {
|
||||
|
||||
@@ -112,7 +112,7 @@ static bool multiUserAuthorized(std::string strUserPass)
|
||||
std::string strSalt = vFields[1];
|
||||
std::string strHash = vFields[2];
|
||||
|
||||
unsigned int KEY_SIZE = 32;
|
||||
static const unsigned int KEY_SIZE = 32;
|
||||
unsigned char out[KEY_SIZE];
|
||||
|
||||
CHMAC_SHA256(reinterpret_cast<const unsigned char*>(strSalt.c_str()), strSalt.size()).Write(reinterpret_cast<const unsigned char*>(strPass.c_str()), strPass.size()).Finalize(out);
|
||||
|
||||
16
src/init.cpp
16
src/init.cpp
@@ -801,6 +801,19 @@ ServiceFlags nLocalServices = NODE_NETWORK;
|
||||
|
||||
}
|
||||
|
||||
[[noreturn]] static void new_handler_terminate()
|
||||
{
|
||||
// Rather than throwing std::bad-alloc if allocation fails, terminate
|
||||
// immediately to (try to) avoid chain corruption.
|
||||
// Since LogPrintf may itself allocate memory, set the handler directly
|
||||
// to terminate first.
|
||||
std::set_new_handler(std::terminate);
|
||||
LogPrintf("Error: Out of memory. Terminating.\n");
|
||||
|
||||
// The log was successful, terminate now.
|
||||
std::terminate();
|
||||
};
|
||||
|
||||
bool AppInitBasicSetup()
|
||||
{
|
||||
// ********************************************************* Step 1: setup
|
||||
@@ -853,6 +866,9 @@ bool AppInitBasicSetup()
|
||||
// Ignore SIGPIPE, otherwise it will bring the daemon down if the client closes unexpectedly
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
#endif
|
||||
|
||||
std::set_new_handler(new_handler_terminate);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef _BITCOIN_PREVECTOR_H_
|
||||
#define _BITCOIN_PREVECTOR_H_
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
@@ -170,10 +171,15 @@ private:
|
||||
}
|
||||
} else {
|
||||
if (!is_direct()) {
|
||||
/* FIXME: Because malloc/realloc here won't call new_handler if allocation fails, assert
|
||||
success. These should instead use an allocator or new/delete so that handlers
|
||||
are called as necessary, but performance would be slightly degraded by doing so. */
|
||||
_union.indirect = static_cast<char*>(realloc(_union.indirect, ((size_t)sizeof(T)) * new_capacity));
|
||||
assert(_union.indirect);
|
||||
_union.capacity = new_capacity;
|
||||
} else {
|
||||
char* new_indirect = static_cast<char*>(malloc(((size_t)sizeof(T)) * new_capacity));
|
||||
assert(new_indirect);
|
||||
T* src = direct_ptr(0);
|
||||
T* dst = reinterpret_cast<T*>(new_indirect);
|
||||
memcpy(dst, src, size() * sizeof(T));
|
||||
|
||||
@@ -518,7 +518,10 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel)
|
||||
// Propagate cleared model to child objects
|
||||
rpcConsole->setClientModel(nullptr);
|
||||
#ifdef ENABLE_WALLET
|
||||
walletFrame->setClientModel(nullptr);
|
||||
if (walletFrame)
|
||||
{
|
||||
walletFrame->setClientModel(nullptr);
|
||||
}
|
||||
#endif // ENABLE_WALLET
|
||||
unitDisplayControl->setOptionsModel(nullptr);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
<source>Create a new address</source>
|
||||
<translation>Skep 'n nuwe adres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&New</source>
|
||||
<translation>&Nuwe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy the currently selected address to the system clipboard</source>
|
||||
<translation>Maak 'n kopie van die huidige adres na die stelsel klipbord</translation>
|
||||
@@ -17,6 +21,14 @@
|
||||
<source>Delete the currently selected address from the list</source>
|
||||
<translation>Verwyder die huidiglik gekieste address van die lys</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export the data in the current tab to a file</source>
|
||||
<translation>Voer inligting uit van die huidige blad na n lêer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export</source>
|
||||
<translation>&Uitvoer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Verwyder</translation>
|
||||
@@ -25,6 +37,42 @@
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Kies die address na wie die muntstukke gestuur moet word</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
<translation>K&ies</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>Stuur adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>Ontvang adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>&Kopie adres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Kopie &Etiket</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Wysig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Voer adres lys uit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Koma geskeide lêers (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Uitvoering Misluk</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
@@ -660,6 +708,10 @@
|
||||
<source>Copy amount</source>
|
||||
<translation>Kopieer bedrag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Koma geskeide lêers (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Datum</translation>
|
||||
@@ -680,6 +732,10 @@
|
||||
<source>ID</source>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Uitvoering Misluk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Range:</source>
|
||||
<translation>Reeks:</translation>
|
||||
@@ -704,6 +760,14 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>WalletView</name>
|
||||
<message>
|
||||
<source>&Export</source>
|
||||
<translation>&Uitvoer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export the data in the current tab to a file</source>
|
||||
<translation>Voer inligting uit van die huidige blad na n lêer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>bitcoin-core</name>
|
||||
|
||||
@@ -304,12 +304,12 @@
|
||||
<translation>Sign &message...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+427"/>
|
||||
<location line="+430"/>
|
||||
<source>Synchronizing with network...</source>
|
||||
<translation>Synchronizing with network...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-505"/>
|
||||
<location line="-508"/>
|
||||
<source>&Overview</source>
|
||||
<translation>&Overview</translation>
|
||||
</message>
|
||||
@@ -404,7 +404,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+357"/>
|
||||
<location line="+360"/>
|
||||
<source>Click to disable network activity.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -429,7 +429,7 @@
|
||||
<translation>Reindexing blocks on disk...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-508"/>
|
||||
<location line="-511"/>
|
||||
<source>Send coins to a Bitcoin address</source>
|
||||
<translation>Send coins to a Bitcoin address</translation>
|
||||
</message>
|
||||
@@ -459,12 +459,12 @@
|
||||
<translation>&Verify message...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+514"/>
|
||||
<location line="+517"/>
|
||||
<source>Bitcoin</source>
|
||||
<translation>Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-739"/>
|
||||
<location line="-742"/>
|
||||
<source>Wallet</source>
|
||||
<translation>Wallet</translation>
|
||||
</message>
|
||||
@@ -549,7 +549,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location line="+354"/>
|
||||
<location line="+357"/>
|
||||
<source>%n active connection(s) to Bitcoin network</source>
|
||||
<translation>
|
||||
<numerusform>%n active connection to Bitcoin network</numerusform>
|
||||
@@ -610,12 +610,12 @@
|
||||
<translation>Up to date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-438"/>
|
||||
<location line="-441"/>
|
||||
<source>Show the %1 help message to get a list with possible Bitcoin command-line options</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+197"/>
|
||||
<location line="+200"/>
|
||||
<source>%1 client</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -849,7 +849,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+183"/>
|
||||
<location line="+181"/>
|
||||
<source>yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1499,7 +1499,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+25"/>
|
||||
<location line="+28"/>
|
||||
<source>The supplied proxy address is invalid.</source>
|
||||
<translation>The supplied proxy address is invalid.</translation>
|
||||
</message>
|
||||
@@ -1601,7 +1601,7 @@
|
||||
<context>
|
||||
<name>PaymentServer</name>
|
||||
<message>
|
||||
<location filename="../paymentserver.cpp" line="+328"/>
|
||||
<location filename="../paymentserver.cpp" line="+326"/>
|
||||
<location line="+216"/>
|
||||
<location line="+42"/>
|
||||
<location line="+113"/>
|
||||
@@ -1760,7 +1760,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+759"/>
|
||||
<location line="+762"/>
|
||||
<source>%1 d</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
@@ -485,6 +485,10 @@
|
||||
<source>%1 client</source>
|
||||
<translation>%1 cliente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connecting to peers...</source>
|
||||
<translation>Conectando a pares...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Catching up...</source>
|
||||
<translation>Actualizando...</translation>
|
||||
@@ -2473,6 +2477,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDesc</name>
|
||||
<message numerus="yes">
|
||||
<source>Open for %n more block(s)</source>
|
||||
<translation><numerusform>Abrir para %n bloque más</numerusform><numerusform>Abrir para %n bloques más</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open until %1</source>
|
||||
<translation>Abierto hasta %1</translation>
|
||||
@@ -2517,6 +2525,10 @@
|
||||
<source>, has not been successfully broadcast yet</source>
|
||||
<translation>, no ha sido emitido con éxito aún</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>, broadcast through %n node(s)</source>
|
||||
<translation><numerusform>, transmitir a través de %n nodo</numerusform><numerusform>, transmitir a través de %n nodos</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Fecha</translation>
|
||||
@@ -2557,6 +2569,10 @@
|
||||
<source>Credit</source>
|
||||
<translation>Credito</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>matures in %n more block(s)</source>
|
||||
<translation><numerusform>disponible en %n bloque más</numerusform><numerusform>disponible en %n bloques más</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>not accepted</source>
|
||||
<translation>no aceptada</translation>
|
||||
@@ -2593,6 +2609,10 @@
|
||||
<source>Transaction ID</source>
|
||||
<translation>Identificador de transacción (ID)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction total size</source>
|
||||
<translation>Tamaño total de transacción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output index</source>
|
||||
<translation>Indice de salida</translation>
|
||||
@@ -2655,6 +2675,10 @@
|
||||
<source>Label</source>
|
||||
<translation>Etiqueta</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Open for %n more block(s)</source>
|
||||
<translation><numerusform>Abrir para %n bloque más</numerusform><numerusform>Abrir para %n bloques más</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open until %1</source>
|
||||
<translation>Abierto hasta %1</translation>
|
||||
@@ -2987,6 +3011,18 @@
|
||||
<translation>Aceptar comandos consola y JSON-RPC
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect/-noconnect)</source>
|
||||
<translation>Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect/-desconectar)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect only to the specified node(s); -noconnect or -connect=0 alone to disable automatic connections</source>
|
||||
<translation>Conectar sólo al nodo(s) especificado; -no conectar or -conectar=solo 0 para deshabilitar conexiones automáticas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
|
||||
<translation>Distribuido bajo la licencia de software MIT, vea el archivo adjunto %s o %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If <category> is not supplied or if <category> = 1, output all debugging information.</source>
|
||||
<translation>Si <category> no es proporcionado o si <category> =1, muestra toda la información de depuración.</translation>
|
||||
@@ -3064,6 +3100,14 @@
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extra transactions to keep in memory for compact block reconstructions (default: %u)</source>
|
||||
<translation>Transacciones extra a mantener en la memoria para reconstrucciones de bloque compacto (predeterminado: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet: %s)</source>
|
||||
<translation>Si este bloque está en la cadena asuma que sus predecesores y él son válidos y potencialmente se saltan su script de verificación (0 para verificar todo, predeterminado: %s, testnet: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount. (default: %u seconds)</source>
|
||||
<translation>Ajuste máximo permitido del tiempo offset medio de pares. La perspectiva local de tiempo se verá influenciada por los pares anteriores y posteriores a esta cantidad. (Por defecto: %u segundos)</translation>
|
||||
@@ -3679,6 +3723,10 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Dirección -proxy inválida: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keypool ran out, please call keypoolrefill first</source>
|
||||
<translation>Keypool se ha agotado, llame a keypoolrefill primero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escuchar conexiones JSON-RPC en <puerto> (predeterminado: %u o testnet: %u)</translation>
|
||||
@@ -3747,6 +3795,10 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d
|
||||
<source>Starting network threads...</source>
|
||||
<translation>Iniciando funciones de red...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is the minimum transaction fee you pay on every transaction.</source>
|
||||
<translation>Esta es la tarifa mínima de transacción que usted paga en cada transacción.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Threshold for disconnecting misbehaving peers (default: %u)</source>
|
||||
<translation>Umbral para la desconexión de pares con mal comportamiento (predeterminado: %u)</translation>
|
||||
|
||||
@@ -41,10 +41,46 @@
|
||||
<source>&Delete</source>
|
||||
<translation>&Supprimer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
<translation>C&oisir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Copier &Étiquette </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Éditer </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Exporter la liste d'adresses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Valeurs séparées par des virgules (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Échec de l'export</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(aucune étiquette)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
<message>
|
||||
@@ -63,6 +99,22 @@
|
||||
<source>Repeat new passphrase</source>
|
||||
<translation>Répétez la phrase de passe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Encrypt wallet</source>
|
||||
<translation>Chiffrer le porte-monnaie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock wallet</source>
|
||||
<translation>Déverrouiller le porte-monnaie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Decrypt wallet</source>
|
||||
<translation>Décrypter le porte-monnaie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encrypted</source>
|
||||
<translation>Porte-monnaie chiffré</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BanTableModel</name>
|
||||
@@ -414,6 +466,42 @@
|
||||
<source>Confirmed</source>
|
||||
<translation>Confirmée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Copier l'adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Copier l'étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copier le montant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Copier les frais</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
<translation>Copier après les frais</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy bytes</source>
|
||||
<translation>Copier les octets</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yes</source>
|
||||
<translation>oui</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>no</source>
|
||||
<translation>non</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(aucune étiquette)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
@@ -797,6 +885,14 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>QRImageWidget</name>
|
||||
<message>
|
||||
<source>&Copy Image</source>
|
||||
<translation>&Copier image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save QR Code</source>
|
||||
<translation>Sauvegarder QR code</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RPCConsole</name>
|
||||
@@ -1055,7 +1151,15 @@
|
||||
<source>Remove</source>
|
||||
<translation>Retirer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Copier l'étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copier le montant</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveRequestDialog</name>
|
||||
<message>
|
||||
@@ -1074,9 +1178,37 @@
|
||||
<source>&Save Image...</source>
|
||||
<translation>&Sauvegarder image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Message</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(aucune étiquette)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
@@ -1180,7 +1312,27 @@
|
||||
<source>S&end</source>
|
||||
<translation>E&voyer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copier le montant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Copier les frais</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
<translation>Copier après les frais</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy bytes</source>
|
||||
<translation>Copier les octets</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(aucune étiquette)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsEntry</name>
|
||||
<message>
|
||||
@@ -1305,7 +1457,83 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDesc</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<translation>État</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source</source>
|
||||
<translation>Source</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generated</source>
|
||||
<translation>Généré</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>From</source>
|
||||
<translation>De</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>unknown</source>
|
||||
<translation>inconnu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To</source>
|
||||
<translation>Á</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>own address</source>
|
||||
<translation>Votre adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>watch-only</source>
|
||||
<translation>Lecture uniquement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>label</source>
|
||||
<translation>Étiquette </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Credit</source>
|
||||
<translation>Crédit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debit</source>
|
||||
<translation>Débit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total debit</source>
|
||||
<translation>Débit total</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total credit</source>
|
||||
<translation>Crédit total </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Net amount</source>
|
||||
<translation>Montant net</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comment</source>
|
||||
<translation>Commentaire </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>true</source>
|
||||
<translation>vrai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>false</source>
|
||||
<translation>faux</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDescDialog</name>
|
||||
<message>
|
||||
@@ -1315,9 +1543,85 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>watch-only</source>
|
||||
<translation>Lecture uniquement</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(aucune étiquette)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>All</source>
|
||||
<translation>Toutes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Today</source>
|
||||
<translation>Aujourd'hui</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This week</source>
|
||||
<translation>Cette semaine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This month</source>
|
||||
<translation>Ce mois</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last month</source>
|
||||
<translation>Mois dernier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This year</source>
|
||||
<translation>Cette année</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Other</source>
|
||||
<translation>Autres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Copier l'adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Copier l'étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copier le montant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Valeurs séparées par des virgules (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Étiquette</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Échec de l'export</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
|
||||
@@ -562,11 +562,75 @@
|
||||
<source>Confirmed</source>
|
||||
<translation>Confermato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Copia indirizzo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Copia etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copia l'importo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy transaction ID</source>
|
||||
<translation>Copia l'ID transazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock unspent</source>
|
||||
<translation>Bloccare non spesi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock unspent</source>
|
||||
<translation>Sbloccare non spesi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy quantity</source>
|
||||
<translation>Copia quantità</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Copia commissione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
<translation>Copia dopo commissione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy bytes</source>
|
||||
<translation>Copia byte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Copia trascurabile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy change</source>
|
||||
<translation>Copia resto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(%1 locked)</source>
|
||||
<translation>(%1 bloccato)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yes</source>
|
||||
<translation>sì</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>no</source>
|
||||
<translation>no</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(nessuna etichetta)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>(change)</source>
|
||||
<translation>(resto)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
<message>
|
||||
@@ -702,6 +766,10 @@
|
||||
<source>Error</source>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n GB of free space available</source>
|
||||
<translation><numerusform>GB di spazio libero disponibile</numerusform><numerusform>%n GB di spazio disponibile</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>(of %n GB needed)</source>
|
||||
<translation><numerusform>(di %nGB richiesti)</numerusform><numerusform>(%n GB richiesti)</numerusform></translation>
|
||||
@@ -713,6 +781,10 @@
|
||||
<source>Form</source>
|
||||
<translation>Modulo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown...</source>
|
||||
<translation>Sconosciuto...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last block time</source>
|
||||
<translation>Ora del blocco più recente</translation>
|
||||
@@ -1054,6 +1126,14 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>PaymentServer</name>
|
||||
<message>
|
||||
<source>Payment request expired.</source>
|
||||
<translation>Richiesta di pagamento scaduta.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid payment request.</source>
|
||||
<translation>Richiesta di pagamento invalida</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PeerTableModel</name>
|
||||
@@ -1065,7 +1145,11 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>Node/Service</source>
|
||||
<translation>Nodo/Servizio</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Ping</source>
|
||||
<translation>Ping</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
@@ -1104,17 +1188,49 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>%1 ms</source>
|
||||
<translation>%1 ms</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n second(s)</source>
|
||||
<translation><numerusform>%n secondo</numerusform><numerusform>%n secondi</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n minute(s)</source>
|
||||
<translation><numerusform>%n minuto</numerusform><numerusform>%n minuti</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n hour(s)</source>
|
||||
<translation><numerusform>%n ora</numerusform><numerusform>%n ore</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n day(s)</source>
|
||||
<translation><numerusform>%n giorno</numerusform><numerusform>%n giorni</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation><numerusform>%n settimana</numerusform><numerusform>%n settimane</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 and %2</source>
|
||||
<translation>%1 e %2</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n year(s)</source>
|
||||
<translation><numerusform>%n anno</numerusform><numerusform>%n anni</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject::QObject</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Error: %1</source>
|
||||
<translation>Errore: %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QRImageWidget</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>PNG Image (*.png)</source>
|
||||
<translation>Immagine PNG (*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RPCConsole</name>
|
||||
<message>
|
||||
@@ -1464,7 +1580,23 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>Remove</source>
|
||||
<translation>Rimuovi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Copy URI</source>
|
||||
<translation>Copia URI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Copia etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy message</source>
|
||||
<translation>Copia il messaggio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copia l'importo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveRequestDialog</name>
|
||||
<message>
|
||||
@@ -1483,26 +1615,58 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>&Save Image...</source>
|
||||
<translation>&Salva Immagine...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URI</source>
|
||||
<translation>URI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Indirizzo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Importo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Messaggio</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Messaggio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(nessuna etichetta)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>(no message)</source>
|
||||
<translation>(nessun messaggio)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no amount requested)</source>
|
||||
<translation>(nessun importo richiesto)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Requested</source>
|
||||
<translation>Richiesto</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
<message>
|
||||
@@ -1645,6 +1809,54 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>S&end</source>
|
||||
<translation>&Invia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy quantity</source>
|
||||
<translation>Copia quantità</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copia l'importo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Copia commissione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
<translation>Copia dopo commissione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy bytes</source>
|
||||
<translation>Copia byte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Copia trascurabile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy change</source>
|
||||
<translation>Copia resto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 to %2</source>
|
||||
<translation>%1 a %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request expired.</source>
|
||||
<translation>Richiesta di pagamento scaduta.</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n block(s)</source>
|
||||
<translation><numerusform>%n blocco</numerusform><numerusform>%n blocchi</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Invalid Bitcoin address</source>
|
||||
<translation>Attenzione: Indirizzo Bitcoin non valido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Unknown change address</source>
|
||||
<translation>Attenzione: Indirizzo per il resto sconosciuto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(nessuna etichetta)</translation>
|
||||
@@ -1731,7 +1943,11 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendConfirmationDialog</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Si</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ShutdownWindow</name>
|
||||
<message>
|
||||
@@ -1829,7 +2045,55 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>Reset all verify message fields</source>
|
||||
<translation>Reimposta tutti i campi della verifica messaggio</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>The entered address is invalid.</source>
|
||||
<translation>L'indirizzo inserito non è valido.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please check the address and try again.</source>
|
||||
<translation>Per favore controlla l'indirizzo e prova di nuovo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The entered address does not refer to a key.</source>
|
||||
<translation>L'indirizzo bitcoin inserito non è associato a nessuna chiave.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet unlock was cancelled.</source>
|
||||
<translation>Sblocco del portamonete annullato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Private key for the entered address is not available.</source>
|
||||
<translation>La chiave privata per l'indirizzo inserito non è disponibile.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message signing failed.</source>
|
||||
<translation>Firma messaggio fallita.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message signed.</source>
|
||||
<translation>Messaggio firmato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The signature could not be decoded.</source>
|
||||
<translation>Non è stato possibile decodificare la firma.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please check the signature and try again.</source>
|
||||
<translation>Per favore controlla la firma e prova di nuovo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The signature did not match the message digest.</source>
|
||||
<translation>La firma non corrisponde al digest del messaggio.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message verification failed.</source>
|
||||
<translation>Verifica messaggio fallita.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message verified.</source>
|
||||
<translation>Messaggio verificato.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SplashScreen</name>
|
||||
<message>
|
||||
@@ -1846,7 +2110,123 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDesc</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>%1/offline</source>
|
||||
<translation>%1/offline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<translation>Stato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>, has not been successfully broadcast yet</source>
|
||||
<translation>, non è ancora stata trasmessa con successo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source</source>
|
||||
<translation>Sorgente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generated</source>
|
||||
<translation>Generato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>From</source>
|
||||
<translation>Da</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>unknown</source>
|
||||
<translation>sconosciuto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To</source>
|
||||
<translation>A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>own address</source>
|
||||
<translation>proprio indirizzo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>watch-only</source>
|
||||
<translation>sola lettura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>label</source>
|
||||
<translation>etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Credit</source>
|
||||
<translation>Credito</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>not accepted</source>
|
||||
<translation>non accettate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debit</source>
|
||||
<translation>Debito</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total debit</source>
|
||||
<translation>Debito totale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total credit</source>
|
||||
<translation>Credito totale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction fee</source>
|
||||
<translation>Commissione transazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Net amount</source>
|
||||
<translation>Importo netto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Messaggio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comment</source>
|
||||
<translation>Commento</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction ID</source>
|
||||
<translation>ID della transazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Merchant</source>
|
||||
<translation>Commerciante</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug information</source>
|
||||
<translation>Informazione di debug</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction</source>
|
||||
<translation>Transazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inputs</source>
|
||||
<translation>Input</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Importo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>true</source>
|
||||
<translation>vero</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>false</source>
|
||||
<translation>falso</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDescDialog</name>
|
||||
<message>
|
||||
@@ -1856,21 +2236,201 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type</source>
|
||||
<translation>Tipo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Offline</source>
|
||||
<translation>Offline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed</source>
|
||||
<translation>Non confermata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmed (%1 confirmations)</source>
|
||||
<translation>Confermata (%1 conferme)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This block was not received by any other nodes and will probably not be accepted!</source>
|
||||
<translation>Questo blocco non è stato ricevuto da alcun altro nodo e probabilmente non sarà accettato!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generated but not accepted</source>
|
||||
<translation>Generati, ma non accettati</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with</source>
|
||||
<translation>Ricevuto tramite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sent to</source>
|
||||
<translation>Inviato a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment to yourself</source>
|
||||
<translation>Pagamento a te stesso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mined</source>
|
||||
<translation>Ottenuto dal mining</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>watch-only</source>
|
||||
<translation>sola lettura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(n/a)</source>
|
||||
<translation>(n/d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(nessuna etichetta)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Transaction status. Hover over this field to show number of confirmations.</source>
|
||||
<translation>Stato della transazione. Passare con il mouse su questo campo per visualizzare il numero di conferme.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date and time that the transaction was received.</source>
|
||||
<translation>Data e ora in cui la transazione è stata ricevuta.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type of transaction.</source>
|
||||
<translation>Tipo di transazione.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whether or not a watch-only address is involved in this transaction.</source>
|
||||
<translation>Indica se un indirizzo di sola lettura sia o meno coinvolto in questa transazione.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User-defined intent/purpose of the transaction.</source>
|
||||
<translation>Intento/scopo della transazione definito dall'utente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount removed from or added to balance.</source>
|
||||
<translation>Importo rimosso o aggiunto al saldo.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>All</source>
|
||||
<translation>Tutti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Today</source>
|
||||
<translation>Oggi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This week</source>
|
||||
<translation>Questa settimana</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This month</source>
|
||||
<translation>Questo mese</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last month</source>
|
||||
<translation>Il mese scorso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This year</source>
|
||||
<translation>Quest'anno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Range...</source>
|
||||
<translation>Intervallo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with</source>
|
||||
<translation>Ricevuto tramite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sent to</source>
|
||||
<translation>Inviato a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To yourself</source>
|
||||
<translation>A te stesso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mined</source>
|
||||
<translation>Ottenuto dal mining</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Other</source>
|
||||
<translation>Altro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter address or label to search</source>
|
||||
<translation>Inserisci un indirizzo o un'etichetta da cercare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Min amount</source>
|
||||
<translation>Importo minimo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Copia indirizzo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Copia etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copia l'importo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy transaction ID</source>
|
||||
<translation>Copia l'ID transazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy raw transaction</source>
|
||||
<translation>Copia la transazione raw</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit label</source>
|
||||
<translation>Modifica l'etichetta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show transaction details</source>
|
||||
<translation>Mostra i dettagli della transazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Transaction History</source>
|
||||
<translation>Esporta lo storico delle transazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Testo CSV (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmed</source>
|
||||
<translation>Confermato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Watch-only</source>
|
||||
<translation>Sola lettura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type</source>
|
||||
<translation>Tipo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etichetta</translation>
|
||||
@@ -1879,11 +2439,35 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
<source>Address</source>
|
||||
<translation>Indirizzo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ID</source>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Esportazione Fallita</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>There was an error trying to save the transaction history to %1.</source>
|
||||
<translation>Si è verificato un errore durante il salvataggio dello storico delle transazioni in %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Successful</source>
|
||||
<translation>Esportazione Riuscita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The transaction history was successfully saved to %1.</source>
|
||||
<translation>Lo storico delle transazioni e' stato salvato con successo in %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Range:</source>
|
||||
<translation>Intervallo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>to</source>
|
||||
<translation>a</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
<message>
|
||||
@@ -1893,13 +2477,53 @@ Per specificare più URL separarli con una barra verticale "|".</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>WalletFrame</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>No wallet has been loaded.</source>
|
||||
<translation>Non è stato caricato alcun portamonete.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WalletModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Send Coins</source>
|
||||
<translation>Invia Bitcoin</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WalletView</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>&Export</source>
|
||||
<translation>&Esporta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export the data in the current tab to a file</source>
|
||||
<translation>Esporta su file i dati contenuti nella tabella corrente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Backup Wallet</source>
|
||||
<translation>Backup Portamonete</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet Data (*.dat)</source>
|
||||
<translation>Dati Portamonete (*.dat)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Backup Failed</source>
|
||||
<translation>Backup Fallito</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the wallet data to %1.</source>
|
||||
<translation>Si è verificato un errore durante il salvataggio dei dati del portamonete in %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Backup Successful</source>
|
||||
<translation>Backup eseguito con successo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The wallet data was successfully saved to %1.</source>
|
||||
<translation>Il portamonete è stato correttamente salvato in %1.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>bitcoin-core</name>
|
||||
<message>
|
||||
|
||||
@@ -419,7 +419,7 @@
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n active connection(s) to Bitcoin network</source>
|
||||
<translation><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform></translation>
|
||||
<translation><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform><numerusform>%n aktywnych połączeń do sieci Bitcoin</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Indexing blocks on disk...</source>
|
||||
@@ -431,7 +431,7 @@
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Processed %n block(s) of transaction history.</source>
|
||||
<translation><numerusform>Przetworzono %n bloków historii transakcji.</numerusform><numerusform>Przetworzono %n bloków historii transakcji.</numerusform><numerusform>Przetworzono %n bloków historii transakcji.</numerusform></translation>
|
||||
<translation><numerusform>Przetworzono %n bloków historii transakcji.</numerusform><numerusform>Przetworzono %n bloków historii transakcji.</numerusform><numerusform>Przetworzono %n bloków historii transakcji.</numerusform><numerusform>Przetworzono %n bloków historii transakcji.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 behind</source>
|
||||
@@ -832,11 +832,11 @@
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n GB of free space available</source>
|
||||
<translation><numerusform>%n GB dostępnego wolnego miejsca</numerusform><numerusform>%n GB dostępnego wolnego miejsca</numerusform><numerusform>%n GB dostępnego wolnego miejsca</numerusform></translation>
|
||||
<translation><numerusform>%n GB dostępnego wolnego miejsca</numerusform><numerusform>%n GB dostępnego wolnego miejsca</numerusform><numerusform>%n GB dostępnego wolnego miejsca</numerusform><numerusform>%n GB dostępnego wolnego miejsca</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>(of %n GB needed)</source>
|
||||
<translation><numerusform>(z %n GB potrzebnych)</numerusform><numerusform>(z %n GB potrzebnych)</numerusform><numerusform>(z %n GB potrzebnych)</numerusform></translation>
|
||||
<translation><numerusform>(z %n GB potrzebnych)</numerusform><numerusform>(z %n GB potrzebnych)</numerusform><numerusform>(z %n GB potrzebnych)</numerusform><numerusform>(z %n GB potrzebnych)</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1325,11 +1325,11 @@
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n second(s)</source>
|
||||
<translation><numerusform>%n sekunda</numerusform><numerusform>%n sekund</numerusform><numerusform>%n sekund</numerusform></translation>
|
||||
<translation><numerusform>%n sekunda</numerusform><numerusform>%n sekund</numerusform><numerusform>%n sekund</numerusform><numerusform>%n sekund</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n minute(s)</source>
|
||||
<translation><numerusform>%n minuta</numerusform><numerusform>%n minut</numerusform><numerusform>%n minut</numerusform></translation>
|
||||
<translation><numerusform>%n minuta</numerusform><numerusform>%n minut</numerusform><numerusform>%n minut</numerusform><numerusform>%n minut</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 and %2</source>
|
||||
|
||||
@@ -329,6 +329,10 @@
|
||||
<source>Click to enable network activity again.</source>
|
||||
<translation>Кликните, чтобы снова разрешить сетевую активность.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Syncing Headers (%1%)...</source>
|
||||
<translation>Синхронизация заголовков (%1%)...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reindexing blocks on disk...</source>
|
||||
<translation>Идёт переиндексация блоков на диске...</translation>
|
||||
@@ -3089,6 +3093,14 @@
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Выполнить команду, когда меняется транзакция в бумажнике (%s в команде заменяется на TxID)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extra transactions to keep in memory for compact block reconstructions (default: %u)</source>
|
||||
<translation>Хранить в памяти дополнительные транзакции для реконструкции компактных блоков (по умолчанию: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet: %s)</source>
|
||||
<translation>Если этот блок в цепи, считать его и последующие блоки верными и потенциально пропускать проверку их скриптов (0 для проверки всех, по умолчанию: %s, тестовая сеть: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount. (default: %u seconds)</source>
|
||||
<translation>Максимально допустимое среднее отклонение времени участников. Локальное представление времени может меняться вперед или назад на это количество. (по умолчанию: %u секунд)</translation>
|
||||
@@ -3105,6 +3117,14 @@
|
||||
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
|
||||
<translation>Пожалуйста, внести свой вклад, если вы найдете %s полезными. Посетите %s для получения дополнительной информации о программном обеспечении.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reduce storage requirements by enabling pruning (deleting) of old blocks. This allows the pruneblockchain RPC to be called to delete specific blocks, and enables automatic pruning of old blocks if a target size in MiB is provided. This mode is incompatible with -txindex and -rescan. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, >%u = automatically prune block files to stay under the specified target size in MiB)</source>
|
||||
<translation>Уменьшить размер хранилища за счёт обрезания (удаления) старых блоков. Будет разрешён вызов RPC метода pruneblockchain для удаления определённых блоков и разрешено автоматическое обрезание старых блоков, если указан целевой размер в Мб. Этот режим несовместим с -txindex и -rescan. Внимание: переключение этой опции обратно потребует полной загрузки цепи блоков. (по умолчанию: 0 = отключить обрезание блоков, 1 = разрешить ручное обрезание через RPC, >%u = автоматически обрезать файлы блоков, чтобы они были меньше указанного размера в Мб)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s)</source>
|
||||
<translation>Задать минимальный курс комиссии (в %s/Кб) для транзакцийб включаемых в создаваемый блок. (по умолчанию: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d)</source>
|
||||
<translation>Задать число потоков проверки скрипта (от %u до %d, 0=авто, <0 = оставить столько ядер свободными, по умолчанию: %d)</translation>
|
||||
|
||||
@@ -41,9 +41,61 @@
|
||||
<source>&Delete</source>
|
||||
<translation>&Zmazať</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Zvoľte adresu kam poslať mince</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
<translation>Zvoľte adresu na ktorú chcete prijať mince</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>Odosielajúce adresy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>Prijímajúce adresy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
|
||||
<translation>Toto sú Vaše Bitcoin adresy pre posielanie platieb. Vždy skontrolujte sumu a prijímaciu adresu pred poslaním mincí.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction.</source>
|
||||
<translation>Toto sú vaše Bitcoin adresy pre prijímanie platieb. Odporúča sa použiť vždy novú prijímaciu adresu pre každú transakciu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>&Kopírovať adresu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Kopírovať &popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Upraviť</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Exportovať zoznam adries</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Nastala chyba pri pokuse uložiť zoznam adries do %1. Skúste znovu.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(bez popisu)</translation>
|
||||
@@ -67,6 +119,38 @@
|
||||
<source>Repeat new passphrase</source>
|
||||
<translation>Zopakujte nové heslo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Encrypt wallet</source>
|
||||
<translation>Zašifrovať peňaženku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock wallet</source>
|
||||
<translation>Odomknúť peňaženku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Decrypt wallet</source>
|
||||
<translation>Dešifrovať peňaženku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change passphrase</source>
|
||||
<translation>Zmena hesla</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm wallet encryption</source>
|
||||
<translation>Potvrďte zašifrovanie peňaženky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you wish to encrypt your wallet?</source>
|
||||
<translation>Ste si istí, že si želáte zašifrovať peňaženku?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encrypted</source>
|
||||
<translation>Peňaženka zašifrovaná</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet unlock failed</source>
|
||||
<translation>Odomykanie peňaženky zlyhalo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BanTableModel</name>
|
||||
@@ -438,6 +522,26 @@
|
||||
<source>Confirmed</source>
|
||||
<translation>Potvrdené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Kopírovať adresu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Kopírovať popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Kopírovať sumu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Kopírovať prach</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This label turns red if any recipient receives an amount smaller than the current dust threshold.</source>
|
||||
<translation>Tento popis sčervenie ak ktorýkoľvek príjemca dostane sumu menšiu ako súčasný limit pre "prach".</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(bez popisu)</translation>
|
||||
@@ -465,6 +569,30 @@
|
||||
<source>&Address</source>
|
||||
<translation>&Adresa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New receiving address</source>
|
||||
<translation>Nová adresa pre prijímanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New sending address</source>
|
||||
<translation>Nová adresa pre odoslanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit receiving address</source>
|
||||
<translation>Upraviť prijímajúcu adresu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit sending address</source>
|
||||
<translation>Upraviť odosielaciu adresu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The entered address "%1" is not a valid Bitcoin address.</source>
|
||||
<translation>Vložená adresa "%1" nieje platnou adresou Bitcoin.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The entered address "%1" is already in the address book.</source>
|
||||
<translation>Vložená adresa "%1" sa už nachádza v adresári.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FreespaceChecker</name>
|
||||
@@ -597,6 +725,10 @@
|
||||
<source>Last block time</source>
|
||||
<translation>Čas posledného bloku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Estimated time left until synced</source>
|
||||
<translation>Odhadovaný čas do ukončenia synchronizácie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide</source>
|
||||
<translation>Skryť</translation>
|
||||
@@ -620,7 +752,11 @@
|
||||
<source>Select payment request file</source>
|
||||
<translation>Vyberte súbor s výzvou k platbe</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Select payment request file to open</source>
|
||||
<translation>Vyberte ktorý súbor s výzvou na platbu otvoriť</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionsDialog</name>
|
||||
<message>
|
||||
@@ -933,7 +1069,71 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>PaymentServer</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Payment request error</source>
|
||||
<translation>Chyba pri vyžiadaní platby</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request fetch URL is invalid: %1</source>
|
||||
<translation>URL pre stiahnutie výzvy na zaplatenie je neplatné: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid payment address %1</source>
|
||||
<translation>Neplatná adresa platby %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</source>
|
||||
<translation>URI sa nedá analyzovať! To môže byť spôsobené neplatnou Bitcoin adresou alebo zle nastavenými vlastnosťami URI.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request file handling</source>
|
||||
<translation>Obsluha súboru s požiadavkou na platbu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request file cannot be read! This can be caused by an invalid payment request file.</source>
|
||||
<translation>Súbor s výzvou na zaplatenie sa nedá čítať! To môže byť spôsobené aj neplatným súborom s výzvou.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request rejected</source>
|
||||
<translation>Požiadavka na platbu zamietnutá</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request network doesn't match client network.</source>
|
||||
<translation>Sieť požiadavky na platbu nie je zhodná so sieťou klienta.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request expired.</source>
|
||||
<translation>Vypršala platnosť požiadavky na platbu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request is not initialized.</source>
|
||||
<translation>Požiadavka na platbu nie je inicializovaná</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unverified payment requests to custom payment scripts are unsupported.</source>
|
||||
<translation>Program nepodporuje neoverené platobné požiadavky na vlastné skripty.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid payment request.</source>
|
||||
<translation>Chybná požiadavka na platbu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Requested payment amount of %1 is too small (considered dust).</source>
|
||||
<translation>Požadovaná suma platby %1 je príliš nízka (považovaná za prach).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>Požiadavka na platbu %1 je príliš veľká (%2 bajtov, povolené je %3 bajtov).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request cannot be parsed!</source>
|
||||
<translation>Požiadavka na platbu nemôže byť analyzovaná!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment acknowledged</source>
|
||||
<translation>Platba potvrdená</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PeerTableModel</name>
|
||||
<message>
|
||||
@@ -983,10 +1183,18 @@
|
||||
<source>%1 ms</source>
|
||||
<translation>%1 ms</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation><numerusform>%n týždeň</numerusform><numerusform>%n týždne</numerusform><numerusform>%n týždňov</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 and %2</source>
|
||||
<translation> %1 a %2</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n year(s)</source>
|
||||
<translation><numerusform>%n rok</numerusform><numerusform>%n roky</numerusform><numerusform>%n rokov</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject::QObject</name>
|
||||
@@ -1022,7 +1230,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Datadir</source>
|
||||
<translation>Zložka s dátami</translation>
|
||||
<translation>Priečinok s dátami</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Startup time</source>
|
||||
@@ -1225,6 +1433,10 @@
|
||||
<source>Type <b>help</b> for an overview of available commands.</source>
|
||||
<translation>Napíš <b>help</b> pre prehľad dostupných príkazov.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WARNING: Scammers have been active, telling users to type commands here, stealing their wallet contents. Do not use this console without fully understanding the ramification of a command.</source>
|
||||
<translation>VAROVANIE: Podvodníci sú aktívni a môžu nabádať používateľov napísať sem príkazy, pomocou ktorých ukradnú ich obsah peňaženky. Nepoužívajte túto konzolu ak nerozumiete presne účinkom príkazov.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 B</source>
|
||||
<translation>%1 B</translation>
|
||||
@@ -1344,7 +1556,19 @@
|
||||
<source>Remove</source>
|
||||
<translation>Odstrániť</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Kopírovať popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy message</source>
|
||||
<translation>Kopírovať správu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Kopírovať sumu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveRequestDialog</name>
|
||||
<message>
|
||||
@@ -1363,14 +1587,66 @@
|
||||
<source>&Save Image...</source>
|
||||
<translation>Uložiť obrázok...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Request payment to %1</source>
|
||||
<translation>Vyžiadať platbu pre %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment information</source>
|
||||
<translation>Informácia o platbe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Suma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Správa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Resulting URI too long, try to reduce the text for label / message.</source>
|
||||
<translation>Výsledné URI je príliš dlhé, skúste skrátiť text pre popis alebo správu.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Dátum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Správa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(bez popisu)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>(no message)</source>
|
||||
<translation>(žiadna správa)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no amount requested)</source>
|
||||
<translation>(nepožadovaná žiadna suma)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Requested</source>
|
||||
<translation>Požadované</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
<message>
|
||||
@@ -1497,6 +1773,10 @@
|
||||
<source>Dust:</source>
|
||||
<translation>Prach:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time target:</source>
|
||||
<translation>Cieľový čas potvrdenia:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear &All</source>
|
||||
<translation>&Zmazať všetko</translation>
|
||||
@@ -1513,10 +1793,62 @@
|
||||
<source>S&end</source>
|
||||
<translation>&Odoslať</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Kopírovať sumu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Kopírovať prach</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1</source>
|
||||
<translation>Celková suma %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>alebo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm send coins</source>
|
||||
<translation>Potvrďte odoslanie mincí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The recipient address is not valid. Please recheck.</source>
|
||||
<translation>Adresa príjemcu je neplatná. Prosím, overte ju.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The amount to pay must be larger than 0.</source>
|
||||
<translation>Suma na úhradu musí byť väčšia ako 0.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The amount exceeds your balance.</source>
|
||||
<translation>Suma je vyššia ako Váš zostatok.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Duplicate address found: addresses should only be used once each.</source>
|
||||
<translation>Našla sa duplicitná adresa: každá adresa by sa mala použiť len raz.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request expired.</source>
|
||||
<translation>Vypršala platnosť požiadavky na platbu.</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Estimated to begin confirmation within %n block(s).</source>
|
||||
<translation><numerusform>Odhadovaný začiatok potvrdzovania po %n bloku.</numerusform><numerusform>Odhadovaný začiatok potvrdzovania po %n blokoch.</numerusform><numerusform>Odhadovaný začiatok potvrdzovania po %n blokoch.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Invalid Bitcoin address</source>
|
||||
<translation>Varovanie: Neplatná Bitcoin adresa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm custom change address</source>
|
||||
<translation>Potvrďte zmenu adresy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The address you selected for change is not part of this wallet. Any or all funds in your wallet may be sent to this address. Are you sure?</source>
|
||||
<translation>Zadaná adresa nie je súčasťou tejto peňaženky. Časť alebo všetky peniaze z peňaženky môžu byť odoslané na túto adresu. Ste si istý?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(bez popisu)</translation>
|
||||
@@ -1600,7 +1932,11 @@
|
||||
<source>Memo:</source>
|
||||
<translation>Poznámka:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Enter a label for this address to add it to your address book</source>
|
||||
<translation>Zadajte popis pre túto adresu pre pridanie do adresára</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendConfirmationDialog</name>
|
||||
</context>
|
||||
@@ -1625,6 +1961,10 @@
|
||||
<source>&Sign Message</source>
|
||||
<translation>&Podpísať Správu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to.</source>
|
||||
<translation>Môžete podpísať správy svojou adresou a dokázať, že viete prijímať mince zaslané na túto adresu. Buďte však opatrní a podpíšte len podrobné prehlásenia, s ktorými plne súhlasíte, nakoľko útoky typu "phishing" Vás môžu lákať k podpísaniu nejasných alebo príliš všeobecných tvrdení čím prevezmú vašu identitu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Bitcoin address to sign the message with</source>
|
||||
<translation>Bitcoin adresa pre podpísanie správy s</translation>
|
||||
@@ -1677,6 +2017,10 @@
|
||||
<source>&Verify Message</source>
|
||||
<translation>O&veriť správu...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction!</source>
|
||||
<translation>Vložte adresu príjemcu, správu (uistite sa, že presne kopírujete ukončenia riadkov, medzery, odrážky, atď.) a podpis pre potvrdenie správy. Buďte opatrní a nedomýšľajte si viac než je uvedené v samotnej podpísanej správe a môžete sa tak vyhnúť podvodu MITM útokom. Toto len potvrdzuje, že podpisujúca strana môže prijímať na tejto adrese, nepotvrdzuje to vlastníctvo žiadnej transakcie!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Bitcoin address the message was signed with</source>
|
||||
<translation>Adresa Bitcoin, ktorou bola podpísaná správa</translation>
|
||||
@@ -1693,7 +2037,55 @@
|
||||
<source>Reset all verify message fields</source>
|
||||
<translation>Obnoviť všetky polia v overiť správu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Click "Sign Message" to generate signature</source>
|
||||
<translation>Kliknite "Podpísať správu" pre vytvorenie podpisu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The entered address is invalid.</source>
|
||||
<translation>Zadaná adresa je neplatná.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please check the address and try again.</source>
|
||||
<translation>Prosím skontrolujte adresu a skúste znova.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The entered address does not refer to a key.</source>
|
||||
<translation>Vložená adresa nezodpovedá žiadnemu kľúču.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Private key for the entered address is not available.</source>
|
||||
<translation>Súkromný kľúč pre zadanú adresu nieje k dispozícii.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message signing failed.</source>
|
||||
<translation>Podpísanie správy zlyhalo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message signed.</source>
|
||||
<translation>Správa podpísaná.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The signature could not be decoded.</source>
|
||||
<translation>Podpis nie je možné dekódovať.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please check the signature and try again.</source>
|
||||
<translation>Prosím skontrolujte podpis a skúste znova.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The signature did not match the message digest.</source>
|
||||
<translation>Podpis sa nezhoduje so zhrnutím správy.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message verification failed.</source>
|
||||
<translation>Overenie správy zlyhalo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message verified.</source>
|
||||
<translation>Správa overená.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SplashScreen</name>
|
||||
<message>
|
||||
@@ -1710,6 +2102,54 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDesc</name>
|
||||
<message>
|
||||
<source>conflicted with a transaction with %1 confirmations</source>
|
||||
<translation>koliduje s transakciou s %1 potvrdeniami</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>0/unconfirmed, %1</source>
|
||||
<translation>0/nepotvrdené, %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1/unconfirmed</source>
|
||||
<translation>%1/nepotvrdené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 confirmations</source>
|
||||
<translation>%1 potvrdení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Dátum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>own address</source>
|
||||
<translation>vlastná adresa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>label</source>
|
||||
<translation>popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Credit</source>
|
||||
<translation>Kredit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total credit</source>
|
||||
<translation>Celkový kredit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Net amount</source>
|
||||
<translation>Suma netto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Správa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Suma</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDescDialog</name>
|
||||
@@ -1720,13 +2160,181 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Dátum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type</source>
|
||||
<translation>Typ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed</source>
|
||||
<translation>Nepotvrdené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirming (%1 of %2 recommended confirmations)</source>
|
||||
<translation>Potvrdzujem (%1 z %2 odporúčaných potvrdení)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmed (%1 confirmations)</source>
|
||||
<translation>Potvrdené (%1 potvrdení)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Immature (%1 confirmations, will be available after %2)</source>
|
||||
<translation>Nezrelé (%1 potvrdení, bude dostupné po %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This block was not received by any other nodes and will probably not be accepted!</source>
|
||||
<translation>Ten blok nebol prijatý žiadnym iným uzlom a pravdepodobne nebude akceptovaný!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with</source>
|
||||
<translation>Prijaté s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received from</source>
|
||||
<translation>Prijaté od</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sent to</source>
|
||||
<translation>Odoslané na</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment to yourself</source>
|
||||
<translation>Platba sebe samému</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mined</source>
|
||||
<translation>Vyťažené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(bez popisu)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Transaction status. Hover over this field to show number of confirmations.</source>
|
||||
<translation>Stav transakcie. Prejdite ponad toto pole pre zobrazenie počtu potvrdení.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date and time that the transaction was received.</source>
|
||||
<translation>Dátum a čas prijatia transakcie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type of transaction.</source>
|
||||
<translation>Typ transakcie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whether or not a watch-only address is involved in this transaction.</source>
|
||||
<translation>Či je v tejto transakcii adresy iba na sledovanie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount removed from or added to balance.</source>
|
||||
<translation>Suma pridaná alebo odobraná k zostatku.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>All</source>
|
||||
<translation>Všetky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Today</source>
|
||||
<translation>Dnes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This week</source>
|
||||
<translation>Tento týždeň</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This month</source>
|
||||
<translation>Tento mesiac</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last month</source>
|
||||
<translation>Minulý mesiac</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This year</source>
|
||||
<translation>Tento rok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Range...</source>
|
||||
<translation>Rozsah...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with</source>
|
||||
<translation>Prijaté s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sent to</source>
|
||||
<translation>Odoslané na</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To yourself</source>
|
||||
<translation>Ku mne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mined</source>
|
||||
<translation>Vyťažené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Other</source>
|
||||
<translation>Iné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter address or label to search</source>
|
||||
<translation>Zadajte adresu alebo popis pre hľadanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Min amount</source>
|
||||
<translation>Minimálna suma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Kopírovať adresu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>Kopírovať popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Kopírovať sumu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit label</source>
|
||||
<translation>Upraviť popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmed</source>
|
||||
<translation>Potvrdené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Dátum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type</source>
|
||||
<translation>Typ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Range:</source>
|
||||
<translation>Rozsah:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
@@ -1796,12 +2404,16 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>Jadro Bitcoin</translation>
|
||||
<translation>Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The %s developers</source>
|
||||
<translation>Vývojári %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept relayed transactions received from whitelisted peers even when not relaying transactions (default: %d)</source>
|
||||
<translation>Akceptovať postúpené transakcie od povolených partnerov aj keď normálne nepostupujete transakcie (predvolené: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Spojiť s danou adresou a vždy na nej počúvať. Použite zápis [host]:port pre IPv6</translation>
|
||||
@@ -1964,7 +2576,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Location of the auth cookie (default: data dir)</source>
|
||||
<translation>Poloha overovacieho cookie súboru (predvolená: zložka s dátami)</translation>
|
||||
<translation>Umiestnenie overovacieho cookie súboru (predvolená: Priečinok s dátami)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not enough file descriptors available.</source>
|
||||
@@ -2298,6 +2910,10 @@
|
||||
<source>Warning: Wallet file corrupt, data salvaged! Original %s saved as %s in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
|
||||
<translation>Varovanie: Peňaženka poškodená, dáta boli zachránené! Originálna %s ako %s v %s; ak váš zostatok alebo transakcie sú nesprávne, mali by ste obnoviť zálohu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple times.</source>
|
||||
<translation>Povoliť partnerov pripájajúcich sa z danej IP adresy (napr. 1.2.3.4) alebo zo siete vo formáte CIDR (napr. 1.2.3.0/24). Môže byť zadané viackrát.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(predvolené: %s)</translation>
|
||||
@@ -2378,6 +2994,10 @@
|
||||
<source>Threshold for disconnecting misbehaving peers (default: %u)</source>
|
||||
<translation>Hranica pre odpájanie zle sa správajúcim partnerským uzlom (predvolené: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction amounts must not be negative</source>
|
||||
<translation>Sumy transakcií nesmú byť záporné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>Neznáma sieť upresnená v -onlynet: '%s'</translation>
|
||||
|
||||
@@ -3240,6 +3240,10 @@
|
||||
<source>Wallet %s resides outside data directory %s</source>
|
||||
<translation>钱包 %s 在外部的数据目录 %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet debugging/testing options:</source>
|
||||
<translation>钱包调试/测试选项:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet options:</source>
|
||||
<translation>钱包选项:</translation>
|
||||
|
||||
@@ -41,10 +41,70 @@
|
||||
<source>&Delete</source>
|
||||
<translation>刪除 &D</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>選擇要付錢過去的地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
<translation>選擇要收錢的地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
<translation>選擇 &h</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>付款地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>收款地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>複製地址 &C</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>複製標記 &L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>編輯 &E</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>匯出地址清單</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>逗號分隔檔 (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>匯出失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>儲存地址列表到 %1 時發生錯誤。請再試一次。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>標記</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(無標記)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
<message>
|
||||
@@ -63,7 +123,91 @@
|
||||
<source>Repeat new passphrase</source>
|
||||
<translation>重複新密碼</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Encrypt wallet</source>
|
||||
<translation>加密錢包</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
|
||||
<translation>這個動作需要你的錢包密碼來將錢包解鎖。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock wallet</source>
|
||||
<translation>解鎖錢包</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
|
||||
<translation>這個動作需要你的錢包密碼來將錢包解密。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Decrypt wallet</source>
|
||||
<translation>解密錢包</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change passphrase</source>
|
||||
<translation>更改密碼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the old passphrase and new passphrase to the wallet.</source>
|
||||
<translation>輸入舊密碼和新密碼至錢包。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm wallet encryption</source>
|
||||
<translation>確認錢包加密</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>!</source>
|
||||
<translation>警告: 如果你將錢包加密後又忘記密碼,你就會<b>失去所有 Bitcoin 了</b>!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you wish to encrypt your wallet?</source>
|
||||
<translation>你確定要把錢包加密嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encrypted</source>
|
||||
<translation>錢包已加密</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
|
||||
<translation>%1 現在要關閉來完成加密程序。請記得將錢包加密不能完全防止你的 Bitcoins 經被入侵電腦的惡意程式偷取。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
|
||||
<translation>重要: 請改用新產生的加密錢包檔,來取代所以舊錢包檔的備份。為安全計,當你開始使用新的加密錢包檔後,舊錢包檔的備份就不能再使用了。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encryption failed</source>
|
||||
<translation>錢包加密失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
|
||||
<translation>因內部錯誤導致錢包加密失敗,你的錢包尚未加密。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The supplied passphrases do not match.</source>
|
||||
<translation>提供的密碼不一致。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet unlock failed</source>
|
||||
<translation>錢包解鎖失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The passphrase entered for the wallet decryption was incorrect.</source>
|
||||
<translation>用來解密錢包的密碼不對。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet decryption failed</source>
|
||||
<translation>錢包解密失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet passphrase was successfully changed.</source>
|
||||
<translation>錢包密碼已成功更改。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: The Caps Lock key is on!</source>
|
||||
<translation>警告: Caps Lock 已啟用!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BanTableModel</name>
|
||||
<message>
|
||||
@@ -113,6 +257,14 @@
|
||||
<source>Quit application</source>
|
||||
<translation>結束應用程式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&About %1</source>
|
||||
<translation>關於 %1 &A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show information about %1</source>
|
||||
<translation>顯示 %1 的相關資訊</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About &Qt</source>
|
||||
<translation>關於 Qt &Q</translation>
|
||||
@@ -125,6 +277,10 @@
|
||||
<source>&Options...</source>
|
||||
<translation>選項... &O</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Modify configuration options for %1</source>
|
||||
<translation>修正 %1 的設定選項</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Encrypt Wallet...</source>
|
||||
<translation>加密錢包... &E</translation>
|
||||
@@ -201,9 +357,51 @@
|
||||
<source>Show or hide the main Window</source>
|
||||
<translation>顯示或隱藏主視窗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&File</source>
|
||||
<translation>檔案 &F</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Settings</source>
|
||||
<translation>設定 &S</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation>說明 &H</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Request payments (generates QR codes and bitcoin: URIs)</source>
|
||||
<translation>要求付款 (產生QR碼 bitcoin: URIs)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Indexing blocks on disk...</source>
|
||||
<translation>正在為磁碟區塊建立索引...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation>警告</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Information</source>
|
||||
<translation>資訊</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date: %1
|
||||
</source>
|
||||
<translation>日期: %1
|
||||
</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(無標記)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
@@ -216,6 +414,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>Intro</name>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ModalOverlay</name>
|
||||
@@ -237,28 +439,144 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<source>Enter a Bitcoin address (e.g. %1)</source>
|
||||
<translation>輸入一個 Bitcoin 位址 (例如 %1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 d</source>
|
||||
<translation>%1 日</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 h</source>
|
||||
<translation>%1 小時</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 m</source>
|
||||
<translation>%1 分</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 s</source>
|
||||
<translation>%1 秒</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>None</source>
|
||||
<translation>沒有</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>N/A</source>
|
||||
<translation>N/A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 ms</source>
|
||||
<translation>%1 亳秒</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n second(s)</source>
|
||||
<translation><numerusform>%n 秒</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n minute(s)</source>
|
||||
<translation><numerusform>%n 分鐘</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n hour(s)</source>
|
||||
<translation><numerusform>%n 小時</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n day(s)</source>
|
||||
<translation><numerusform>%n 日</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation><numerusform>%n 星期</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 and %2</source>
|
||||
<translation>%1 和 %2</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n year(s)</source>
|
||||
<translation><numerusform>%n 年</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject::QObject</name>
|
||||
</context>
|
||||
<context>
|
||||
<name>QRImageWidget</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Save QR Code</source>
|
||||
<translation>儲存 QR 碼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PNG Image (*.png)</source>
|
||||
<translation>PNG 影像(*.png)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RPCConsole</name>
|
||||
<message>
|
||||
<source>N/A</source>
|
||||
<translation>N/A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Information</source>
|
||||
<translation>資訊 &I</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug window</source>
|
||||
<translation>除錯視窗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation>一般</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received</source>
|
||||
<translation>已接收</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sent</source>
|
||||
<translation>已送出</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>版本</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveCoinsDialog</name>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveRequestDialog</name>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>標記</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>標記</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(無標記)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(無標記)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsEntry</name>
|
||||
</context>
|
||||
@@ -279,15 +597,47 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDesc</name>
|
||||
<message>
|
||||
<source>Open until %1</source>
|
||||
<translation>開放至 %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDescDialog</name>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>標記</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open until %1</source>
|
||||
<translation>開放至 %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(無標記)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>逗號分隔檔 (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>標記</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>匯出失敗</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
@@ -303,5 +653,17 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>bitcoin-core</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Information</source>
|
||||
<translation>資訊</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation>警告</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -55,8 +55,6 @@ const char* BIP70_MESSAGE_PAYMENTREQUEST = "PaymentRequest";
|
||||
const char* BIP71_MIMETYPE_PAYMENT = "application/bitcoin-payment";
|
||||
const char* BIP71_MIMETYPE_PAYMENTACK = "application/bitcoin-paymentack";
|
||||
const char* BIP71_MIMETYPE_PAYMENTREQUEST = "application/bitcoin-paymentrequest";
|
||||
// BIP70 max payment request size in bytes (DoS protection)
|
||||
const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000;
|
||||
|
||||
struct X509StoreDeleter {
|
||||
void operator()(X509_STORE* b) {
|
||||
|
||||
@@ -53,7 +53,7 @@ class QUrl;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
// BIP70 max payment request size in bytes (DoS protection)
|
||||
extern const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE;
|
||||
static const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000;
|
||||
|
||||
class PaymentServer : public QObject
|
||||
{
|
||||
|
||||
@@ -676,8 +676,12 @@ UniValue getblocktemplate(const JSONRPCRequest& request)
|
||||
nSigOpLimit /= WITNESS_SCALE_FACTOR;
|
||||
}
|
||||
result.push_back(Pair("sigoplimit", nSigOpLimit));
|
||||
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_SERIALIZED_SIZE));
|
||||
result.push_back(Pair("weightlimit", (int64_t)MAX_BLOCK_WEIGHT));
|
||||
if (fPreSegWit) {
|
||||
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_BASE_SIZE));
|
||||
} else {
|
||||
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_SERIALIZED_SIZE));
|
||||
result.push_back(Pair("weightlimit", (int64_t)MAX_BLOCK_WEIGHT));
|
||||
}
|
||||
result.push_back(Pair("curtime", pblock->GetBlockTime()));
|
||||
result.push_back(Pair("bits", strprintf("%08x", pblock->nBits)));
|
||||
result.push_back(Pair("height", (int64_t)(pindexPrev->nHeight+1)));
|
||||
|
||||
@@ -347,11 +347,11 @@ UniValue verifymessage(const JSONRPCRequest& request)
|
||||
"\nUnlock the wallet for 30 seconds\n"
|
||||
+ HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") +
|
||||
"\nCreate the signature\n"
|
||||
+ HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" \"my message\"") +
|
||||
+ HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"my message\"") +
|
||||
"\nVerify the signature\n"
|
||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" \"signature\" \"my message\"") +
|
||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
|
||||
"\nAs json rpc\n"
|
||||
+ HelpExampleRpc("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\", \"signature\", \"my message\"")
|
||||
+ HelpExampleRpc("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", \"signature\", \"my message\"")
|
||||
);
|
||||
|
||||
LOCK(cs_main);
|
||||
@@ -400,7 +400,7 @@ UniValue signmessagewithprivkey(const JSONRPCRequest& request)
|
||||
"\nCreate the signature\n"
|
||||
+ HelpExampleCli("signmessagewithprivkey", "\"privkey\" \"my message\"") +
|
||||
"\nVerify the signature\n"
|
||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" \"signature\" \"my message\"") +
|
||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
|
||||
"\nAs json rpc\n"
|
||||
+ HelpExampleRpc("signmessagewithprivkey", "\"privkey\", \"my message\"")
|
||||
);
|
||||
|
||||
@@ -245,7 +245,6 @@ UniValue gettxoutproof(const JSONRPCRequest& request)
|
||||
"unspent output in the utxo for this transaction. To make it always work,\n"
|
||||
"you need to maintain a transaction index, using the -txindex command line option or\n"
|
||||
"specify the block in which the transaction is included manually (by blockhash).\n"
|
||||
"\nReturn the raw transaction data.\n"
|
||||
"\nArguments:\n"
|
||||
"1. \"txids\" (string) A json array of txids to filter\n"
|
||||
" [\n"
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/iostreams/concepts.hpp>
|
||||
#include <boost/iostreams/stream.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/signals2/signal.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
|
||||
15
src/util.cpp
15
src/util.cpp
@@ -214,12 +214,13 @@ void OpenDebugLog()
|
||||
assert(vMsgsBeforeOpenLog);
|
||||
boost::filesystem::path pathDebug = GetDataDir() / "debug.log";
|
||||
fileout = fopen(pathDebug.string().c_str(), "a");
|
||||
if (fileout) setbuf(fileout, NULL); // unbuffered
|
||||
|
||||
// dump buffered messages from before we opened the log
|
||||
while (!vMsgsBeforeOpenLog->empty()) {
|
||||
FileWriteStr(vMsgsBeforeOpenLog->front(), fileout);
|
||||
vMsgsBeforeOpenLog->pop_front();
|
||||
if (fileout) {
|
||||
setbuf(fileout, NULL); // unbuffered
|
||||
// dump buffered messages from before we opened the log
|
||||
while (!vMsgsBeforeOpenLog->empty()) {
|
||||
FileWriteStr(vMsgsBeforeOpenLog->front(), fileout);
|
||||
vMsgsBeforeOpenLog->pop_front();
|
||||
}
|
||||
}
|
||||
|
||||
delete vMsgsBeforeOpenLog;
|
||||
@@ -838,4 +839,4 @@ std::string CopyrightHolders(const std::string& strPrefix)
|
||||
strCopyrightHolders += "\n" + strPrefix + "The Bitcoin Core developers";
|
||||
}
|
||||
return strCopyrightHolders;
|
||||
}
|
||||
}
|
||||
@@ -3331,7 +3331,7 @@ void PruneOneBlockFile(const int fileNumber)
|
||||
}
|
||||
|
||||
|
||||
void UnlinkPrunedFiles(std::set<int>& setFilesToPrune)
|
||||
void UnlinkPrunedFiles(const std::set<int>& setFilesToPrune)
|
||||
{
|
||||
for (std::set<int>::iterator it = setFilesToPrune.begin(); it != setFilesToPrune.end(); ++it) {
|
||||
CDiskBlockPos pos(*it, 0);
|
||||
@@ -4163,6 +4163,11 @@ std::string CBlockFileInfo::ToString() const
|
||||
return strprintf("CBlockFileInfo(blocks=%u, size=%u, heights=%u...%u, time=%s...%s)", nBlocks, nSize, nHeightFirst, nHeightLast, DateTimeStrFormat("%Y-%m-%d", nTimeFirst), DateTimeStrFormat("%Y-%m-%d", nTimeLast));
|
||||
}
|
||||
|
||||
CBlockFileInfo* GetBlockFileInfo(size_t n)
|
||||
{
|
||||
return &vinfoBlockFile.at(n);
|
||||
}
|
||||
|
||||
ThresholdState VersionBitsTipState(const Consensus::Params& params, Consensus::DeploymentPos pos)
|
||||
{
|
||||
LOCK(cs_main);
|
||||
@@ -4180,7 +4185,7 @@ static const uint64_t MEMPOOL_DUMP_VERSION = 1;
|
||||
bool LoadMempool(void)
|
||||
{
|
||||
int64_t nExpiryTimeout = GetArg("-mempoolexpiry", DEFAULT_MEMPOOL_EXPIRY) * 60 * 60;
|
||||
FILE* filestr = fopen((GetDataDir() / "mempool.dat").string().c_str(), "r");
|
||||
FILE* filestr = fopen((GetDataDir() / "mempool.dat").string().c_str(), "rb");
|
||||
CAutoFile file(filestr, SER_DISK, CLIENT_VERSION);
|
||||
if (file.IsNull()) {
|
||||
LogPrintf("Failed to open mempool file from disk. Continuing anyway.\n");
|
||||
@@ -4261,7 +4266,7 @@ void DumpMempool(void)
|
||||
int64_t mid = GetTimeMicros();
|
||||
|
||||
try {
|
||||
FILE* filestr = fopen((GetDataDir() / "mempool.dat.new").string().c_str(), "w");
|
||||
FILE* filestr = fopen((GetDataDir() / "mempool.dat.new").string().c_str(), "wb");
|
||||
if (!filestr) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -299,10 +299,15 @@ double GuessVerificationProgress(const ChainTxData& data, CBlockIndex* pindex);
|
||||
*/
|
||||
void FindFilesToPrune(std::set<int>& setFilesToPrune, uint64_t nPruneAfterHeight);
|
||||
|
||||
/**
|
||||
* Mark one block file as pruned.
|
||||
*/
|
||||
void PruneOneBlockFile(const int fileNumber);
|
||||
|
||||
/**
|
||||
* Actually unlink the specified files
|
||||
*/
|
||||
void UnlinkPrunedFiles(std::set<int>& setFilesToPrune);
|
||||
void UnlinkPrunedFiles(const std::set<int>& setFilesToPrune);
|
||||
|
||||
/** Create a new block index entry for a given block hash */
|
||||
CBlockIndex * InsertBlockIndex(uint256 hash);
|
||||
@@ -562,6 +567,9 @@ static const unsigned int REJECT_ALREADY_KNOWN = 0x101;
|
||||
/** Transaction conflicts with a transaction already known */
|
||||
static const unsigned int REJECT_CONFLICT = 0x102;
|
||||
|
||||
/** Get block file info entry for one block file */
|
||||
CBlockFileInfo* GetBlockFileInfo(size_t n);
|
||||
|
||||
/** Dump the mempool to disk. */
|
||||
void DumpMempool();
|
||||
|
||||
|
||||
@@ -1072,13 +1072,35 @@ UniValue importmulti(const JSONRPCRequest& mainRequest)
|
||||
}
|
||||
}
|
||||
|
||||
if (fRescan && fRunScan && requests.size() && nLowestTimestamp <= chainActive.Tip()->GetBlockTimeMax()) {
|
||||
if (fRescan && fRunScan && requests.size()) {
|
||||
CBlockIndex* pindex = nLowestTimestamp > minimumTimestamp ? chainActive.FindEarliestAtLeast(std::max<int64_t>(nLowestTimestamp - 7200, 0)) : chainActive.Genesis();
|
||||
|
||||
CBlockIndex* scannedRange = nullptr;
|
||||
if (pindex) {
|
||||
pwalletMain->ScanForWalletTransactions(pindex, true);
|
||||
scannedRange = pwalletMain->ScanForWalletTransactions(pindex, true);
|
||||
pwalletMain->ReacceptWalletTransactions();
|
||||
}
|
||||
|
||||
if (!scannedRange || scannedRange->nHeight > pindex->nHeight) {
|
||||
std::vector<UniValue> results = response.getValues();
|
||||
response.clear();
|
||||
response.setArray();
|
||||
size_t i = 0;
|
||||
for (const UniValue& request : requests.getValues()) {
|
||||
// If key creation date is within the successfully scanned
|
||||
// range, or if the import result already has an error set, let
|
||||
// the result stand unmodified. Otherwise replace the result
|
||||
// with an error message.
|
||||
if (GetImportTimestamp(request, now) - 7200 >= scannedRange->GetBlockTimeMax() || results.at(i).exists("error")) {
|
||||
response.push_back(results.at(i));
|
||||
} else {
|
||||
UniValue result = UniValue(UniValue::VOBJ);
|
||||
result.pushKV("success", UniValue(false));
|
||||
result.pushKV("error", JSONRPCError(RPC_MISC_ERROR, strprintf("Failed to rescan before time %d, transactions may be missing.", scannedRange->GetBlockTimeMax())));
|
||||
response.push_back(std::move(result));
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
|
||||
@@ -236,8 +236,8 @@ UniValue setaccount(const JSONRPCRequest& request)
|
||||
"1. \"address\" (string, required) The bitcoin address to be associated with an account.\n"
|
||||
"2. \"account\" (string, required) The account to assign the address to.\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("setaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" \"tabby\"")
|
||||
+ HelpExampleRpc("setaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\", \"tabby\"")
|
||||
+ HelpExampleCli("setaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"tabby\"")
|
||||
+ HelpExampleRpc("setaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", \"tabby\"")
|
||||
);
|
||||
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
@@ -283,8 +283,8 @@ UniValue getaccount(const JSONRPCRequest& request)
|
||||
"\nResult:\n"
|
||||
"\"accountname\" (string) the account address\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("getaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\"")
|
||||
+ HelpExampleRpc("getaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\"")
|
||||
+ HelpExampleCli("getaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\"")
|
||||
+ HelpExampleRpc("getaccount", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\"")
|
||||
);
|
||||
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
@@ -503,11 +503,11 @@ UniValue signmessage(const JSONRPCRequest& request)
|
||||
"\nUnlock the wallet for 30 seconds\n"
|
||||
+ HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") +
|
||||
"\nCreate the signature\n"
|
||||
+ HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" \"my message\"") +
|
||||
+ HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"my message\"") +
|
||||
"\nVerify the signature\n"
|
||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" \"signature\" \"my message\"") +
|
||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
|
||||
"\nAs json rpc\n"
|
||||
+ HelpExampleRpc("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\", \"my message\"")
|
||||
+ HelpExampleRpc("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", \"my message\"")
|
||||
);
|
||||
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
@@ -556,13 +556,13 @@ UniValue getreceivedbyaddress(const JSONRPCRequest& request)
|
||||
"amount (numeric) The total amount in " + CURRENCY_UNIT + " received at this address.\n"
|
||||
"\nExamples:\n"
|
||||
"\nThe amount from transactions with at least 1 confirmation\n"
|
||||
+ HelpExampleCli("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\"") +
|
||||
+ HelpExampleCli("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\"") +
|
||||
"\nThe amount including unconfirmed transactions, zero confirmations\n"
|
||||
+ HelpExampleCli("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" 0") +
|
||||
+ HelpExampleCli("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" 0") +
|
||||
"\nThe amount with at least 6 confirmation, very safe\n"
|
||||
+ HelpExampleCli("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\" 6") +
|
||||
+ HelpExampleCli("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" 6") +
|
||||
"\nAs a json rpc call\n"
|
||||
+ HelpExampleRpc("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\", 6")
|
||||
+ HelpExampleRpc("getreceivedbyaddress", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", 6")
|
||||
);
|
||||
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
@@ -819,6 +819,9 @@ UniValue sendfrom(const JSONRPCRequest& request)
|
||||
+ HelpRequiringPassphrase() + "\n"
|
||||
"\nArguments:\n"
|
||||
"1. \"fromaccount\" (string, required) The name of the account to send funds from. May be the default account using \"\".\n"
|
||||
" Specifying an account does not influence coin selection, but it does associate the newly created\n"
|
||||
" transaction with the account, so the account's balance computation and transaction history can reflect\n"
|
||||
" the spend.\n"
|
||||
"2. \"toaddress\" (string, required) The bitcoin address to send funds to.\n"
|
||||
"3. amount (numeric or string, required) The amount in " + CURRENCY_UNIT + " (transaction fee is added on top).\n"
|
||||
"4. minconf (numeric, optional, default=1) Only use funds with at least this many confirmations.\n"
|
||||
@@ -903,13 +906,13 @@ UniValue sendmany(const JSONRPCRequest& request)
|
||||
" the number of addresses.\n"
|
||||
"\nExamples:\n"
|
||||
"\nSend two amounts to two different addresses:\n"
|
||||
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\"") +
|
||||
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\"") +
|
||||
"\nSend two amounts to two different addresses setting the confirmation and comment:\n"
|
||||
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 6 \"testing\"") +
|
||||
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 6 \"testing\"") +
|
||||
"\nSend two amounts to two different addresses, subtract fee from amount:\n"
|
||||
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 1 \"\" \"[\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\",\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\"]\"") +
|
||||
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 1 \"\" \"[\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\\\",\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\"]\"") +
|
||||
"\nAs a json rpc call\n"
|
||||
+ HelpExampleRpc("sendmany", "\"\", \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\", 6, \"testing\"")
|
||||
+ HelpExampleRpc("sendmany", "\"\", \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\", 6, \"testing\"")
|
||||
);
|
||||
|
||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||
|
||||
@@ -9,10 +9,16 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "rpc/server.h"
|
||||
#include "test/test_bitcoin.h"
|
||||
#include "validation.h"
|
||||
#include "wallet/test/wallet_test_fixture.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <univalue.h>
|
||||
|
||||
extern UniValue importmulti(const JSONRPCRequest& request);
|
||||
|
||||
// how many times to run all the tests to have a chance to catch errors that only show up with particular random shuffles
|
||||
#define RUN_TESTS 100
|
||||
@@ -355,4 +361,71 @@ BOOST_AUTO_TEST_CASE(ApproximateBestSubset)
|
||||
empty_wallet();
|
||||
}
|
||||
|
||||
BOOST_FIXTURE_TEST_CASE(rescan, TestChain100Setup)
|
||||
{
|
||||
LOCK(cs_main);
|
||||
|
||||
// Cap last block file size, and mine new block in a new block file.
|
||||
CBlockIndex* oldTip = chainActive.Tip();
|
||||
GetBlockFileInfo(oldTip->GetBlockPos().nFile)->nSize = MAX_BLOCKFILE_SIZE;
|
||||
CreateAndProcessBlock({}, GetScriptForRawPubKey(coinbaseKey.GetPubKey()));
|
||||
CBlockIndex* newTip = chainActive.Tip();
|
||||
|
||||
// Verify ScanForWalletTransactions picks up transactions in both the old
|
||||
// and new block files.
|
||||
{
|
||||
CWallet wallet;
|
||||
LOCK(wallet.cs_wallet);
|
||||
wallet.AddKeyPubKey(coinbaseKey, coinbaseKey.GetPubKey());
|
||||
BOOST_CHECK_EQUAL(oldTip, wallet.ScanForWalletTransactions(oldTip));
|
||||
BOOST_CHECK_EQUAL(wallet.GetImmatureBalance(), 100 * COIN);
|
||||
}
|
||||
|
||||
// Prune the older block file.
|
||||
PruneOneBlockFile(oldTip->GetBlockPos().nFile);
|
||||
UnlinkPrunedFiles({oldTip->GetBlockPos().nFile});
|
||||
|
||||
// Verify ScanForWalletTransactions only picks transactions in the new block
|
||||
// file.
|
||||
{
|
||||
CWallet wallet;
|
||||
LOCK(wallet.cs_wallet);
|
||||
wallet.AddKeyPubKey(coinbaseKey, coinbaseKey.GetPubKey());
|
||||
BOOST_CHECK_EQUAL(newTip, wallet.ScanForWalletTransactions(oldTip));
|
||||
BOOST_CHECK_EQUAL(wallet.GetImmatureBalance(), 50 * COIN);
|
||||
}
|
||||
|
||||
// Verify importmulti RPC returns failure for a key whose creation time is
|
||||
// before the missing block, and success for a key whose creation time is
|
||||
// after.
|
||||
{
|
||||
CWallet wallet;
|
||||
CWallet *backup = ::pwalletMain;
|
||||
::pwalletMain = &wallet;
|
||||
UniValue keys;
|
||||
keys.setArray();
|
||||
UniValue key;
|
||||
key.setObject();
|
||||
key.pushKV("scriptPubKey", HexStr(GetScriptForRawPubKey(coinbaseKey.GetPubKey())));
|
||||
key.pushKV("timestamp", 0);
|
||||
key.pushKV("internal", UniValue(true));
|
||||
keys.push_back(key);
|
||||
key.clear();
|
||||
key.setObject();
|
||||
CKey futureKey;
|
||||
futureKey.MakeNewKey(true);
|
||||
key.pushKV("scriptPubKey", HexStr(GetScriptForRawPubKey(futureKey.GetPubKey())));
|
||||
key.pushKV("timestamp", newTip->GetBlockTimeMax() + 7200);
|
||||
key.pushKV("internal", UniValue(true));
|
||||
keys.push_back(key);
|
||||
JSONRPCRequest request;
|
||||
request.params.setArray();
|
||||
request.params.push_back(keys);
|
||||
|
||||
UniValue response = importmulti(request);
|
||||
BOOST_CHECK_EQUAL(response.write(), strprintf("[{\"success\":false,\"error\":{\"code\":-1,\"message\":\"Failed to rescan before time %d, transactions may be missing.\"}},{\"success\":true}]", newTip->GetBlockTimeMax()));
|
||||
::pwalletMain = backup;
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
@@ -1545,10 +1545,14 @@ void CWalletTx::GetAccountAmounts(const string& strAccount, CAmount& nReceived,
|
||||
* Scan the block chain (starting in pindexStart) for transactions
|
||||
* from or to us. If fUpdate is true, found transactions that already
|
||||
* exist in the wallet will be updated.
|
||||
*
|
||||
* Returns pointer to the first block in the last contiguous range that was
|
||||
* successfully scanned.
|
||||
*
|
||||
*/
|
||||
int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
|
||||
CBlockIndex* CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
|
||||
{
|
||||
int ret = 0;
|
||||
CBlockIndex* ret = nullptr;
|
||||
int64_t nNow = GetTime();
|
||||
const CChainParams& chainParams = Params();
|
||||
|
||||
@@ -1570,12 +1574,15 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
|
||||
ShowProgress(_("Rescanning..."), std::max(1, std::min(99, (int)((GuessVerificationProgress(chainParams.TxData(), pindex) - dProgressStart) / (dProgressTip - dProgressStart) * 100))));
|
||||
|
||||
CBlock block;
|
||||
ReadBlockFromDisk(block, pindex, Params().GetConsensus());
|
||||
int posInBlock;
|
||||
for (posInBlock = 0; posInBlock < (int)block.vtx.size(); posInBlock++)
|
||||
{
|
||||
if (AddToWalletIfInvolvingMe(*block.vtx[posInBlock], pindex, posInBlock, fUpdate))
|
||||
ret++;
|
||||
if (ReadBlockFromDisk(block, pindex, Params().GetConsensus())) {
|
||||
for (size_t posInBlock = 0; posInBlock < block.vtx.size(); ++posInBlock) {
|
||||
AddToWalletIfInvolvingMe(*block.vtx[posInBlock], pindex, posInBlock, fUpdate);
|
||||
}
|
||||
if (!ret) {
|
||||
ret = pindex;
|
||||
}
|
||||
} else {
|
||||
ret = nullptr;
|
||||
}
|
||||
pindex = chainActive.Next(pindex);
|
||||
if (GetTime() >= nNow + 60) {
|
||||
|
||||
@@ -788,7 +788,7 @@ public:
|
||||
bool LoadToWallet(const CWalletTx& wtxIn);
|
||||
void SyncTransaction(const CTransaction& tx, const CBlockIndex *pindex, int posInBlock) override;
|
||||
bool AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlockIndex* pIndex, int posInBlock, bool fUpdate);
|
||||
int ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate = false);
|
||||
CBlockIndex* ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate = false);
|
||||
void ReacceptWalletTransactions();
|
||||
void ResendWalletTransactions(int64_t nBestBlockTime, CConnman* connman) override;
|
||||
std::vector<uint256> ResendWalletTransactionsBefore(int64_t nTime, CConnman* connman);
|
||||
|
||||
Reference in New Issue
Block a user