205 Commits

Author SHA1 Message Date
a1aa5755c9 docs: correct Taproot activation threshold from 90% to 75% in documentation
Update documentation to reflect actual BIP9 deployment parameters:
- Activation threshold: 540/720 blocks (75%) vs incorrectly documented 90%
- Confirmation window: 720 blocks (Palladium custom) vs Bitcoin's 2016
- Add explanatory notes about Palladium's lower threshold for faster coordination
2026-02-08 23:14:01 +01:00
130b0e4e31 Merge pull request #22 from palladium-coin/wip-taproot v2.0.0 2026-02-08 23:13:55 +01:00
97b520f1a1 Update Taproot activation timeline: advance mainnet start date
Move Taproot signaling start date earlier to allow more time for miner
preparation and coordination before the March 2027 timeout.

Consensus changes:
- Mainnet activation start: February 14, 2026 (was March 1, 2026)
- Mainnet timeout: March 1, 2027 (unchanged)
- Update nStartTime: 1771027200 (was 1772323200)
- Applied to both mainnet and testnet deployments

This extends the signaling window from 12 months to 12.5 months, providing
miners additional time to upgrade and signal readiness for Taproot activation
2026-02-08 11:45:19 +01:00
24bf2eaae0 Fix typo: correct "traproot" to "taproot" in address type display
Fix typo in AddressTypeDisplayName function where BECH32M address type
was incorrectly labeled as "traproot" instead of "taproot"
2026-02-08 11:37:25 +01:00
df54973334 Add comprehensive documentation for v2.0.0 Taproot release
Documentation:
- Add CHANGELOG.md following Keep a Changelog format with complete version history
- Add doc/TAPROOT.md: comprehensive technical specification for BIP340/341/342/350
- Add doc/taproot-guide.md: user-friendly guide for wallet users and developers
- Update README.md: add Taproot highlights, documentation links, and version history
- Add doc/release-notes/release-notes-2.0.0.md
- Update doc/bips.md with Taproot BIP entries (340, 341, 342, 350)
- Remove standalone doc/release-notes.md (replaced by versioned directory)

Documentation covers the complete Taproot implementation backported from
Bitcoin Core v24.2, including Schnorr signatures, bech32m addresses,
and BIP9 deployment timeline for mainnet activation (March 2026-2027).

CHANGELOG.md contains detailed history from v1.1.0 to v2.0.0 with real
commit information extracted from GitHub repository tags.
2026-02-08 11:36:28 +01:00
a7e0ab4789 Update version to 2.0.0 2026-02-08 10:58:28 +01:00
ac6ae69329 fix: implement BIP341 key tweaking for P2TR transaction signing
This commit fixes P2TR (Pay-to-Taproot) transaction signing by properly
implementing BIP341 key path spending.

Key changes:
- Add SignSchnorrTaproot() method to CKey for BIP341 tweaked signing
- Implement ComputeTapTweak() and CreatePayToTaprootPubKey() in XOnlyPubKey
- Add GetTaprootInternalKey() to SigningProvider interface for internal key lookup
- Store taproot internal key mappings in LegacyScriptPubKeyMan
- Fix FindTaprootPubKey() to use internal key mapping with fallback
- Use empty scriptCode for Taproot key-path spending (per BIP341 spec)
- Update HaveTaprootKey() to verify tweaked keys correctly

Technical details:
- Internal keys are tweaked using secp256k1_keypair_xonly_tweak_add
- Parity handling is automatic via secp256k1 library
- Empty scriptCode ensures correct sighash for key-path spending
- Internal key to output key mapping stored for efficient lookup

Testing:
- P2TR address creation, funding, and spending work end-to-end
- Multi-hop P2TR transactions tested successfully
- All functional tests pass (feature_taproot.py, wallet_*, rpc_*)

Fixes: non-mandatory-script-verify-flag error on P2TR spending
2026-02-08 00:55:02 +01:00
aee82dfad1 qt: switch receive address selection to dropdown (legacy/p2sh-segwit/bech32/bech32m) 2026-02-07 23:01:20 +01:00
6ceef89956 wallet,rpc,descriptor: add bech32m and taproot address/spend support
Enable bech32m output type across wallet defaults and RPC help/parse paths.

Add tr() descriptor parse/infer support and taproot output-type detection.

Wire taproot key-path signing with schnorr and precomputed transaction data.

Reject unsupported bech32m multisig generation in RPC.
2026-02-07 12:13:51 +01:00
49d13674e1 validation,policy,test: activate taproot flags and harden wallet fs checks
Wire Taproot script verification into validation/policy/libconsensus and update standardness flags.

Adapt wallet_multiwallet functional test to match filesystem error variants (create_directory/create_directories/filesystem error), making the suite robust across fs backends and library versions.
2026-02-07 10:55:38 +01:00
e818f08ac4 script: backport BIP341/BIP342 taproot/tapscript consensus rules 2026-02-06 18:03:37 +01:00
8d6d5d66be consensus: add taproot deployment (BIP9 mainnet, always-active regtest) 2026-02-06 15:44:58 +01:00
613bcdbed7 encoding,test: backport BIP350 bech32m and align test vectors to Palladium
- use Bech32 for witness v0 and Bech32m for witness v1+ in key_io
- update C++ bech32 tests and python segwit_addr framework
- realign key/address test vectors and fixtures to Palladium prefixes/params
- adjust chain-parameter-sensitive tests (maturity, BIP66/regtest, message verify)
- fix incorrect historical sha256 expected vector in unit tests
2026-02-06 15:23:23 +01:00
b1e1451911 crypto: backport BIP340 x-only keys and schnorr primitives 2026-02-06 13:42:57 +01:00
f43e4981d5 docker-build: force Qt GUI build and fail if palladium-qt is missing 2026-02-06 11:19:46 +01:00
478e8fc306 build(secp256k1): upgrade to bitcoin-core v24.2 with taproot modules
Synchronize secp256k1 library to bitcoin-core/secp256k1 as of Bitcoin Core
v24.2, enabling cryptographic primitives required for Taproot (BIP340/341).

Changes:
- Upgrade src/secp256k1 from bitcoin v24.2 tag
- Enable experimental modules via configure.ac:
  * --enable-module-extrakeys (BIP340 x-only public keys)
  * --enable-module-schnorrsig (BIP340 Schnorr signatures)
  * --enable-module-recovery (ECDSA pubkey recovery, pre-existing)
- Update MSVC build configuration with corresponding preprocessor defines
- Regenerate autotools build files via autogen.sh

Module verification:
- ENABLE_MODULE_EXTRAKEYS: provides secp256k1_xonly_pubkey APIs
- ENABLE_MODULE_SCHNORRSIG: provides secp256k1_schnorrsig APIs
- ENABLE_MODULE_RECOVERY: provides secp256k1_ecdsa_recover APIs

Build targets:
- Linux/Unix: verified with autotools + quick-build.sh
- Windows MSVC: configuration updated (requires Windows build verification)

Testing:
- Static library compiled successfully (1.6M)
- All header files present (extrakeys.h, schnorrsig.h)
- Regtest functional tests passed:
  * Transaction signing/verification
  * ECDSA operations
  * Block mining and validation
- No regressions on existing ECDSA functionality

This commit provides the cryptographic foundation for subsequent Taproot
implementation (BIP340/341/342) without modifying consensus or wallet logic.
2026-02-06 10:19:01 +01:00
de0ef2ec7a docs(docker-build): rewrite README with complete build matrix and technical troubleshooting 2026-02-06 08:42:53 +01:00
3bc7cff5ba Normalize build scripts and fix Docker Qt dependencies for x86_64 2026-02-06 08:14:19 +01:00
c539ebedc7 git add test/util/data/ test/util/test_runner.py test/README.md test/lint/lint-format-strings.py contrib/devtools/circular-dependencies.py src/qt/palladiumgui.cpp 2026-02-05 13:31:07 +01:00
a5545a27ed Adapt functional tests to Palladium consensus rules 2026-02-05 13:30:12 +01:00
ba4446842d Adapt test framework to Palladium consensus rules 2026-02-05 13:29:25 +01:00
f94645004a chmod +x lint scripts 2026-02-04 09:31:28 +01:00
733fe26b42 Fix dark mode input heights and spinbox button visibility
- Set consistent min-height (22px) and padding (2px) for all input widgets
- Add dark-styled backgrounds to spinbox buttons (#2A2A2A with hover)
- Use native Qt arrows for spinbox buttons to match light mode
- Apply styling to QLineEdit, QSpinBox, QComboBox, PalladiumAmountField

Ensures uniform widget dimensions and visible controls across all pages
in both light and dark modes
v1.5.1
2026-01-26 23:03:29 +01:00
1acc4573ae Fix dark mode input field heights to match light mode
Set consistent min-height (20px) and padding (3px) for all input widgets
(QLineEdit, QSpinBox, QComboBox, PalladiumAmountField) in dark mode to
ensure uniform dimensions across themes
2026-01-26 22:45:35 +01:00
39f1ec41cb Fix UI inconsistencies and improve dark mode appearance
This commit addresses multiple UI issues related to theme switching and
dark mode styling:

1. Fix spinbox height inconsistency between light and dark modes
   - Add changeEvent() handler in AmountSpinBox to invalidate cached
     size hint when theme/style/palette changes
   - Force updateGeometry() on all visible widgets after theme toggle
   - Add min-height and padding to dark mode spinbox CSS to match
     light mode dimensions

2. Improve spinbox button visibility in dark mode
   - Add visible background and borders to up/down buttons
   - Use dark grey arrows (#808080) instead of white for better contrast
   - Add hover states with appropriate dark theme colors
   - Set proper button width (16px) for consistent appearance

3. Enhanced theme switching
   - Invalidate widget geometry caches when switching between themes
   - Ensure consistent rendering between native (light) and stylesheet
     (dark) rendering modes

Files modified:
- src/qt/palladiumamountfield.cpp: Add changeEvent() handler
- src/qt/palladiumgui.cpp: Force geometry update after theme change
- src/qt/res/styles/dark.qss: Improve spinbox styling with proper
  dimensions, button visibility, and dark-appropriate colors

This ensures a consistent user experience across both themes with
properly sized widgets and visible, theme-appropriate controls
2026-01-26 18:06:01 +01:00
4b10f64fde Improve modal overlay UI: add border and semi-transparent background
Enhance the sync modal overlay visibility and aesthetics:
- Add 1px border to content widget using palette(mid) for theme adaptation
- Restore semi-transparent background (alpha=230) to overlay backdrop
- Remove minimum window size constraint (950x550) for better flexibility

The border ensures the overlay is clearly visible in both light and dark
modes, while the semi-transparent background provides visual separation
without completely obscuring the underlying interface
2026-01-26 17:45:48 +01:00
21ae070217 Fix compilation with modern GCC (Ubuntu 24.04+)
Add missing C++ standard library includes required by GCC 13+ and newer
toolchains. These headers were previously included implicitly through
other headers in older GCC versions (e.g., GCC 9 on Ubuntu 20.04), but
modern compilers require explicit includes per C++ standard compliance.

Changes:
- Add <cstdint> to util/bip32.h for uint32_t type definitions
- Add <array> to net_processing.cpp for std::array
- Add <stdexcept> to multiple headers for exception types:
  * support/events.h (std::runtime_error)
  * dbwrapper.h (std::runtime_error base class)
  * streams.h (std::out_of_range, std::ios_base::failure)
  * coins.h (std::logic_error)
  * wallet/coinselection.h (std::invalid_argument, std::out_of_range)
  * rpc/util.h (std::runtime_error)
  * support/lockedpool.h (std::runtime_error)
  * support/lockedpool.cpp (std::runtime_error)
  * wallet/scriptpubkeyman.h (std::runtime_error)

This ensures compatibility across different compiler versions and
architectures (ARM64/x86_64) while maintaining backward compatibility
with older toolchains.

Tested on Ubuntu 24.04 with GCC 13.
2026-01-26 17:30:11 +01:00
5145f76aa9 Improve splash screen text visibility 2026-01-13 22:49:15 +01:00
840b635369 Improve default palladium.conf generation 2026-01-13 22:31:02 +01:00
8ff76cd2f7 Bump version to 1.5.1 2026-01-13 18:30:23 +01:00
a1d3da250a Improve icon quality and adjust splash screen layout
- Upgrade palladium.ico and palladium.png to higher quality versions
- Adjust icon position in splash screen for better visual balance
2026-01-13 18:26:07 +01:00
61ad4d7e39 Update copyright year and ignore backup files 2026-01-13 11:19:51 +01:00
88cf273b9e Widen transaction amount column header 2026-01-13 11:09:52 +01:00
a999ce3d36 Refine Qt GUI layout and adjust dark theme styling 2026-01-13 11:03:39 +01:00
95962816fb Fix dark mode styling in Send and Receive pages 2026-01-13 08:54:59 +01:00
b045fe7c0d Improve UI: enhance splash screen readability and fix window minimum size 2026-01-12 23:47:55 +01:00
5ff9fa136b Improve splash screen text visibility with shadow effect and larger font 2026-01-12 23:33:28 +01:00
79b4945b31 Fix text clipping in modal overlay and set minimum window size 2026-01-12 18:01:53 +01:00
d4914fccc5 Refine dark mode borders and improve modal overlay spacing 2026-01-12 17:40:02 +01:00
d0233e1759 Fix ModalOverlay readability by removing background transparency 2026-01-11 18:51:44 +01:00
f6223d1b1e Improve quick-build.sh: fix ccache and add rebuild option
- Document quick-build.sh usage in README.md with Ubuntu 20.04 note
2026-01-11 18:13:47 +01:00
3792ec0a60 Fix: handle missing argument in build-windows.sh
Fix unbound variable error when script is run without arguments.
Use parameter expansion ${1:-} instead of $1 to safely check for
--installer flag when set -u is enabled.
2026-01-08 22:44:40 +01:00
NotRin7
c1ac562a4a new logo + windows installer 2025-12-15 00:45:48 +01:00
NotRin7
79040450d2 Update modaloverlay and palladiumgui files v1.5.0 2025-12-10 01:19:11 +01:00
NotRin7
eafbe5ac94 Merge pull request #14 from palladium-coin/logic-improvements
Logic improvements
2025-11-25 15:00:01 +01:00
NotRin7
b20544c499 add params to chainparams.cpp 2025-11-24 00:03:44 +01:00
NotRin7
a3ca53a380 Merge pull request #13 from palladium-coin/master
Merge pull request #12 from palladium-coin/logic-improvements
2025-11-23 23:54:28 +01:00
NotRin7
e27ef57e41 Merge pull request #12 from palladium-coin/logic-improvements
Logic improvements
2025-11-22 20:07:33 +01:00
NotRin7
54a10bbc2a Release v1.5.0: Hard Fork Logic (Chat & DAA) activated at block 340,000 2025-11-22 18:59:39 +01:00
NotRin7
5eb70c65d2 replacing the deprecated state.DoS call with state.Invalid 2025-11-22 17:16:34 +01:00