# Qortal Auto-Update Publisher Script This script provides a modern, simplified, and testable way to publish an auto-update transaction for Qortal. It replaces the legacy Perl-based script with a more maintainable Python version. ## 🔧 Requirements (Before Running) Ensure the following steps and conditions are met: 1. **Node Environment** - A local Qortal node must be running and fully synced. - The node must expose its API (default port: `12391`). - Ensure your node's `settings.json` includes access to the relevant endpoints (i.e., it's not locked down). 2. **Qortal Update Prepared** - You have run the `tools/build-auto-update.sh` script (or the improved `build-auto-update.sh` version). - This should generate a `.update` file (e.g. `qortal.update`) and commit it to a new branch named: `auto-update-`. 3. **Git Repository Setup** - You must be inside the root of the Qortal Git repository. - The `pom.xml` file should contain the correct ``. - You have pushed your commit + branch to a public GitHub repository, preferably a fork (for testing). 4. **Authentication** - You possess the **Base58-encoded private key** for a non-admin member of the `dev` group. - The key must correspond to a Qortal account that can submit `ARBITRARY` transactions to the group (group ID 1). 5. **Python Requirements** - Python 3.6+ - `requests` package (`pip install requests`) ## 🚀 Full Auto-Update Workflow ### Step 1: Prepare Your Code - Ensure your latest code changes are committed and pushed. - Bump the version in `pom.xml` if needed. - Tag the commit with the version number (e.g. `v1.4.2`) and push the tag. ```bash git commit -m "Bump version to 1.4.2" pom.xml git tag v1.4.2 git push origin v1.4.2 ``` ### Step 2: Build the XOR-Obfuscated Update Use the improved `build-auto-update.sh`: ```bash ./build-auto-update.sh ``` - This builds the JAR. - XORs it into `qortal.update`. - Creates a new branch named `auto-update-` and pushes it. ### Step 3: Test the Update Transaction (Dry Run) ```bash python3 publish_auto_update.py --repo YourUser/qortal-test --dry-run ``` - This will validate the timestamp, hash, and download URL, without submitting anything to the chain. ### Step 4: Publish the Auto-Update ```bash python3 publish_auto_update.py --repo YourUser/qortal-test ``` - This will sign and submit the auto-update transaction. ### Step 5: Approve the Update (Admin Only) - Use `tools/approve-auto-update.sh` from a dev group admin account to approve the update. - A minimum number of approvals + block confirmations will trigger update rollout. ### Step 6: Monitor and Confirm - Nodes will download the update over the next ~20 minutes (per `CHECK_INTERVAL`). - Confirm via logs or block explorer that the update was received and applied. --- By following this workflow, new contributors and developers can easily participate in the Qortal auto-update process with minimal risk and clear validation checkpoints.