diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..74f1bcca88
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,13 @@
+# To get started with Dependabot version updates, you'll need to specify which
+# package ecosystems to update and where the package manifests are located.
+# Please see the documentation for all configuration options:
+# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
+
+version: 2
+updates:
+ # Maintain dependencies for GitHub Actions
+ - package-ecosystem: "github-actions"
+ # Workflow files stored in the default location of `.github/workflows`. (You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.)
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fc69902048..ec01a5ad1a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -33,7 +33,7 @@ jobs:
include:
- name: linux-32-bit
host: i686-pc-linux-gnu
- os: ubuntu-22.04
+ os: ubuntu-20.04
packages: g++-multilib
check-security: false
check-symbols: false
@@ -43,12 +43,12 @@ jobs:
- name: linux-64-bit
host: x86_64-pc-linux-gnu
- os: ubuntu-22.04
+ os: ubuntu-20.04
packages: python3
check-security: false
check-symbols: false
dep-opts: ""
- config-opts: "--enable-glibc-back-compat LDFLAGS=-static-libstdc++"
+ config-opts: "--enable-sse2 --enable-glibc-back-compat LDFLAGS=-static-libstdc++"
goal: install
- name: windows-64-bit
@@ -63,7 +63,7 @@ jobs:
check-security: false
check-symbols: false
dep-opts: ""
- config-opts: "LDFLAGS=-static-libgcc"
+ config-opts: "--enable-sse2 LDFLAGS=-static-libgcc"
goal: install
- name: macos-64-bit
@@ -73,13 +73,13 @@ jobs:
check-security: false
check-symbols: false
dep-opts: ""
- config-opts: ""
+ config-opts: "--enable-sse2"
goal: deploy
sdk: 12.2-12B45b
- name: linux-arm-32-bit
host: arm-linux-gnueabihf
- os: ubuntu-22.04
+ os: ubuntu-20.04
packages: g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
check-security: false
check-symbols: false
@@ -89,7 +89,7 @@ jobs:
- name: linux-arm-64-bit
host: aarch64-linux-gnu
- os: ubuntu-22.04
+ os: ubuntu-20.04
packages: g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
check-security: false
check-symbols: false
@@ -119,11 +119,11 @@ jobs:
run: ${{ matrix.postinstall }}
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4.1.7
- name: SDK cache
if: ${{ matrix.sdk }}
- uses: actions/cache@v3
+ uses: actions/cache@v4.0.2
env:
cache-name: sdk
with:
@@ -139,7 +139,7 @@ jobs:
tar -C depends/SDKs -xzvf depends/sdk-sources/Xcode-${{ matrix.sdk }}-extracted-SDK-with-libcxx-headers.tar.gz
- name: Dependency cache
- uses: actions/cache@v3
+ uses: actions/cache@v4.0.2
env:
cache-name: depends
with:
@@ -164,7 +164,7 @@ jobs:
run: make -C src check-symbols
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4.4.0
with:
name: blackmore-${{ github.sha }}-${{ matrix.name }}
path: |
@@ -174,6 +174,6 @@ jobs:
retention-days: 7
- name: Download artifacts
- uses: actions/download-artifact@v3
+ uses: actions/download-artifact@v4.1.8
with:
name: blackmore-${{ github.sha }}-${{ matrix.name }}
diff --git a/.github/workflows/docker_build_push_26.yml b/.github/workflows/docker_build_push_26.yml
new file mode 100644
index 0000000000..04979da95d
--- /dev/null
+++ b/.github/workflows/docker_build_push_26.yml
@@ -0,0 +1,20 @@
+name: Build and Push Docker - 26.x
+on: [push]
+jobs:
+ test:
+ name: Build and Push Docker - 26.x
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4.1.7
+ with:
+ repository: BlackcoinDev/docker-blk
+ ref: main
+ - name: Set environment variables
+ run: echo "GIT_CURRENT_BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV
+ - name: Show GITHUB_ENV content
+ run: cat $GITHUB_ENV
+ - name: Login to DockerHub Registry
+ run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login --username "${{ secrets.DOCKER_USERNAME }}" --password-stdin
+ - name: Run build script
+ run: ./gh-build-26.sh
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2b5b45eb3f..afafbb790a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## v26.2.0-beta-2 (2024-XX-XX)
+- Activated SegWit on testnet on Sep 23, 2024
+- Changed miner activation window parameters for BIP9 soft fork deployment
+- Updated derivation path with the BIP44 coin type for descriptor wallets
+- Abandon coinstake transactions when orphaned (Peercoin commit `f6896a4`)
+- Show P2PK addresses for coinstake transactions in RPC
+- Show the reward value for coinstake transactions in RPC
+
+## v26.2.0-beta-1 (2024-08-07)
+- Updated to Bitcoin Core 26.2
+- Activated Segwit on regtest
+- New mempool.dat format (backport of Core's PR28207)
+
## v26.1.0-beta-1 (2024-05-24)
- Updated to Bitcoin Core 26.1
- Create V2 transactions by default
diff --git a/COPYING b/COPYING
index bd3d73ad32..07f4b77551 100644
--- a/COPYING
+++ b/COPYING
@@ -2,7 +2,7 @@ The MIT License (MIT)
Copyright (c) 2009-2024 The Bitcoin Core developers
Copyright (c) 2009-2024 Bitcoin Developers
-Copyright (c) 2011-2023 Peercoin developers
+Copyright (c) 2011-2024 Peercoin developers
Copyright (c) 2013-2014 The NovaCoin developers
Copyright (c) 2016-2023 The Qtum developers
Copyright (c) 2014-2018 The Blackcoin developers
diff --git a/contrib/seeds/nodes_main.txt b/contrib/seeds/nodes_main.txt
index 1b1d2c7b5b..c446274473 100644
--- a/contrib/seeds/nodes_main.txt
+++ b/contrib/seeds/nodes_main.txt
@@ -1,55 +1,30 @@
# List of fixed seed nodes for main network
# IPv4 nodes
+185.197.251.199:15714
+109.123.251.87:15714
+84.46.245.181:15714
167.86.117.103:15714
-167.86.117.144:15714
167.86.117.143:15714
+167.86.117.144:15714
45.137.91.173:15714
-5.189.160.139:15714
-81.0.246.79:15714
-5.189.159.220:15714
-161.97.80.103:15714
45.138.55.128:15714
-45.138.55.129:15714
45.138.55.130:15714
-45.138.55.131:15714
-45.138.55.132:15714
-45.138.55.133:15714
-45.138.55.134:15714
-45.138.55.135:15714
-116.86.146.44:15714
-118.195.208.33:15714
-119.45.242.241:15714
-91.121.217.71:15714
-216.39.250.91:15714
-172.99.189.198:15714
-50.47.255.100:15714
# IPv6 nodes
-[2a02:c207:2041:3853::1]:15714
+[2a02:c206:2210:3221::1]:15714
+[2a02:c206:2210:3222::1]:15714
+[2a02:c206:2210:3223::1]:15714
[2a02:c207:2056:6532::1]:15714
-[2a02:c207:2056:6534::1]:15714
[2a02:c207:2056:6533::1]:15714
-[2a02:c207:2110:9257::1]:15714
-[2a02:c204:2110:9258::1]:15714
-[2a02:c207:2110:9259::1]:15714
-[2a10:3781:525:1::210]:15714
-[2a10:3781:525:1::201]:15714
+[2a02:c207:2056:6534::1]:15714
+[2a10:3781:525:1::1]:15714
[2a10:3781:525:1::210]:15714
-[2a10:3781:525:1::201]:15714
-[2a10:3781:525:1::211]:15714
-[2a10:3781:525:1::212]:15714
-[2a10:3781:525:1::213]:15714
-[2a10:3781:525:1::215]:15714
-[2a10:3781:525:6::10]:15714
-[2a10:3781:525:6::11]:15714
-[2602:fec3:2:10::9:91]:15714
-[2001:41d0:303:6855::501]:15714
-[2604:86c0:f201:6::10:91]:15714
-[2a01:5a8:302:f394:5870:53f7:cb1f:9cfb]:15714
-[2a01:5a8:302:f394:8cd0:93fc:9953:3223]:15714
-[2a01:5a8:302:f394:5d2:e182:3f6:b054]:15714
+[2a10:3781:525::1]:15714
+
# Onion nodes
jgsfxfwhm7vdabt5dxl42il7uenvysknyedtzuaiajo7w5bv5jf2jpid.onion:15714
+hqnztorcojz5gsomamrxgqvoriitu4dfeze46hclmwd5zht4eic6jfid.onion:15714
+5evnjurdgzorvoty6qnrgqnmb7xot237b4rafgnt3t2vth2hy2bju7id.onion:15714
diff --git a/contrib/seeds/nodes_test.txt b/contrib/seeds/nodes_test.txt
index 78ef93aca5..936f9a5a20 100644
--- a/contrib/seeds/nodes_test.txt
+++ b/contrib/seeds/nodes_test.txt
@@ -1,39 +1,30 @@
# List of fixed seed nodes for testnet
# IPv4 nodes
+185.197.251.199:25714
+109.123.251.87:25714
+84.46.245.181:25714
167.86.117.103:25714
-167.86.117.144:25714
167.86.117.143:25714
+167.86.117.144:25714
45.137.91.173:25714
-5.189.160.139:25714
-81.0.246.79:25714
-5.189.159.220:25714
-161.97.80.103:25714
45.138.55.128:25714
-45.138.55.129:25714
45.138.55.130:25714
-45.138.55.131:25714
-45.138.55.132:25714
-45.138.55.133:25714
-45.138.55.134:25714
-45.138.55.135:25714
+
# IPv6 nodes
-[2a02:c207:2041:3853::1]:25714
+[2a02:c206:2210:3221::1]:25714
+[2a02:c206:2210:3222::1]:25714
+[2a02:c206:2210:3223::1]:25714
[2a02:c207:2056:6532::1]:25714
-[2a02:c207:2056:6534::1]:25714
[2a02:c207:2056:6533::1]:25714
-[2a02:c207:2110:9257::1]:25714
-[2a02:c204:2110:9258::1]:25714
-[2a02:c207:2110:9259::1]:25714
+[2a02:c207:2056:6534::1]:25714
+[2a10:3781:525:1::1]:25714
[2a10:3781:525:1::210]:25714
-[2a10:3781:525:1::201]:25714
-[2a10:3781:525:1::211]:25714
-[2a10:3781:525:1::212]:25714
-[2a10:3781:525:1::213]:25714
-[2a10:3781:525:1::215]:25714
-[2a10:3781:525:6::10]:25714
-[2a10:3781:525:6::11]:25714
+[2a10:3781:525::1]:25714
+
# Onion nodes
tzpgz5hg5d2xxipzgy6fuwhkcxun2at3z37bc53k3krerwo4dhwk4xad.onion:25714
+s3fhynnohiq666qor6tegsxcxzsirgecp425hc3nwfcsqdurxtsazzyd.onion:25714
+v2zvr54qt5zf677vnczxzekyqn4hk6efpvx3u77vq7iwhulf2ajmsbid.onion:25714
\ No newline at end of file
diff --git a/doc/release-notes.md b/doc/release-notes.md
index 85bf57c500..fa6162a4f4 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -5,7 +5,7 @@ Bitcoin Core version 27.2 is now available from:
-This release includes various bug fixes and performance
+This release includes new features, various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
@@ -69,7 +69,7 @@ Notable changes
- #30283 upnp: fix build with miniupnpc 2.2.8
- #30633 Fixes for GCC 15 compatibility
-### CI
+### Misc
- #30193 ci: move ASan job to GitHub Actions from Cirrus CI
- #30299 ci: remove unused bcc variable from workflow
diff --git a/doc/release-notes/release-notes-26.1.md b/doc/release-notes/release-notes-26.1.md
new file mode 100644
index 0000000000..cb64d1bbe8
--- /dev/null
+++ b/doc/release-notes/release-notes-26.1.md
@@ -0,0 +1,105 @@
+26.1 Release Notes
+==================
+
+Bitcoin Core version 26.1 is now available from:
+
+
+
+This release includes various bug fixes and performance
+improvements, as well as updated translations.
+
+Please report bugs using the issue tracker at GitHub:
+
+
+
+To receive security and update notifications, please subscribe to:
+
+
+
+How to Upgrade
+==============
+
+If you are running an older version, shut it down. Wait until it has completely
+shut down (which might take a few minutes in some cases), then run the
+installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
+or `bitcoind`/`bitcoin-qt` (on Linux).
+
+Upgrading directly from a version of Bitcoin Core that has reached its EOL is
+possible, but it might take some time if the data directory needs to be migrated. Old
+wallet versions of Bitcoin Core are generally supported.
+
+Compatibility
+==============
+
+Bitcoin Core is supported and extensively tested on operating systems
+using the Linux kernel, macOS 11.0+, and Windows 7 and newer. Bitcoin
+Core should also work on most other Unix-like systems but is not as
+frequently tested on them. It is not recommended to use Bitcoin Core on
+unsupported systems.
+
+Notable changes
+===============
+
+### Wallet
+
+- #28994 wallet: skip BnB when SFFO is enabled
+- #28920 wallet: birth time update during tx scanning
+- #29176 wallet: Fix use-after-free in WalletBatch::EraseRecords
+- #29510 wallet: getrawchangeaddress and getnewaddress failures should not affect keypools for descriptor wallets
+
+### RPC
+
+- #29003 rpc: fix getrawtransaction segfault
+- #28784 rpc: keep .cookie file if it was not generated
+
+### Logs
+
+- #29227 log mempool loading progress
+
+### P2P and network changes
+
+- #29200 net: create I2P sessions using both ECIES-X25519 and ElGamal encryption
+- #29412 p2p: Don't process mutated blocks
+- #29524 p2p: Don't consider blocks mutated if they don't connect to known prev block
+
+### Build
+
+- #29127 Use hardened runtime on macOS release builds.
+- #29195 build: Fix -Xclang -internal-isystem option
+
+### CI
+
+- #28992 ci: Use Ubuntu 24.04 Noble for asan,tsan,tidy,fuzz
+- #29080 ci: Set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to avoid unrelated failures
+- #29610 ci: Fix "macOS native" job
+
+### Miscellaneous
+
+- #28391 refactor: Simplify CTxMempool/BlockAssembler fields, remove some external mapTx access
+- #29179 test: wallet rescan with reorged parent + IsFromMe child in mempool
+- #28791 snapshots: don't core dump when running -checkblockindex after loadtxoutset
+- #29357 test: Drop x modifier in fsbridge::fopen call for MinGW builds
+- #29529 fuzz: restrict fopencookie usage to Linux & FreeBSD
+
+Credits
+=======
+
+Thanks to everyone who directly contributed to this release:
+
+- dergoegge
+- fanquake
+- furszy
+- glozow
+- Greg Sanders
+- Hennadii Stepanov
+- Jon Atack
+- MarcoFalke
+- Mark Friedenbach
+- Martin Zumsande
+- Murch
+- Roman Zeyde
+- stickies-v
+- UdjinM6
+
+As well as to everyone that helped with translations on
+[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
diff --git a/src/addresstype.cpp b/src/addresstype.cpp
index 3f7b3c6527..082caff915 100644
--- a/src/addresstype.cpp
+++ b/src/addresstype.cpp
@@ -105,9 +105,16 @@ bool ExtractDestination(const CScript& scriptPubKey, CTxDestination& addressRet)
}
case TxoutType::MULTISIG:
case TxoutType::NULL_DATA:
- case TxoutType::NONSTANDARD:
+ case TxoutType::NONSTANDARD: {
addressRet = CNoDestination(scriptPubKey);
+
+ // Blackcoin: Allow non-standard type with empty scriptPubKey
+ if (scriptPubKey.empty()) {
+ return true;
+ }
+
return false;
+ }
} // no default case, so the compiler can warn about missing cases
assert(false);
}
diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.h
index 02788817ad..ca07f374bf 100644
--- a/src/chainparamsseeds.h
+++ b/src/chainparamsseeds.h
@@ -7,87 +7,50 @@
* Each line contains a BIP155 serialized (networkID, addr, port) tuple.
*/
static const uint8_t chainparams_seed_main[] = {
+ 0x01,0x04,0xb9,0xc5,0xfb,0xc7,0x3d,0x62,
+ 0x01,0x04,0x6d,0x7b,0xfb,0x57,0x3d,0x62,
+ 0x01,0x04,0x54,0x2e,0xf5,0xb5,0x3d,0x62,
0x01,0x04,0xa7,0x56,0x75,0x67,0x3d,0x62,
- 0x01,0x04,0xa7,0x56,0x75,0x90,0x3d,0x62,
0x01,0x04,0xa7,0x56,0x75,0x8f,0x3d,0x62,
+ 0x01,0x04,0xa7,0x56,0x75,0x90,0x3d,0x62,
0x01,0x04,0x2d,0x89,0x5b,0xad,0x3d,0x62,
- 0x01,0x04,0x05,0xbd,0xa0,0x8b,0x3d,0x62,
- 0x01,0x04,0x51,0x00,0xf6,0x4f,0x3d,0x62,
- 0x01,0x04,0x05,0xbd,0x9f,0xdc,0x3d,0x62,
- 0x01,0x04,0xa1,0x61,0x50,0x67,0x3d,0x62,
0x01,0x04,0x2d,0x8a,0x37,0x80,0x3d,0x62,
- 0x01,0x04,0x2d,0x8a,0x37,0x81,0x3d,0x62,
0x01,0x04,0x2d,0x8a,0x37,0x82,0x3d,0x62,
- 0x01,0x04,0x2d,0x8a,0x37,0x83,0x3d,0x62,
- 0x01,0x04,0x2d,0x8a,0x37,0x84,0x3d,0x62,
- 0x01,0x04,0x2d,0x8a,0x37,0x85,0x3d,0x62,
- 0x01,0x04,0x2d,0x8a,0x37,0x86,0x3d,0x62,
- 0x01,0x04,0x2d,0x8a,0x37,0x87,0x3d,0x62,
- 0x01,0x04,0x74,0x56,0x92,0x2c,0x3d,0x62,
- 0x01,0x04,0x76,0xc3,0xd0,0x21,0x3d,0x62,
- 0x01,0x04,0x77,0x2d,0xf2,0xf1,0x3d,0x62,
- 0x01,0x04,0x5b,0x79,0xd9,0x47,0x3d,0x62,
- 0x01,0x04,0xd8,0x27,0xfa,0x5b,0x3d,0x62,
- 0x01,0x04,0xac,0x63,0xbd,0xc6,0x3d,0x62,
- 0x01,0x04,0x32,0x2f,0xff,0x64,0x3d,0x62,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x41,0x38,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
+ 0x02,0x10,0x2a,0x02,0xc2,0x06,0x22,0x10,0x32,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
+ 0x02,0x10,0x2a,0x02,0xc2,0x06,0x22,0x10,0x32,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
+ 0x02,0x10,0x2a,0x02,0xc2,0x06,0x22,0x10,0x32,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x21,0x10,0x92,0x57,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
- 0x02,0x10,0x2a,0x02,0xc2,0x04,0x21,0x10,0x92,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x21,0x10,0x92,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x3d,0x62,
+ 0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
+ 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x11,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x12,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x13,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x15,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3d,0x62,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x3d,0x62,
- 0x02,0x10,0x26,0x02,0xfe,0xc3,0x00,0x02,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x91,0x3d,0x62,
- 0x02,0x10,0x20,0x01,0x41,0xd0,0x03,0x03,0x68,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x01,0x3d,0x62,
- 0x02,0x10,0x26,0x04,0x86,0xc0,0xf2,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x91,0x3d,0x62,
- 0x02,0x10,0x2a,0x01,0x05,0xa8,0x03,0x02,0xf3,0x94,0x58,0x70,0x53,0xf7,0xcb,0x1f,0x9c,0xfb,0x3d,0x62,
- 0x02,0x10,0x2a,0x01,0x05,0xa8,0x03,0x02,0xf3,0x94,0x8c,0xd0,0x93,0xfc,0x99,0x53,0x32,0x23,0x3d,0x62,
- 0x02,0x10,0x2a,0x01,0x05,0xa8,0x03,0x02,0xf3,0x94,0x05,0xd2,0xe1,0x82,0x03,0xf6,0xb0,0x54,0x3d,0x62,
+ 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x3d,0x62,
0x04,0x20,0x49,0xa4,0x5b,0x96,0xc7,0x67,0xea,0x30,0x06,0x7d,0x1d,0xd7,0xcd,0x21,0x7f,0xa1,0x1b,0x5c,0x49,0x4d,0xc1,0x07,0x3c,0xd0,0x08,0x02,0x5d,0xfb,0x74,0x35,0xea,0x4b,0x3d,0x62,
+ 0x04,0x20,0x3c,0x1b,0x99,0xba,0x22,0x72,0x73,0xd3,0x49,0xcc,0x03,0x23,0x73,0x42,0xae,0x8a,0x11,0x3a,0x70,0x65,0x26,0x49,0xcf,0x1c,0x4b,0x65,0x87,0xdc,0x9e,0x7c,0x22,0x05,0x3d,0x62,
+ 0x04,0x20,0xe9,0x2a,0xd4,0xd2,0x23,0x36,0x5d,0x1a,0xba,0x78,0xf4,0x1b,0x13,0x41,0xac,0x0f,0xee,0xe9,0xeb,0x7f,0x0f,0x22,0x02,0x99,0xb3,0xdc,0xf5,0x59,0x9f,0x47,0xc6,0x82,0x3d,0x62,
};
static const uint8_t chainparams_seed_test[] = {
+ 0x01,0x04,0xb9,0xc5,0xfb,0xc7,0x64,0x72,
+ 0x01,0x04,0x6d,0x7b,0xfb,0x57,0x64,0x72,
+ 0x01,0x04,0x54,0x2e,0xf5,0xb5,0x64,0x72,
0x01,0x04,0xa7,0x56,0x75,0x67,0x64,0x72,
- 0x01,0x04,0xa7,0x56,0x75,0x90,0x64,0x72,
0x01,0x04,0xa7,0x56,0x75,0x8f,0x64,0x72,
+ 0x01,0x04,0xa7,0x56,0x75,0x90,0x64,0x72,
0x01,0x04,0x2d,0x89,0x5b,0xad,0x64,0x72,
- 0x01,0x04,0x05,0xbd,0xa0,0x8b,0x64,0x72,
- 0x01,0x04,0x51,0x00,0xf6,0x4f,0x64,0x72,
- 0x01,0x04,0x05,0xbd,0x9f,0xdc,0x64,0x72,
- 0x01,0x04,0xa1,0x61,0x50,0x67,0x64,0x72,
0x01,0x04,0x2d,0x8a,0x37,0x80,0x64,0x72,
- 0x01,0x04,0x2d,0x8a,0x37,0x81,0x64,0x72,
0x01,0x04,0x2d,0x8a,0x37,0x82,0x64,0x72,
- 0x01,0x04,0x2d,0x8a,0x37,0x83,0x64,0x72,
- 0x01,0x04,0x2d,0x8a,0x37,0x84,0x64,0x72,
- 0x01,0x04,0x2d,0x8a,0x37,0x85,0x64,0x72,
- 0x01,0x04,0x2d,0x8a,0x37,0x86,0x64,0x72,
- 0x01,0x04,0x2d,0x8a,0x37,0x87,0x64,0x72,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x41,0x38,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
+ 0x02,0x10,0x2a,0x02,0xc2,0x06,0x22,0x10,0x32,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
+ 0x02,0x10,0x2a,0x02,0xc2,0x06,0x22,0x10,0x32,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
+ 0x02,0x10,0x2a,0x02,0xc2,0x06,0x22,0x10,0x32,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x21,0x10,0x92,0x57,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
- 0x02,0x10,0x2a,0x02,0xc2,0x04,0x21,0x10,0x92,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
- 0x02,0x10,0x2a,0x02,0xc2,0x07,0x21,0x10,0x92,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
+ 0x02,0x10,0x2a,0x02,0xc2,0x07,0x20,0x56,0x65,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
+ 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x11,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x12,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x13,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x15,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x64,0x72,
- 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x64,0x72,
+ 0x02,0x10,0x2a,0x10,0x37,0x81,0x05,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x64,0x72,
0x04,0x20,0x9e,0x5e,0x6c,0xf4,0xe6,0xe8,0xf5,0x7b,0xa1,0xf9,0x36,0x3c,0x5a,0x58,0xea,0x15,0xe8,0xdd,0x02,0x7b,0xce,0xfe,0x11,0x77,0x6a,0xda,0xa2,0x48,0xd9,0xdc,0x19,0xec,0x64,0x72,
+ 0x04,0x20,0x96,0xca,0x7c,0x35,0xae,0x3a,0x21,0xef,0x7a,0x0e,0x8f,0xa6,0x43,0x4a,0xe2,0xbe,0x64,0x88,0x98,0x82,0x7f,0x35,0xd3,0x8b,0x6d,0xb1,0x45,0x28,0x0e,0x91,0xbc,0xe4,0x64,0x72,
+ 0x04,0x20,0xae,0xb3,0x58,0xf7,0x90,0x9f,0x72,0x5f,0x7f,0xf5,0x68,0xb3,0x7c,0x91,0x58,0x83,0x78,0x75,0x78,0x85,0x7d,0x6f,0xba,0x7f,0xf5,0x87,0xd1,0x63,0xd1,0x65,0xd0,0x12,0x64,0x72,
};
#endif // BITCOIN_CHAINPARAMSSEEDS_H
\ No newline at end of file
diff --git a/src/core_write.cpp b/src/core_write.cpp
index 34c5b85da8..54896a62fe 100644
--- a/src/core_write.cpp
+++ b/src/core_write.cpp
@@ -161,8 +161,9 @@ void ScriptToUniv(const CScript& script, UniValue& out, bool include_hex, bool i
std::vector> solns;
const TxoutType type{Solver(script, solns)};
-
- if (include_address && ExtractDestination(script, address) && type != TxoutType::PUBKEY) {
+ // Blackcoin: We need to see the encoded pubkey address.
+ // This is essentially a reversal of Bitcoin PR #16725
+ if (include_address && ExtractDestination(script, address)) /*&& type != TxoutType::PUBKEY)*/ {
out.pushKV("address", EncodeDestination(address));
}
out.pushKV("type", GetTxnOutputType(type));
@@ -257,8 +258,13 @@ void TxToUniv(const CTransaction& tx, const uint256& block_hash, UniValue& entry
if (have_undo) {
const CAmount fee = amt_total_in - amt_total_out;
- CHECK_NONFATAL(MoneyRange(fee));
- entry.pushKV("fee", ValueFromAmount(fee));
+ if (!tx.IsCoinStake()) {
+ CHECK_NONFATAL(MoneyRange(fee));
+ entry.pushKV("fee", ValueFromAmount(fee));
+ }
+ else {
+ entry.pushKV("reward", ValueFromAmount(-fee));
+ }
}
if (!block_hash.IsNull()) {
diff --git a/src/crypto/scrypt.h b/src/crypto/scrypt.h
index 6ba31aee63..ef25a4b00e 100644
--- a/src/crypto/scrypt.h
+++ b/src/crypto/scrypt.h
@@ -29,7 +29,9 @@ void
PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const uint8_t *salt,
size_t saltlen, uint64_t c, uint8_t *buf, size_t dkLen);
-#ifndef __FreeBSD__
+#ifdef __FreeBSD__
+#include
+#else
static inline uint32_t le32dec(const void *pp)
{
const uint8_t *p = (uint8_t const *)pp;
diff --git a/src/index/base.cpp b/src/index/base.cpp
index fc31c04007..0311f563c7 100644
--- a/src/index/base.cpp
+++ b/src/index/base.cpp
@@ -106,7 +106,19 @@ bool BaseIndex::Init()
// best chain, we will rewind to the fork point during index sync
const CBlockIndex* locator_index{m_chainstate->m_blockman.LookupBlockIndex(locator.vHave.at(0))};
if (!locator_index) {
- return InitError(strprintf(Untranslated("%s: best block of the index not found. Please rebuild the index."), GetName()));
+ /*
+ // Blackcoin ToDo: that's a temporary workaround for issue https://github.com/CoinBlack/blackcoin-more/issues/22
+ // This addresses blockfilterindex and txindex crash issues but does not help to deal with the coinstatsindex crash
+ // A more robust solution should replace this in the future
+ */
+ // If we couldn't find a block index from the locator, use m_best_header as a fallback
+ const CBlockIndex* best_header = index_chain.Tip();
+ if (best_header) {
+ locator_index = best_header;
+ LogPrintf("%s: Using m_best_header as fallback, block hash: %s at height %d\n", GetName(), locator_index->GetBlockHash().ToString(), locator_index->nHeight);
+ } else {
+ return InitError(strprintf(Untranslated("%s: best block of the index not found. Please rebuild the index."), GetName()));
+ }
}
SetBestBlockIndex(locator_index);
}
diff --git a/src/init.cpp b/src/init.cpp
index 948a43677d..45c93fa61c 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -834,11 +834,7 @@ namespace { // Variables internal to initialization process only
int nMaxConnections;
int nUserMaxConnections;
int nFD;
-/*
-// Blackcoin: Do not set NODE_NETWORK_LIMITED and NODE_WITNESS flags
ServiceFlags nLocalServices = ServiceFlags(NODE_NETWORK_LIMITED | NODE_WITNESS);
-*/
-ServiceFlags nLocalServices = ServiceFlags(NODE_NETWORK);
int64_t peer_connect_timeout;
std::set g_enabled_filter_types;
diff --git a/src/kernel/chainparams.cpp b/src/kernel/chainparams.cpp
index 0ea7a0658a..85d8b8abce 100644
--- a/src/kernel/chainparams.cpp
+++ b/src/kernel/chainparams.cpp
@@ -99,8 +99,8 @@ class CMainParams : public CChainParams {
consensus.fPowAllowMinDifficultyBlocks = false;
consensus.fPowNoRetargeting = false;
consensus.fPoSNoRetargeting = false;
- consensus.nRuleChangeActivationThreshold = 1815; // 90% of 2016
- consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
+ consensus.nRuleChangeActivationThreshold = 12000; // 80% of 15000
+ consensus.nMinerConfirmationWindow = 15000; // nTargetTimespan / nTargetSpacing * 1000
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
@@ -126,7 +126,7 @@ class CMainParams : public CChainParams {
consensus.nStakeTimestampMask = 0xf; // 15
consensus.nCoinbaseMaturity = 500;
- consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000042bc911cd05857a5b34"); // block 4939111
+ consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000043c846cfe732c8b6dbc"); // block 5044605
consensus.defaultAssumeValid = uint256S("0x6f8e37e21aa2fba3f8e2d6825cb825ca290e9367ed08b8c30943bc16efcba119"); // block 4908715
/**
@@ -151,10 +151,10 @@ class CMainParams : public CChainParams {
// This is fine at runtime as we'll fall back to using them as an addrfetch if they don't support the
// service bits we want, but we should get them updated to support all service bits wanted by any
// release ASAP to avoid it where possible.
- vSeeds.emplace_back("dnsseed.blackcoin.nl"); // hosted at dns.blackcoin.nl
- vSeeds.emplace_back("dnsseed2.blackcoin.nl"); // hosted at vps.blackcoin.nl
- vSeeds.emplace_back("swap.blackcoin.nl"); // swapservice static node
- vSeeds.emplace_back("dns2.blackcoin.nl"); // Bitcore static node
+ vSeeds.emplace_back("dnsseed.blackcoin.nl"); // hosted by blackcoin.nl
+ vSeeds.emplace_back("dnsseed2.blackcoin.nl"); // hosted by blackcoin.nl
+ vSeeds.emplace_back("swap.blackcoin.nl"); // hosted by blackcoin.nl
+ vSeeds.emplace_back("dns2.blackcoin.nl"); // hosted by blackcoin.nl
base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,25);
base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,85);
@@ -187,10 +187,10 @@ class CMainParams : public CChainParams {
};
chainTxData = ChainTxData{
- // Data from RPC: getchaintxstats 40500 6f8e37e21aa2fba3f8e2d6825cb825ca290e9367ed08b8c30943bc16efcba119
- .nTime = 1713938480,
- .nTxCount = 15170003,
- .dTxRate = 0.02990868924889543,
+ // Data from RPC: getchaintxstats 40500 97d26e7793f0d3f3e8b3f52503881b013d4deb8ff468f6cae3f670266c91a46e
+ .nTime = 1723034304,
+ .nTxCount = 15444062,
+ .dTxRate = 0.03010594818542921,
};
// A vector of p2sh addresses
@@ -220,8 +220,8 @@ class CTestNetParams : public CChainParams {
consensus.fPowAllowMinDifficultyBlocks = true;
consensus.fPowNoRetargeting = false;
consensus.fPoSNoRetargeting = false;
- consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
- consensus.nMinerConfirmationWindow = 2016; // nTargetTimespan / nTargetSpacing
+ consensus.nRuleChangeActivationThreshold = 11250; // 75% for testchains
+ consensus.nMinerConfirmationWindow = 15000; // nTargetTimespan / nTargetSpacing * 1000
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
@@ -229,7 +229,7 @@ class CTestNetParams : public CChainParams {
// Deployment of SegWit (BIP141, BIP143, and BIP147)
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;
- consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
+ consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = 1727100000; // Monday, September 23, 2024 2:00:00 PM
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].min_activation_height = 0; // No activation delay
@@ -247,7 +247,7 @@ class CTestNetParams : public CChainParams {
consensus.nStakeTimestampMask = 0xf;
consensus.nCoinbaseMaturity = 10;
- consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000004efbeeda43294ccd83"); // block 1867048
+ consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000054788711eaf8d71d0e"); // block 1971755
consensus.defaultAssumeValid = uint256S("0x5d5c42500cc6057533e249ba9eeb9b5e998aff30468c904bc267ec9bccbc8b39"); // block 1415393
pchMessageStart[0] = 0xcd;
@@ -262,16 +262,15 @@ class CTestNetParams : public CChainParams {
assert(consensus.hashGenesisBlock == uint256S("0x0000724595fb3b9609d441cbfb9577615c292abf07d996d3edabc48de843642d"));
assert(genesis.hashMerkleRoot == uint256S("0x12630d16a97f24b287c8c2594dda5fb98c9e6c70fc61d44191931ea2aa08dc90"));
+ vFixedSeeds.clear();
vSeeds.clear();
// nodes with support for servicebits filtering should be at the top
- /*
- vSeeds.emplace_back("testnet-seed.bitcoin.jonasschnelli.ch.");
- vSeeds.emplace_back("seed.tbtc.petertodd.net.");
- vSeeds.emplace_back("seed.testnet.bitcoin.sprovoost.nl.");
- vSeeds.emplace_back("testnet-seed.bluematt.me."); // Just a static list of stable node(s), only supports x9
- */
+ vSeeds.emplace_back("swap.blackcoin.nl"); // hosted by blackcoin.nl
+ vSeeds.emplace_back("dns2.blackcoin.nl"); // hosted by blackcoin.nl
+ vSeeds.emplace_back("dnsseed.blackcoin.nl"); // hosted by blackcoin.nl
+ vSeeds.emplace_back("dnsseed2.blackcoin.nl"); // hosted by blackcoin.nl
- base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,111);
+ // Note that of those which support the service bits prefix, most only support a subset of
base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,196);
base58Prefixes[SECRET_KEY] = std::vector(1,239);
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
@@ -297,10 +296,10 @@ class CTestNetParams : public CChainParams {
};
chainTxData = ChainTxData{
- // Data from RPC: getchaintxstats 40500 8f2c0be64feb3d84572ec928d8cc55416eb9cd9b811b92fa34602e3543698a0f
- .nTime = 1715973760,
- .nTxCount = 3752992,
- .dTxRate = 0.0297410476168098,
+ // Data from RPC: getchaintxstats 40500 84517a2467681cf97ed7cf8926acc45dbd567226f2fb189302979ad49fd56b1f
+ .nTime = 1723034480,
+ .nTxCount = 3962401,
+ .dTxRate = 0.02976167726989428,
};
// A vector of p2sh addresses
@@ -369,8 +368,8 @@ class SigNetParams : public CChainParams {
consensus.fPowAllowMinDifficultyBlocks = false;
consensus.fPowNoRetargeting = false;
consensus.fPoSNoRetargeting = false;
- consensus.nRuleChangeActivationThreshold = 1815; // 90% of 2016
- consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
+ consensus.nRuleChangeActivationThreshold = 12000; // 80% of 15000
+ consensus.nMinerConfirmationWindow = 15000; // nTargetTimespan / nTargetSpacing * 1000
consensus.MinBIP9WarningHeight = 0;
consensus.powLimit = uint256S("0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.posLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
@@ -440,7 +439,7 @@ class CRegTestParams : public CChainParams
consensus.signet_challenge.clear();
consensus.nMaxReorganizationDepth = 50;
consensus.CSVHeight = 1;
- consensus.SegwitHeight = std::numeric_limits::max();
+ consensus.SegwitHeight = 1;
consensus.MinBIP9WarningHeight = 0;
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.posLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
@@ -451,8 +450,8 @@ class CRegTestParams : public CChainParams
consensus.fPowAllowMinDifficultyBlocks = true;
consensus.fPowNoRetargeting = true;
consensus.fPoSNoRetargeting = true;
- consensus.nRuleChangeActivationThreshold = 108;// 75% for regtest
- consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
+ consensus.nRuleChangeActivationThreshold = 120; // 80% for regtest
+ consensus.nMinerConfirmationWindow = 150; // Faster than normal for regtest (150 instead of 15000)
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
@@ -460,8 +459,8 @@ class CRegTestParams : public CChainParams
// Deployment of SegWit (BIP141, BIP143, and BIP147)
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].bit = 1;
- consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
- consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
+ consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
+ consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT].min_activation_height = 0; // No activation delay
// Deployment of Taproot (BIPs 340-342)
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 35a8496874..1187c64c07 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -143,9 +143,11 @@ static const unsigned int MAX_BLOCKS_TO_ANNOUNCE = 8;
/** Maximum number of unconnecting headers announcements before DoS score */
static const int MAX_NUM_UNCONNECTING_HEADERS_MSGS = 10;
/** Minimum blocks required to signal NODE_NETWORK_LIMITED */
-static const unsigned int NODE_NETWORK_LIMITED_MIN_BLOCKS = 288;
+// Blackcoin: change to reflect 2 days at 64s block time
+static const unsigned int NODE_NETWORK_LIMITED_MIN_BLOCKS = 2700;
/** Window, in blocks, for connecting to NODE_NETWORK_LIMITED peers */
-static const unsigned int NODE_NETWORK_LIMITED_ALLOW_CONN_BLOCKS = 144;
+// Blackcoin: NODE_NETWORK_LIMITED_MIN_BLOCKS/2
+static const unsigned int NODE_NETWORK_LIMITED_ALLOW_CONN_BLOCKS = 1350;
/** Average delay between local address broadcasts */
static constexpr auto AVG_LOCAL_ADDRESS_BROADCAST_INTERVAL{24h};
/** Average delay between peer address broadcasts */
@@ -1892,23 +1894,14 @@ bool PeerManagerImpl::HasAllDesirableServiceFlags(ServiceFlags services) const
ServiceFlags PeerManagerImpl::GetDesirableServiceFlags(ServiceFlags services) const
{
- // Blackcoin: Do not ask for NODE_WITNESS for now
- /*
if (services & NODE_NETWORK_LIMITED) {
// Limited peers are desirable when we are close to the tip.
if (ApproximateBestBlockDepth() < NODE_NETWORK_LIMITED_ALLOW_CONN_BLOCKS) {
return ServiceFlags(NODE_NETWORK_LIMITED | NODE_WITNESS);
}
}
- return ServiceFlags(NODE_NETWORK | NODE_WITNESS);
- */
-
- if (services & NODE_NETWORK_LIMITED) {
- // Limited peers are desirable when we are close to the tip.
- if (ApproximateBestBlockDepth() < NODE_NETWORK_LIMITED_ALLOW_CONN_BLOCKS) {
- return ServiceFlags(NODE_NETWORK_LIMITED);
- }
- }
+ // Blackcoin: Do not ask for NODE_WITNESS for now
+ // return ServiceFlags(NODE_NETWORK | NODE_WITNESS);
return ServiceFlags(NODE_NETWORK);
}
@@ -2136,11 +2129,7 @@ std::optional PeerManagerImpl::FetchBlock(NodeId peer_id, const CBl
// Construct message to request the block
const uint256& hash{block_index.GetBlockHash()};
- /*
- // Blackcoin: Do not send witness flag for now
std::vector invs{CInv(MSG_BLOCK | MSG_WITNESS_FLAG, hash)};
- */
- std::vector invs{CInv(MSG_BLOCK, hash)};
// Send block request message to the peer
bool success = m_connman.ForNode(peer_id, [this, &invs](CNode* node) {
@@ -2307,6 +2296,7 @@ void PeerManagerImpl::NewPoWValidBlock(const CBlockIndex *pindex, const std::sha
LogPrint(BCLog::NET, "%s sending header-and-ids %s to peer=%d\n", "PeerManager::NewPoWValidBlock",
hashBlock.ToString(), pnode->GetId());
+
const CSerializedNetMsg& ser_cmpctblock{lazy_ser.get()};
PushMessage(*pnode, ser_cmpctblock.Copy());
state.pindexBestHeaderSent = pindex;
@@ -2566,6 +2556,8 @@ void PeerManagerImpl::ProcessGetBlockData(CNode& pfrom, Peer& peer, const CInv&
std::shared_ptr pblock;
if (a_recent_block && a_recent_block->GetHash() == pindex->GetBlockHash()) {
pblock = a_recent_block;
+ /*
+ // Blackcoin: do not read raw blocks from disk as the disk format is actually different
} else if (inv.IsMsgWitnessBlk()) {
// Fast-path: in this case it is possible to serve the block directly from disk,
// as the network format matches the format on disk
@@ -2575,6 +2567,7 @@ void PeerManagerImpl::ProcessGetBlockData(CNode& pfrom, Peer& peer, const CInv&
}
MakeAndPushMessage(pfrom, NetMsgType::BLOCK, Span{block_data});
// Don't set pblock as we've sent the block
+ */
} else {
// Send block from disk
std::shared_ptr pblockRead = std::make_shared();
@@ -4885,88 +4878,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
BlockTransactions resp;
vRecv >> resp;
- std::shared_ptr pblock = std::make_shared();
- bool fBlockRead = false;
- {
- LOCK(cs_main);
-
- auto range_flight = mapBlocksInFlight.equal_range(resp.blockhash);
- size_t already_in_flight = std::distance(range_flight.first, range_flight.second);
- bool requested_block_from_this_peer{false};
-
- // Multimap ensures ordering of outstanding requests. It's either empty or first in line.
- bool first_in_flight = already_in_flight == 0 || (range_flight.first->second.first == pfrom.GetId());
-
- while (range_flight.first != range_flight.second) {
- auto [node_id, block_it] = range_flight.first->second;
- if (node_id == pfrom.GetId() && block_it->partialBlock) {
- requested_block_from_this_peer = true;
- break;
- }
- range_flight.first++;
- }
-
- if (!requested_block_from_this_peer) {
- LogPrint(BCLog::NET, "Peer %d sent us block transactions for block we weren't expecting\n", pfrom.GetId());
- return;
- }
-
- PartiallyDownloadedBlock& partialBlock = *range_flight.first->second.second->partialBlock;
- ReadStatus status = partialBlock.FillBlock(*pblock, resp.txn);
- if (status == READ_STATUS_INVALID) {
- RemoveBlockRequest(resp.blockhash, pfrom.GetId()); // Reset in-flight state in case Misbehaving does not result in a disconnect
- Misbehaving(*peer, 100, "invalid compact block/non-matching block transactions");
- return;
- } else if (status == READ_STATUS_FAILED) {
- if (first_in_flight) {
- // Might have collided, fall back to getdata now :(
- std::vector invs;
- invs.push_back(CInv(MSG_BLOCK | GetFetchFlags(*peer), resp.blockhash));
- MakeAndPushMessage(pfrom, NetMsgType::GETDATA, invs);
- } else {
- RemoveBlockRequest(resp.blockhash, pfrom.GetId());
- LogPrint(BCLog::NET, "Peer %d sent us a compact block but it failed to reconstruct, waiting on first download to complete\n", pfrom.GetId());
- return;
- }
- } else {
- // Block is either okay, or possibly we received
- // READ_STATUS_CHECKBLOCK_FAILED.
- // Note that CheckBlock can only fail for one of a few reasons:
- // 1. bad-proof-of-work (impossible here, because we've already
- // accepted the header)
- // 2. merkleroot doesn't match the transactions given (already
- // caught in FillBlock with READ_STATUS_FAILED, so
- // impossible here)
- // 3. the block is otherwise invalid (eg invalid coinbase,
- // block is too big, too many legacy sigops, etc).
- // So if CheckBlock failed, #3 is the only possibility.
- // Under BIP 152, we don't discourage the peer unless proof of work is
- // invalid (we don't require all the stateless checks to have
- // been run). This is handled below, so just treat this as
- // though the block was successfully read, and rely on the
- // handling in ProcessNewBlock to ensure the block index is
- // updated, etc.
- RemoveBlockRequest(resp.blockhash, pfrom.GetId()); // it is now an empty pointer
- fBlockRead = true;
- // mapBlockSource is used for potentially punishing peers and
- // updating which peers send us compact blocks, so the race
- // between here and cs_main in ProcessNewBlock is fine.
- // BIP 152 permits peers to relay compact blocks after validating
- // the header only; we should not punish peers if the block turns
- // out to be invalid.
- mapBlockSource.emplace(resp.blockhash, std::make_pair(pfrom.GetId(), false));
- }
- } // Don't hold cs_main when we call into ProcessNewBlock
- if (fBlockRead) {
- // Since we requested this block (it was in mapBlocksInFlight), force it to be processed,
- // even if it would not be a candidate for new tip (missing previous block, chain not long enough, etc)
- // This bypasses some anti-DoS logic in AcceptBlock (eg to prevent
- // disk-space attacks), but this should be safe due to the
- // protections in the compact block handler -- see related comment
- // in compact block optimistic reconstruction handling.
- ProcessBlock(pfrom, pblock, /*force_processing=*/true, /*min_pow_checked=*/true);
- }
- return;
+ return ProcessCompactBlockTxns(pfrom, *peer, resp);
}
if (msg_type == NetMsgType::HEADERS)
diff --git a/src/node/miner.cpp b/src/node/miner.cpp
index a64f6e4e0e..ac5feb9170 100644
--- a/src/node/miner.cpp
+++ b/src/node/miner.cpp
@@ -136,7 +136,7 @@ void BlockAssembler::resetBlock()
nFees = 0;
}
-std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, CWallet* pwallet, bool* pfPoSCancel, int64_t* pFees)
+std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, CWallet* pwallet, bool* pfPoSCancel, int64_t* pFees, CTxDestination destination)
{
const auto time_start{SteadyClock::now()};
@@ -211,9 +211,6 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc
static int64_t nLastCoinStakeSearchTime = GetAdjustedTimeSeconds(); // only initialized at startup
if (pwallet) {
- // flush orphaned coinstakes
- pwallet->AbandonOrphanedCoinstakes();
-
// attempt to find a coinstake
*pfPoSCancel = true;
pblock->nBits = GetNextTargetRequired(pindexPrev, chainparams.GetConsensus(), true);
@@ -223,7 +220,7 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc
int64_t nSearchTime = txCoinStake.nTime; // search to current time
if (nSearchTime > nLastCoinStakeSearchTime) {
- if (wallet::CreateCoinStake(*pwallet, pblock->nBits, 1, txCoinStake, nFees)) {
+ if (wallet::CreateCoinStake(*pwallet, pblock->nBits, 1, txCoinStake, nFees, destination)) {
if (txCoinStake.nTime >= pindexPrev->GetMedianTimePast()+1) {
// Make the coinbase tx empty in case of proof of stake
coinbaseTx.vout[0].SetEmpty();
@@ -649,20 +646,26 @@ void PoSMiner(CWallet *pwallet)
unsigned int nExtraNonce = 0;
- OutputType output_type = pwallet->m_default_change_type ? *pwallet->m_default_change_type : pwallet->m_default_address_type;
- ReserveDestination reservedest(pwallet, output_type);
CTxDestination dest;
// Compute timeout for pos as sqrt(numUTXO)
unsigned int pos_timio;
{
LOCK2(pwallet->cs_wallet, cs_main);
- auto op_dest = reservedest.GetReservedDestination(true);
-
- if (!op_dest)
- throw std::runtime_error("Error: Keypool ran out, please call keypoolrefill first.");
-
- dest = *op_dest;
+ const std::string label = "Staking Legacy Address";
+ pwallet->ForEachAddrBookEntry([&](const CTxDestination& _dest, const std::string& _label, bool _is_change, const std::optional& _purpose) {
+ if (_is_change) return;
+ if (_label == label)
+ dest = _dest;
+ });
+
+ if (std::get_if(&dest)) {
+ // create mintkey address
+ auto op_dest = pwallet->GetNewDestination(OutputType::LEGACY, label);
+ if (!op_dest)
+ throw std::runtime_error("Error: Keypool ran out, please call keypoolrefill first.");
+ dest = *op_dest;
+ }
std::vector > vCoins;
CCoinControl coincontrol;
@@ -701,15 +704,15 @@ void PoSMiner(CWallet *pwallet)
// Create new block
//
CBlockIndex* pindexPrev = pwallet->chain().getTip();
- bool fPoSCancel = false;
- CScript scriptPubKey = GetScriptForDestination(dest);
+ bool fPoSCancel{false};
+ int64_t pFees{0};
CBlock *pblock;
std::unique_ptr pblocktemplate;
{
LOCK2(pwallet->cs_wallet, cs_main);
try {
- pblocktemplate = BlockAssembler{pwallet->chain().chainman().ActiveChainstate(), &pwallet->chain().mempool()}.CreateNewBlock(scriptPubKey, pwallet, &fPoSCancel);
+ pblocktemplate = BlockAssembler{pwallet->chain().chainman().ActiveChainstate(), &pwallet->chain().mempool()}.CreateNewBlock(GetScriptForDestination(dest), pwallet, &fPoSCancel, &pFees, dest);
}
catch (const std::runtime_error &e)
{
diff --git a/src/node/miner.h b/src/node/miner.h
index 86d7d02c66..b87e8477a5 100644
--- a/src/node/miner.h
+++ b/src/node/miner.h
@@ -188,7 +188,7 @@ class BlockAssembler
explicit BlockAssembler(Chainstate& chainstate, const CTxMemPool* mempool, const Options& options);
/** Construct a new block template with coinbase to scriptPubKeyIn */
- std::unique_ptr CreateNewBlock(const CScript& scriptPubKeyIn, CWallet* pwallet = nullptr, bool* pfPoSCancel = nullptr, int64_t* pFees = 0);
+ std::unique_ptr CreateNewBlock(const CScript& scriptPubKeyIn, CWallet* pwallet = nullptr, bool* pfPoSCancel = nullptr, int64_t* pFees = 0, CTxDestination destination = CNoDestination());
inline static std::optional m_last_block_num_txs{};
inline static std::optional m_last_block_weight{};
diff --git a/src/node/protocol_version.h b/src/node/protocol_version.h
index d380b3701c..f00cf147ce 100644
--- a/src/node/protocol_version.h
+++ b/src/node/protocol_version.h
@@ -36,6 +36,6 @@ static const int SHORT_IDS_BLOCKS_VERSION = 70014;
static const int INVALID_CB_NO_BAN_VERSION = 70015;
//! "wtxidrelay" command for wtxid-based relay starts with this version
-static const int WTXID_RELAY_VERSION = 70017;
+static const int WTXID_RELAY_VERSION = 70016;
#endif // BITCOIN_VERSION_H
diff --git a/src/protocol.h b/src/protocol.h
index dff1cece2b..1833562b95 100644
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -287,7 +287,7 @@ enum ServiceFlags : uint64_t {
// See BIP157 and BIP158 for details on how this is implemented.
NODE_COMPACT_FILTERS = (1 << 6),
// NODE_NETWORK_LIMITED means the same as NODE_NETWORK with the limitation of only
- // serving the last 288 (2 day) blocks
+ // serving the last 2700 (2 day) blocks
// See BIP159 for details on how this is implemented.
NODE_NETWORK_LIMITED = (1 << 10),
diff --git a/src/qt/locale/bitcoin_ca.ts b/src/qt/locale/bitcoin_ca.ts
index 5a16b48e41..bdfecfb8a8 100644
--- a/src/qt/locale/bitcoin_ca.ts
+++ b/src/qt/locale/bitcoin_ca.ts
@@ -1551,6 +1551,10 @@ Això és ideal per a carteres de mode només lectura.
Nombre de fils de &verificació d'scripts
+
+
+ Camí complet a %1 script compatible amb Bitcoin Core (per exemple, C:\Downloads\hwi.exe o /Users/you/Downloads/hwi.py). Aneu amb compte: el programari maliciós pot robar-vos les monedes!
+ Adreça IP del proxy (p. ex. IPv4: 127.0.0.1 / IPv6: ::1)
diff --git a/src/qt/locale/bitcoin_cmn.ts b/src/qt/locale/bitcoin_cmn.ts
index 8359ec0264..8d7d62626c 100644
--- a/src/qt/locale/bitcoin_cmn.ts
+++ b/src/qt/locale/bitcoin_cmn.ts
@@ -4491,6 +4491,10 @@ Unable to restore backup of wallet.
dbcache不足以用于区块验证
+
+
+ 金额不足
+ 无效的 -i2psam 地址或主机名: '%s'
diff --git a/src/qt/locale/bitcoin_el.ts b/src/qt/locale/bitcoin_el.ts
index 7ceb9a3fb5..bb4aaa002a 100644
--- a/src/qt/locale/bitcoin_el.ts
+++ b/src/qt/locale/bitcoin_el.ts
@@ -2424,6 +2424,10 @@ If you are receiving this error you should request the merchant provide a BIP21
Αδειες
+
+
+ Η κατεύθυνση και ο τύπος της ομότιμης σύνδεσης: %1
+ Κατεύθυνση/Τύπος
diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts
index 92eb096f64..0d326e4ebc 100644
--- a/src/qt/locale/bitcoin_es.ts
+++ b/src/qt/locale/bitcoin_es.ts
@@ -3,7 +3,7 @@
AddressBookPage
- Haz clic derecho para editar dirección o etiqueta
+ Hacer clic derecho para editar la dirección o etiqueta
@@ -2075,7 +2075,7 @@ El proceso de migración creará una copia de seguridad del monedero antes de mi
- Pagar comisión por transacción:
+ Pagar comisión de transacción:
@@ -2351,7 +2351,7 @@ Si recibes este error, debes solicitar al comerciante que te proporcione un URI
- Cadena de identificación de la sesión BIP324 en formato hexadecimal, si existe.
+ Cadena de identificador de la sesión BIP324 en formato hexadecimal, si existe.
@@ -4136,7 +4136,7 @@ Ve a "Archivo > Abrir monedero" para cargar uno.
- %s no pudo validar el estado de la instantánea -assumeutxo. Esto indica un problema de hardware, un error en el software o una modificación incorrecta del software que permitió que se cargara una instantánea no válida. Por consiguiente, el nodo se apagará y dejará de utilizar cualquier estado basado en la instantánea, restableciendo la altura de la cadena de %d a %d. En el siguiente reinicio, el nodo reanudará la sincronización desde %d sin usar datos de instantánea. Comunique este incidente a %s, indicando cómo obtuvo la instantánea. Se dejó el estado de encadenamiento de la instantánea no válida en el disco por si resulta útil para diagnosticar el problema que causó este error.
+ %s no pudo validar el estado de la instantánea -assumeutxo. Esto indica un problema de hardware, un error en el software o una modificación incorrecta del software que permitió que se cargara una instantánea inválida. Por consiguiente, el nodo se apagará y dejará de utilizar cualquier estado basado en la instantánea, restableciendo la altura de la cadena de %d a %d. En el siguiente reinicio, el nodo reanudará la sincronización desde %d sin usar datos de instantánea. Reporta este incidente a %s, indicando cómo obtuviste la instantánea. Se dejó el estado de cadena de la instantánea inválida en el disco por si resulta útil para diagnosticar el problema que causó este error.
@@ -4240,7 +4240,7 @@ Ve a "Archivo > Abrir monedero" para cargar uno.
- Error de renombrado de «%s» → «%s». Debería resolver esto manualmente moviendo o borrando el directorio %s de la instantánea no válida, en otro caso encontrará el mismo error de nuevo en el arranque siguiente.
+ Error al cambiar el nombre de "%s" a "%s". Para resolverlo, mueve o elimina manualmente el directorio %s de la instantánea no válida. De lo contrario, encontrarás el mismo error de nuevo en el siguiente inicio.
@@ -4292,7 +4292,7 @@ Ve a "Archivo > Abrir monedero" para cargar uno.
- Nivel de boletín del acceso especificado en categoría no mantenida en %1$s=%2$s. Se esperaba %1$s=<category>:<loglevel>. Categorías válidas: %3$s. Niveles de boletín válidos: %4 $s.
+ El nivel de registro de la categoría específica no es compatible: %1$s=%2$s. Se esperaba %1$s=<category>:<loglevel>. Categorías válidas: %3$s. Niveles de registro válidos: %4 $s.
@@ -4308,7 +4308,7 @@ Ve a "Archivo > Abrir monedero" para cargar uno.
- Monedero correctamente cargado. El tipo de billetero heredado está siendo obsoleto y mantenimiento para creación de monederos heredados serán eliminados en el futuro. Los monederos heredados pueden ser migrados a un descriptor de monedero con migratewallet.
+ El monedero se cargó correctamente. El tipo de monedero "legacy" se está descontinuando, por lo que la asistencia para crear y abrir estos monederos se eliminará en el futuro. Los monederos tipo "legacy" se pueden migrar a un monedero basado en descriptores con "migratewallet".
@@ -4360,7 +4360,7 @@ Ve a "Archivo > Abrir monedero" para cargar uno.
- La configuración de %s es demasiado alta. Las comisiones tan grandes se podrían pagar en una sola transacción.
+ El valor de %s es demasiado alto. Las comisiones tan grandes se podrían pagar en una sola transacción.
@@ -4400,7 +4400,7 @@ Ve a "Archivo > Abrir monedero" para cargar uno.
- Error al calcular la comisión. La opción «fallbackfee» está desactivada. Espera algunos bloques o activa %s.
+ Error al calcular la comisión. La opción fallbackfee está desactivada. Espera algunos bloques o activa %s.
@@ -4482,7 +4482,7 @@ No se puede restaurar la copia de seguridad del monedero.
- La verificación del bloque fue interrumpida
+ Se interrumpió la verificación de bloques
@@ -4506,7 +4506,7 @@ No se puede restaurar la copia de seguridad del monedero.
- ¡El espacio en el disco es demasiado pequeño!
+ ¡El espacio en disco es demasiado pequeño!
@@ -4534,7 +4534,7 @@ No se puede restaurar la copia de seguridad del monedero.
- Error al inicializar el entorno de la base de datos del monedero %s
+ Error al inicializar el entorno de la base de datos del monedero %s
@@ -4594,7 +4594,7 @@ No se puede restaurar la copia de seguridad del monedero.
- Error: No se puede crear un monedero solo de observación
+ Error: No se pudo crear un monedero solo de observación
@@ -4614,7 +4614,7 @@ No se puede restaurar la copia de seguridad del monedero.
- Error: No hay direcciones %s disponibles .
+ Error: No hay direcciones %s disponibles.
@@ -4710,7 +4710,7 @@ No se puede restaurar la copia de seguridad del monedero.
- Entrada no encontrada o ya gastada
+ La entrada no se encontró o ya se gastó
@@ -4738,11 +4738,11 @@ No se puede restaurar la copia de seguridad del monedero.
- Importe inválido para %s=<amount>: '%s' (debe ser por lo menos %s)
+ Importe inválido para %s=<amount>: "%s" (debe ser por lo menos %s)
- Importe inválido para %s=<amount>: '%s'
+ Importe inválido para %s=<amount>: "%s"
@@ -4874,7 +4874,7 @@ No se puede restaurar la copia de seguridad del monedero.
- El directorio de datos especificado «%s» no existe.
+ El directorio de datos especificado "%s" no existe.
@@ -4890,7 +4890,7 @@ No se puede restaurar la copia de seguridad del monedero.
- El importe de la transacción es muy pequeño para pagar la comisión
+ El importe de la transacción es demasiado pequeño para pagar la comisión
@@ -5042,11 +5042,11 @@ No se puede restaurar la copia de seguridad del monedero.
- El archivo de configuración no puede leerse
+ El archivo de configuración no pudo leerse
- El archivo de configuración no puede escribirse
+ El archivo de configuración no pudo escribirse
\ No newline at end of file
diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts
index 88f2cb2fca..5a8cc6f853 100644
--- a/src/qt/locale/bitcoin_es_CL.ts
+++ b/src/qt/locale/bitcoin_es_CL.ts
@@ -37,6 +37,10 @@
&Exportar
+
+
+ &Borrar
+ Elija la dirección para enviar las monedas
diff --git a/src/qt/locale/bitcoin_es_CO.ts b/src/qt/locale/bitcoin_es_CO.ts
index 3c97188e0c..1b8143852a 100644
--- a/src/qt/locale/bitcoin_es_CO.ts
+++ b/src/qt/locale/bitcoin_es_CO.ts
@@ -65,7 +65,7 @@
Estas son tus direcciones de Bitcoin para recibir pagos. Usa el botón "Crear nueva dirección de recepción" en la pestaña "Recibir" para crear nuevas direcciones.
-Solo es posible firmar con direcciones de tipo legacy.
+Solo es posible firmar con direcciones de tipo "legacy".
@@ -225,7 +225,7 @@ Solo es posible firmar con direcciones de tipo legacy.
- La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto tiene éxito, establece una nueva frase de contraseña para evitar este problema en el futuro.
+ La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto es correcto, establece una nueva frase de contraseña para evitar este problema en el futuro.
@@ -259,7 +259,7 @@ Solo es posible firmar con direcciones de tipo legacy.
BitcoinApplication
- El archivo de configuración %1 puede estar corrupto o no ser válido.
+ El archivo de configuración %1 puede estar dañado o no ser válido.
@@ -434,7 +434,7 @@ Solo es posible firmar con direcciones de tipo legacy.
- Mostrar Información sobre %1
+ Mostrar información sobre %1
@@ -682,7 +682,7 @@ Solo es posible firmar con direcciones de tipo legacy.
- &Direcciones de destino
+ &Direcciones de recepción
@@ -1150,7 +1150,7 @@ The migration process will create a backup of the wallet before migrating. This
Si esta billetera contiene scripts solo de lectura, se creará una nueva billetera que los contenga.
Si esta billetera contiene scripts solucionables pero no de lectura, se creará una nueva billetera diferente que los contenga.
-El proceso de migración creará una copia de seguridad de la billetera antes de proceder. Este archivo de copia de seguridad se llamará <wallet name>-<timestamp>.legacy.bak y se encontrará en el directorio de esta billetera. En caso de que la migración falle, se puede restaurar la copia de seguridad con la funcionalidad "Restore Wallet" (Restaurar billetera).
+El proceso de migración creará una copia de seguridad de la billetera antes de proceder. Este archivo de copia de seguridad se llamará <wallet name>-<timestamp>.legacy.bak y se encontrará en el directorio de esta billetera. En caso de que la migración falle, se puede restaurar la copia de seguridad con la funcionalidad "Restaurar billetera".
@@ -1166,11 +1166,11 @@ El proceso de migración creará una copia de seguridad de la billetera antes de
- Los scripts solo de lectura se migraron a una nueva billetera llamada "%1".
+ Los scripts solo de observación se migraron a una nueva billetera llamada "%1".
- Los scripts solucionables pero no de lectura se migraron a una nueva billetera llamada "%1".
+ Los scripts solucionables pero no de observación se migraron a una nueva billetera llamada "%1".
@@ -3155,7 +3155,7 @@ Nota: Dado que la comisión se calcula por byte, una tasa de "100 satoshis por k
- %1 a '%2'
+ %1 a "%2"
diff --git a/src/qt/locale/bitcoin_es_DO.ts b/src/qt/locale/bitcoin_es_DO.ts
index 902200a492..46f5c13300 100644
--- a/src/qt/locale/bitcoin_es_DO.ts
+++ b/src/qt/locale/bitcoin_es_DO.ts
@@ -225,7 +225,7 @@ Solo es posible firmar con direcciones de tipo legacy.
- La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto tiene éxito, establece una nueva frase de contraseña para evitar este problema en el futuro.
+ La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto es correcto, establece una nueva frase de contraseña para evitar este problema en el futuro.
@@ -259,7 +259,11 @@ Solo es posible firmar con direcciones de tipo legacy.
BitcoinApplication
- El archivo de configuración %1 puede estar corrupto o no ser válido.
+ El archivo de configuración %1 puede estar dañado o no ser válido.
+
+
+
+ Excepción fuera de control
@@ -2010,7 +2014,7 @@ El proceso de migración creará una copia de seguridad de la billetera antes de
Expanded name of the binary PSBT file format. See: BIP 174.
- Transacción parcialmente firmada (binario)
+ Transacción parcialmente firmada (binario)
diff --git a/src/qt/locale/bitcoin_es_SV.ts b/src/qt/locale/bitcoin_es_SV.ts
index 9874d55c1c..a32d20cd69 100644
--- a/src/qt/locale/bitcoin_es_SV.ts
+++ b/src/qt/locale/bitcoin_es_SV.ts
@@ -225,7 +225,7 @@ Solo es posible firmar con direcciones de tipo legacy.
- La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto tiene éxito, establece una nueva frase de contraseña para evitar este problema en el futuro.
+ La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto es correcto, establece una nueva frase de contraseña para evitar este problema en el futuro.
@@ -259,7 +259,11 @@ Solo es posible firmar con direcciones de tipo legacy.
BitcoinApplication
- El archivo de configuración %1 puede estar corrupto o no ser válido.
+ El archivo de configuración %1 puede estar dañado o no ser válido.
+
+
+
+ Excepción fuera de control
@@ -2010,7 +2014,7 @@ El proceso de migración creará una copia de seguridad de la billetera antes de
Expanded name of the binary PSBT file format. See: BIP 174.
- Transacción parcialmente firmada (binario)
+ Transacción parcialmente firmada (binario)
@@ -2026,7 +2030,7 @@ El proceso de migración creará una copia de seguridad de la billetera antes de
- dirección personal
+ dirección propia
diff --git a/src/qt/locale/bitcoin_es_VE.ts b/src/qt/locale/bitcoin_es_VE.ts
index 8834ec388e..cb052aa35a 100644
--- a/src/qt/locale/bitcoin_es_VE.ts
+++ b/src/qt/locale/bitcoin_es_VE.ts
@@ -225,7 +225,7 @@ Solo es posible firmar con direcciones de tipo legacy.
- La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto tiene éxito, establece una nueva frase de contraseña para evitar este problema en el futuro.
+ La frase de contraseña ingresada para el descifrado de la billetera es incorrecta. Contiene un carácter nulo (es decir, un byte cero). Si la frase de contraseña se configuró con una versión de este software anterior a la 25.0, vuelve a intentarlo solo con los caracteres hasta el primer carácter nulo, pero sin incluirlo . Si esto es correcto, establece una nueva frase de contraseña para evitar este problema en el futuro.
@@ -259,7 +259,11 @@ Solo es posible firmar con direcciones de tipo legacy.
BitcoinApplication
- El archivo de configuración %1 puede estar corrupto o no ser válido.
+ El archivo de configuración %1 puede estar dañado o no ser válido.
+
+
+
+ Excepción fuera de control
@@ -2010,7 +2014,7 @@ El proceso de migración creará una copia de seguridad de la billetera antes de
Expanded name of the binary PSBT file format. See: BIP 174.
- Transacción parcialmente firmada (binario)
+ Transacción parcialmente firmada (binario)
@@ -2026,7 +2030,7 @@ El proceso de migración creará una copia de seguridad de la billetera antes de
- dirección personal
+ dirección propia
diff --git a/src/qt/locale/bitcoin_fi.ts b/src/qt/locale/bitcoin_fi.ts
index deb8389fc7..edab73ffc3 100644
--- a/src/qt/locale/bitcoin_fi.ts
+++ b/src/qt/locale/bitcoin_fi.ts
@@ -4230,6 +4230,10 @@ Ei voinut palauttaa lompakon varmuuskopiota..
Virhe seuraavan tietueen lukemisessa lompakon tietokannasta
+
+
+ Virhe: Ei voinut poistaa watchonly-tapahtumia
+ Virhe: Tietokantaan ei voitu luoda kursoria.
diff --git a/src/qt/locale/bitcoin_fil.ts b/src/qt/locale/bitcoin_fil.ts
index a8d32b00c0..c247eeeca8 100644
--- a/src/qt/locale/bitcoin_fil.ts
+++ b/src/qt/locale/bitcoin_fil.ts
@@ -352,7 +352,7 @@ Signing is only possible with addresses of the type 'legacy'.
- &Pagliitin
+ &Paliitin
@@ -484,7 +484,7 @@ Signing is only possible with addresses of the type 'legacy'.
- Buksan ang anumang walet
+ Magbukas ng wallet
@@ -492,7 +492,7 @@ Signing is only possible with addresses of the type 'legacy'.
- Isarado ang lahat ng wallets
+ Isara ang lahat ng wallets
@@ -500,7 +500,7 @@ Signing is only possible with addresses of the type 'legacy'.
- walet na default
+ wallet na default
diff --git a/src/qt/locale/bitcoin_fo.ts b/src/qt/locale/bitcoin_fo.ts
index 1ad59a10b6..67fa48f2a3 100644
--- a/src/qt/locale/bitcoin_fo.ts
+++ b/src/qt/locale/bitcoin_fo.ts
@@ -286,7 +286,7 @@
- Byte:
+ Být:
@@ -864,7 +864,7 @@
- Byte:
+ Být:
@@ -882,6 +882,10 @@
Adressa til vekslipening
+
+
+ per kilobýt
+ Loka
diff --git a/src/qt/locale/bitcoin_ga.ts b/src/qt/locale/bitcoin_ga.ts
index 7dcd3c5c27..53b9fe82a9 100644
--- a/src/qt/locale/bitcoin_ga.ts
+++ b/src/qt/locale/bitcoin_ga.ts
@@ -1314,6 +1314,10 @@ Ní féidir síniú ach le seoltaí 'oidhreachta'.
Úsáid seachfhreastalaí SOCKS5 ar leith chun sroicheadh piaraí trí sheirbhísí Tor oinniún:
+
+
+ leabaithe "%1"
+ &Togha
diff --git a/src/qt/locale/bitcoin_ga_IE.ts b/src/qt/locale/bitcoin_ga_IE.ts
index 9b93216c6e..e9f065ae07 100644
--- a/src/qt/locale/bitcoin_ga_IE.ts
+++ b/src/qt/locale/bitcoin_ga_IE.ts
@@ -1314,6 +1314,10 @@ Ní féidir síniú ach le seoltaí 'oidhreachta'.
Úsáid seachfhreastalaí SOCKS5 ar leith chun sroicheadh piaraí trí sheirbhísí Tor oinniún:
+
+
+ leabaithe "%1"
+ &Togha
diff --git a/src/qt/locale/bitcoin_gl_ES.ts b/src/qt/locale/bitcoin_gl_ES.ts
index a6c022038d..15410e2d73 100644
--- a/src/qt/locale/bitcoin_gl_ES.ts
+++ b/src/qt/locale/bitcoin_gl_ES.ts
@@ -3,7 +3,7 @@
AddressBookPage
- Fai Click co botón dereito para editar o enderezo ou etiqueta
+ cd vcpkg/buildtrees/libvpx/srccd *./configuresed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefilesed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefilemakecp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/cd
diff --git a/src/qt/locale/bitcoin_gu.ts b/src/qt/locale/bitcoin_gu.ts
index 6bf04dc5d1..c1c15a717b 100644
--- a/src/qt/locale/bitcoin_gu.ts
+++ b/src/qt/locale/bitcoin_gu.ts
@@ -11,7 +11,7 @@
- નવું
+ & નવું
diff --git a/src/qt/locale/bitcoin_hak.ts b/src/qt/locale/bitcoin_hak.ts
index 9f66714a7c..5f758dbc72 100644
--- a/src/qt/locale/bitcoin_hak.ts
+++ b/src/qt/locale/bitcoin_hak.ts
@@ -9,10 +9,6 @@
新增一個位址
-
-
- 新增 &N
- 把目前选择的地址复制到系统粘贴板中
@@ -4531,6 +4527,10 @@ Unable to restore backup of wallet.
dbcache不足以用于区块验证
+
+
+ 金额不足
+ 无效的 -i2psam 地址或主机名: '%s'
diff --git a/src/qt/locale/bitcoin_id.ts b/src/qt/locale/bitcoin_id.ts
index 49350772a5..e20e1d763d 100644
--- a/src/qt/locale/bitcoin_id.ts
+++ b/src/qt/locale/bitcoin_id.ts
@@ -3,7 +3,9 @@
AddressBookPage
- Klik kanan untuk mengedit alamat atau label
+ Klik kanan untuk mengedit alamat atau label
+third_party/catapult/tracing/tracing/metrics/OWNERS
+//@@@@@@@@\\ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ _ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@/ @@@@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ _ @@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @ @@@@@@@@@@@@@@ /@@@@@@@@@@@@@@@@@@@@@@\ @@@@@@@@@ @@@@@@@ @@@@@@@@@@@@@@ (@@@@ @@@@@@@@@@@@@@@) @@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@@@@ @@@@ @@@@@@@@@@@@ @@@@ / @@@@@@@@@@@@@@@@@ @@@@@@@@@@ ======= \@@@@@@@@@@@@@@ @@@@@@@@@@@/ ======= @@@@@@@@@@ @@@@@@@@@@@@@@@@@\ \ @@@@@@@@@@@@@@@@@@@@@@/ /@@@@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ \@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@ \@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @@@@@@@ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@ @ @ @ @@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @@@@@@@@@ @ @ @ @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @ @@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ _ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@ \\@@@@@@@@@//
@@ -78,6 +80,14 @@ Tanda tangan hanya bisa digunakan dengan tipe alamat 'warisan'
An error message. %1 is a stand-in argument for the name of the file we attempted to save to.Terjadi sebuah kesalahan saat mencoba menyimpan daftar alamat ke %1. Silakan coba lagi.
+
+
+ Alamat pengirim - %1
+
+
+
+ Penerima alamat - %1
+ Gagal Mengekspor
@@ -583,6 +593,10 @@ Proses migrasi akan mencadangkan dompet sebelum melakukan pemindahan. Fail cadan
Skrip hanya lihat telah diimigrasikan ke dompet baru yang bernama '%1'.
+
+
+ Skrip yang dapat dipecahkan tetapi tidak ditonton telah dimigrasikan ke wallet baru bernama '%1'.
+ Migrasi gagal
@@ -1188,6 +1202,10 @@ Proses migrasi akan mencadangkan dompet sebelum melakukan pemindahan. Fail cadan
Versi lapisan transportasi: %1
+
+
+ Versi lapisan transportasi: %1
+ Transpor
diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts
index a28e8a8b1b..7065c4a53b 100644
--- a/src/qt/locale/bitcoin_it.ts
+++ b/src/qt/locale/bitcoin_it.ts
@@ -3,7 +3,7 @@
AddressBookPage
- Click destro del mouse per modificare l'indirizzo oppure l'etichetta.
+ Fai clic con il tasto destro del mouse per modificare l'indirizzo oppure l'etichetta
@@ -197,7 +197,7 @@ E' possibile firmare solo con indirizzi di tipo "legacy".
- Il tuo portafoglio è ora cifrato.
+ Il tuo portafoglio ora è cifrato.
@@ -427,7 +427,7 @@ E' possibile firmare solo con indirizzi di tipo "legacy".
- Chiudi applicazione
+ Chiudi l'applicazione
@@ -500,7 +500,7 @@ E' possibile firmare solo con indirizzi di tipo "legacy".
- Cifra le chiavi private che appartengono al tuo portafoglio
+ Cifra le chiavi private che del tuo portafoglio
diff --git a/src/qt/locale/bitcoin_ja.ts b/src/qt/locale/bitcoin_ja.ts
index 86c5aff7d4..6bf5f31bd1 100644
--- a/src/qt/locale/bitcoin_ja.ts
+++ b/src/qt/locale/bitcoin_ja.ts
@@ -3,7 +3,8 @@
AddressBookPage
- 右クリックでアドレスまたはラベルを編集
+ The selected strings may have existing translations that will be replaced with the source.
+Existing translations will be added in the string's history. Are you sure you want to proceed?
@@ -61,12 +62,6 @@
これらは、あなたが知っている送信先の Bitcoin アドレスです。コインを送る前に必ず、金額と受取用アドレスを確認してください。
-
-
- これらは支払いを受け取るための、あなたの Bitcoin アドレスです。新しいアドレスを作成するには受取タブ内の「新しい受取用アドレスを作成」ボタンを使用します。
-署名は、タイプが「レガシー」のアドレスのみ可能です。
- アドレスをコピー(&C)
@@ -81,7 +76,7 @@ Signing is only possible with addresses of the type 'legacy'.
- アドレス帳をエクスポート
+ アドレス帳データをエクスポートする
@@ -425,6 +420,10 @@ Signing is only possible with addresses of the type 'legacy'.
%n 年
+
+
+ %1kB
+ BitcoinGUI
@@ -3200,7 +3199,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee rate of "100 satos
PSBT transaction creationWhen reviewing a newly created PSBT (via Send flow), the transaction fee is shown, with "virtual size" of the transaction displayed for context
- %1 kvB
+ %1kvB
diff --git a/src/qt/locale/bitcoin_ku_IQ.ts b/src/qt/locale/bitcoin_ku_IQ.ts
index 283a364483..f2d4250613 100644
--- a/src/qt/locale/bitcoin_ku_IQ.ts
+++ b/src/qt/locale/bitcoin_ku_IQ.ts
@@ -1,10 +1,6 @@
AddressBookPage
-
-
- کرتەی-ڕاست بکە بۆ دەسکاری کردنی ناونیشان یان پێناسە
- ناوونیشانێکی نوێ دروست بکە
@@ -13,10 +9,6 @@
&نوێ
-
-
- کۆپیکردنی ناونیشانی هەڵبژێردراوی ئێستا بۆ کلیپ بۆردی سیستەم
- &ڕوونووس
@@ -29,18 +21,6 @@
سڕینەوەی ناونیشانی هەڵبژێردراوی ئێستا لە لیستەکە
-
-
- ناونیشانێک بنووسە یان پێناسەیەک داخڵ بکە بۆ گەڕان
-
-
-
- ناردنی داتا لە خشتەبەندی ئێستا بۆ فایلێک
-
-
-
- &هەناردن
- &سڕینەوە
@@ -110,10 +90,6 @@ Signing is only possible with addresses of the type 'legacy'.
AskPassphraseDialog
-
-
- دیالۆگی دەستەواژەی تێپەڕبوون
- دەستەواژەی تێپەڕبوون بنووسە
@@ -268,10 +244,6 @@ Signing is only possible with addresses of the type 'legacy'.
ئاگاداری
-
-
- زانیاری
- A substring of the tooltip.
@@ -488,10 +460,6 @@ Signing is only possible with addresses of the type 'legacy'.
RPCConsole
-
-
- &زانیاری
- گشتی
@@ -504,10 +472,6 @@ Signing is only possible with addresses of the type 'legacy'.
ناو
-
-
- نێدرا
- وەشان
@@ -800,19 +764,8 @@ Signing is only possible with addresses of the type 'legacy'.
بۆ
-
- WalletFrame
-
-
- هەڵە
-
- WalletView
-
-
- &هەناردن
- ناردنی داتا لە خشتەبەندی ئێستا بۆ فایلێک
diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts
index fa99b0434c..923c315049 100644
--- a/src/qt/locale/bitcoin_pl.ts
+++ b/src/qt/locale/bitcoin_pl.ts
@@ -45,6 +45,14 @@
&Usuń
+
+
+ Wybierz adres, na który chcesz wysłać monety
+
+
+
+ Wybierz adres, na który chcesz otrzymywać monety
+ Wybierz
@@ -1081,6 +1089,14 @@ Proces migracji utworzy kopię zapasową portfela przed migracją. Plik kopii za
Sprawne, ale nie oglądane skrypty tylko do odczytu zostały przeniesione do nowego portfela '%1'
+
+
+ Skrypty tylko do odczytu zostały przeniesione do nowego portfela '%1'
+
+
+
+ Sprawne, ale nie oglądane skrypty tylko do odczytu zostały przeniesione do nowego portfela '%1'
+ Przeniesienie nie powiodło się
@@ -4315,6 +4331,10 @@ Nie można przywrócić kopii zapasowej portfela
Błąd odczytu kolejnego rekordu z bazy danych portfela
+
+
+ Błąd: Nie można usunąć transakcji tylko do odczytu
+ Błąd: zbyt mało miejsca na dysku dla %s
@@ -4347,6 +4367,10 @@ Nie można przywrócić kopii zapasowej portfela
Błąd: %s adres nie dostępny
+
+
+ Błąd: Nie wszystkie txs tylko do odczytu mogą być usunięte
+ Błąd: Ten portfel już używa SQLite
diff --git a/src/qt/locale/bitcoin_pt.ts b/src/qt/locale/bitcoin_pt.ts
index c7975c0edf..de07abe682 100644
--- a/src/qt/locale/bitcoin_pt.ts
+++ b/src/qt/locale/bitcoin_pt.ts
@@ -3,7 +3,7 @@
AddressBookPage
- Clique com o botão direito para editar o endereço ou etiqueta
+ Clique com o botão direito do rato para editar o endereço ou a etiqueta
@@ -145,7 +145,7 @@ A assinatura só é possível com endereços do tipo "legado".
- Encriptar carteira
+ Encriptar a carteira
@@ -153,7 +153,7 @@ A assinatura só é possível com endereços do tipo "legado".
- Desbloquear carteira
+ Desbloquear a carteira
@@ -1120,7 +1120,7 @@ O processo de migração criará uma cópia de segurança da carteira antes da m
- Êxito na migração
+ Migração bem sucedida
@@ -1722,7 +1722,7 @@ O processo de migração criará uma cópia de segurança da carteira antes da m
- Conectar à rede da Bitcoin através dum proxy SOCLS5.
+ Conectar à rede da Bitcoin através de um proxy SOCLS5.
diff --git a/src/qt/locale/bitcoin_ro.ts b/src/qt/locale/bitcoin_ro.ts
index 0bb08f5c1e..92903be3bf 100644
--- a/src/qt/locale/bitcoin_ro.ts
+++ b/src/qt/locale/bitcoin_ro.ts
@@ -1048,7 +1048,12 @@ Semnarea este posibilă numai cu adrese de tip "legacy".
Title of window indicating the progress of opening of a wallet.Deschide portofel
-
+
+
+ Descriptive text of the open wallet progress window which indicates to the user which wallet is currently being opened.
+ Deschidere Portofel<b>%1</b>
+
+
RestoreWalletActivity
@@ -1056,6 +1061,11 @@ Semnarea este posibilă numai cu adrese de tip "legacy".
Title of progress window which is displayed when wallets are being restored.Restaurare portofel
+
+
+ Descriptive text of the restore wallets progress window which indicates to the user that wallets are currently being restored.
+ Restabilirea Portofelului<b>%1</b>
+ Title of message box which is displayed when the wallet could not be restored.
@@ -1597,6 +1607,14 @@ Semnarea este posibilă numai cu adrese de tip "legacy".
Conectați-vă la rețeaua Bitcoin printr-un proxy SOCKS5 separat pentru serviciile Tor onion.
+
+
+ incorporat "%1"
+
+
+
+ cel mai potrivit "%1"
+ Renunţă
@@ -1759,6 +1777,10 @@ Semnarea este posibilă numai cu adrese de tip "legacy".
Salvați datele tranzacției
+
+
+ * Trimite %1la%2
+ adresa proprie
diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts
index 0c88deb2d7..f2eca2d62a 100644
--- a/src/qt/locale/bitcoin_sv.ts
+++ b/src/qt/locale/bitcoin_sv.ts
@@ -25,10 +25,6 @@
S&täng
-
-
- Ta bort den valda adressen från listan
- Ange en adress eller etikett att söka efter
@@ -61,11 +57,6 @@
Detta är dina Bitcoin-adresser för att skicka betalningar. Kontrollera alltid belopp och mottagaradress innan du skickar bitcoin.
-
-
- Detta är dina Bitcoinadresser för att ta emot betalningar. Använd knappen 'Skapa ny mottagaradress' i mottagsfliken för att skapa nya adresser. Signering är bara tillgänglig för adresser av typen 'legacy'
- &Kopiera adress
@@ -93,10 +84,6 @@ Signing is only possible with addresses of the type 'legacy'.
Ett fel inträffade när adresslistan skulle sparas till %1.
Försök igen.
-
-
- Avsändaradresser - %1
- Mottagaradresser - %1
@@ -639,14 +626,6 @@ Försök igen.
Av&sändaradresser
-
-
- Mottaga&radresser
-
-
-
- Öppna en bitcoin:-URI
- Öppna plånbok
@@ -1086,6 +1065,10 @@ Om den här plånboken innehåller lösbara
Watchonly-skript har migrerats till en ny plånbok med namnet '%1'.
+
+
+ Lösbara, men inte övervakade script har migrerats till en ny plånbok med namnet '%1'.
+ Migrering misslyckades
@@ -1596,10 +1579,25 @@ Om den här plånboken innehåller lösbara
Vid avstängning av denna inställning kommer den fullständiga blockkedjan behövas laddas ned igen.
+
+
+ Tooltip text for Options window setting that sets the size of the database cache. Explains the corresponding effects of increasing/decreasing this value.
+ Maximal storlek för databasens cacheminne. Större cache kan bidra till snabbare synkronisering, dock blir fördelen mindre uppenbar för de flesta användningsområdena efter den initiala synkroniseringen. En lägre storlek på databasens cacheminne minskar minnesanvändningen. Mempoolens outnyttjade minne delas med denna cache.
+
+
+
+ Tooltip text for Options window setting that sets the number of script verification threads. Explains that negative values mean to leave these many cores free to the system.
+ Sätt antalet trådar för skriptverifiering. Negativa värden motsvarar antalet kärnor som skall lämnas tillgängliga för systemet.
+ (0 = auto, <0 = lämna så många kärnor lediga)
+
+
+ Tooltip text for Options window setting that enables the RPC server.
+ Detta tillåter dig eller ett tredjepartsverktyg att kommunicera med noden genom kommandotolken och JSON-RPC-kommandon.
+ An Options window setting to enable the RPC server.
diff --git a/src/qt/locale/bitcoin_sw.ts b/src/qt/locale/bitcoin_sw.ts
index 499eb68538..094f16d75e 100644
--- a/src/qt/locale/bitcoin_sw.ts
+++ b/src/qt/locale/bitcoin_sw.ts
@@ -356,6 +356,10 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
Kuhusu &Qt
+
+
+ Onyesha habari kuhusu Qt
+ Badilisha chaguo za usanidi kwa %1
@@ -397,6 +401,10 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
&TUMA
+
+
+ &Pokea
+ &Chaguo...
@@ -496,11 +504,39 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
+
+
+ Shughuli baada ya hii bado hazitaonekana.
+
+
+
+ Kosa
+
+
+
+ Onyo
+
+
+
+ Habari
+
+
+
+ Fungua Pochi
+
+
+
+ Funga pochi
+ Label of the input field where the name of the wallet is entered.Jina la Wallet
+
+
+ &Ficha
+ A substring of the tooltip.
@@ -525,6 +561,18 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
Wingi
+
+
+ Kiasi:
+
+
+
+ Ada:
+
+
+
+ Baada ya Ada
+ Imepokelewa na chapa
@@ -538,6 +586,14 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
(hamna chapa)
+
+ OpenWalletActivity
+
+
+ Title of window indicating the progress of opening of a wallet.
+ Fungua Pochi
+
+ RestoreWalletActivity
@@ -548,6 +604,10 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
WalletController
+
+
+ Funga Pochi
+ Kufunga pochi kwa muda mrefu sana kunaweza kusababisha kusawazisha tena mnyororo mzima ikiwa upogoaji umewezeshwa.
@@ -657,6 +717,17 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
+
+
+ Onyo
+
+
+
+ OptionsDialog
+
+
+ Onyo
+ PeerTableModel
@@ -698,6 +769,10 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
ReceiveRequestDialog
+
+
+ Kiasi:
+ Chapa:
@@ -724,6 +799,18 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.
Wingi
+
+
+ Kiasi:
+
+
+
+ Ada:
+
+
+
+ Baada ya Ada
+
@@ -818,6 +905,10 @@ Kutia sahihi kunawezekana tu kwa anwani za aina ya 'urithi'.Unda mkoba mpya
+
+
+ Onyo
+ WalletView
diff --git a/src/qt/locale/bitcoin_tl.ts b/src/qt/locale/bitcoin_tl.ts
index aaa9d64ccd..6cacbdd75f 100644
--- a/src/qt/locale/bitcoin_tl.ts
+++ b/src/qt/locale/bitcoin_tl.ts
@@ -3,7 +3,7 @@
AddressBookPage
- pindutin lamang ang kanang pindutan upang i-edit ang address o label
+ pindutin lamang ang kanang pindutan upang i-edit ang address o label.
@@ -23,7 +23,7 @@
- Isara
+ (Do you mean: Close?) :isara, sarado
@@ -55,7 +55,7 @@
- &Pumili
+ (do you mean: CHOOSE?) ;Pumili,Piliin.
diff --git a/src/qt/locale/bitcoin_ur.ts b/src/qt/locale/bitcoin_ur.ts
index c0ff575864..b68d48c60a 100644
--- a/src/qt/locale/bitcoin_ur.ts
+++ b/src/qt/locale/bitcoin_ur.ts
@@ -3,11 +3,7 @@
AddressBookPage
- نیا پتہ تخلیق کریں
-
-
-
- اور نیا
+ نیا ایڈریس بنائیں
diff --git a/src/qt/locale/bitcoin_yue.ts b/src/qt/locale/bitcoin_yue.ts
index f295184944..0fa47df893 100644
--- a/src/qt/locale/bitcoin_yue.ts
+++ b/src/qt/locale/bitcoin_yue.ts
@@ -800,7 +800,7 @@ Signing is only possible with addresses of the type 'legacy'.
A substring of the tooltip.
-
+ %n 与比特币网络接。
@@ -4503,6 +4503,10 @@ Unable to restore backup of wallet.
dbcache不足以用于区块验证
+
+
+ 金额不足
+ 无效的 -i2psam 地址或主机名: '%s'
diff --git a/src/qt/locale/bitcoin_zh-Hans.ts b/src/qt/locale/bitcoin_zh-Hans.ts
index bea04d0133..4fb17e4582 100644
--- a/src/qt/locale/bitcoin_zh-Hans.ts
+++ b/src/qt/locale/bitcoin_zh-Hans.ts
@@ -611,7 +611,7 @@ Signing is only possible with addresses of the type 'legacy'.
- 连到同行...
+ 连接到节点...
diff --git a/src/qt/locale/bitcoin_zh-Hant.ts b/src/qt/locale/bitcoin_zh-Hant.ts
index e9de84f7cb..1849d76e9d 100644
--- a/src/qt/locale/bitcoin_zh-Hant.ts
+++ b/src/qt/locale/bitcoin_zh-Hant.ts
@@ -4531,6 +4531,10 @@ Unable to restore backup of wallet.
dbcache不足以用于区块验证
+
+
+ 金额不足
+ 无效的 -i2psam 地址或主机名: '%s'
diff --git a/src/qt/locale/bitcoin_zh.ts b/src/qt/locale/bitcoin_zh.ts
index 80da4e3f08..b67fcc1cc9 100644
--- a/src/qt/locale/bitcoin_zh.ts
+++ b/src/qt/locale/bitcoin_zh.ts
@@ -49,10 +49,6 @@
选择收款人地址
-
-
- 选择接收比特币地址
- 选择(&H)
@@ -97,10 +93,6 @@ Signing is only possible with addresses of the type 'legacy'.
付款地址 - %1
-
-
- 收款地址 - %1
- 导出失败
@@ -1352,6 +1344,10 @@ The migration process will create a backup of the wallet before migrating. This
未知。同步區塊標頭(%1, %2%)中...
+
+
+ %1 當前正在同步。它將從peers下載區塊頭和區塊,並對其進行驗證,直到到達區塊鏈的頂為止。
+ 不明。正在預先同步標頭(%1, %2%)...
@@ -4371,6 +4367,10 @@ Unable to restore backup of wallet.
dbcache不足以用于区块验证
+
+
+ 金额不足
+ %s=<amount>: '%s' 中指定了非法的金额 (必须至少达到 %s)
diff --git a/src/qt/locale/bitcoin_zh_HK.ts b/src/qt/locale/bitcoin_zh_HK.ts
index 4c5a496b3c..862763b55c 100644
--- a/src/qt/locale/bitcoin_zh_HK.ts
+++ b/src/qt/locale/bitcoin_zh_HK.ts
@@ -4574,6 +4574,10 @@ Unable to restore backup of wallet.
dbcache不足以用于区块验证
+
+
+ 金额不足
+ 无效的 -i2psam 地址或主机名: '%s'
diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp
index 97d58dd6b4..bedbfd9266 100644
--- a/src/qt/receivecoinsdialog.cpp
+++ b/src/qt/receivecoinsdialog.cpp
@@ -97,7 +97,6 @@ void ReceiveCoinsDialog::setModel(WalletModel *_model)
// Blackcoin: hide SegWit address types before SegWit activation
if (!(model->wallet().getDefaultAddressType() == OutputType::LEGACY)) {
- add_address_type(OutputType::P2SH_SEGWIT, tr("Base58 (P2SH-SegWit)"), tr("Generates an address compatible with older wallets."));
add_address_type(OutputType::BECH32, tr("Bech32 (SegWit)"), tr("Generates a native segwit address (BIP-173). Some old wallets don't support it."));
if (model->wallet().taprootEnabled()) {
add_address_type(OutputType::BECH32M, tr("Bech32m (Taproot)"), tr("Bech32m (BIP-350) is an upgrade to Bech32, wallet support is still limited."));
diff --git a/src/rpc/signmessage.cpp b/src/rpc/signmessage.cpp
index 8c752ba1fd..43df1c8cb0 100644
--- a/src/rpc/signmessage.cpp
+++ b/src/rpc/signmessage.cpp
@@ -30,11 +30,11 @@ static RPCHelpMan verifymessage()
"\nUnlock the wallet for 30 seconds\n"
+ HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") +
"\nCreate the signature\n"
- + HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"my message\"") +
+ + HelpExampleCli("signmessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\" \"my message\"") +
"\nVerify the signature\n"
- + HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
+ + HelpExampleCli("verifymessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\" \"signature\" \"my message\"") +
"\nAs a JSON-RPC call\n"
- + HelpExampleRpc("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", \"signature\", \"my message\"")
+ + HelpExampleRpc("verifymessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\", \"signature\", \"my message\"")
},
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{
@@ -76,7 +76,7 @@ static RPCHelpMan signmessagewithprivkey()
"\nCreate the signature\n"
+ HelpExampleCli("signmessagewithprivkey", "\"privkey\" \"my message\"") +
"\nVerify the signature\n"
- + HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
+ + HelpExampleCli("verifymessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\" \"signature\" \"my message\"") +
"\nAs a JSON-RPC call\n"
+ HelpExampleRpc("signmessagewithprivkey", "\"privkey\", \"my message\"")
},
diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp
index d46ab95f2f..08d96bd8ea 100644
--- a/src/rpc/util.cpp
+++ b/src/rpc/util.cpp
@@ -28,7 +28,7 @@
#include
const std::string UNIX_EPOCH_TIME = "UNIX epoch time";
-const std::string EXAMPLE_ADDRESS[2] = {"bc1q09vm5lfy0j5reeulh4x5752q25uqqvz34hufdl", "bc1q02ad21edsxd23d32dfgqqsz4vv4nmtfzuklhy3"};
+const std::string EXAMPLE_ADDRESS[2] = {"blk1q78xzdaswnz06yeu4ukvw5yhvhfwe4v2uzq9dmd", "blk1q39kshvz5srh0c24rfgyf4q82fn3kwvtn05x9q3"};
std::string GetAllOutputTypes()
{
diff --git a/src/validation.cpp b/src/validation.cpp
index 3bd6d24f11..d455566bd3 100644
--- a/src/validation.cpp
+++ b/src/validation.cpp
@@ -784,7 +784,7 @@ bool MemPoolAccept::PreChecks(ATMPArgs& args, Workspace& ws)
{
const CTransaction* ptxConflicting = m_pool.GetConflictTx(txin.prevout);
if (ptxConflicting) {
- // Disable replacement feature for now
+ // Blackcoin: Disable replacement feature for now
return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "txn-mempool-conflict");
}
}
@@ -2184,14 +2184,15 @@ static unsigned int GetBlockScriptFlags(const CBlockIndex& block_index, const Ch
}
// Enforce WITNESS rules whenever P2SH is in effect (and the segwit
- // deployment is defined).
- if (flags & SCRIPT_VERIFY_P2SH && DeploymentEnabled(consensusparams, Consensus::DEPLOYMENT_SEGWIT)) {
+ // deployment is active).
+ if (flags & SCRIPT_VERIFY_P2SH && DeploymentActiveAt(block_index, chainman, Consensus::DEPLOYMENT_SEGWIT)) {
flags |= SCRIPT_VERIFY_WITNESS;
}
- // Enforce CHECKLOCKTIMEVERIFY (BIP65)
+ // Enforce CHECKLOCKTIMEVERIFY (BIP65) and BIP147 NULLDUMMY
if (consensusparams.IsProtocolV3(block_index.GetBlockTime())) {
flags |= SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY;
+ flags |= SCRIPT_VERIFY_NULLDUMMY;
}
// Enforce CHECKSEQUENCEVERIFY (BIP112)
@@ -2204,11 +2205,6 @@ static unsigned int GetBlockScriptFlags(const CBlockIndex& block_index, const Ch
flags |= SCRIPT_VERIFY_TAPROOT;
}
- // Enforce BIP147 NULLDUMMY (activated simultaneously with CLTV)
- if (consensusparams.IsProtocolV3(block_index.GetBlockTime())) {
- flags |= SCRIPT_VERIFY_NULLDUMMY;
- }
-
return flags;
}
@@ -3758,6 +3754,8 @@ bool CheckBlock(const CBlock& block, BlockValidationState& state, const Consensu
// All potential-corruption validation must be done before we do any
// transaction validation, as otherwise we may mark the header as invalid
// because we receive the wrong transactions for it.
+ // Note that witness malleability is checked in ContextualCheckBlock, so no
+ // checks that use witness data may be performed here.
// Size limits
if (block.vtx.empty() || block.vtx.size() * WITNESS_SCALE_FACTOR > MAX_BLOCK_WEIGHT || ::GetSerializeSize(TX_NO_WITNESS(block)) * WITNESS_SCALE_FACTOR > MAX_BLOCK_WEIGHT)
diff --git a/src/wallet/rpc/addresses.cpp b/src/wallet/rpc/addresses.cpp
index 5181d4dadc..e4ca8108d5 100644
--- a/src/wallet/rpc/addresses.cpp
+++ b/src/wallet/rpc/addresses.cpp
@@ -58,6 +58,11 @@ RPCHelpMan getnewaddress()
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("Unknown address type '%s'", request.params[1].get_str()));
} else if (parsed.value() == OutputType::BECH32M && pwallet->GetLegacyScriptPubKeyMan()) {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Legacy wallets cannot provide bech32m addresses");
+ } else if (parsed.value() == OutputType::P2SH_SEGWIT) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "P2SH_SEGWIT addresses are not welcome");
+ //Blackcoin todo : remove after taproot activation
+ } else if (parsed.value() == OutputType::BECH32M) {
+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Taproot addresses (bech32m) are not supported yet");
}
output_type = parsed.value();
}
diff --git a/src/wallet/rpc/signmessage.cpp b/src/wallet/rpc/signmessage.cpp
index 9084f15f1d..8ac82b1318 100644
--- a/src/wallet/rpc/signmessage.cpp
+++ b/src/wallet/rpc/signmessage.cpp
@@ -27,11 +27,11 @@ RPCHelpMan signmessage()
"\nUnlock the wallet for 30 seconds\n"
+ HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") +
"\nCreate the signature\n"
- + HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"my message\"") +
+ + HelpExampleCli("signmessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\" \"my message\"") +
"\nVerify the signature\n"
- + HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
+ + HelpExampleCli("verifymessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\" \"signature\" \"my message\"") +
"\nAs a JSON-RPC call\n"
- + HelpExampleRpc("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", \"my message\"")
+ + HelpExampleRpc("signmessage", "\"BKDvboD1CzZ5KycP1FRSXRoi7XXhHoQhS1\", \"my message\"")
},
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{
diff --git a/src/wallet/rpc/spend.cpp b/src/wallet/rpc/spend.cpp
index 8ed669d687..4e95853d3d 100644
--- a/src/wallet/rpc/spend.cpp
+++ b/src/wallet/rpc/spend.cpp
@@ -346,8 +346,8 @@ RPCHelpMan optimizeutxoset()
"\nOptimize the UTXO set in order to maximize the PoS yield. This is only valid for continuous minting. The accumulated coinage will be reset!" +
HELP_REQUIRING_PASSPHRASE,
{
- {"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The peercoin address to recieve all the new UTXOs. If not provided, new UTOXs will be assigned to the address of the input UTXOs."},
- {"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The " + CURRENCY_UNIT + " amount to set the value of new UTXOs, i.e. make new UTXOs with value of 110. If amount is not provided, hardcoded value will be used."},
+ {"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The blackcoin address to recieve all the new UTXOs. If not provided, new UTOXs will be assigned to the address of the input UTXOs."},
+ {"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The " + CURRENCY_UNIT + " amount to set the value of new UTXOs, i.e. make new UTXOs with value of 1000. If amount is not provided, hardcoded value will be used."},
{"transmit", RPCArg::Type::BOOL, RPCArg::Default{false}, "If true, transmit transaction after generating it."},
{"fromAddress", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "The blackcoin address to split coins from. If not provided, all available coins will be used."},
},
@@ -366,8 +366,8 @@ RPCHelpMan optimizeutxoset()
},
},
RPCExamples{
- "\nTrigger UTXO optimization and assign all the new UTXOs to some peercoin address with user defined UTXO value\n"
- + HelpExampleCli("optimizeutxoset", EXAMPLE_ADDRESS[0] + " 110")
+ "\nTrigger UTXO optimization and assign all the new UTXOs to some blackcoin address with user defined UTXO value\n"
+ + HelpExampleCli("optimizeutxoset", EXAMPLE_ADDRESS[0] + " 1000")
},
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{
diff --git a/src/wallet/rpc/transactions.cpp b/src/wallet/rpc/transactions.cpp
index 6879b28c16..9f31ac4f03 100644
--- a/src/wallet/rpc/transactions.cpp
+++ b/src/wallet/rpc/transactions.cpp
@@ -561,8 +561,8 @@ RPCHelpMan listsinceblock()
{RPCResult::Type::STR, "category", "The transaction category.\n"
"\"send\" Transactions sent.\n"
"\"receive\" Non-coinbase and non-coinstake transactions received.\n"
- "\"generate\" Coinbase or coinstake transactions received with more than 100 confirmations.\n"
- "\"immature\" Coinbase or coinstake transactions received with 100 or fewer confirmations.\n"
+ "\"generate\" Coinbase or coinstake transactions received with more than 500 confirmations.\n"
+ "\"immature\" Coinbase or coinstake transactions received with 500 or fewer confirmations.\n"
"\"orphan\" Orphaned coinbase or coinstake transactions received."},
{RPCResult::Type::STR_AMOUNT, "amount", "The amount in " + CURRENCY_UNIT + ". This is negative for the 'send' category, and is positive\n"
"for all other categories"},
diff --git a/src/wallet/scriptpubkeyman.cpp b/src/wallet/scriptpubkeyman.cpp
index 2e4f7e5e8c..dc4a8653bb 100644
--- a/src/wallet/scriptpubkeyman.cpp
+++ b/src/wallet/scriptpubkeyman.cpp
@@ -2351,7 +2351,8 @@ bool DescriptorScriptPubKeyMan::SetupDescriptorGeneration(WalletBatch& batch, co
if (Params().IsTestChain()) {
desc_prefix += "/1h";
} else {
- desc_prefix += "/0h";
+ // Blackcoin: Use BIP44 value according to https://github.com/satoshilabs/slips/blob/master/slip-0044.md
+ desc_prefix += "/10h";
}
std::string internal_path = internal ? "/1" : "/0";
diff --git a/src/wallet/staking.cpp b/src/wallet/staking.cpp
index de73a02154..7e01a5d8d0 100644
--- a/src/wallet/staking.cpp
+++ b/src/wallet/staking.cpp
@@ -245,7 +245,7 @@ bool SelectCoinsForStaking(const CWallet& wallet, CAmount& nTargetValue, std::se
// peercoin: create coin stake transaction
typedef std::vector valtype;
-bool CreateCoinStake(CWallet& wallet, unsigned int nBits, int64_t nSearchInterval, CMutableTransaction& txNew, CAmount& nFees)
+bool CreateCoinStake(CWallet& wallet, unsigned int nBits, int64_t nSearchInterval, CMutableTransaction& txNew, CAmount& nFees, CTxDestination destination)
{
bool fAllowWatchOnly = wallet.IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS);
CBlockIndex* pindexPrev = wallet.chain().getTip();
@@ -355,17 +355,8 @@ bool CreateCoinStake(CWallet& wallet, unsigned int nBits, int64_t nSearchInterva
scriptPubKeyOut = scriptPubKeyKernel;
else if (whichType == TxoutType::WITNESS_V0_KEYHASH || whichType == TxoutType::WITNESS_V1_TAPROOT) // pay to witness keyhash
{
- // prepare reserve destination in case we need to use it for handling non legacy inputs
- CTxDestination dest;
- ReserveDestination reservedest(&wallet, OutputType::LEGACY);
- auto op_dest = reservedest.GetReservedDestination(true);
- if (!op_dest) {
- LogPrintf("Error: Keypool ran out, please call keypoolrefill first.\n");
- break;
- }
- dest = *op_dest;
std::vector vSolutionsTmp;
- CScript scriptPubKeyTmp = GetScriptForDestination(dest);
+ CScript scriptPubKeyTmp = GetScriptForDestination(destination);
Solver(scriptPubKeyTmp, vSolutionsTmp);
std::unique_ptr provider = wallet.GetSolvingProvider(scriptPubKeyTmp);
if (!provider) {
diff --git a/src/wallet/staking.h b/src/wallet/staking.h
index a0c58003d4..2b4074835e 100644
--- a/src/wallet/staking.h
+++ b/src/wallet/staking.h
@@ -24,7 +24,7 @@ void AvailableCoinsForStaking(const CWallet& wallet,
const CCoinControl* coinControl = nullptr,
const CoinFilterParams& params = {}) EXCLUSIVE_LOCKS_REQUIRED(wallet.cs_wallet);
bool SelectCoinsForStaking(const CWallet& wallet, CAmount& nTargetValue, std::set > &setCoinsRet, CAmount& nValueRet);
-bool CreateCoinStake(CWallet& wallet, unsigned int nBits, int64_t nSearchInterval, CMutableTransaction& tx, CAmount& nFees);
+bool CreateCoinStake(CWallet& wallet, unsigned int nBits, int64_t nSearchInterval, CMutableTransaction& tx, CAmount& nFees, CTxDestination destination);
} // namespace wallet
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index 39f5edb05a..54478545fc 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -1075,8 +1075,8 @@ CWalletTx* CWallet::AddToWallet(CTransactionRef tx, const TxState& state, const
}
}
- // Mark inactive coinbase transactions and their descendants as abandoned
- if (wtx.IsCoinBase() && wtx.isInactive()) {
+ // Mark inactive coinbase and coinstake transactions and their descendants as abandoned
+ if ((wtx.IsCoinBase() || wtx.IsCoinStake()) && wtx.isInactive()) {
std::vector txs{&wtx};
TxStateInactive inactive_state = TxStateInactive{/*abandoned=*/true};
@@ -1491,6 +1491,9 @@ void CWallet::blockDisconnected(const interfaces::BlockInfo& block)
}
}
}
+
+ // Blackcoin - Call to abandon orphaned coinstakes after handling disconnections
+ AbandonOrphanedCoinstakes();
}
void CWallet::updatedBlockTip()
@@ -3178,9 +3181,6 @@ std::shared_ptr CWallet::Create(WalletContext& context, const std::stri
walletInstance->WalletLogPrintf("m_address_book.size() = %u\n", walletInstance->m_address_book.size());
}
- // Flush orphaned coinstakes
- walletInstance->AbandonOrphanedCoinstakes();
-
return walletInstance;
}