Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 946376406f | |||
| a82c6c5fe0 | |||
|
|
6e1f7e7a61 | ||
| faefa9ba88 | |||
| 88fb8881e3 | |||
| 6ccf7ead4b | |||
| dbaa10a848 | |||
| ffbaef8388 | |||
| e0a0becca9 | |||
| d738fe9f4f | |||
| 6e29c7cd9d | |||
| 9fc1062b9a | |||
| 15f6512419 | |||
|
|
2a29186b3e | ||
|
|
736c23753d | ||
| a661b129af | |||
|
|
707b60e075 | ||
|
|
8e6103221a | ||
|
|
08f73f9769 | ||
| 2bacfe0ba2 |
52
README.md
52
README.md
@@ -17,7 +17,7 @@ Palladium Core is a decentralized digital currency forked from Bitcoin, specific
|
||||
|
||||
### Installation
|
||||
|
||||
1. **Download and Install**: Get the latest Palladium Core wallet from our [releases page](https://github.com/davide3011/palladiumcore/releases/tag/v1.3.0)
|
||||
1. **Download and Install**: Get the latest Palladium Core wallet from our [releases page](https://github.com/palladium-coin/palladiumcore/releases)
|
||||
2. **Configure**: Create the `palladium.conf` configuration file (see [Configuration](#advanced-configuration) section below)
|
||||
3. **Launch the Core**: Start the Palladium Core application (includes automatic network synchronization)
|
||||
|
||||
@@ -82,31 +82,45 @@ zmqpubhashblock=tcp://0.0.0.0:28332
|
||||
|
||||
## Building from Source
|
||||
|
||||
### Dependencies
|
||||
### Docker Build (Recommended)
|
||||
|
||||
- **C++ Compiler**: GCC 7+ or Clang 5+
|
||||
- **Build Tools**: Make, Autotools
|
||||
- **Libraries**: Boost, OpenSSL, libevent, ZeroMQ
|
||||
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.
|
||||
|
||||
### Build Instructions
|
||||
**Requirements:**
|
||||
- Linux AMD x86_64 system with Ubuntu 20.04 or newer
|
||||
- Docker installed and running
|
||||
|
||||
```bash
|
||||
# Clone repository
|
||||
git clone https://github.com/davide3011/palladiumcore.git
|
||||
cd palladiumcore
|
||||
For detailed instructions and configuration options, see the [docker-build](docker-build/) directory.
|
||||
|
||||
# Generate build files
|
||||
./autogen.sh
|
||||
### Manual Build Instructions
|
||||
|
||||
# Configure build
|
||||
./configure
|
||||
## Manual Build Instructions
|
||||
|
||||
# Compile
|
||||
make -j$(nproc)
|
||||
For detailed manual build instructions specific to your operating system, please refer to the comprehensive documentation available in the `/doc` folder:
|
||||
|
||||
# Install (optional)
|
||||
sudo make install
|
||||
```
|
||||
### Platform-Specific Build Guides
|
||||
|
||||
- **Unix/Linux Systems**: [`doc/build-unix.md`](doc/build-unix.md)
|
||||
- **Windows**: [`doc/build-windows.md`](doc/build-windows.md)
|
||||
- **macOS**: [`doc/build-osx.md`](doc/build-osx.md)
|
||||
- **FreeBSD**: [`doc/build-freebsd.md`](doc/build-freebsd.md)
|
||||
- **NetBSD**: [`doc/build-netbsd.md`](doc/build-netbsd.md)
|
||||
- **OpenBSD**: [`doc/build-openbsd.md`](doc/build-openbsd.md)
|
||||
|
||||
### Additional Resources
|
||||
|
||||
- **Dependencies Overview**: [`doc/dependencies.md`](doc/dependencies.md) - Complete list of build dependencies
|
||||
- **Developer Notes**: [`doc/developer-notes.md`](doc/developer-notes.md) - Advanced build configurations and development setup
|
||||
- **Gitian Building**: [`doc/gitian-building.md`](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
|
||||
|
||||
|
||||
@@ -265,7 +265,7 @@
|
||||
#define PACKAGE_NAME "Palladium Core"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "Palladium Core 1.4.0"
|
||||
#define PACKAGE_STRING "Palladium Core 1.4.1"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "palladium"
|
||||
@@ -274,7 +274,7 @@
|
||||
#define PACKAGE_URL "https://palladiumblockchain.net/"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.4.0"
|
||||
#define PACKAGE_VERSION "1.4.1"
|
||||
|
||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||
your system. */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
AC_PREREQ([2.69])
|
||||
define(_CLIENT_VERSION_MAJOR, 1)
|
||||
define(_CLIENT_VERSION_MINOR, 4)
|
||||
define(_CLIENT_VERSION_REVISION, 0)
|
||||
define(_CLIENT_VERSION_REVISION, 1)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
define(_CLIENT_VERSION_RC, 0)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||
|
||||
@@ -26,7 +26,7 @@ input=/home/example/.palladium/blocks
|
||||
# testnet
|
||||
#netmagic=0b110907
|
||||
#genesis=000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943
|
||||
#input=/home/example/.palladium/testnet3/blocks
|
||||
#input=/home/example/.palladium/testnet/blocks
|
||||
|
||||
# regtest
|
||||
#netmagic=fabfb5da
|
||||
|
||||
@@ -33,7 +33,7 @@ Windows | `%APPDATA%\Palladium\` <sup>[\[1\]](#note1)</sup>
|
||||
Chain option | Data directory path
|
||||
--------------------|--------------------
|
||||
no option (mainnet) | *path_to_datadir*`/`
|
||||
`-testnet` | *path_to_datadir*`/testnet3/`
|
||||
`-testnet` | *path_to_datadir*`/testnet/`
|
||||
`-regtest` | *path_to_datadir*`/regtest/`
|
||||
|
||||
## Data directory layout
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-CLI "1" "April 2024" "palladium-cli v1.4.0.0" "User Commands"
|
||||
.TH PALLADIUM-CLI "1" "April 2024" "palladium-cli v1.4.1" "User Commands"
|
||||
.SH NAME
|
||||
palladium-cli \- manual page for palladium-cli v1.4.0.0
|
||||
palladium-cli \- manual page for palladium-cli v1.4.1
|
||||
.SH SYNOPSIS
|
||||
.B palladium-cli
|
||||
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Palladium Core\/\fR
|
||||
@@ -15,7 +15,7 @@ palladium-cli \- manual page for palladium-cli v1.4.0.0
|
||||
.B palladium-cli
|
||||
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
||||
.SH DESCRIPTION
|
||||
Palladium Core RPC client version v1.4.0.0
|
||||
Palladium Core RPC client version v1.4.1
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-QT "1" "April 2024" "palladium-qt v1.4.0.0" "User Commands"
|
||||
.TH PALLADIUM-QT "1" "April 2024" "palladium-qt v1.4.1" "User Commands"
|
||||
.SH NAME
|
||||
palladium-qt \- manual page for palladium-qt v1.4.0.0
|
||||
palladium-qt \- manual page for palladium-qt v1.4.1
|
||||
.SH SYNOPSIS
|
||||
.B palladium-qt
|
||||
[\fI\,command-line options\/\fR]
|
||||
.SH DESCRIPTION
|
||||
Palladium Core version v1.4.0.0
|
||||
Palladium Core version v1.4.1
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-TX "1" "April 2024" "palladium-tx v1.4.0.0" "User Commands"
|
||||
.TH PALLADIUM-TX "1" "April 2024" "palladium-tx v1.4.1" "User Commands"
|
||||
.SH NAME
|
||||
palladium-tx \- manual page for palladium-tx v1.4.0.0
|
||||
palladium-tx \- manual page for palladium-tx v1.4.1
|
||||
.SH SYNOPSIS
|
||||
.B palladium-tx
|
||||
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded palladium transaction\/\fR
|
||||
@@ -9,7 +9,7 @@ palladium-tx \- manual page for palladium-tx v1.4.0.0
|
||||
.B palladium-tx
|
||||
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded palladium transaction\/\fR
|
||||
.SH DESCRIPTION
|
||||
Palladium Core palladium\-tx utility version v1.4.0.0
|
||||
Palladium Core palladium\-tx utility version v1.4.1
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-WALLET "1" "April 2024" "palladium-wallet v1.4.0.0" "User Commands"
|
||||
.TH PALLADIUM-WALLET "1" "April 2024" "palladium-wallet v1.4.1" "User Commands"
|
||||
.SH NAME
|
||||
palladium-wallet \- manual page for palladium-wallet v1.4.0.0
|
||||
palladium-wallet \- manual page for palladium-wallet v1.4.1
|
||||
.SH DESCRIPTION
|
||||
Palladium Core palladium\-wallet version v1.4.0.0
|
||||
Palladium Core palladium\-wallet version v1.4.1
|
||||
.PP
|
||||
palladium\-wallet is an offline tool for creating and interacting with Palladium Core wallet files.
|
||||
By default palladium\-wallet will act on wallets in the default mainnet wallet directory in the datadir.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUMD "1" "April 2024" "palladiumd v1.4.0.0" "User Commands"
|
||||
.TH PALLADIUMD "1" "April 2024" "palladiumd v1.4.1" "User Commands"
|
||||
.SH NAME
|
||||
palladiumd \- manual page for palladiumd v1.4.0.0
|
||||
palladiumd \- manual page for palladiumd v1.4.1
|
||||
.SH SYNOPSIS
|
||||
.B palladiumd
|
||||
[\fI\,options\/\fR] \fI\,Start Palladium Core\/\fR
|
||||
.SH DESCRIPTION
|
||||
Palladium Core version v1.4.0.0
|
||||
Palladium Core version v1.4.1
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
|
||||
@@ -377,13 +377,13 @@ Both variables are used as a guideline for how much space the user needs on thei
|
||||
Note that all values should be taken from a **fully synced** node and have an overhead of 5-10% added on top of its base value.
|
||||
|
||||
To calculate `m_assumed_blockchain_size`:
|
||||
- For `mainnet` -> Take the size of the data directory, excluding `/regtest` and `/testnet3` directories.
|
||||
- For `testnet` -> Take the size of the `/testnet3` directory.
|
||||
- For `mainnet` -> Take the size of the data directory, excluding `/regtest` and `/testnet` directories.
|
||||
- For `testnet` -> Take the size of the `/testnet` directory.
|
||||
|
||||
|
||||
To calculate `m_assumed_chain_state_size`:
|
||||
- For `mainnet` -> Take the size of the `/chainstate` directory.
|
||||
- For `testnet` -> Take the size of the `/testnet3/chainstate` directory.
|
||||
- For `testnet` -> Take the size of the `/testnet/chainstate` directory.
|
||||
|
||||
Notes:
|
||||
- When taking the size for `m_assumed_blockchain_size`, there's no need to exclude the `/chainstate` directory since it's a guideline value and an overhead will be added anyway.
|
||||
|
||||
153
docker-build/.dockerignore
Normal file
153
docker-build/.dockerignore
Normal file
@@ -0,0 +1,153 @@
|
||||
# Version Control
|
||||
.git
|
||||
.gitignore
|
||||
.gitattributes
|
||||
|
||||
# Build directories and artifacts
|
||||
build
|
||||
build-aux/config.guess
|
||||
build-aux/config.sub
|
||||
build-aux/depcomp
|
||||
build-aux/install-sh
|
||||
build-aux/ltmain.sh
|
||||
build-aux/missing
|
||||
build-aux/compile
|
||||
build-aux/test-driver
|
||||
build-aux/m4/libtool.m4
|
||||
build-aux/m4/lt~obsolete.m4
|
||||
build-aux/m4/ltoptions.m4
|
||||
build-aux/m4/ltsugar.m4
|
||||
build-aux/m4/ltversion.m4
|
||||
dist*
|
||||
out
|
||||
releases
|
||||
db4/
|
||||
linux-coverage-build
|
||||
linux-build
|
||||
win32-build
|
||||
|
||||
# Docker build system (avoid recursion)
|
||||
docker-build
|
||||
|
||||
# Compiled binaries and libraries
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
*.dylib
|
||||
*.exe
|
||||
*.app
|
||||
*.pdb
|
||||
*.lo
|
||||
*.la
|
||||
|
||||
# Build configuration and cache
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
libtool
|
||||
autom4te.cache/
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
.deps
|
||||
.dirstamp
|
||||
.libs
|
||||
src/config/
|
||||
src/obj
|
||||
src/univalue/gen
|
||||
|
||||
# Qt specific
|
||||
src/qt/*.moc
|
||||
src/qt/moc_*.cpp
|
||||
src/qt/forms/ui_*.h
|
||||
src/qt/test/moc*.cpp
|
||||
src/qt/palladium-qt.config
|
||||
src/qt/palladium-qt.creator
|
||||
src/qt/palladium-qt.creator.user
|
||||
src/qt/palladium-qt.files
|
||||
src/qt/palladium-qt.includes
|
||||
*.qm
|
||||
qrc_*.cpp
|
||||
Palladium-Qt.app
|
||||
|
||||
# Test files and coverage
|
||||
test/config.ini
|
||||
test/cache/
|
||||
*.trs
|
||||
test_palladium.coverage/
|
||||
total.coverage/
|
||||
coverage_percent.txt
|
||||
*.gcno
|
||||
*.gcda
|
||||
*.info
|
||||
Makefile.test
|
||||
palladium-qt_test
|
||||
|
||||
# Logs and temporary files
|
||||
*.log
|
||||
*.tmp
|
||||
*.temp
|
||||
*.bak
|
||||
*.swp
|
||||
*.swo
|
||||
*.orig
|
||||
*.rej
|
||||
*.patch
|
||||
!depends/patches/**/*.patch
|
||||
*.*~*
|
||||
*~
|
||||
|
||||
# Python
|
||||
__pycache__
|
||||
*.pyc
|
||||
.python-version
|
||||
|
||||
# Archives and packages
|
||||
*.tar*
|
||||
*.zip
|
||||
*.gz
|
||||
*.dmg
|
||||
|
||||
# IDE and editor files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.sublime-*
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# CI/CD and development tools
|
||||
.travis.yml
|
||||
.appveyor.yml
|
||||
.cirrus.yml
|
||||
.github/
|
||||
ci/
|
||||
.tx/
|
||||
.style.yapf
|
||||
|
||||
# Documentation generation
|
||||
doc/doxygen/
|
||||
/doc/doxygen/
|
||||
|
||||
# macOS specific
|
||||
*.background.tiff
|
||||
background.tiff*
|
||||
osx_volname
|
||||
|
||||
# Windows specific build
|
||||
build_msvc/
|
||||
|
||||
# Clang tools
|
||||
*.plist
|
||||
|
||||
# Generated files
|
||||
*.json.h
|
||||
*.raw.h
|
||||
*.pb.cc
|
||||
*.pb.h
|
||||
*.dat
|
||||
share/setup.nsi
|
||||
share/qt/Info.plist
|
||||
libpalladiumconsensus.pc
|
||||
contrib/devtools/split-debug.sh
|
||||
16
docker-build/Dockerfile.linux-aarch64
Normal file
16
docker-build/Dockerfile.linux-aarch64
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive TZ=UTC
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential libtool autotools-dev automake autoconf pkg-config \
|
||||
bsdmainutils python3 curl ca-certificates git unzip zip file rsync \
|
||||
make cmake patch \
|
||||
g++-aarch64-linux-gnu binutils-aarch64-linux-gnu \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY . /src
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
16
docker-build/Dockerfile.linux-armv7l
Normal file
16
docker-build/Dockerfile.linux-armv7l
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive TZ=UTC
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential libtool autotools-dev automake autoconf pkg-config \
|
||||
bsdmainutils python3 curl ca-certificates git unzip zip file rsync \
|
||||
make cmake patch \
|
||||
g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY . /src
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
14
docker-build/Dockerfile.linux-x86_64
Normal file
14
docker-build/Dockerfile.linux-x86_64
Normal file
@@ -0,0 +1,14 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive TZ=UTC
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential libtool autotools-dev automake autoconf pkg-config \
|
||||
bsdmainutils python3 curl ca-certificates git unzip zip file rsync \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY . /src
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
18
docker-build/Dockerfile.windows
Normal file
18
docker-build/Dockerfile.windows
Normal file
@@ -0,0 +1,18 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive TZ=UTC
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential libtool autotools-dev automake autoconf pkg-config \
|
||||
bsdmainutils python3 curl ca-certificates git unzip zip file rsync \
|
||||
g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 nsis \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix || true && \
|
||||
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix || true
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY . /src
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
91
docker-build/README.md
Normal file
91
docker-build/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Docker Build System for Palladium Core
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **Host System**: Ubuntu 20.04+ on x86_64 architecture
|
||||
- **Docker**: Installed and running ([installation guide](https://docs.docker.com/get-docker/))
|
||||
- **Disk Space**: At least 15 GB free
|
||||
|
||||
## Linux x86_64
|
||||
|
||||
Creates native Linux 64-bit binaries using a Docker container based on Ubuntu 20.04.
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-linux-x86_64.sh # Make the build script executable
|
||||
./build-linux-x86_64.sh # Run the build script
|
||||
```
|
||||
|
||||
### Output
|
||||
|
||||
Binaries will be available in `../build/linux-x86_64/`:
|
||||
- `palladiumd` - Main daemon
|
||||
- `palladium-cli` - Command-line client
|
||||
- `palladium-tx` - Transaction utility
|
||||
- `palladium-wallet` - Wallet utility
|
||||
- `palladium-qt` - GUI application
|
||||
|
||||
## Linux aarch64 (ARM64)
|
||||
|
||||
Creates ARM64 binaries for devices like Raspberry Pi 4+ through cross-compilation.
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-linux-aarch64.sh # Make the build script executable
|
||||
./build-linux-aarch64.sh # Run the cross-compilation build script
|
||||
```
|
||||
|
||||
### Output
|
||||
|
||||
Binaries will be available in `../build/linux-aarch64/`:
|
||||
- `palladiumd` - Main daemon
|
||||
- `palladium-cli` - Command-line client
|
||||
- `palladium-tx` - Transaction utility
|
||||
- `palladium-wallet` - Wallet utility
|
||||
- `palladium-qt` - GUI application
|
||||
|
||||
## Linux ARMv7l (ARM 32-bit)
|
||||
|
||||
Creates ARM 32-bit binaries for older devices like Raspberry Pi 2/3 and Pi Zero.
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-linux-armv7l.sh # Make the build script executable
|
||||
./build-linux-armv7l.sh # Run the ARMv7l cross-compilation build script
|
||||
```
|
||||
|
||||
### Output
|
||||
|
||||
Binaries will be available in `../build/armv7l/`:
|
||||
- `palladiumd` - Main daemon
|
||||
- `palladium-cli` - Command-line client
|
||||
- `palladium-tx` - Transaction utility
|
||||
- `palladium-wallet` - Wallet utility
|
||||
- `palladium-qt` - GUI application
|
||||
|
||||
## Windows x86_64
|
||||
|
||||
Creates Windows executables through cross-compilation with MinGW-w64.
|
||||
|
||||
### Commands
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-windows.sh # Make the build script executable
|
||||
./build-windows.sh # Run the Windows cross-compilation build script
|
||||
```
|
||||
|
||||
### Output
|
||||
|
||||
Executables will be available in `../build/windows/`:
|
||||
- `palladiumd.exe` - Main daemon
|
||||
- `palladium-cli.exe` - Command-line client
|
||||
- `palladium-tx.exe` - Transaction utility
|
||||
- `palladium-wallet.exe` - Wallet utility
|
||||
- `palladium-qt.exe` - GUI application
|
||||
61
docker-build/build-linux-aarch64.sh
Normal file
61
docker-build/build-linux-aarch64.sh
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
IMAGE_NAME="palladium-builder:linux-aarch64-ubuntu20.04"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
OUT_DIR="${REPO_DIR}/build/aarch64"
|
||||
HOST_TRIPLE="aarch64-linux-gnu"
|
||||
|
||||
HOST_UID="$(id -u)"
|
||||
HOST_GID="$(id -g)"
|
||||
|
||||
echo "[*] Build image including ALL repository files (COPY . /src)..."
|
||||
|
||||
docker build --platform=linux/amd64 \
|
||||
-t "$IMAGE_NAME" \
|
||||
-f "${SCRIPT_DIR}/Dockerfile.linux-aarch64" \
|
||||
"${REPO_DIR}"
|
||||
|
||||
mkdir -p "${OUT_DIR}"
|
||||
|
||||
echo "[*] Start container: build COMPLETED in container; mount ONLY output..."
|
||||
docker run --rm --platform=linux/amd64 \
|
||||
-e HOST_UID="${HOST_UID}" -e HOST_GID="${HOST_GID}" \
|
||||
-v "${OUT_DIR}":/out \
|
||||
"$IMAGE_NAME" \
|
||||
bash -c "
|
||||
set -euo pipefail
|
||||
cd /src
|
||||
|
||||
echo '[*] depends (HOST=${HOST_TRIPLE})...'
|
||||
cd depends && make HOST=${HOST_TRIPLE} -j\$(nproc) && cd ..
|
||||
|
||||
echo '[*] autogen/configure...'
|
||||
[[ -x ./autogen.sh ]] && ./autogen.sh
|
||||
[[ -f ./configure ]] || { echo 'configure not found: autogen failed'; exit 1; }
|
||||
|
||||
./configure --prefix=\$PWD/depends/${HOST_TRIPLE} \
|
||||
--host=${HOST_TRIPLE} \
|
||||
--enable-glibc-back-compat \
|
||||
--enable-reduce-exports \
|
||||
CC=${HOST_TRIPLE}-gcc CXX=${HOST_TRIPLE}-g++ \
|
||||
AR=${HOST_TRIPLE}-ar RANLIB=${HOST_TRIPLE}-ranlib STRIP=${HOST_TRIPLE}-strip \
|
||||
LDFLAGS='-static-libstdc++'
|
||||
|
||||
echo '[*] make...'
|
||||
make -j\$(nproc)
|
||||
|
||||
echo '[*] copy binaries to /out...'
|
||||
mkdir -p /out
|
||||
for b in src/palladiumd src/palladium-cli src/palladium-tx src/palladium-wallet src/qt/palladium-qt; do
|
||||
[[ -f \"\$b\" ]] && install -m 0755 \"\$b\" /out/
|
||||
done
|
||||
|
||||
# Add permissions to host user
|
||||
chown -R \${HOST_UID:-0}:\${HOST_GID:-0} /out
|
||||
|
||||
echo '[*] build COMPLETED (all binaries in container) → /out'
|
||||
"
|
||||
|
||||
echo "[*] Binaries aarch64 available in: ${OUT_DIR}"
|
||||
60
docker-build/build-linux-armv7l.sh
Normal file
60
docker-build/build-linux-armv7l.sh
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
IMAGE_NAME="palladium-builder:linux-armv7l-ubuntu20.04"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
OUT_DIR="${REPO_DIR}/build/armv7l"
|
||||
HOST_TRIPLE="arm-linux-gnueabihf"
|
||||
|
||||
HOST_UID="$(id -u)"
|
||||
HOST_GID="$(id -g)"
|
||||
|
||||
echo "[*] Building Docker image including the ENTIRE repository (COPY . /src)..."
|
||||
docker build --platform=linux/amd64 \
|
||||
-t "$IMAGE_NAME" \
|
||||
-f "${SCRIPT_DIR}/Dockerfile.linux-armv7l" \
|
||||
"${REPO_DIR}"
|
||||
|
||||
mkdir -p "${OUT_DIR}"
|
||||
|
||||
echo "[*] Starting container: build COMPLETED in container; mounting ONLY the output..."
|
||||
docker run --rm --platform=linux/amd64 \
|
||||
-e HOST_UID="${HOST_UID}" -e HOST_GID="${HOST_GID}" \
|
||||
-v "${OUT_DIR}":/out \
|
||||
"$IMAGE_NAME" \
|
||||
bash -c "
|
||||
set -euo pipefail
|
||||
cd /src
|
||||
|
||||
echo '[*] depends (HOST=${HOST_TRIPLE})...'
|
||||
cd depends && make HOST=${HOST_TRIPLE} -j\$(nproc) && cd ..
|
||||
|
||||
echo '[*] autogen/configure...'
|
||||
[[ -x ./autogen.sh ]] && ./autogen.sh
|
||||
[[ -f ./configure ]] || { echo 'configure not found: autogen failed'; exit 1; }
|
||||
|
||||
./configure --prefix=\$PWD/depends/${HOST_TRIPLE} \
|
||||
--host=${HOST_TRIPLE} \
|
||||
--enable-glibc-back-compat \
|
||||
--enable-reduce-exports \
|
||||
CC=${HOST_TRIPLE}-gcc CXX=${HOST_TRIPLE}-g++ \
|
||||
AR=${HOST_TRIPLE}-ar RANLIB=${HOST_TRIPLE}-ranlib STRIP=${HOST_TRIPLE}-strip \
|
||||
LDFLAGS='-static-libstdc++'
|
||||
|
||||
echo '[*] make...'
|
||||
make -j\$(nproc)
|
||||
|
||||
echo '[*] copy binaries to /out...'
|
||||
mkdir -p /out
|
||||
for b in src/palladiumd src/palladium-cli src/palladium-tx src/palladium-wallet src/qt/palladium-qt; do
|
||||
[[ -f \"\$b\" ]] && install -m 0755 \"\$b\" /out/
|
||||
done
|
||||
|
||||
# Add permissions to host user
|
||||
chown -R \${HOST_UID:-0}:\${HOST_GID:-0} /out
|
||||
|
||||
echo '[*] build COMPLETED (all binaries in container) → /out'
|
||||
"
|
||||
|
||||
echo "[*] ARMv7l binaries available in: ${OUT_DIR}"
|
||||
58
docker-build/build-linux-x86_64.sh
Normal file
58
docker-build/build-linux-x86_64.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
IMAGE_NAME="palladium-builder:linux-x86_64-ubuntu20.04"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
OUT_DIR="${REPO_DIR}/build/linux-x86_64"
|
||||
HOST_TRIPLE="x86_64-pc-linux-gnu"
|
||||
|
||||
HOST_UID="$(id -u)"
|
||||
HOST_GID="$(id -g)"
|
||||
|
||||
echo "[*] Building image including the ENTIRE repository (COPY . /src)..."
|
||||
|
||||
docker build --platform=linux/amd64 \
|
||||
-t "$IMAGE_NAME" \
|
||||
-f "${SCRIPT_DIR}/Dockerfile.linux-x86_64" \
|
||||
"${REPO_DIR}"
|
||||
|
||||
mkdir -p "${OUT_DIR}"
|
||||
|
||||
echo "[*] Starting container: build entirely inside the container; mounting ONLY the output..."
|
||||
docker run --rm --platform=linux/amd64 \
|
||||
-e HOST_UID="${HOST_UID}" -e HOST_GID="${HOST_GID}" \
|
||||
-v "${OUT_DIR}":/out \
|
||||
"$IMAGE_NAME" \
|
||||
bash -c "
|
||||
set -euo pipefail
|
||||
cd /src
|
||||
|
||||
echo '[*] depends...'
|
||||
cd depends && make HOST=${HOST_TRIPLE} -j\$(nproc) && cd ..
|
||||
|
||||
echo '[*] autogen/configure...'
|
||||
[[ -x ./autogen.sh ]] && ./autogen.sh
|
||||
[[ -f ./configure ]] || { echo 'configure not found: autogen failed'; exit 1; }
|
||||
|
||||
./configure --prefix=\$PWD/depends/${HOST_TRIPLE} \
|
||||
--enable-glibc-back-compat \
|
||||
--enable-reduce-exports \
|
||||
LDFLAGS='-static-libstdc++'
|
||||
|
||||
echo '[*] make...'
|
||||
make -j\$(nproc)
|
||||
|
||||
echo '[*] copying binaries to /out volume...'
|
||||
mkdir -p /out
|
||||
for b in src/palladiumd src/palladium-cli src/palladium-tx src/palladium-wallet src/qt/palladium-qt; do
|
||||
[[ -f \"\$b\" ]] && install -m 0755 \"\$b\" /out/
|
||||
done
|
||||
|
||||
# Align permissions to host user
|
||||
chown -R \${HOST_UID:-0}:\${HOST_GID:-0} /out
|
||||
|
||||
echo '[*] build COMPLETED (everything in container) → /out'
|
||||
"
|
||||
|
||||
echo "[*] Binaries available in: ${OUT_DIR}"
|
||||
63
docker-build/build-windows.sh
Normal file
63
docker-build/build-windows.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
IMAGE_NAME="palladium-builder:windows-ubuntu20.04"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
OUT_DIR="${REPO_DIR}/build/windows"
|
||||
HOST_TRIPLE="x86_64-w64-mingw32"
|
||||
|
||||
HOST_UID="$(id -u)"
|
||||
HOST_GID="$(id -g)"
|
||||
|
||||
echo "[*] Building Docker image including the ENTIRE repository (COPY . /src)..."
|
||||
|
||||
docker build --platform=linux/amd64 \
|
||||
-t "$IMAGE_NAME" \
|
||||
-f "${SCRIPT_DIR}/Dockerfile.windows" \
|
||||
"${REPO_DIR}"
|
||||
|
||||
mkdir -p "${OUT_DIR}"
|
||||
|
||||
echo "[*] Starting container: build COMPLETELY in container; mount ONLY the output..."
|
||||
docker run --rm --platform=linux/amd64 \
|
||||
-e HOST_UID="${HOST_UID}" -e HOST_GID="${HOST_GID}" \
|
||||
-v "${OUT_DIR}":/out \
|
||||
"$IMAGE_NAME" \
|
||||
bash -c "
|
||||
set -euo pipefail
|
||||
cd /src
|
||||
|
||||
echo '[*] depends (Windows cross, HOST=${HOST_TRIPLE})...'
|
||||
cd depends && make HOST=${HOST_TRIPLE} -j\$(nproc) && cd ..
|
||||
|
||||
echo '[*] autogen/configure...'
|
||||
[[ -x ./autogen.sh ]] && ./autogen.sh
|
||||
[[ -f ./configure ]] || { echo 'configure not found: autogen failed'; exit 1; }
|
||||
|
||||
# For Windows with depends: use CONFIG_SITE and prefix=/
|
||||
CONFIG_SITE=\$PWD/depends/${HOST_TRIPLE}/share/config.site \
|
||||
./configure --prefix=/
|
||||
|
||||
echo '[*] make...'
|
||||
make -j\$(nproc)
|
||||
|
||||
echo '[*] copying .exe files to /out...'
|
||||
mkdir -p /out
|
||||
# Typical executables (update the names if your project produces different ones)
|
||||
for b in \
|
||||
src/palladiumd.exe \
|
||||
src/palladium-cli.exe \
|
||||
src/palladium-tx.exe \
|
||||
src/palladium-wallet.exe \
|
||||
src/qt/palladium-qt.exe; do
|
||||
[[ -f \"\$b\" ]] && install -m 0755 \"\$b\" /out/
|
||||
done
|
||||
|
||||
# Align permissions to host user
|
||||
chown -R \${HOST_UID:-0}:\${HOST_GID:-0} /out
|
||||
|
||||
echo '[*] build COMPLETED (everything in container) → /out'
|
||||
"
|
||||
|
||||
echo "[*] Windows executables available in: ${OUT_DIR}"
|
||||
@@ -74,20 +74,17 @@ public:
|
||||
consensus.CSVHeight = 29000;
|
||||
consensus.SegwitHeight = 29000;
|
||||
|
||||
consensus.MinBIP9WarningHeight = 29540; // segwit activation height + miner confirmation window
|
||||
consensus.MinBIP9WarningHeight = 29720; // segwit activation height + miner confirmation window
|
||||
|
||||
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||
|
||||
consensus.nPowTargetTimespan = 24 * 60 * 60; // 86400 seconds
|
||||
consensus.nPowTargetSpacing = 10 * 60; // old (before block 29000/LWMA)
|
||||
consensus.nPowTargetSpacingV2 = 2 * 60; //120 seconds
|
||||
|
||||
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // Must remain 14 days for historical block validation
|
||||
consensus.nPowTargetSpacing = 10 * 60;
|
||||
consensus.nPowTargetSpacingV2 = 2 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = false;
|
||||
consensus.fPowNoRetargeting = false;
|
||||
|
||||
//24h Timespan / 2 Min Spacing = 720 blocks
|
||||
consensus.nRuleChangeActivationThreshold = 720;
|
||||
consensus.nMinerConfirmationWindow = 540; // 720 * 0.75
|
||||
consensus.nRuleChangeActivationThreshold = 540;
|
||||
consensus.nMinerConfirmationWindow = 720;
|
||||
|
||||
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||
@@ -95,13 +92,11 @@ public:
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999;
|
||||
|
||||
|
||||
// Chainwork Block 308000
|
||||
// The best chain should have at least this much work.
|
||||
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000009a5fd670f7a9ae6f2e");
|
||||
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000001578157d557d557aa0");
|
||||
|
||||
// Blockhash Block 308000
|
||||
// By default assume that the signatures in ancestors of this block are valid.
|
||||
consensus.defaultAssumeValid = uint256S("0x000000000000174621a036477c7edff5648052fa268133658561e9ca840831be");
|
||||
consensus.defaultAssumeValid = uint256S("0x0000000000000014351dee34029945d5a4dea299ec8843626695c88b084b4d10");
|
||||
|
||||
/**
|
||||
* The message start string is designed to be unlikely to occur in normal data.
|
||||
@@ -127,13 +122,13 @@ public:
|
||||
// This is fine at runtime as we'll fall back to using them as a oneshot 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.palladium-coin.store");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.com");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.net");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.org");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.xyz");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.de");
|
||||
vSeeds.emplace_back("dnsseed.palladiumblockchain.net");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.store");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.com");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.net");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.org");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.xyz");
|
||||
vSeeds.emplace_back("dnsseed.palladium-coin.de");
|
||||
vSeeds.emplace_back("dnsseed.palladiumblockchain.net");
|
||||
|
||||
|
||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,55);
|
||||
@@ -145,7 +140,7 @@ public:
|
||||
bech32_hrp = "plm";
|
||||
|
||||
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main));
|
||||
//vFixedSeeds.clear();
|
||||
//vFixedSeeds.clear();
|
||||
|
||||
fDefaultConsistencyChecks = false;
|
||||
fRequireStandard = true;
|
||||
@@ -160,16 +155,15 @@ public:
|
||||
{69, uint256S("0x00000000ae75d0169080e9f0ddbcd80827eda623cfe1f4a2b1be6dcd49b916e6")},
|
||||
{22170, uint256S("0x000000000000086425f826a2eb60c588aefd3e0783ddeccf0f4f0c985d348e69")},
|
||||
{26619, uint256S("0x00000000000000d66df607146de7d9b423cf97150beb804d22439d199e868ca9")},
|
||||
{28879, uint256S("0x0000000000000017e9e74b9b403b775098905418b1333e9612f510af66746aa7")},
|
||||
{28879, uint256S("0x0000000000000017e9e74b9b403b775098905418b1333e9612f510af66746aa7")},
|
||||
{28925, uint256S("0x0000000000000014351dee34029945d5a4dea299ec8843626695c88b084b4d10")},
|
||||
{50000, uint256S("0x000000000000041fddecba51204a679b15ae47fc8aa658ef4ea7b953445d95e5")},
|
||||
{100000, uint256S("0x0000000000000850eba93bbc491f085e2c79c0c30c497292858c72e90cae69a5")},
|
||||
{142892, uint256S("0x000000000000829a0a4cab2f040151766df64edfe8817c565d101ae12b51411a")},
|
||||
{50000, uint256S("0x000000000000041fddecba51204a679b15ae47fc8aa658ef4ea7b953445d95e5")},
|
||||
{100000, uint256S("0x0000000000000850eba93bbc491f085e2c79c0c30c497292858c72e90cae69a5")},
|
||||
{142892, uint256S("0x000000000000829a0a4cab2f040151766df64edfe8817c565d101ae12b51411a")},
|
||||
{150000, uint256S("0x00000000000003212d753a62f2dec5b696ab22524cc49ba7cdc0d80c45d0eb18")},
|
||||
{200000, uint256S("0x000000000000221a9e16556453fc86308b260d95d80c14bafaf053a09374e7eb")},
|
||||
{250000, uint256S("0x0000000000012553b0303deaf5f2883deb66c901b6848dd03bb4a34f1774e0d0")},
|
||||
{300000, uint256S("0x0000000000013acdf07a4fb988bbe9824c36eb421478a71c8196cf524dcba143")},
|
||||
{308500, uint256S("0x000000000000693c6a323a828918f994abae9473373285aa22f0ec71fb5d0f39")},
|
||||
}
|
||||
};
|
||||
|
||||
@@ -190,39 +184,45 @@ public:
|
||||
CTestNetParams() {
|
||||
strNetworkID = CBaseChainParams::TESTNET;
|
||||
consensus.nSubsidyHalvingInterval = 210000;
|
||||
consensus.BIP16Exception = uint256S("0x00000000dd30457c001f4095d208cc1296b0eed002427aa599874af7a432b105");
|
||||
consensus.BIP34Height = 21111;
|
||||
consensus.BIP34Hash = uint256S("0x0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8");
|
||||
consensus.BIP65Height = 581885; // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6
|
||||
consensus.BIP66Height = 330776; // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182
|
||||
consensus.CSVHeight = 770112; // 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb
|
||||
consensus.SegwitHeight = 834624; // 00000000002b980fcd729daaa248fd9316a5200e9b367f4ff2c42453e84201ca
|
||||
consensus.MinBIP9WarningHeight = 836640; // segwit activation height + miner confirmation window
|
||||
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
||||
consensus.nPowTargetSpacing = 10 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||
consensus.fPowNoRetargeting = false;
|
||||
consensus.nRuleChangeActivationThreshold = 1512; // 75% for testchains
|
||||
consensus.nMinerConfirmationWindow = 2016; // nPowTargetTimespan / nPowTargetSpacing
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008
|
||||
|
||||
consensus.BIP34Height = 0;
|
||||
consensus.BIP65Height = 0;
|
||||
consensus.BIP66Height = 0;
|
||||
consensus.CSVHeight = 0;
|
||||
consensus.SegwitHeight = 0;
|
||||
consensus.MinBIP9WarningHeight = 0;
|
||||
|
||||
|
||||
|
||||
// The best chain should have at least this much work.
|
||||
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000001495c1d5a01e2af8a23");
|
||||
consensus.nMinimumChainWork = uint256S("0x00");
|
||||
|
||||
// By default assume that the signatures in ancestors of this block are valid.
|
||||
consensus.defaultAssumeValid = uint256S("0x000000000000056c49030c174179b52a928c870e6e8a822c75973b7970cfbd01"); // 1692000
|
||||
consensus.defaultAssumeValid = uint256S("0x00");
|
||||
|
||||
pchMessageStart[0] = 0x0b;
|
||||
pchMessageStart[1] = 0x11;
|
||||
pchMessageStart[2] = 0x09;
|
||||
pchMessageStart[3] = 0x07;
|
||||
|
||||
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||
consensus.nPowTargetTimespan = 24 * 60 * 60;
|
||||
consensus.nPowTargetSpacing = 2 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||
consensus.fPowNoRetargeting = false;
|
||||
consensus.nRuleChangeActivationThreshold = 720;
|
||||
consensus.nMinerConfirmationWindow = 540;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||
|
||||
|
||||
|
||||
|
||||
pchMessageStart[0] = 0x0c;
|
||||
pchMessageStart[1] = 0x12;
|
||||
pchMessageStart[2] = 0x0a;
|
||||
pchMessageStart[3] = 0x08;
|
||||
nDefaultPort = 12333;
|
||||
nPruneAfterHeight = 1000;
|
||||
m_assumed_blockchain_size = 40;
|
||||
m_assumed_chain_state_size = 2;
|
||||
m_assumed_blockchain_size = 1;
|
||||
m_assumed_chain_state_size = 1;
|
||||
|
||||
genesis = CreateGenesisBlock(1296688602, 414098458, 0x1d00ffff, 1, 50 * COIN);
|
||||
consensus.hashGenesisBlock = genesis.GetHash();
|
||||
@@ -231,19 +231,15 @@ public:
|
||||
|
||||
vFixedSeeds.clear();
|
||||
vSeeds.clear();
|
||||
// nodes with support for servicebits filtering should be at the top
|
||||
vSeeds.emplace_back("testnet-seed.palladium.jonasschnelli.ch");
|
||||
vSeeds.emplace_back("seed.tbtc.petertodd.org");
|
||||
vSeeds.emplace_back("seed.testnet.palladium.sprovoost.nl");
|
||||
vSeeds.emplace_back("testnet-seed.bluematt.me"); // Just a static list of stable node(s), only supports x9
|
||||
|
||||
|
||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
|
||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
|
||||
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
|
||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,127);
|
||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,115);
|
||||
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,255);
|
||||
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
|
||||
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
|
||||
|
||||
bech32_hrp = "tb";
|
||||
bech32_hrp = "tplm";
|
||||
|
||||
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
|
||||
|
||||
@@ -254,15 +250,14 @@ public:
|
||||
|
||||
checkpointData = {
|
||||
{
|
||||
{546, uint256S("000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70")},
|
||||
{0, uint256S("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943")},
|
||||
}
|
||||
};
|
||||
|
||||
chainTxData = ChainTxData{
|
||||
// Data from RPC: getchaintxstats 4096 000000000000056c49030c174179b52a928c870e6e8a822c75973b7970cfbd01
|
||||
/* nTime */ 1585561140,
|
||||
/* nTxCount */ 13483,
|
||||
/* dTxRate */ 0.08523187013249722,
|
||||
/* nTime */ 1296688602,
|
||||
/* nTxCount */ 0,
|
||||
/* dTxRate */ 0.0,
|
||||
};
|
||||
}
|
||||
};
|
||||
@@ -276,20 +271,20 @@ public:
|
||||
strNetworkID = CBaseChainParams::REGTEST;
|
||||
consensus.nSubsidyHalvingInterval = 150;
|
||||
consensus.BIP16Exception = uint256();
|
||||
consensus.BIP34Height = 500; // BIP34 activated on regtest (Used in functional tests)
|
||||
consensus.BIP34Height = 0;
|
||||
consensus.BIP34Hash = uint256();
|
||||
consensus.BIP65Height = 1351; // BIP65 activated on regtest (Used in functional tests)
|
||||
consensus.BIP66Height = 1251; // BIP66 activated on regtest (Used in functional tests)
|
||||
consensus.CSVHeight = 432; // CSV activated on regtest (Used in rpc activation tests)
|
||||
consensus.SegwitHeight = 0; // SEGWIT is always activated on regtest unless overridden
|
||||
consensus.BIP65Height = 0;
|
||||
consensus.BIP66Height = 0;
|
||||
consensus.CSVHeight = 0;
|
||||
consensus.SegwitHeight = 0;
|
||||
consensus.MinBIP9WarningHeight = 0;
|
||||
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
||||
consensus.nPowTargetSpacing = 10 * 60;
|
||||
consensus.nPowTargetTimespan = 24 * 60 * 60;
|
||||
consensus.nPowTargetSpacing = 2 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||
consensus.fPowNoRetargeting = true;
|
||||
consensus.nRuleChangeActivationThreshold = 108; // 75% for testchains
|
||||
consensus.nMinerConfirmationWindow = 144; // Faster than normal for regtest (144 instead of 2016)
|
||||
consensus.nRuleChangeActivationThreshold = 108;
|
||||
consensus.nMinerConfirmationWindow = 144;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||
@@ -304,7 +299,7 @@ public:
|
||||
pchMessageStart[1] = 0xbf;
|
||||
pchMessageStart[2] = 0xb5;
|
||||
pchMessageStart[3] = 0xda;
|
||||
nDefaultPort = 18444;
|
||||
nDefaultPort = 28444;
|
||||
nPruneAfterHeight = 1000;
|
||||
m_assumed_blockchain_size = 0;
|
||||
m_assumed_chain_state_size = 0;
|
||||
@@ -316,8 +311,8 @@ public:
|
||||
assert(consensus.hashGenesisBlock == uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"));
|
||||
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
|
||||
|
||||
vFixedSeeds.clear(); //!< Regtest mode doesn't have any fixed seeds.
|
||||
vSeeds.clear(); //!< Regtest mode doesn't have any DNS seeds.
|
||||
vFixedSeeds.clear();
|
||||
vSeeds.clear();
|
||||
|
||||
fDefaultConsistencyChecks = true;
|
||||
fRequireStandard = true;
|
||||
@@ -336,13 +331,13 @@ public:
|
||||
0
|
||||
};
|
||||
|
||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
|
||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
|
||||
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,239);
|
||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,127);
|
||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,115);
|
||||
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,255);
|
||||
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x35, 0x87, 0xCF};
|
||||
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x35, 0x83, 0x94};
|
||||
|
||||
bech32_hrp = "bcrt";
|
||||
bech32_hrp = "rplm";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,7 +38,7 @@ std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::string& chain
|
||||
if (chain == CBaseChainParams::MAIN)
|
||||
return MakeUnique<CBaseChainParams>("", 2332);
|
||||
else if (chain == CBaseChainParams::TESTNET)
|
||||
return MakeUnique<CBaseChainParams>("testnet3", 12332);
|
||||
return MakeUnique<CBaseChainParams>("testnet", 12332);
|
||||
else if (chain == CBaseChainParams::REGTEST)
|
||||
return MakeUnique<CBaseChainParams>("regtest", 12443);
|
||||
else
|
||||
|
||||
@@ -13,7 +13,6 @@ static SeedSpec6 pnSeed6_main[] = {
|
||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x59,0x75,0x95,0x82}, 2333},
|
||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x42,0x5e,0x73,0x50}, 2333},
|
||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xad,0xf9,0xcf,0x6c}, 2333},
|
||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbc,0xda,0xda,0xd9}, 2333}
|
||||
};
|
||||
|
||||
static SeedSpec6 pnSeed6_test[] = {
|
||||
|
||||
@@ -79,7 +79,11 @@ static std::string FormatVersion(int nVersion)
|
||||
|
||||
std::string FormatFullVersion()
|
||||
{
|
||||
return CLIENT_BUILD;
|
||||
// Display a simplified semantic version: omit trailing ".0" and git suffix
|
||||
// by reusing FormatVersion on the aggregated CLIENT_VERSION.
|
||||
// This yields e.g. "v1.4.1" when CLIENT_VERSION_BUILD == 0,
|
||||
// or "v1.4.1.1" if a non-zero build number is used.
|
||||
return std::string("v") + FormatVersion(CLIENT_VERSION);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2039,7 +2039,7 @@ bool CChainState::ConnectBlock(const CBlock& block, BlockValidationState& state,
|
||||
// edge case when manipulating the UTXO and it would be simpler not to have
|
||||
// another edge case to deal with.
|
||||
|
||||
// testnet3 has no blocks before the BIP34 height with indicated heights
|
||||
// testnet has no blocks before the BIP34 height with indicated heights
|
||||
// post BIP34 before approximately height 486,000,000 and presumably will
|
||||
// be reset before it reaches block 1,983,702 and starts doing unnecessary
|
||||
// BIP30 checking again.
|
||||
|
||||
@@ -20,13 +20,13 @@ import os
|
||||
class RejectLowDifficultyHeadersTest(PalladiumTestFramework):
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.chain = 'testnet3' # Use testnet chain because it has an early checkpoint
|
||||
self.chain = 'testnet'
|
||||
self.num_nodes = 2
|
||||
|
||||
def add_options(self, parser):
|
||||
parser.add_argument(
|
||||
'--datafile',
|
||||
default='data/blockheader_testnet3.hex',
|
||||
default='data/blockheader_testnet.hex',
|
||||
help='Test data file (default: %(default)s)',
|
||||
)
|
||||
|
||||
@@ -36,7 +36,7 @@ class RejectLowDifficultyHeadersTest(PalladiumTestFramework):
|
||||
with open(self.headers_file_path, encoding='utf-8') as headers_data:
|
||||
h_lines = [l.strip() for l in headers_data.readlines()]
|
||||
|
||||
# The headers data is taken from testnet3 for early blocks from genesis until the first checkpoint. There are
|
||||
# The headers data is taken from testnet for early blocks from genesis until the first checkpoint. There are
|
||||
# two headers with valid POW at height 1 and 2, forking off from genesis. They are indicated by the FORK_PREFIX.
|
||||
FORK_PREFIX = 'fork:'
|
||||
self.headers = [l for l in h_lines if not l.startswith(FORK_PREFIX)]
|
||||
|
||||
@@ -90,7 +90,7 @@ MESSAGEMAP = {
|
||||
|
||||
MAGIC_BYTES = {
|
||||
"mainnet": b"\xf9\xbe\xb4\xd9", # mainnet
|
||||
"testnet3": b"\x0b\x11\x09\x07", # testnet3
|
||||
"testnet": b"\x0c\x12\x0a\x08", # testnet
|
||||
"regtest": b"\xfa\xbf\xb5\xda", # regtest
|
||||
}
|
||||
|
||||
|
||||
@@ -302,7 +302,7 @@ def initialize_datadir(dirname, n, chain):
|
||||
if not os.path.isdir(datadir):
|
||||
os.makedirs(datadir)
|
||||
# Translate chain name to config name
|
||||
if chain == 'testnet3':
|
||||
if chain == 'testnet':
|
||||
chain_name_conf_arg = 'testnet'
|
||||
chain_name_conf_section = 'test'
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user