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
Palladium Core
Official Websites: palladiumblockchain.net and palladium-coin.com
Overview
Palladium Core is a decentralized digital currency forked from Bitcoin, specifically designed to serve the palladium market ecosystem. Built upon the proven Bitcoin protocol foundation, Palladium Core delivers enhanced security, efficiency, and transparency for palladium-related transactions.
Key Features
- Security: Advanced cryptographic techniques ensure transaction security and fund protection
- Efficiency: Optimized blockchain parameters provide fast and reliable transaction processing
- Transparency: Open-source architecture enables community inspection and contribution
- Market-Focused: Tailored features specifically designed for palladium industry requirements
- Decentralized: Peer-to-peer network with no central authority
Quick Start
Installation
- Download and Install: Get the latest Palladium Core wallet from our releases page
- Configure: Create the
palladium.confconfiguration file (see Configuration section below) - Launch the Core: Start the Palladium Core application (includes automatic network synchronization)
Configuration
For enhanced connectivity and performance, you can create a configuration file. Palladium Core supports comprehensive configuration options for mainnet, testnet, and regtest networks.
Configuration File Location:
- Windows:
%appdata%/Palladium/ - Linux:
/home/[username]/.palladium/ - macOS:
~/Library/Application Support/Palladium/
Create a file named palladium.conf in the appropriate directory for your operating system.
Complete Configuration Guide: For detailed configuration instructions, network-specific settings, security best practices, and complete configuration examples, please refer to our comprehensive configuration guide: Palladium Configuration File Documentation
Building from Source
Docker Build (Recommended)
For a simpler and more reproducible build process, you can use our Docker-based build system. This method provides a consistent build environment and eliminates dependency management issues.
Requirements:
- Linux AMD x86_64 system with Ubuntu 20.04 or newer
- Docker installed and running
For detailed instructions and configuration options, see the docker-build directory.
Manual Build Instructions
Manual Build Instructions
Quick Build Script (Ubuntu/WSL Only)
For rapid development and debugging on Ubuntu 20.04 or WSL with Ubuntu 20.04
We provide a convenient automated build script designed specifically for quick development iterations and GUI testing:
./quick-build.sh [OPTIONS]
⚠️ Important Note: This script is optimized for Ubuntu 20.04 (including WSL with Ubuntu 20.04). It may not work correctly on newer Ubuntu versions due to dependency differences.
Available Options:
--fullor no arguments: Complete build process (dependencies + BerkeleyDB + compilation) [DEFAULT]--build: Full build with reconfigure (runs distclean, configure, and make)--rebuild: Quick incremental rebuild (clean + make, no reconfigure) - fastest for testing--install-deps: Install system dependencies only--install-db: Install BerkeleyDB 4.8 only--clean: Clean build artifacts--help: Show help message
Usage Examples:
# First time setup (installs everything)
./quick-build.sh
# Full rebuild after configuration changes
./quick-build.sh --build
# Quick rebuild after code changes (fastest)
./quick-build.sh --rebuild
# Clean build artifacts
./quick-build.sh --clean
What It Does:
- Automated dependency installation: Installs all required build tools, libraries, and Qt5 for GUI
- BerkeleyDB 4.8 setup: Automatically installs BerkeleyDB 4.8 (required for wallet functionality)
- Optimized compilation: Uses all available CPU cores with
make -j$(nproc) - ccache support: Automatically enables ccache for faster recompilation
- GUI support: Builds
palladium-qtfor testing the graphical interface
Output Binaries:
After successful build, binaries are located at:
src/palladiumd- Daemonsrc/palladium-cli- Command-line interfacesrc/qt/palladium-qt- Qt GUI application
Build Workflow Recommendation:
- First time:
./quick-build.sh(installs everything) - After code changes:
./quick-build.sh --rebuild(fastest, keeps configuration) - After configure changes:
./quick-build.sh --build(reconfigures everything)
For detailed manual build instructions specific to your operating system, please refer to the comprehensive documentation available in the /doc folder:
Platform-Specific Build Guides
- Unix/Linux Systems:
doc/build-unix.md - Windows:
doc/build-windows.md - macOS:
doc/build-osx.md - FreeBSD:
doc/build-freebsd.md - NetBSD:
doc/build-netbsd.md - OpenBSD:
doc/build-openbsd.md
Additional Resources
- Dependencies Overview:
doc/dependencies.md- Complete list of build dependencies - Developer Notes:
doc/developer-notes.md- Advanced build configurations and development setup - Gitian Building:
doc/gitian-building.md- Deterministic builds for release binaries
Each platform-specific guide includes:
- Required dependencies and installation commands
- Step-by-step build process
- Configuration options and optimizations
- Troubleshooting common build issues
- Platform-specific considerations and best practices
Choose the appropriate guide for your operating system to ensure a successful build process.
Contributing
We welcome contributions from the community! Please read our Contributing Guidelines before submitting pull requests.
Development Process
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Security
Security is paramount in cryptocurrency development. Please report security vulnerabilities privately to our security team. See SECURITY.md for details.
License
Palladium Core is released under the terms of the MIT license. See COPYING for more information.
Support
- Documentation: Wiki
- Issues: GitHub Issues
- Community: Discord | Telegram
- Website: palladiumblockchain.net
Acknowledgments
Palladium Core is built upon the Bitcoin Core codebase. We thank the Bitcoin Core developers and the broader cryptocurrency community for their foundational work.
Disclaimer: Cryptocurrency investments carry risk. Please do your own research and invest responsibly.