iuna

iuna - experimental devnet protocol
git clone https://iuna.jhx.app/git/iuna.git
Log | Files | Refs | README | LICENSE

commit 94e9180bc325d93b415cd9350645d48b164a9c5b
parent fd044665ff2ceb5566842274862f677373e2f637
Author: Joris Hartog <jorishartog@hotmail.com>
Date:   Sun, 26 Jul 2026 23:45:51 +0200

Add release builds and fix Pages setup

Diffstat:
M.github/workflows/pages.yml | 2--
A.github/workflows/release.yml | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MREADME.md | 49+++++++++++++++++++++++++++++++++++++++++--------
3 files changed, 145 insertions(+), 10 deletions(-)

diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml @@ -25,8 +25,6 @@ jobs: uses: actions/checkout@v4 - name: Setup Pages uses: actions/configure-pages@v5 - with: - enablement: true - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml @@ -0,0 +1,104 @@ +name: Build Release + +on: + push: + tags: + - "v*" + workflow_dispatch: + +permissions: + contents: write + +jobs: + build: + name: Build ${{ matrix.platform }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + platform: linux-x86_64 + exe: "" + archive: tar.gz + - os: macos-13 + platform: macos-x86_64 + exe: "" + archive: tar.gz + - os: macos-14 + platform: macos-aarch64 + exe: "" + archive: tar.gz + - os: windows-latest + platform: windows-x86_64 + exe: ".exe" + archive: zip + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust + shell: bash + run: | + rustup toolchain install stable --profile minimal + rustup default stable + + - name: Build + run: cargo build --release --locked + + - name: Package Unix + if: matrix.archive == 'tar.gz' + shell: bash + run: | + tag="${GITHUB_REF_NAME:-manual}" + package="iuna-${tag}-${{ matrix.platform }}" + mkdir -p "dist/${package}" + cp "target/release/iuna" "dist/${package}/" + cp README.md LICENSE "dist/${package}/" + tar -C dist -czf "dist/${package}.tar.gz" "${package}" + + - name: Package Windows + if: matrix.archive == 'zip' + shell: pwsh + run: | + $tag = if ($env:GITHUB_REF_NAME) { $env:GITHUB_REF_NAME } else { "manual" } + $package = "iuna-$tag-${{ matrix.platform }}" + New-Item -ItemType Directory -Force -Path "dist/$package" | Out-Null + Copy-Item "target/release/iuna${{ matrix.exe }}" "dist/$package/" + Copy-Item "README.md", "LICENSE" "dist/$package/" + Compress-Archive -Path "dist/$package" -DestinationPath "dist/$package.zip" -Force + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: iuna-${{ github.ref_name }}-${{ matrix.platform }} + path: dist/iuna-${{ github.ref_name }}-${{ matrix.platform }}.* + if-no-files-found: error + + release: + name: Publish GitHub Release + needs: build + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: dist + merge-multiple: true + + - name: Write checksums + run: | + cd dist + sha256sum * > SHA256SUMS + + - name: Create or update release + env: + GH_TOKEN: ${{ github.token }} + run: | + if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then + gh release upload "${GITHUB_REF_NAME}" dist/* --clobber + else + gh release create "${GITHUB_REF_NAME}" dist/* --title "${GITHUB_REF_NAME}" --generate-notes + fi diff --git a/README.md b/README.md @@ -4,20 +4,42 @@ iuna is a low-energy currency devnet where blocks are finalized by burning IUNA, It is not a mainnet and not money yet. The goal right now is simple: run a small real network, learn where the protocol and software bend, and make it pleasant enough that friends can help test it. -## Run A Node +## Download -You need Rust installed. Then start a node: +Download the latest build for your platform from the [GitHub Releases](https://github.com/iuna-labs/iuna/releases) page. You do not need Rust or Cargo to run a node. + +Release archives are published for: + +- Linux x86_64 +- macOS x86_64 +- macOS Apple Silicon +- Windows x86_64 + +Unpack the archive and run the `iuna` binary from a terminal. + +On macOS or Linux: ```sh -cargo run -- --http 127.0.0.1:18661 --p2p 0.0.0.0:9445 +chmod +x ./iuna +./iuna --http 127.0.0.1:18661 --p2p 0.0.0.0:9445 ``` +On Windows PowerShell: + +```powershell +.\iuna.exe --http 127.0.0.1:18661 --p2p 0.0.0.0:9445 +``` + +For the commands below, use `.\iuna.exe` instead of `./iuna` on Windows. + Open `http://127.0.0.1:18661`, set a local password, and back up the recovery phrase. The wallet seed is encrypted on disk. Keep the management UI on `127.0.0.1`; only the P2P port should be reachable by other nodes. -To join an existing devnet, ask for a seed node address and start with `--join`: +## Join A Devnet + +Ask for a seed node address and start iuna with `--join`: ```sh -cargo run -- --data-dir .iuna --http 127.0.0.1:18661 --p2p 0.0.0.0:9445 --join seed.example:9444 +./iuna --data-dir .iuna --http 127.0.0.1:18661 --p2p 0.0.0.0:9445 --join seed.example:9444 ``` After the node syncs, you can receive IUNA, send transactions, burn for block finalization, or enable PoW mine actions from the Mining screen. @@ -27,7 +49,7 @@ After the node syncs, you can receive IUNA, send transactions, burn for block fi Only the first operator of a devnet needs genesis mode: ```sh -cargo run -- --genesis --http 127.0.0.1:18661 --p2p 0.0.0.0:9444 +./iuna --genesis --http 127.0.0.1:18661 --p2p 0.0.0.0:9444 ``` Genesis requires a fresh wallet and an empty chain database. It creates the starter chain, measures an initial VDF delay, and leaves the starter wallet with spendable IUNA for early testing. @@ -37,7 +59,7 @@ Genesis requires a fresh wallet and an empty chain database. It creates the star iuna can expose a Stratum V1 endpoint for SHA-256 ASIC miners such as a Bitaxe: ```sh -cargo run -- --data-dir .iuna --stratum 0.0.0.0:3333 +./iuna --data-dir .iuna --stratum 0.0.0.0:3333 ``` Use your iuna wallet address as the worker username. Accepted shares become PoW mine actions in the node mempool and are gossiped to peers. @@ -56,7 +78,7 @@ The current devnet targets 60-second blocks, uses local wallet encryption, store Contributions are welcome. Useful help includes running nodes, testing joins/restarts, improving P2P behavior, reviewing protocol incentives, cleaning up UI flows, and adding focused tests. -Before sending changes, run: +Contributors need Rust and Cargo. Before sending changes, run: ```sh cargo fmt -- --check @@ -77,6 +99,17 @@ git config core.hooksPath .githooks chmod +x .githooks/pre-commit ``` +## Release Builds + +Maintainers publish binaries by pushing a version tag: + +```sh +git tag v0.1.0 +git push origin v0.1.0 +``` + +The release workflow builds platform archives, writes `SHA256SUMS`, and attaches everything to the GitHub Release for that tag. + ## License iuna is licensed under the Apache License 2.0. See `LICENSE`.