mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-22 00:00:55 +01:00
Compare commits
102 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
964a185cc8 | ||
|
|
51c787dfb4 | ||
|
|
38ab0a7465 | ||
|
|
33fadc20ba | ||
|
|
348a71701d | ||
|
|
30fa231011 | ||
|
|
3c796026e5 | ||
|
|
06909df179 | ||
|
|
b7caa30c48 | ||
|
|
55f641ca19 | ||
|
|
24d74332c2 | ||
|
|
226a9cb35d | ||
|
|
39febb8c6d | ||
|
|
df82ea914f | ||
|
|
920acbcca8 | ||
|
|
47d24c85b7 | ||
|
|
ea060c7495 | ||
|
|
d947afc0f7 | ||
|
|
0e5133cb2e | ||
|
|
d6867689d1 | ||
|
|
ab864d3e49 | ||
|
|
a44a6a15f9 | ||
|
|
2fea10ad03 | ||
|
|
f15268db3b | ||
|
|
0b5e162b84 | ||
|
|
fa6b5fc1cc | ||
|
|
e4c9a90fe9 | ||
|
|
f59e3dfc59 | ||
|
|
ecc523288c | ||
|
|
04c21afcdf | ||
|
|
a296c6009f | ||
|
|
10028fb555 | ||
|
|
b5c3440b05 | ||
|
|
b768202695 | ||
|
|
fa7555b16a | ||
|
|
142fbb2fec | ||
|
|
fc3d7db580 | ||
|
|
e9611d10b6 | ||
|
|
ddc2dd1612 | ||
|
|
4d8e66017f | ||
|
|
37bf0d5b38 | ||
|
|
eeeeacd600 | ||
|
|
ccb47bf830 | ||
|
|
fa8c6ddbef | ||
|
|
4e2502bb51 | ||
|
|
d2548a4f97 | ||
|
|
2cd2cd51f7 | ||
|
|
569596cc51 | ||
|
|
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
|
||||
|
||||
34
configure.ac
34
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, 1)
|
||||
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
|
||||
@@ -541,6 +557,14 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
||||
[ AC_MSG_RESULT(no)]
|
||||
)
|
||||
|
||||
dnl Check for mallopt(M_ARENA_MAX) (to set glibc arenas)
|
||||
AC_MSG_CHECKING(for mallopt M_ARENA_MAX)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
|
||||
[[ mallopt(M_ARENA_MAX, 1); ]])],
|
||||
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MALLOPT_ARENA_MAX, 1,[Define this symbol if you have mallopt with M_ARENA_MAX]) ],
|
||||
[ AC_MSG_RESULT(no)]
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING([for visibility attribute])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
int foo_def( void ) __attribute__((visibility("default")));
|
||||
@@ -1066,6 +1090,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 +1180,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
|
||||
|
||||
@@ -7,8 +7,10 @@ $(package)_sha256_hash=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca11
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts= CC="$($(package)_cc)"
|
||||
$(package)_build_opts+=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC"
|
||||
$(package)_build_opts+=AR="$($(package)_ar)"
|
||||
$(package)_build_opts+=RANLIB="$($(package)_ranlib)"
|
||||
$(package)_build_opts+=AR="$($(package)_ar)"
|
||||
$(package)_build_opts_darwin+=AR="$($(package)_libtool)"
|
||||
$(package)_build_opts_darwin+=ARFLAGS="-o"
|
||||
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.1
|
||||
|
||||
# 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.1
|
||||
=====================
|
||||
|
||||
Setup
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Bitcoin Core 0.13.99
|
||||
Bitcoin Core 0.14.1
|
||||
=====================
|
||||
|
||||
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,12 +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 0.14.1 is now available from:
|
||||
|
||||
Bitcoin Core version *version* is now available from:
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.14.1/>
|
||||
|
||||
<https://bitcoin.org/bin/bitcoin-core-*version*/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
@@ -22,9 +19,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,72 +30,54 @@ frequently tested on them.
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Low-level RPC changes
|
||||
RPC changes
|
||||
-----------
|
||||
|
||||
- The first positional argument of `createrawtransaction` was renamed from
|
||||
`transactions` to `inputs`.
|
||||
|
||||
- The argument of `disconnectnode` was renamed from `node` to `address`.
|
||||
|
||||
These interface changes break compatibility with 0.14.0, when the named
|
||||
arguments functionality, introduced in 0.14.0, is used. Client software
|
||||
using these calls with named arguments needs to be updated.
|
||||
|
||||
Mining
|
||||
------
|
||||
|
||||
In previous versions, getblocktemplate required segwit support from downstream
|
||||
clients/miners once the feature activated on the network. In this version, it
|
||||
now supports non-segwit clients even after activation, by removing all segwit
|
||||
transactions from the returned block template. This allows non-segwit miners to
|
||||
continue functioning correctly even after segwit has activated.
|
||||
|
||||
Due to the limitations in previous versions, getblocktemplate also recommended
|
||||
non-segwit clients to not signal for the segwit version-bit. Since this is no
|
||||
longer an issue, getblocktemplate now always recommends signalling segwit for
|
||||
all miners. This is safe because ability to enforce the rule is the only
|
||||
required criteria for safe activation, not actually producing segwit-enabled
|
||||
blocks.
|
||||
|
||||
UTXO memory accounting
|
||||
----------------------
|
||||
|
||||
- `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.
|
||||
Memory usage for the UTXO cache is being calculated more accurately, so that
|
||||
the configured limit (`-dbcache`) will be respected when memory usage peaks
|
||||
during cache flushes. The memory accounting in prior releases is estimated to
|
||||
only account for half the actual peak utilization.
|
||||
|
||||
Fee Estimation Changes
|
||||
----------------------
|
||||
The default `-dbcache` has also been changed in this release to 450MiB. Users
|
||||
who currently set `-dbcache` to a high value (e.g. to keep the UTXO more fully
|
||||
cached in memory) should consider increasing this setting in order to achieve
|
||||
the same cache performance as prior releases. Users on low-memory systems
|
||||
(such as systems with 1GB or less) should consider specifying a lower value for
|
||||
this parameter.
|
||||
|
||||
- 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
|
||||
data for this target anyway. `estimatefee 1` will now always return -1 and
|
||||
`estimatesmartfee 1` will start searching at a target of 2.
|
||||
Additional information relating to running on low-memory systems can be found
|
||||
here:
|
||||
[reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7).
|
||||
|
||||
- The default target for fee estimation is changed to 6 blocks in both the GUI
|
||||
(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
|
||||
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.
|
||||
|
||||
P2P connection management
|
||||
--------------------------
|
||||
|
||||
- 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.
|
||||
|
||||
- New connections to manually added peers are much faster.
|
||||
|
||||
Introduction of assumed-valid blocks
|
||||
-------------------------------------
|
||||
|
||||
- A significant portion of the initial block download time is spent verifying
|
||||
scripts/signatures. Although the verification must pass to ensure the security
|
||||
of the system, no other result from this verification is needed: If the node
|
||||
knew the history of a given block were valid it could skip checking scripts
|
||||
for its ancestors.
|
||||
|
||||
- A new configuration option 'assumevalid' is provided to express this knowledge
|
||||
to the software. Unlike the 'checkpoints' in the past this setting does not
|
||||
force the use of a particular chain: chains that are consistent with it are
|
||||
processed quicker, but other chains are still accepted if they'd otherwise
|
||||
be chosen as best. Also unlike 'checkpoints' the user can configure which
|
||||
block history is assumed true, this means that even outdated software can
|
||||
sync more quickly if the setting is updated by the user.
|
||||
|
||||
- Because the validity of a chain history is a simple objective fact it is much
|
||||
easier to review this setting. As a result the software ships with a default
|
||||
value adjusted to match the current chain shortly before release. The use
|
||||
of this default value can be disabled by setting -assumevalid=0
|
||||
|
||||
0.14.0 Change log
|
||||
0.14.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
@@ -106,48 +85,59 @@ behavior, not code moves, refactors and string updates. For convenience in locat
|
||||
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
|
||||
- #10084 `142fbb2` Rename first named arg of createrawtransaction (MarcoFalke)
|
||||
- #10139 `f15268d` Remove auth cookie on shutdown (practicalswift)
|
||||
- #10146 `2fea10a` Better error handling for submitblock (rawodb, gmaxwell)
|
||||
- #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar)
|
||||
- #10204 `3c79602` Rename disconnectnode argument (jnewbery)
|
||||
|
||||
### Block and transaction handling
|
||||
- #10126 `0b5e162` Compensate for memory peak at flush time (sipa)
|
||||
- #9912 `fc3d7db` Optimize GetWitnessHash() for non-segwit transactions (sdaftuar)
|
||||
- #10133 `ab864d3` Clean up calculations of pcoinsTip memory usage (morcos)
|
||||
|
||||
### P2P protocol and network code
|
||||
|
||||
### Validation
|
||||
- #9953/#10013 `d2548a4` Fix shutdown hang with >= 8 -addnodes set (TheBlueMatt)
|
||||
- #10176 `30fa231` net: gracefully handle NodeId wrapping (theuni)
|
||||
|
||||
### 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.
|
||||
- #9973 `e9611d1` depends: fix zlib build on osx (theuni)
|
||||
|
||||
### GUI
|
||||
- #10060 `ddc2dd1` Ensure an item exists on the rpcconsole stack before adding (achow101)
|
||||
|
||||
### Tests
|
||||
### Mining
|
||||
- #9955/#10006 `569596c` Don't require segwit in getblocktemplate for segwit signalling or mining (sdaftuar)
|
||||
- #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar)
|
||||
|
||||
### Tests and QA
|
||||
- #10157 `55f641c` Fix the `mempool_packages.py` test (sdaftuar)
|
||||
|
||||
### Miscellaneous
|
||||
- #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike)
|
||||
- #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj)
|
||||
- #10130 `ecc5232` bitcoin-tx input verification (awemany, jnewbery)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Andrew Chow
|
||||
- Awemany
|
||||
- Cory Fields
|
||||
- Gregory Maxwell
|
||||
- James Evans
|
||||
- John Newbery
|
||||
- MarcoFalke
|
||||
- Matt Corallo
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- rawodb
|
||||
- Suhas Daftuar
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
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.
|
||||
|
||||
@@ -102,6 +102,18 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||
assert_equal(mempool[x], v_descendants[x])
|
||||
assert(chain[0] not in v_descendants.keys())
|
||||
|
||||
# Check that ancestor modified fees includes fee deltas from
|
||||
# prioritisetransaction
|
||||
self.nodes[0].prioritisetransaction(chain[0], 0, 1000)
|
||||
mempool = self.nodes[0].getrawmempool(True)
|
||||
ancestor_fees = 0
|
||||
for x in chain:
|
||||
ancestor_fees += mempool[x]['fee']
|
||||
assert_equal(mempool[x]['ancestorfees'], ancestor_fees * COIN + 1000)
|
||||
|
||||
# Undo the prioritisetransaction for later tests
|
||||
self.nodes[0].prioritisetransaction(chain[0], 0, -1000)
|
||||
|
||||
# Check that descendant modified fees includes fee deltas from
|
||||
# prioritisetransaction
|
||||
self.nodes[0].prioritisetransaction(chain[-1], 0, 1000)
|
||||
|
||||
@@ -1701,9 +1701,11 @@ class SegWitTest(BitcoinTestFramework):
|
||||
for node in [self.nodes[0], self.nodes[2]]:
|
||||
gbt_results = node.getblocktemplate()
|
||||
block_version = gbt_results['version']
|
||||
# If we're not indicating segwit support, we should not be signalling
|
||||
# for segwit activation, nor should we get a witness commitment.
|
||||
assert_equal(block_version & (1 << VB_WITNESS_BIT), 0)
|
||||
# If we're not indicating segwit support, we will still be
|
||||
# signalling for segwit activation.
|
||||
assert_equal((block_version & (1 << VB_WITNESS_BIT) != 0), node == self.nodes[0])
|
||||
# If we don't specify the segwit rule, then we won't get a default
|
||||
# commitment.
|
||||
assert('default_witness_commitment' not in gbt_results)
|
||||
|
||||
# Workaround:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -11,9 +11,9 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
from test_framework.mininode import sha256, ripemd160, CTransaction, CTxIn, COutPoint, CTxOut
|
||||
from test_framework.address import script_to_p2sh, key_to_p2pkh
|
||||
from test_framework.script import CScript, OP_HASH160, OP_CHECKSIG, OP_0, hash160, OP_EQUAL, OP_DUP, OP_EQUALVERIFY, OP_1, OP_2, OP_CHECKMULTISIG
|
||||
from test_framework.script import CScript, OP_HASH160, OP_CHECKSIG, OP_0, hash160, OP_EQUAL, OP_DUP, OP_EQUALVERIFY, OP_1, OP_2, OP_CHECKMULTISIG, OP_TRUE
|
||||
from io import BytesIO
|
||||
from test_framework.mininode import FromHex
|
||||
from test_framework.mininode import ToHex, FromHex, COIN
|
||||
|
||||
NODE_0 = 0
|
||||
NODE_1 = 1
|
||||
@@ -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,22 +245,60 @@ 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)
|
||||
|
||||
print("Verify non-segwit miners get a valid GBT response after the fork")
|
||||
send_to_witness(1, self.nodes[0], find_unspent(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.998"))
|
||||
try:
|
||||
tmpl = self.nodes[0].getblocktemplate({})
|
||||
assert(len(tmpl['transactions']) == 1) # Doesn't include witness tx
|
||||
assert(tmpl['sigoplimit'] == 20000)
|
||||
assert(tmpl['transactions'][0]['hash'] == txid)
|
||||
assert(tmpl['transactions'][0]['sigops'] == 2)
|
||||
assert(('!segwit' in tmpl['rules']) or ('segwit' not in tmpl['rules']))
|
||||
except JSONRPCException:
|
||||
# This is an acceptable outcome
|
||||
pass
|
||||
self.nodes[0].generate(1) # Mine a block to clear the gbt cache
|
||||
|
||||
print("Non-segwit miners are able to use GBT response after activation.")
|
||||
# Create a 3-tx chain: tx1 (non-segwit input, paying to a segwit output) ->
|
||||
# tx2 (segwit input, paying to a non-segwit output) ->
|
||||
# tx3 (non-segwit input, paying to a non-segwit output).
|
||||
# tx1 is allowed to appear in the block, but no others.
|
||||
txid1 = send_to_witness(1, self.nodes[0], find_unspent(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.996"))
|
||||
hex_tx = self.nodes[0].gettransaction(txid)['hex']
|
||||
tx = FromHex(CTransaction(), hex_tx)
|
||||
assert(tx.wit.is_null()) # This should not be a segwit input
|
||||
assert(txid1 in self.nodes[0].getrawmempool())
|
||||
|
||||
# Now create tx2, which will spend from txid1.
|
||||
tx = CTransaction()
|
||||
tx.vin.append(CTxIn(COutPoint(int(txid1, 16), 0), b''))
|
||||
tx.vout.append(CTxOut(int(49.99*COIN), CScript([OP_TRUE])))
|
||||
tx2_hex = self.nodes[0].signrawtransaction(ToHex(tx))['hex']
|
||||
txid2 = self.nodes[0].sendrawtransaction(tx2_hex)
|
||||
tx = FromHex(CTransaction(), tx2_hex)
|
||||
assert(not tx.wit.is_null())
|
||||
|
||||
# Now create tx3, which will spend from txid2
|
||||
tx = CTransaction()
|
||||
tx.vin.append(CTxIn(COutPoint(int(txid2, 16), 0), b""))
|
||||
tx.vout.append(CTxOut(int(49.95*COIN), CScript([OP_TRUE]))) # Huge fee
|
||||
tx.calc_sha256()
|
||||
txid3 = self.nodes[0].sendrawtransaction(ToHex(tx))
|
||||
assert(tx.wit.is_null())
|
||||
assert(txid3 in self.nodes[0].getrawmempool())
|
||||
|
||||
# Now try calling getblocktemplate() without segwit support.
|
||||
template = self.nodes[0].getblocktemplate()
|
||||
|
||||
# Check that tx1 is the only transaction of the 3 in the template.
|
||||
template_txids = [ t['txid'] for t in template['transactions'] ]
|
||||
assert(txid2 not in template_txids and txid3 not in template_txids)
|
||||
assert(txid1 in template_txids)
|
||||
|
||||
# Check that running with segwit support results in all 3 being included.
|
||||
template = self.nodes[0].getblocktemplate({"rules": ["segwit"]})
|
||||
template_txids = [ t['txid'] for t in template['transactions'] ]
|
||||
assert(txid1 in template_txids)
|
||||
assert(txid2 in template_txids)
|
||||
assert(txid3 in template_txids)
|
||||
|
||||
# Mine a block to clear the gbt cache again.
|
||||
self.nodes[0].generate(1)
|
||||
|
||||
print("Verify behaviour of importaddress, addwitnessaddress and listunspent")
|
||||
|
||||
|
||||
@@ -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 =
|
||||
|
||||
|
||||
@@ -242,6 +242,9 @@ static void MutateTxAddOutAddr(CMutableTransaction& tx, const std::string& strIn
|
||||
std::vector<std::string> vStrInputParts;
|
||||
boost::split(vStrInputParts, strInput, boost::is_any_of(":"));
|
||||
|
||||
if (vStrInputParts.size() != 2)
|
||||
throw std::runtime_error("TX output missing or too many separators");
|
||||
|
||||
// Extract and validate VALUE
|
||||
CAmount value = ExtractAndValidateValue(vStrInputParts[0]);
|
||||
|
||||
@@ -264,6 +267,9 @@ static void MutateTxAddOutPubKey(CMutableTransaction& tx, const std::string& str
|
||||
std::vector<std::string> vStrInputParts;
|
||||
boost::split(vStrInputParts, strInput, boost::is_any_of(":"));
|
||||
|
||||
if (vStrInputParts.size() < 2 || vStrInputParts.size() > 3)
|
||||
throw std::runtime_error("TX output missing or too many separators");
|
||||
|
||||
// Extract and validate VALUE
|
||||
CAmount value = ExtractAndValidateValue(vStrInputParts[0]);
|
||||
|
||||
|
||||
@@ -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 1
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,8 +127,10 @@ void BlockAssembler::resetBlock()
|
||||
blockFinished = false;
|
||||
}
|
||||
|
||||
std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn)
|
||||
std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, bool fMineWitnessTx)
|
||||
{
|
||||
int64_t nTimeStart = GetTimeMicros();
|
||||
|
||||
resetBlock();
|
||||
|
||||
pblocktemplate.reset(new CBlockTemplate());
|
||||
@@ -165,10 +167,14 @@ std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& sc
|
||||
// -promiscuousmempoolflags is used.
|
||||
// TODO: replace this with a call to main to assess validity of a mempool
|
||||
// transaction (which in most cases can be a no-op).
|
||||
fIncludeWitness = IsWitnessEnabled(pindexPrev, chainparams.GetConsensus());
|
||||
fIncludeWitness = IsWitnessEnabled(pindexPrev, chainparams.GetConsensus()) && fMineWitnessTx;
|
||||
|
||||
addPriorityTxs();
|
||||
addPackageTxs();
|
||||
int nPackagesSelected = 0;
|
||||
int nDescendantsUpdated = 0;
|
||||
addPackageTxs(nPackagesSelected, nDescendantsUpdated);
|
||||
|
||||
int64_t nTime1 = GetTimeMicros();
|
||||
|
||||
nLastBlockTx = nBlockTx;
|
||||
nLastBlockSize = nBlockSize;
|
||||
@@ -200,6 +206,9 @@ std::unique_ptr<CBlockTemplate> BlockAssembler::CreateNewBlock(const CScript& sc
|
||||
if (!TestBlockValidity(state, chainparams, *pblock, pindexPrev, false, false)) {
|
||||
throw std::runtime_error(strprintf("%s: TestBlockValidity failed: %s", __func__, FormatStateMessage(state)));
|
||||
}
|
||||
int64_t nTime2 = GetTimeMicros();
|
||||
|
||||
LogPrint("bench", "CreateNewBlock() packages: %.2fms (%d packages, %d updated descendants), validity: %.2fms (total %.2fms)\n", 0.001 * (nTime1 - nTimeStart), nPackagesSelected, nDescendantsUpdated, 0.001 * (nTime2 - nTime1), 0.001 * (nTime2 - nTimeStart));
|
||||
|
||||
return std::move(pblocktemplate);
|
||||
}
|
||||
@@ -340,9 +349,10 @@ void BlockAssembler::AddToBlock(CTxMemPool::txiter iter)
|
||||
}
|
||||
}
|
||||
|
||||
void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded,
|
||||
int BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded,
|
||||
indexed_modified_transaction_set &mapModifiedTx)
|
||||
{
|
||||
int nDescendantsUpdated = 0;
|
||||
BOOST_FOREACH(const CTxMemPool::txiter it, alreadyAdded) {
|
||||
CTxMemPool::setEntries descendants;
|
||||
mempool.CalculateDescendants(it, descendants);
|
||||
@@ -350,6 +360,7 @@ void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alread
|
||||
BOOST_FOREACH(CTxMemPool::txiter desc, descendants) {
|
||||
if (alreadyAdded.count(desc))
|
||||
continue;
|
||||
++nDescendantsUpdated;
|
||||
modtxiter mit = mapModifiedTx.find(desc);
|
||||
if (mit == mapModifiedTx.end()) {
|
||||
CTxMemPoolModifiedEntry modEntry(desc);
|
||||
@@ -362,6 +373,7 @@ void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alread
|
||||
}
|
||||
}
|
||||
}
|
||||
return nDescendantsUpdated;
|
||||
}
|
||||
|
||||
// Skip entries in mapTx that are already in a block or are present
|
||||
@@ -402,7 +414,7 @@ void BlockAssembler::SortForBlock(const CTxMemPool::setEntries& package, CTxMemP
|
||||
// Each time through the loop, we compare the best transaction in
|
||||
// mapModifiedTxs with the next transaction in the mempool to decide what
|
||||
// transaction package to work on next.
|
||||
void BlockAssembler::addPackageTxs()
|
||||
void BlockAssembler::addPackageTxs(int &nPackagesSelected, int &nDescendantsUpdated)
|
||||
{
|
||||
// mapModifiedTx will store sorted packages after they are modified
|
||||
// because some of their txs are already in the block
|
||||
@@ -416,6 +428,13 @@ void BlockAssembler::addPackageTxs()
|
||||
|
||||
CTxMemPool::indexed_transaction_set::index<ancestor_score>::type::iterator mi = mempool.mapTx.get<ancestor_score>().begin();
|
||||
CTxMemPool::txiter iter;
|
||||
|
||||
// Limit the number of attempts to add transactions to the block when it is
|
||||
// close to full; this is just a simple heuristic to finish quickly if the
|
||||
// mempool has a lot of entries.
|
||||
const int64_t MAX_CONSECUTIVE_FAILURES = 1000;
|
||||
int64_t nConsecutiveFailed = 0;
|
||||
|
||||
while (mi != mempool.mapTx.get<ancestor_score>().end() || !mapModifiedTx.empty())
|
||||
{
|
||||
// First try to find a new transaction in mapTx to evaluate.
|
||||
@@ -477,6 +496,14 @@ void BlockAssembler::addPackageTxs()
|
||||
mapModifiedTx.get<ancestor_score>().erase(modit);
|
||||
failedTx.insert(iter);
|
||||
}
|
||||
|
||||
++nConsecutiveFailed;
|
||||
|
||||
if (nConsecutiveFailed > MAX_CONSECUTIVE_FAILURES && nBlockWeight >
|
||||
nBlockMaxWeight - 4000) {
|
||||
// Give up if we're close to full and haven't succeeded in a while
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -497,6 +524,9 @@ void BlockAssembler::addPackageTxs()
|
||||
continue;
|
||||
}
|
||||
|
||||
// This transaction will make it in; reset the failed counter.
|
||||
nConsecutiveFailed = 0;
|
||||
|
||||
// Package can be added. Sort the entries in a valid order.
|
||||
std::vector<CTxMemPool::txiter> sortedEntries;
|
||||
SortForBlock(ancestors, iter, sortedEntries);
|
||||
@@ -507,8 +537,10 @@ void BlockAssembler::addPackageTxs()
|
||||
mapModifiedTx.erase(sortedEntries[i]);
|
||||
}
|
||||
|
||||
++nPackagesSelected;
|
||||
|
||||
// Update transactions that depend on each of these
|
||||
UpdatePackagesForAdded(ancestors, mapModifiedTx);
|
||||
nDescendantsUpdated += UpdatePackagesForAdded(ancestors, mapModifiedTx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
13
src/miner.h
13
src/miner.h
@@ -165,7 +165,7 @@ private:
|
||||
public:
|
||||
BlockAssembler(const CChainParams& chainparams);
|
||||
/** Construct a new block template with coinbase to scriptPubKeyIn */
|
||||
std::unique_ptr<CBlockTemplate> CreateNewBlock(const CScript& scriptPubKeyIn);
|
||||
std::unique_ptr<CBlockTemplate> CreateNewBlock(const CScript& scriptPubKeyIn, bool fMineWitnessTx=true);
|
||||
|
||||
private:
|
||||
// utility functions
|
||||
@@ -177,8 +177,10 @@ private:
|
||||
// Methods for how to add transactions to a block.
|
||||
/** Add transactions based on tx "priority" */
|
||||
void addPriorityTxs();
|
||||
/** Add transactions based on feerate including unconfirmed ancestors */
|
||||
void addPackageTxs();
|
||||
/** Add transactions based on feerate including unconfirmed ancestors
|
||||
* Increments nPackagesSelected / nDescendantsUpdated with corresponding
|
||||
* statistics from the package selection (for logging statistics). */
|
||||
void addPackageTxs(int &nPackagesSelected, int &nDescendantsUpdated);
|
||||
|
||||
// helper function for addPriorityTxs
|
||||
/** Test if tx will still "fit" in the block */
|
||||
@@ -202,8 +204,9 @@ private:
|
||||
/** Sort the package in an order that is valid to appear in a block */
|
||||
void SortForBlock(const CTxMemPool::setEntries& package, CTxMemPool::txiter entry, std::vector<CTxMemPool::txiter>& sortedEntries);
|
||||
/** Add descendants of given transactions to mapModifiedTx with ancestor
|
||||
* state updated assuming given transactions are inBlock. */
|
||||
void UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, indexed_modified_transaction_set &mapModifiedTx);
|
||||
* state updated assuming given transactions are inBlock. Returns number
|
||||
* of updated descendants. */
|
||||
int UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, indexed_modified_transaction_set &mapModifiedTx);
|
||||
};
|
||||
|
||||
/** Modify the extranonce in a block */
|
||||
|
||||
16
src/net.cpp
16
src/net.cpp
@@ -2318,9 +2318,17 @@ void CConnman::Interrupt()
|
||||
interruptNet();
|
||||
InterruptSocks5(true);
|
||||
|
||||
if (semOutbound)
|
||||
for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++)
|
||||
if (semOutbound) {
|
||||
for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++) {
|
||||
semOutbound->post();
|
||||
}
|
||||
}
|
||||
|
||||
if (semAddnode) {
|
||||
for (int i=0; i<nMaxAddnode; i++) {
|
||||
semAddnode->post();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CConnman::Stop()
|
||||
@@ -2336,10 +2344,6 @@ void CConnman::Stop()
|
||||
if (threadSocketHandler.joinable())
|
||||
threadSocketHandler.join();
|
||||
|
||||
if (semAddnode)
|
||||
for (int i=0; i<nMaxAddnode; i++)
|
||||
semOutbound->post();
|
||||
|
||||
if (fAddressesInitialized)
|
||||
{
|
||||
DumpData();
|
||||
|
||||
@@ -92,7 +92,7 @@ static const ServiceFlags REQUIRED_SERVICES = NODE_NETWORK;
|
||||
// NOTE: When adjusting this, update rpcnet:setban's help ("24h")
|
||||
static const unsigned int DEFAULT_MISBEHAVING_BANTIME = 60 * 60 * 24; // Default 24-hour ban
|
||||
|
||||
typedef int NodeId;
|
||||
typedef int64_t NodeId;
|
||||
|
||||
struct AddedNodeInfo
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -69,6 +69,9 @@ uint256 CTransaction::ComputeHash() const
|
||||
|
||||
uint256 CTransaction::GetWitnessHash() const
|
||||
{
|
||||
if (!HasWitness()) {
|
||||
return GetHash();
|
||||
}
|
||||
return SerializeHash(*this, SER_GETHASH, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Højreklik for at redigere adresse eller mærke</translation>
|
||||
<translation>Højreklik for at redigere adresse eller mærkat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -604,7 +604,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Modtaget med mærke</translation>
|
||||
<translation>Modtaget med mærkat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Wählen Sie die Adresse aus, an die Sie Bitcoins überweisen möchten</translation>
|
||||
<translation>Wählen Sie die Adresse aus, an die Sie Bitcoins senden möchten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
@@ -885,6 +885,14 @@
|
||||
<source>Form</source>
|
||||
<translation>Formular</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the bitcoin network, as detailed below.</source>
|
||||
<translation>Neueste Transaktionen werden eventuell noch nicht angezeigt, daher könnte Ihr Kontostand veraltet sein. Er wird korrigiert, sobald Ihr Wallet die Synchronisation mit dem Bitcoin-Netzwerk erfolgreich abgeschlossen. Details dazu finden sich weiter unten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</source>
|
||||
<translation>Versuche, Bitcoins aus noch nicht angezeigten Transaktionen auszugeben, werden vom Netzwerk nicht akzeptiert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of blocks left</source>
|
||||
<translation>Anzahl verbleibender Blöcke</translation>
|
||||
@@ -2200,6 +2208,10 @@
|
||||
<source>Confirm custom change address</source>
|
||||
<translation>Bestätige benutzerdefinierte Wechselgeld-Adresse</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>Die ausgewählte Wechselgeld-Adresse ist nicht Bestandteil dieses Wallets. Einige oder alle Mittel aus Ihrem Wallet könnten an diese Adresse gesendet werden. Wollen Sie das wirklich?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(keine Bezeichnung)</translation>
|
||||
@@ -2997,6 +3009,10 @@
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect/-noconnect)</source>
|
||||
<translation>Eingehende Verbindungen annehmen (Standard: 1, wenn nicht -proxy oder -connect/-noconnect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect only to the specified node(s); -noconnect or -connect=0 alone to disable automatic connections</source>
|
||||
<translation>Verbindungen nur zu spezifizierten Node(s); verwenden Sie -noconnect oder -connect=0 alleine um automatische Verbindungen zu deaktivieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distributed under the MIT software license, see the accompanying file %s or %s</source>
|
||||
<translation>Veröffentlicht unter der MIT-Softwarelizenz, siehe beiligende Datei %s oder %s.</translation>
|
||||
@@ -3073,6 +3089,14 @@
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Befehl ausführen wenn sich eine Wallet-Transaktion verändert (%s im Befehl wird durch die Transaktions-ID ersetzt)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extra transactions to keep in memory for compact block reconstructions (default: %u)</source>
|
||||
<translation>Zusätzliche Transaktionen für kompakten Block-Nachbau im Speicher vorhalten (default: %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>Sofern dieser Block Bestandteil der Blockchain ist, nehme an das er und seine Vorgänger gültig sind und überspringe ggf. dessen Skriptverifikation (0 um alle zu verifizieren, default: %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>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)</translation>
|
||||
@@ -3089,6 +3113,14 @@
|
||||
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
|
||||
<translation>Wenn sie %s nützlich finden, sind Helfer sehr gern gesehen. Besuchen Sie %s um mehr über das Softwareprojekt zu erfahren.</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>Speicherplatzanforderung durch Kürzen (Pruning) alter Blöcke reduzieren. Dies erlaubt das Aufrufen des sogenannten Pruneblockchain RPC zum Löschen spezifischer Blöcke und und aktiviert das automatische Pruning alter Blöcke, sofern eine Zielgröße in MIB angegeben wird. Dieser Modus ist nicht mit -txindex und -resacan kompatibel. Warnung: Das Rücksetzen dieser Einstellung erfordert das erneute Herunterladen der gesamten Blockchain. (Standard: 0 = deaktiviert das Pruning, 1 = erlaubt manuelles Pruning via RPC, >%u = automatisches Pruning der Blockdateien, um angegebene Maximalgröße nicht zu überschreiten)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s)</source>
|
||||
<translation>Niedrigste Gebühr (in %s/kB) für Transaktionen einstellen, die bei der Blockerzeugung berücksichtigt werden sollen. (default: %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>Maximale Anzahl an Skript-Verifizierungs-Threads festlegen (%u bis %d, 0 = automatisch, <0 = so viele Kerne frei lassen, Standard: %d)</translation>
|
||||
@@ -3113,6 +3145,10 @@
|
||||
<source>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. The client then connects normally using the rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This option can be specified multiple times</source>
|
||||
<translation>Benutzername und gehashtes Passwort für JSON-RPC Verbindungen. Das Feld <userpw> kommt im Format: <USERNAME>:<SALT>$<HASH>. Ein kanonisches Pythonskript ist in share/rpcuser inbegriffen. Der client benutzt wie gehabt, die rpcuser/rpcpassword Parameter. Diese Option kann mehrere Male spezifiziert werden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet will not create transactions that violate mempool chain limits (default: %u)</source>
|
||||
<translation>Das Wallet erzeugt keine Transaktionen, die das Mempool Chain Limit überschreiten (Standardeinstellung: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</source>
|
||||
<translation>Warnung: Das Netzwerk scheint nicht vollständig übereinzustimmen! Einige Miner scheinen Probleme zu haben.</translation>
|
||||
@@ -3153,6 +3189,10 @@
|
||||
<source>Cannot resolve -%s address: '%s'</source>
|
||||
<translation>Kann Adresse in -%s nicht auflösen: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Chain selection options:</source>
|
||||
<translation>Chain Auswahloptionen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change index out of range</source>
|
||||
<translation>Position des Wechselgelds außerhalb des Bereichs</translation>
|
||||
@@ -3645,6 +3685,10 @@
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect/-noconnect)</source>
|
||||
<translation>Adressen von Gegenstellen via DNS-Namensauflösung finden, falls zu wenige Adressen verfügbar sind (Standard: 1, außer bei -connect/-noconnect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d)</source>
|
||||
<translation>Setzt die Serialisierung von Rohtransaktionen oder Block Hex-Daten auf non-verbose mode, nicht-Segwit(0) oder Segwit(1) (default: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Support filtering of blocks and transaction with bloom filters (default: %u)</source>
|
||||
<translation>Unterstütze Blöcke und Transaktionen mit Bloomfiltern zu filtern (default: %u)</translation>
|
||||
@@ -3705,6 +3749,10 @@
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Ungültige Adresse in -proxy: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keypool ran out, please call keypoolrefill first</source>
|
||||
<translation>Der Keypool ist erschöpft. Bitte rufen Sie zunächst keypoolrefill auf.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation><port> nach JSON-RPC-Verbindungen abhören (Standard: %u oder Testnetz: %u)</translation>
|
||||
@@ -3773,6 +3821,14 @@
|
||||
<source>Spend unconfirmed change when sending transactions (default: %u)</source>
|
||||
<translation>Unbestätigtes Wechselgeld darf beim Senden von Transaktionen ausgegeben werden (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starting network threads...</source>
|
||||
<translation>Netzwerk-Threads werden gestartet...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The wallet will avoid paying less than the minimum relay fee.</source>
|
||||
<translation>Das Wallet verhindert Zahlungen, die die Mindesttransaktionsgebühr nicht berücksichtigen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is the minimum transaction fee you pay on every transaction.</source>
|
||||
<translation>Dies ist die minimale Gebühr die beim Senden einer Transaktion fällig wird.</translation>
|
||||
@@ -3789,6 +3845,14 @@
|
||||
<source>Transaction amounts must not be negative</source>
|
||||
<translation>Transaktionsbeträge dürfen nicht negativ sein.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction has too long of a mempool chain</source>
|
||||
<translation>Die Speicherpoolkette der Transaktion ist zu lang.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction must have at least one recipient</source>
|
||||
<translation>Die Transaktion muss mindestens einen Empfänger enthalten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>Unbekannter Netztyp in -onlynet angegeben: '%s'</translation>
|
||||
|
||||
@@ -41,6 +41,14 @@
|
||||
<source>&Delete</source>
|
||||
<translation>&Διαγραφή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>Διευθύνσεις αποστολής</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>Διευθύνσεις λήψης</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
@@ -63,6 +71,10 @@
|
||||
<source>Repeat new passphrase</source>
|
||||
<translation>Επανέλαβε τον νέο κωδικό πρόσβασης</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock wallet</source>
|
||||
<translation>Ξεκλειδωσε το πορτοφολι</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BanTableModel</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>
|
||||
@@ -2030,7 +2030,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<location line="+60"/>
|
||||
<location filename="../rpcconsole.cpp" line="+456"/>
|
||||
<location filename="../rpcconsole.cpp" line="+460"/>
|
||||
<location line="+719"/>
|
||||
<source>Select a peer to view detailed information.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
||||
@@ -41,10 +41,78 @@
|
||||
<source>&Delete</source>
|
||||
<translation>&Forigi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Elekti la adreson por sendi monerojn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
<translation>Elekti la adreson ricevi monerojn kun</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
<translation>&Elekti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>Sendaj adresoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>Ricevaj adresoj</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>Jen viaj Bitmon-adresoj por sendi pagojn. Zorge kontrolu la sumon kaj la alsendan adreson antaŭ ol sendi.</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>Jen viaj bitmonaj adresoj por ricevi pagojn. Estas konsilinde uzi apartan ricevan adreson por ĉiu transakcio.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>&Kopii Adreson</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Kopii &Etikedon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Redakti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Eksporti Adresliston</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Perkome disigita dosiero (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>ekspotado malsukcesinta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Okazis eraron dum konservo de adreslisto al %1. Bonvolu provi denove.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etikedo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(neniu etikedo)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
<message>
|
||||
@@ -386,6 +454,10 @@
|
||||
<source>Confirmed</source>
|
||||
<translation>Konfirmita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(neniu etikedo)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
@@ -934,9 +1006,25 @@
|
||||
<source>&Save Image...</source>
|
||||
<translation>&Konservi Bildon...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etikedo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etikedo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(neniu etikedo)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
@@ -1016,7 +1104,11 @@
|
||||
<source>S&end</source>
|
||||
<translation>Ŝendi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(neniu etikedo)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsEntry</name>
|
||||
<message>
|
||||
@@ -1179,9 +1271,33 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etikedo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(neniu etikedo)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Perkome disigita dosiero (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Etikedo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>ekspotado malsukcesinta</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
|
||||
@@ -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>
|
||||
@@ -891,7 +895,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of blocks left</source>
|
||||
<translation>Número de bloques dejados</translation>
|
||||
<translation>Número de bloques restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown...</source>
|
||||
@@ -1722,7 +1726,7 @@
|
||||
</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>ADVERTENCIA: Los estafadores han sido activados, diciéndoles a los usuarios que escriban comandos aquí, robando el contenido de sus monederos. No utilice esta consola sin entender completamente la repercusión de un comando.</translation>
|
||||
<translation>ADVERTENCIA: Hay estafadores activos diciendo a los usuarios que escriban comandos aquí y robando el contenido de sus monederos. No utilice esta consola sin entender completamente la repercusión de un comando.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Network activity disabled</source>
|
||||
@@ -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>
|
||||
@@ -3080,6 +3124,14 @@
|
||||
<source>Please contribute if you find %s useful. Visit %s for further information about the software.</source>
|
||||
<translation>Contribuya si encuentra %s de utilidad. Visite %s para mas información acerca del programa.</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>Reducir los requerimientos de almacenamiento habilitando la poda (eliminación) de los bloques viejos. Esto permite que la cadena de bloqueo RPC sea llamada para eliminar bloques específicos, y habilita la poda automática de bloques viejos si se provee el tamaño de un objetivo en MiB. Este modo es incompatible con -txindex and -rescan. Precaución: Revertir este ajuste requiere volver a descargar la cadena de bloqueo completa. (predefinido: 0 = deshabilita bloques de poda, 1 = permite la poda manual mediante RPC, >%u = elimina automáticamente los archivos de bloqueo para permanecer bajo el tamaño del objetivo especificado en MiB)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s)</source>
|
||||
<translation>Establecer la tasa más baja (en %s/kB) por transacciones para incluirse en la creación de bloque. (predeterminado: %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>Establecer el número de hilos (threads) de verificación de scripts (entre %u y %d, 0 = automático, <0 = dejar libres ese número de núcleos; predeterminado: %d)</translation>
|
||||
@@ -3088,6 +3140,10 @@
|
||||
<source>The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct</source>
|
||||
<translation>La base de datos de bloques contiene un bloque que parece ser del futuro. Esto puede ser porque la fecha y hora de tu ordenador están mal ajustados. Reconstruye la base de datos de bloques solo si estas seguro de que la fecha y hora de tu ordenador estan ajustados correctamente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</source>
|
||||
<translation>Esta es una versión de prueba prelanzada - utilícelo a su propio riesgo - no lo utilice para aplicaciones de minería o comerciales</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain</source>
|
||||
<translation>No es posible reconstruir la base de datos a un estado anterior. Debe descargar de nuevo la cadena de bloques.</translation>
|
||||
@@ -3096,6 +3152,22 @@
|
||||
<source>Use UPnP to map the listening port (default: 1 when listening and no -proxy)</source>
|
||||
<translation>Utiliza UPnP para asignar el puerto de escucha (predeterminado: 1 cuando esta escuchando sin -proxy)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>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. The client then connects normally using the rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This option can be specified multiple times</source>
|
||||
<translation>Nombre de usuario y contraseña numerada para conexiones JSON-RPC. El campo <userpw> viene en el formato: <USERNAME>:<SALT>$<HASH>. Un script canónico de python está incluído en compartir/usuario rpc. Entonces el cliente se conecta normalmente utilizando la pareja de argumentos usuario rpc=<USERNAME>/contraseña rpc=<PASSWORD>. Esta opción puede ser especificada múltiples veces</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet will not create transactions that violate mempool chain limits (default: %u)</source>
|
||||
<translation>El monedero no creará transacciones que violen los límites de la cadena mempool (predeterminado: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues.</source>
|
||||
<translation>Advertencia: ¡La red no parece coincidir del todo! Algunos mineros parecen estar experimentando problemas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade.</source>
|
||||
<translation>Advertencia: ¡No parecemos estar del todo con nuestros pares! Puede que necesite actualizarse, o puede que otros nodos necesiten actualizarse.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You need to rebuild the database using -reindex-chainstate to change -txindex</source>
|
||||
<translation>Necesita reconstruir la base de datos usando -reindex-chainstate para cambiar -txindex</translation>
|
||||
@@ -3128,6 +3200,10 @@
|
||||
<source>Cannot resolve -%s address: '%s'</source>
|
||||
<translation>No se puede resolver -%s direccion: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Chain selection options:</source>
|
||||
<translation>Opciones de selección en cadena:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change index out of range</source>
|
||||
<translation>Cambio de indice fuera de rango</translation>
|
||||
@@ -3324,6 +3400,10 @@
|
||||
<source>Use UPnP to map the listening port (default: %u)</source>
|
||||
<translation>Usar UPnP para asignar el puerto de escucha (predeterminado:: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use the test chain</source>
|
||||
<translation>Utilice la cadena de prueba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User Agent comment (%s) contains unsafe characters.</source>
|
||||
<translation>El comentario del Agente de Usuario (%s) contiene caracteres inseguros.</translation>
|
||||
@@ -3618,6 +3698,10 @@
|
||||
<source>Output debugging information (default: %u, supplying <category> is optional)</source>
|
||||
<translation>Mostrar depuración (por defecto: %u, proporcionar <category> es opcional)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect/-noconnect)</source>
|
||||
<translation>Preguntar por direcciones pares al buscar DNS, si baja en las direcciones (predeterminado: 1 a menos que -connect/-noconnect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d)</source>
|
||||
<translation>https://www.transifex.com/joyful-world/breaking-english/
|
||||
@@ -3627,6 +3711,14 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d
|
||||
<source>Support filtering of blocks and transaction with bloom filters (default: %u)</source>
|
||||
<translation>Admite filtrado de bloques, y transacciones con filtros Bloom. Reduce la carga de red. ( por defecto :%u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is the transaction fee you may pay when fee estimates are not available.</source>
|
||||
<translation>Esta es la tarifa de cuota que debe pagar cuando las estimaciones de tarifas no estén disponibles.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit %s and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Este producto incluye software desarrollado por el Proyecto OpenSSL para utilizarlo en el juego de herramientas OpenSSL %s y software criptográfico escrito por Eric Young y software UPnP escrito por Thomas Bernard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments.</source>
|
||||
<translation>La longitud total de la cadena de versión de red ( %i ) supera la longitud máxima ( %i ) . Reducir el número o tamaño de uacomments .</translation>
|
||||
@@ -3659,6 +3751,10 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d
|
||||
<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>Los pares de listas blancas que se conectan desde la dirección IP dada (por ejemplo, 1.2.3.4) o la red marcada CIDR (por ejemplo, 1.2.3.0/24). Se puede especificar varias veces.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s is set very high!</source>
|
||||
<translation>¡%s se establece muy alto!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(predeterminado: %s)</translation>
|
||||
@@ -3679,6 +3775,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>
|
||||
@@ -3715,6 +3815,10 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Relay non-P2SH multisig (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions with full-RBF opt-in enabled (default: %u)</source>
|
||||
<translation>Enviar transacciones con full-RBF opt-in habilitado (predeterminado: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set key pool size to <n> (default: %u)</source>
|
||||
<translation>Ajustar el número de claves en reserva <n> (predeterminado: %u)</translation>
|
||||
@@ -3747,10 +3851,34 @@ 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>The wallet will avoid paying less than the minimum relay fee.</source>
|
||||
<translation>El monedero evitará pagar menos que la cuota de retransmisión mínima.</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>This is the transaction fee you will pay if you send a transaction.</source>
|
||||
<translation>Esta es la cuota de transacción que pagará si envía una 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>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction amounts must not be negative</source>
|
||||
<translation>Las cantidades de transacción no deben ser negativa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction has too long of a mempool chain</source>
|
||||
<translation>La transacción tiene demasiado tiempo de una cadena de mempool</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction must have at least one recipient</source>
|
||||
<translation>La transacción debe de tener al menos un receptor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>La red especificada en -onlynet '%s' es desconocida</translation>
|
||||
|
||||
@@ -317,6 +317,22 @@
|
||||
<source>Open &URI...</source>
|
||||
<translation>Abrir &URI...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Click to disable network activity.</source>
|
||||
<translation>Haz click para desactivar la actividad de red.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Network activity disabled.</source>
|
||||
<translation>Actividad de red desactivada.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Click to enable network activity again.</source>
|
||||
<translation>Haz click para reactivar la actividad de red.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Syncing Headers (%1%)...</source>
|
||||
<translation>Sincronizando cabeceras (%1%)...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reindexing blocks on disk...</source>
|
||||
<translation>Reindexando bloques en disco...</translation>
|
||||
@@ -519,7 +535,11 @@
|
||||
<source>Wallet is <b>encrypted</b> and currently <b>locked</b></source>
|
||||
<translation>El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b></translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source>
|
||||
<translation>Ha ocurrido un error fatal. Bitcoin no puede continuar de manera segura y se cerrará.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
@@ -853,15 +873,43 @@
|
||||
<source>Form</source>
|
||||
<translation>Formulario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of blocks left</source>
|
||||
<translation>Número de bloques restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown...</source>
|
||||
<translation>Desconocido...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last block time</source>
|
||||
<translation>Hora del último bloque</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Progreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress increase per hour</source>
|
||||
<translation>Incremento del progreso por hora</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>calculating...</source>
|
||||
<translation>calculando...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Estimated time left until synced</source>
|
||||
<translation>Tiempo estimado restante hasta sincronización completa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide</source>
|
||||
<translation>Ocultar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Unknown. Syncing Headers (%1)...</source>
|
||||
<translation>Desconocido. Sincronizando cabeceras (%1)...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenURIDialog</name>
|
||||
<message>
|
||||
@@ -1296,6 +1344,10 @@
|
||||
<source>Node/Service</source>
|
||||
<translation>Nodo/Servicio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>NodeId</source>
|
||||
<translation>NodeId</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
@@ -1339,9 +1391,17 @@
|
||||
<source>%1 and %2</source>
|
||||
<translation>%1 y %2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>%1 didn't yet exit safely...</source>
|
||||
<translation>%1 aún no ha salido de manera segura...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject::QObject</name>
|
||||
<message>
|
||||
<source>Error: Specified data directory "%1" does not exist.</source>
|
||||
<translation>Error: directorio especificado "%1" no existe.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QRImageWidget</name>
|
||||
@@ -1936,6 +1996,10 @@
|
||||
<source>Dust:</source>
|
||||
<translation>Polvo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time target:</source>
|
||||
<translation>Tiempo objetivo de confirmación:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear &All</source>
|
||||
<translation>Vaciar &todo</translation>
|
||||
@@ -3482,6 +3546,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>Aviso: fichero de monedero corrupto, datos recuperados! Original %s guardado como %s en %s; si su balance de transacciones es incorrecto, debe restaurar desde una copia de seguridad.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s is set very high!</source>
|
||||
<translation>%s es demasiado alto!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(predeterminado: %s)</translation>
|
||||
@@ -3538,6 +3606,10 @@
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Relay non-P2SH multisig (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions with full-RBF opt-in enabled (default: %u)</source>
|
||||
<translation>Enviar transaciones con RBF-completo opt-in activado (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set key pool size to <n> (default: %u)</source>
|
||||
<translation>Ajustar el número de claves en reserva <n> (predeterminado: %u)</translation>
|
||||
|
||||
@@ -87,6 +87,10 @@
|
||||
<source>The supplied passphrases do not match.</source>
|
||||
<translation>Sisestatud paroolid ei kattu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet unlock failed</source>
|
||||
<translation>Rahakoti lahtilukustamine ebaõnnestus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet decryption failed</source>
|
||||
<translation>Rahakoti dekrüpteerimine ebaõnnestus</translation>
|
||||
@@ -109,6 +113,14 @@
|
||||
<source>&Overview</source>
|
||||
<translation>&Ülevaade</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quit application</source>
|
||||
<translation>Välju rakendusest</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Options...</source>
|
||||
<translation>&Valikud...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open &URI...</source>
|
||||
<translation>Ava &URI...</translation>
|
||||
@@ -125,14 +137,30 @@
|
||||
<source>Wallet</source>
|
||||
<translation>Rahakott</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Send</source>
|
||||
<translation>&Saada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Show / Hide</source>
|
||||
<translation>&Näita / Peida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&File</source>
|
||||
<translation>&Fail</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Settings</source>
|
||||
<translation>&Seaded</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation>&Abi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Command-line options</source>
|
||||
<translation>&Käsurea valikud</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 behind</source>
|
||||
<translation>%1 ajast maas</translation>
|
||||
@@ -203,6 +231,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
<message>
|
||||
<source>&Address</source>
|
||||
<translation>&Aadress</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New key generation failed.</source>
|
||||
<translation>Uue võtme genereerimine ebaõnnestus.</translation>
|
||||
|
||||
@@ -115,6 +115,10 @@
|
||||
<source>Decrypt wallet</source>
|
||||
<translation>رمزگشایی کیف پول</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change passphrase</source>
|
||||
<translation>تغییر گذرواژه</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm wallet encryption</source>
|
||||
<translation>تأیید رمزنگاری کیف پول</translation>
|
||||
@@ -506,6 +510,10 @@
|
||||
<source>Confirmed</source>
|
||||
<translation>تأیید شده</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>کپی ادرس</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>کپی برچسب</translation>
|
||||
@@ -530,6 +538,10 @@
|
||||
<source>Copy quantity</source>
|
||||
<translation>کپی تعداد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>رونوشت کارمزد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(%1 locked)</source>
|
||||
<translation>(%1 قفل شده)</translation>
|
||||
@@ -697,6 +709,10 @@
|
||||
<source>Form</source>
|
||||
<translation>فرم</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown...</source>
|
||||
<translation>مشخص نیست</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last block time</source>
|
||||
<translation>زمان آخرین بلوک</translation>
|
||||
@@ -1328,6 +1344,10 @@
|
||||
<source>Copy amount</source>
|
||||
<translation>کپی مقدار</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>رونوشت کارمزد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(بدون برچسب)</translation>
|
||||
@@ -1514,6 +1534,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>کپی ادرس</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
<translation>کپی برچسب</translation>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the bitcoin network, as detailed below.</source>
|
||||
<translation>Les transactions récentes ne sont peut-être pas encore visibles, et par conséquent, le solde de votre porte-monnaie est peut-être erroné. Cette information sera juste une fois que votre porte-monnaie aura fini de se synchroniser avec le réseau Bitcoin, tel que décrit ci-dessous. </translation>
|
||||
<translation>Les transactions récentes ne sont peut-être pas encore visibles, et par conséquent, le solde de votre porte-monnaie est peut-être erroné. Cette information sera juste une fois que votre porte-monnaie aura fini de se synchroniser avec le réseau Bitcoin, comme décrit ci-dessous. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</source>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -41,9 +41,21 @@
|
||||
<source>&Delete</source>
|
||||
<translation>Cancella</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Scegli l'indirizzo a cui inviare denaro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
<translation>Scegli</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Indirizzo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
@@ -132,6 +144,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveRequestDialog</name>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Indirizzo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
@@ -168,6 +184,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Indirizzo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<TS language="ms_MY" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Klik-kanan untuk edit alamat ataupun label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
<translation>Cipta alamat baru</translation>
|
||||
@@ -17,6 +21,10 @@
|
||||
<source>&Copy</source>
|
||||
<translation>&Salin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation>&Tutup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete the currently selected address from the list</source>
|
||||
<translation>Padam alamat semasa yang dipilih dari senaraiyang dipilih dari senarai</translation>
|
||||
@@ -34,25 +42,301 @@ Alihkan fail data ke dalam tab semasa</translation>
|
||||
<source>&Delete</source>
|
||||
<translation>&Padam</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Pilih alamat untuk hantar koin kepada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
<translation>Pilih alamat untuk menerima koin dengan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
<translation>&Pilih</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>alamat-alamat penghantaran</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>alamat-alamat penerimaan</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>Ini adalah alamat Bitcoin anda untuk pembayaran. Periksa jumlah dan alamat penerima sebelum membuat penghantaran koin sentiasa.</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>Ini adalah alamat Bitcoin anda untuk menerima pembayaraan. Anda disyorkan untuk menguna alamat menerima untuk setiap transaksi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>&Salin Aamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Salin & Label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Edit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Eskport Senarai Alamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Fail dibahagi oleh koma(*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Mengeksport Gagal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Terdapat ralat semasa cubaan menyimpan senarai alamat kepada %1. Sila cuba lagi.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Alamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(tiada label)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Passphrase Dialog</source>
|
||||
<translation>Dialog frasa laluan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter passphrase</source>
|
||||
<translation>memasukkan frasa laluan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New passphrase</source>
|
||||
<translation>Frasa laluan baru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat new passphrase</source>
|
||||
<translation>Ulangi frasa laluan baru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>.</source>
|
||||
<translation>Memasukkan frasa laluan baru kepada dompet.<br/>Sila mengunakkan frasa laluan yang<b>mengandungi 10 atau lebih aksara rawak</b>,ataupun<b>lapan atau lebih perkataan.</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Encrypt wallet</source>
|
||||
<translation>Dompet encrypt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This operation needs your wallet passphrase to unlock the wallet.</source>
|
||||
<translation>Operasi ini perlukan frasa laluan dompet anda untuk membuka kunci dompet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock wallet</source>
|
||||
<translation>Membuka kunci dompet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This operation needs your wallet passphrase to decrypt the wallet.</source>
|
||||
<translation>Operasi ini memerlukan frasa laluan dompet anda untuk menyahsulit dompet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Decrypt wallet</source>
|
||||
<translation>Menyahsulit dompet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change passphrase</source>
|
||||
<translation>Menukar frasa laluan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the old passphrase and new passphrase to the wallet.</source>
|
||||
<translation>Memasukkan frasa laluan lama dan frasa laluan baru untuk.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm wallet encryption</source>
|
||||
<translation>Mengesahkan enkripsi dompet</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>Amaran: Jika anda enkripkan dompet anda dan hilangkan frasa laluan, anda akan <b>ANDA AKAN HILANGKAN SEMUA BITCOIN ANDA</b>!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you wish to encrypt your wallet?</source>
|
||||
<translation>Anda pasti untuk membuat enkripsi dompet anda?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encrypted</source>
|
||||
<translation>Dompet dienkripsi</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 akan tutup untuk menyelesaikan proses enkripsi. Ingat bahawa enkripsi tidak boleh melidungi sepenuhnya bitcoins anda daripada dicuri oleh malware yang menjangkiti komputer anda.</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>PENTING: Apa-apa sandaran yang anda buat sebelum ini untuk fail dompet anda hendaklah digantikan dengan fail dompet enkripsi yang dijana baru. Untuk sebab-sebab keselamatan , sandaran fail dompet yang belum dibuat enkripsi sebelum ini akan menjadi tidak berguna secepat anda mula guna dompet enkripsi baru.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encryption failed</source>
|
||||
<translation>Enkripsi dompet gagal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
|
||||
<translation>Enkripsi dompet gagal kerana ralat dalaman. Dompet anda tidak dienkripkan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The supplied passphrases do not match.</source>
|
||||
<translation>Frasa laluan yang dibekalkan tidak sepadan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet unlock failed</source>
|
||||
<translation>Pembukaan kunci dompet gagal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The passphrase entered for the wallet decryption was incorrect.</source>
|
||||
<translation>Frasa laluan dimasukki untuk dekripsi dompet adalah tidak betul.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet decryption failed</source>
|
||||
<translation>Dekripsi dompet gagal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet passphrase was successfully changed.</source>
|
||||
<translation>Frasa laluan dompet berjaya ditukar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: The Caps Lock key is on!</source>
|
||||
<translation>Amaran: Kunci Caps Lock buka!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BanTableModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>IP/Netmask</source>
|
||||
<translation>IP/Netmask</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Banned Until</source>
|
||||
<translation>Diharamkan sehingga</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BitcoinGUI</name>
|
||||
<message>
|
||||
<source>Sign &message...</source>
|
||||
<translation>Tandatangan & mesej...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Synchronizing with network...</source>
|
||||
<translation>Penyegerakan dengan rangkaian...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Overview</source>
|
||||
<translation>&Gambaran Keseluruhan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Node</source>
|
||||
<translation>Nod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show general overview of wallet</source>
|
||||
<translation>Tunjuk gambaran keseluruhan umum dompet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Transactions</source>
|
||||
<translation>&Transaksi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Browse transaction history</source>
|
||||
<translation>Menyemak imbas sejarah transaksi </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&xit</source>
|
||||
<translation>&Keluar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quit application</source>
|
||||
<translation>Berhenti aplikasi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&About %1</source>
|
||||
<translation>&Mengenai%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show information about %1</source>
|
||||
<translation>Menunjuk informasi mengenai%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About &Qt</source>
|
||||
<translation>Mengenai &Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show information about Qt</source>
|
||||
<translation>Menunjuk informasi megenai Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Options...</source>
|
||||
<translation>Pilihan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Modify configuration options for %1</source>
|
||||
<translation>Mengubah suai pilihan konfigurasi untuk %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Encrypt Wallet...</source>
|
||||
<translation>&Enkripsi Dompet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Backup Wallet...</source>
|
||||
<translation>&Dompet Sandaran...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Change Passphrase...</source>
|
||||
<translation>&Menukar frasa-laluan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Sending addresses...</source>
|
||||
<translation>&Menghantar frasa-laluan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Receiving addresses...</source>
|
||||
<translation>&Menerima frasa-laluan...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open &URI...</source>
|
||||
<translation>Buka &URI...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reindexing blocks on disk...</source>
|
||||
<translation>Reindexi blok pada cakera...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send coins to a Bitcoin address</source>
|
||||
<translation>Menghantar koin kepada alamat Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Backup wallet to another location</source>
|
||||
<translation>Wallet sandaran ke lokasi lain</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(tiada label)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
@@ -113,9 +397,25 @@ Alihkan fail data ke dalam tab semasa</translation>
|
||||
<source>Copy &Address</source>
|
||||
<translation>&Salin Alamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Alamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Label</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(tiada label)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
@@ -123,7 +423,11 @@ Alihkan fail data ke dalam tab semasa</translation>
|
||||
<source>Balance:</source>
|
||||
<translation>Baki</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(tiada label)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsEntry</name>
|
||||
</context>
|
||||
@@ -150,9 +454,33 @@ Alihkan fail data ke dalam tab semasa</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(tiada label)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Fail dibahagi oleh koma(*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Alamat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Mengeksport Gagal</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
|
||||
@@ -41,10 +41,74 @@
|
||||
<source>&Delete</source>
|
||||
<translation>&Slett</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Velg adressen å sende mynter til</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
<translation>Velg adressen til å motta mynter med</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sending addresses</source>
|
||||
<translation>Utsendingsadresser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receiving addresses</source>
|
||||
<translation>Mottaksadresser</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>Dette er dine Bitcoin-adresser for sending av betalinger. Sjekk alltid beløpet og mottakeradressen før sending av mynter.</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>Dette er dine Bitcoin-adresser for å sende betalinger med. Det er anbefalt å bruke en ny mottaksadresse for hver transaksjon.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>&Kopier Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Kopier &Merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Rediger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Eksporter adresseliste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Kommaseparert fil (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Eksportering feilet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Det oppstod en feil under lagring av adresselisten til %1. Vennligst prøv på nytt.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(ingen merkelapp)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
<message>
|
||||
@@ -63,6 +127,26 @@
|
||||
<source>Repeat new passphrase</source>
|
||||
<translation>Gjenta ny adgangsfrase</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>.</source>
|
||||
<translation>Oppgi adgangsfrasen til lommeboken.<br/>Vennligst bruk en adgangsfrase med <b>ti eller flere tilfeldige tegn</b>, eller <b>åtte eller flere ord</b>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Encrypt wallet</source>
|
||||
<translation>Krypter lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock wallet</source>
|
||||
<translation>Lås opp lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Decrypt wallet</source>
|
||||
<translation>Dekrypter lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change passphrase</source>
|
||||
<translation>Endre adgangsfrase</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BanTableModel</name>
|
||||
@@ -422,6 +506,10 @@
|
||||
<source>Confirmed</source>
|
||||
<translation>Bekreftet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(ingen merkelapp)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditAddressDialog</name>
|
||||
@@ -1302,9 +1390,25 @@
|
||||
<source>&Save Image...</source>
|
||||
<translation>&Lagre Bilde...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Merkelapp</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RecentRequestsTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(ingen merkelapp)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsDialog</name>
|
||||
@@ -1448,7 +1552,11 @@
|
||||
<source>S&end</source>
|
||||
<translation>S&end</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(ingen merkelapp)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsEntry</name>
|
||||
<message>
|
||||
@@ -1651,9 +1759,33 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(ingen merkelapp)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Kommaseparert fil (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Eksportering feilet</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
|
||||
@@ -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>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -540,7 +540,11 @@ Var vänlig och försök igen.</translation>
|
||||
<source>Wallet is <b>encrypted</b> and currently <b>locked</b></source>
|
||||
<translation>Denna plånbok är <b>krypterad</b> och för närvarande <b>låst</b></translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source>
|
||||
<translation>Ett kritiskt fel uppstod. Bitcoin kan inte fortsätta att köra säkert och kommer att avslutas.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
@@ -679,7 +683,7 @@ Var vänlig och försök igen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Directory already exists. Add %1 if you intend to create a new directory here.</source>
|
||||
<translation>Katalogen finns redan. Läggtill %1 om du vill skapa en ny katalog här.</translation>
|
||||
<translation>Katalogen finns redan. Lägg till %1 om du vill skapa en ny katalog här.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path already exists, and is not a directory.</source>
|
||||
@@ -2099,6 +2103,18 @@ Var vänlig och försök igen.</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<source>Enter address or label to search</source>
|
||||
<translation>Ange en adress eller etikett att söka efter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Min amount</source>
|
||||
<translation>Minsta belopp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Abandon transaction</source>
|
||||
<translation>Avbryt transaktionen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Kopiera adress</translation>
|
||||
|
||||
@@ -295,15 +295,15 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>&Encrypt Wallet...</source>
|
||||
<translation>Cüzdanı &Şifrele...</translation>
|
||||
<translation>&Cüzdanı Şifrele...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Backup Wallet...</source>
|
||||
<translation>Cüzdanı &Yedekle...</translation>
|
||||
<translation>&Cüzdanı Yedekle...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Change Passphrase...</source>
|
||||
<translation>Parolayı &Değiştir...</translation>
|
||||
<translation>&Parolayı Değiştir...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Sending addresses...</source>
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -166,7 +166,7 @@ QVariant PeerTableModel::data(const QModelIndex &index, int role) const
|
||||
switch(index.column())
|
||||
{
|
||||
case NetNodeId:
|
||||
return rec->nodeStats.nodeid;
|
||||
return (qint64)rec->nodeStats.nodeid;
|
||||
case Address:
|
||||
return QString::fromStdString(rec->nodeStats.addrName);
|
||||
case Subversion:
|
||||
|
||||
@@ -175,6 +175,10 @@ bool RPCConsole::RPCParseCommandLine(std::string &strResult, const std::string &
|
||||
nDepthInsideSensitive = 1;
|
||||
filter_begin_pos = chpos;
|
||||
}
|
||||
// Make sure stack is not empty before adding something
|
||||
if (stack.empty()) {
|
||||
stack.push_back(std::vector<std::string>());
|
||||
}
|
||||
stack.back().push_back(strArg);
|
||||
};
|
||||
|
||||
@@ -1111,7 +1115,7 @@ void RPCConsole::disconnectSelectedNode()
|
||||
for(int i = 0; i < nodes.count(); i++)
|
||||
{
|
||||
// Get currently selected peer address
|
||||
NodeId id = nodes.at(i).data().toInt();
|
||||
NodeId id = nodes.at(i).data().toLongLong();
|
||||
// Find the node, disconnect it and clear the selected node
|
||||
if(g_connman->DisconnectNode(id))
|
||||
clearSelectedNode();
|
||||
@@ -1128,7 +1132,7 @@ void RPCConsole::banSelectedNode(int bantime)
|
||||
for(int i = 0; i < nodes.count(); i++)
|
||||
{
|
||||
// Get currently selected peer address
|
||||
NodeId id = nodes.at(i).data().toInt();
|
||||
NodeId id = nodes.at(i).data().toLongLong();
|
||||
|
||||
// Get currently selected peer address
|
||||
int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(id);
|
||||
|
||||
@@ -83,7 +83,7 @@ static const CRPCConvertParam vRPCConvertParams[] =
|
||||
{ "getblockheader", 1, "verbose" },
|
||||
{ "gettransaction", 1, "include_watchonly" },
|
||||
{ "getrawtransaction", 1, "verbose" },
|
||||
{ "createrawtransaction", 0, "transactions" },
|
||||
{ "createrawtransaction", 0, "inputs" },
|
||||
{ "createrawtransaction", 1, "outputs" },
|
||||
{ "createrawtransaction", 2, "locktime" },
|
||||
{ "signrawtransaction", 1, "prevtxs" },
|
||||
|
||||
@@ -519,12 +519,22 @@ UniValue getblocktemplate(const JSONRPCRequest& request)
|
||||
// TODO: Maybe recheck connections/IBD and (if something wrong) send an expires-immediately template to stop miners?
|
||||
}
|
||||
|
||||
const struct BIP9DeploymentInfo& segwit_info = VersionBitsDeploymentInfo[Consensus::DEPLOYMENT_SEGWIT];
|
||||
// If the caller is indicating segwit support, then allow CreateNewBlock()
|
||||
// to select witness transactions, after segwit activates (otherwise
|
||||
// don't).
|
||||
bool fSupportsSegwit = setClientRules.find(segwit_info.name) != setClientRules.end();
|
||||
|
||||
// Update block
|
||||
static CBlockIndex* pindexPrev;
|
||||
static int64_t nStart;
|
||||
static std::unique_ptr<CBlockTemplate> pblocktemplate;
|
||||
// Cache whether the last invocation was with segwit support, to avoid returning
|
||||
// a segwit-block to a non-segwit caller.
|
||||
static bool fLastTemplateSupportsSegwit = true;
|
||||
if (pindexPrev != chainActive.Tip() ||
|
||||
(mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 5))
|
||||
(mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 5) ||
|
||||
fLastTemplateSupportsSegwit != fSupportsSegwit)
|
||||
{
|
||||
// Clear pindexPrev so future calls make a new block, despite any failures from here on
|
||||
pindexPrev = nullptr;
|
||||
@@ -533,10 +543,11 @@ UniValue getblocktemplate(const JSONRPCRequest& request)
|
||||
nTransactionsUpdatedLast = mempool.GetTransactionsUpdated();
|
||||
CBlockIndex* pindexPrevNew = chainActive.Tip();
|
||||
nStart = GetTime();
|
||||
fLastTemplateSupportsSegwit = fSupportsSegwit;
|
||||
|
||||
// Create new block
|
||||
CScript scriptDummy = CScript() << OP_TRUE;
|
||||
pblocktemplate = BlockAssembler(Params()).CreateNewBlock(scriptDummy);
|
||||
pblocktemplate = BlockAssembler(Params()).CreateNewBlock(scriptDummy, fSupportsSegwit);
|
||||
if (!pblocktemplate)
|
||||
throw JSONRPCError(RPC_OUT_OF_MEMORY, "Out of memory");
|
||||
|
||||
@@ -676,14 +687,17 @@ 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)));
|
||||
|
||||
const struct BIP9DeploymentInfo& segwit_info = VersionBitsDeploymentInfo[Consensus::DEPLOYMENT_SEGWIT];
|
||||
if (!pblocktemplate->vchCoinbaseCommitment.empty() && setClientRules.find(segwit_info.name) != setClientRules.end()) {
|
||||
if (!pblocktemplate->vchCoinbaseCommitment.empty() && fSupportsSegwit) {
|
||||
result.push_back(Pair("default_witness_commitment", HexStr(pblocktemplate->vchCoinbaseCommitment.begin(), pblocktemplate->vchCoinbaseCommitment.end())));
|
||||
}
|
||||
|
||||
@@ -734,6 +748,10 @@ UniValue submitblock(const JSONRPCRequest& request)
|
||||
if (!DecodeHexBlk(block, request.params[0].get_str()))
|
||||
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Block decode failed");
|
||||
|
||||
if (block.vtx.empty() || !block.vtx[0]->IsCoinBase()) {
|
||||
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Block does not start with a coinbase");
|
||||
}
|
||||
|
||||
uint256 hash = block.GetHash();
|
||||
bool fBlockPresent = false;
|
||||
{
|
||||
|
||||
@@ -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\"")
|
||||
);
|
||||
|
||||
@@ -237,11 +237,11 @@ UniValue addnode(const JSONRPCRequest& request)
|
||||
UniValue disconnectnode(const JSONRPCRequest& request)
|
||||
{
|
||||
if (request.fHelp || request.params.size() != 1)
|
||||
throw runtime_error(
|
||||
"disconnectnode \"node\" \n"
|
||||
throw std::runtime_error(
|
||||
"disconnectnode \"address\" \n"
|
||||
"\nImmediately disconnects from the specified node.\n"
|
||||
"\nArguments:\n"
|
||||
"1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n"
|
||||
"1. \"address\" (string, required) The IP address/port of the node\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("disconnectnode", "\"192.168.0.6:8333\"")
|
||||
+ HelpExampleRpc("disconnectnode", "\"192.168.0.6:8333\"")
|
||||
@@ -609,7 +609,7 @@ static const CRPCCommand commands[] =
|
||||
{ "network", "ping", &ping, true, {} },
|
||||
{ "network", "getpeerinfo", &getpeerinfo, true, {} },
|
||||
{ "network", "addnode", &addnode, true, {"node","command"} },
|
||||
{ "network", "disconnectnode", &disconnectnode, true, {"node"} },
|
||||
{ "network", "disconnectnode", &disconnectnode, true, {"address"} },
|
||||
{ "network", "getaddednodeinfo", &getaddednodeinfo, true, {"node"} },
|
||||
{ "network", "getnettotals", &getnettotals, true, {} },
|
||||
{ "network", "getnetworkinfo", &getnetworkinfo, true, {} },
|
||||
|
||||
@@ -139,7 +139,7 @@ UniValue getrawtransaction(const JSONRPCRequest& request)
|
||||
|
||||
"\nArguments:\n"
|
||||
"1. \"txid\" (string, required) The transaction id\n"
|
||||
"2. verbose (bool, optional, default=false) If true, return a string, other return a json object\n"
|
||||
"2. verbose (bool, optional, default=false) If false, return a string, otherwise return a json object\n"
|
||||
|
||||
"\nResult (if verbose is not set or set to false):\n"
|
||||
"\"data\" (string) The serialized, hex-encoded data for 'txid'\n"
|
||||
@@ -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"
|
||||
@@ -362,7 +361,7 @@ UniValue createrawtransaction(const JSONRPCRequest& request)
|
||||
"it is not stored in the wallet or transmitted to the network.\n"
|
||||
|
||||
"\nArguments:\n"
|
||||
"1. \"inputs\" (string, required) A json array of json objects\n"
|
||||
"1. \"inputs\" (array, required) A json array of json objects\n"
|
||||
" [\n"
|
||||
" {\n"
|
||||
" \"txid\":\"id\", (string, required) The transaction id\n"
|
||||
@@ -371,7 +370,7 @@ UniValue createrawtransaction(const JSONRPCRequest& request)
|
||||
" } \n"
|
||||
" ,...\n"
|
||||
" ]\n"
|
||||
"2. \"outputs\" (string, required) a json object with outputs\n"
|
||||
"2. \"outputs\" (object, required) a json object with outputs\n"
|
||||
" {\n"
|
||||
" \"address\": x.xxx, (numeric or string, required) The key is the bitcoin address, the numeric value (can be string) is the " + CURRENCY_UNIT + " amount\n"
|
||||
" \"data\": \"hex\" (string, required) The key is \"data\", the value is hex encoded data\n"
|
||||
@@ -933,7 +932,7 @@ static const CRPCCommand commands[] =
|
||||
{ // category name actor (function) okSafeMode
|
||||
// --------------------- ------------------------ ----------------------- ----------
|
||||
{ "rawtransactions", "getrawtransaction", &getrawtransaction, true, {"txid","verbose"} },
|
||||
{ "rawtransactions", "createrawtransaction", &createrawtransaction, true, {"transactions","outputs","locktime"} },
|
||||
{ "rawtransactions", "createrawtransaction", &createrawtransaction, true, {"inputs","outputs","locktime"} },
|
||||
{ "rawtransactions", "decoderawtransaction", &decoderawtransaction, true, {"hexstring"} },
|
||||
{ "rawtransactions", "decodescript", &decodescript, true, {"hexstring"} },
|
||||
{ "rawtransactions", "sendrawtransaction", &sendrawtransaction, false, {"hexstring","allowhighfees"} },
|
||||
|
||||
@@ -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>
|
||||
@@ -333,6 +331,7 @@ void StopRPC()
|
||||
{
|
||||
LogPrint("rpc", "Stopping RPC\n");
|
||||
deadlineTimers.clear();
|
||||
DeleteAuthCookie();
|
||||
g_rpcSignals.Stopped();
|
||||
}
|
||||
|
||||
|
||||
@@ -98,6 +98,18 @@ def bctest(testDir, testObj, exeext):
|
||||
logging.error("Return code mismatch for " + outputFn)
|
||||
raise Exception
|
||||
|
||||
if "error_txt" in testObj:
|
||||
want_error = testObj["error_txt"]
|
||||
# Compare error text
|
||||
# TODO: ideally, we'd compare the strings exactly and also assert
|
||||
# That stderr is empty if no errors are expected. However, bitcoin-tx
|
||||
# emits DISPLAY errors when running as a windows application on
|
||||
# linux through wine. Just assert that the expected error text appears
|
||||
# somewhere in stderr.
|
||||
if want_error not in outs[1]:
|
||||
logging.error("Error mismatch:\n" + "Expected: " + want_error + "\nReceived: " + outs[1].rstrip())
|
||||
raise Exception
|
||||
|
||||
def bctester(testDir, input_basename, buildenv):
|
||||
""" Loads and parses the input file, runs all tests and reports results"""
|
||||
input_filename = testDir + "/" + input_basename
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
"args": ["-", "delin=31"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX input index '31'",
|
||||
"description": "Attempts to delete an input with a bad index from a transaction. Expected to fail."
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
@@ -60,6 +61,7 @@
|
||||
"args": ["-", "delout=2"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX output index '2'",
|
||||
"description": "Attempts to delete an output with a bad index from a transaction. Expected to fail."
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
@@ -74,6 +76,38 @@
|
||||
"output_cmp": "tt-locktime317000-out.json",
|
||||
"description": "Adds an nlocktime to a transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outaddr=1"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outaddr argument (no address specified). Expected to fail."
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outaddr=1:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o:garbage"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outaddr argument (too many separators). Expected to fail."
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outpubkey=0"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outpubkey argument (no pubkey specified). Expected to fail."
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outpubkey argument (too many separators). Expected to fail."
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
"args":
|
||||
["-create",
|
||||
@@ -233,6 +267,7 @@
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outdata=4:badhexdata"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX output data",
|
||||
"description": "Attempts to create a new transaction with one input and an output with malformed hex data. Expected to fail"
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
@@ -241,6 +276,7 @@
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outdata=badhexdata"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX output data",
|
||||
"description": "Attempts to create a new transaction with one input and an output with no value and malformed hex data. Expected to fail"
|
||||
},
|
||||
{ "exec": "./bitcoin-tx",
|
||||
|
||||
@@ -21,8 +21,14 @@ class CBlockIndex;
|
||||
class CCoinsViewDBCursor;
|
||||
class uint256;
|
||||
|
||||
//! Compensate for extra memory peak (x1.5-x1.9) at flush time.
|
||||
static constexpr int DB_PEAK_USAGE_FACTOR = 2;
|
||||
//! No need to periodic flush if at least this much space still available.
|
||||
static constexpr int MAX_BLOCK_COINSDB_USAGE = 200 * DB_PEAK_USAGE_FACTOR;
|
||||
//! Always periodic flush if less than this much space still available.
|
||||
static constexpr int MIN_BLOCK_COINSDB_USAGE = 50 * DB_PEAK_USAGE_FACTOR;
|
||||
//! -dbcache default (MiB)
|
||||
static const int64_t nDefaultDbCache = 300;
|
||||
static const int64_t nDefaultDbCache = 450;
|
||||
//! max. -dbcache (MiB)
|
||||
static const int64_t nMaxDbCache = sizeof(void*) > 4 ? 16384 : 1024;
|
||||
//! min. -dbcache (MiB)
|
||||
|
||||
@@ -938,6 +938,13 @@ void CTxMemPool::PrioritiseTransaction(const uint256 hash, const std::string str
|
||||
BOOST_FOREACH(txiter ancestorIt, setAncestors) {
|
||||
mapTx.modify(ancestorIt, update_descendant_state(0, nFeeDelta, 0));
|
||||
}
|
||||
// Now update all descendants' modified fees with ancestors
|
||||
setEntries setDescendants;
|
||||
CalculateDescendants(it, setDescendants);
|
||||
setDescendants.erase(it);
|
||||
BOOST_FOREACH(txiter descendantIt, setDescendants) {
|
||||
mapTx.modify(descendantIt, update_ancestor_state(0, nFeeDelta, 0, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
LogPrintf("PrioritiseTransaction: %s priority += %f, fee += %d\n", strHash, dPriorityDelta, FormatMoney(nFeeDelta));
|
||||
|
||||
29
src/util.cpp
29
src/util.cpp
@@ -72,6 +72,10 @@
|
||||
#include <sys/prctl.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MALLOPT_ARENA_MAX
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
#include <boost/algorithm/string/case_conv.hpp> // for to_lower()
|
||||
#include <boost/algorithm/string/join.hpp>
|
||||
#include <boost/algorithm/string/predicate.hpp> // for startswith() and endswith()
|
||||
@@ -214,12 +218,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;
|
||||
@@ -791,6 +796,16 @@ void RenameThread(const char* name)
|
||||
|
||||
void SetupEnvironment()
|
||||
{
|
||||
#ifdef HAVE_MALLOPT_ARENA_MAX
|
||||
// glibc-specific: On 32-bit systems set the number of arenas to 1.
|
||||
// By default, since glibc 2.10, the C library will create up to two heap
|
||||
// arenas per core. This is known to cause excessive virtual address space
|
||||
// usage in our usage. Work around it by setting the maximum number of
|
||||
// arenas to 1.
|
||||
if (sizeof(void*) == 4) {
|
||||
mallopt(M_ARENA_MAX, 1);
|
||||
}
|
||||
#endif
|
||||
// On most POSIX systems (e.g. Linux, but not BSD) the environment's locale
|
||||
// may be invalid, in which case the "C" locale is used as fallback.
|
||||
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
|
||||
@@ -838,4 +853,4 @@ std::string CopyrightHolders(const std::string& strPrefix)
|
||||
strCopyrightHolders += "\n" + strPrefix + "The Bitcoin Core developers";
|
||||
}
|
||||
return strCopyrightHolders;
|
||||
}
|
||||
}
|
||||
@@ -2027,10 +2027,11 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode, int n
|
||||
nLastSetChain = nNow;
|
||||
}
|
||||
int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000;
|
||||
int64_t cacheSize = pcoinsTip->DynamicMemoryUsage();
|
||||
int64_t cacheSize = pcoinsTip->DynamicMemoryUsage() * DB_PEAK_USAGE_FACTOR;
|
||||
int64_t nTotalSpace = nCoinCacheUsage + std::max<int64_t>(nMempoolSizeMax - nMempoolUsage, 0);
|
||||
// The cache is large and we're within 10% and 100 MiB of the limit, but we have time now (not in the middle of a block processing).
|
||||
bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::max((9 * nTotalSpace) / 10, nTotalSpace - 100 * 1024 * 1024);
|
||||
// The cache is large and we're within 10% and 200 MiB or 50% and 50MiB of the limit, but we have time now (not in the middle of a block processing).
|
||||
bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::min(std::max(nTotalSpace / 2, nTotalSpace - MIN_BLOCK_COINSDB_USAGE * 1024 * 1024),
|
||||
std::max((9 * nTotalSpace) / 10, nTotalSpace - MAX_BLOCK_COINSDB_USAGE * 1024 * 1024));
|
||||
// The cache is over the limit, we have to write now.
|
||||
bool fCacheCritical = mode == FLUSH_STATE_IF_NEEDED && cacheSize > nTotalSpace;
|
||||
// It's been a while since we wrote the block index to disk. Do this frequently, so we don't need to redownload after a crash.
|
||||
@@ -2922,9 +2923,11 @@ bool IsWitnessEnabled(const CBlockIndex* pindexPrev, const Consensus::Params& pa
|
||||
static int GetWitnessCommitmentIndex(const CBlock& block)
|
||||
{
|
||||
int commitpos = -1;
|
||||
for (size_t o = 0; o < block.vtx[0]->vout.size(); o++) {
|
||||
if (block.vtx[0]->vout[o].scriptPubKey.size() >= 38 && block.vtx[0]->vout[o].scriptPubKey[0] == OP_RETURN && block.vtx[0]->vout[o].scriptPubKey[1] == 0x24 && block.vtx[0]->vout[o].scriptPubKey[2] == 0xaa && block.vtx[0]->vout[o].scriptPubKey[3] == 0x21 && block.vtx[0]->vout[o].scriptPubKey[4] == 0xa9 && block.vtx[0]->vout[o].scriptPubKey[5] == 0xed) {
|
||||
commitpos = o;
|
||||
if (!block.vtx.empty()) {
|
||||
for (size_t o = 0; o < block.vtx[0]->vout.size(); o++) {
|
||||
if (block.vtx[0]->vout[o].scriptPubKey.size() >= 38 && block.vtx[0]->vout[o].scriptPubKey[0] == OP_RETURN && block.vtx[0]->vout[o].scriptPubKey[1] == 0x24 && block.vtx[0]->vout[o].scriptPubKey[2] == 0xaa && block.vtx[0]->vout[o].scriptPubKey[3] == 0x21 && block.vtx[0]->vout[o].scriptPubKey[4] == 0xa9 && block.vtx[0]->vout[o].scriptPubKey[5] == 0xed) {
|
||||
commitpos = o;
|
||||
}
|
||||
}
|
||||
}
|
||||
return commitpos;
|
||||
@@ -3331,7 +3334,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 +4166,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 +4188,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 +4269,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();
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ const struct BIP9DeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION
|
||||
},
|
||||
{
|
||||
/*.name =*/ "segwit",
|
||||
/*.gbt_force =*/ false,
|
||||
/*.gbt_force =*/ true,
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -96,6 +96,8 @@ UniValue importprivkey(const JSONRPCRequest& request)
|
||||
+ HelpExampleCli("importprivkey", "\"mykey\"") +
|
||||
"\nImport using a label and without rescan\n"
|
||||
+ HelpExampleCli("importprivkey", "\"mykey\" \"testing\" false") +
|
||||
"\nImport using default blank label and without rescan\n"
|
||||
+ HelpExampleCli("importprivkey", "\"mykey\" \"\" false") +
|
||||
"\nAs a JSON-RPC call\n"
|
||||
+ HelpExampleRpc("importprivkey", "\"mykey\", \"testing\", false")
|
||||
);
|
||||
@@ -1072,13 +1074,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