forked from Qortal/q-fund-v2
65 lines
2.8 KiB
Markdown
65 lines
2.8 KiB
Markdown
# Q‑Fund v1.0.0 — Release Notes
|
||
|
||
Release date: 2025‑08‑23
|
||
|
||
## Highlights
|
||
|
||
- Dual AT support (v1 refund / v2 non‑refund) with creator‑selectable payout policy.
|
||
- Awardee address field with validation and optional name resolution.
|
||
- Clear in‑app labeling of Status, Awardee, and Payout behavior.
|
||
- Robust dataBytes builder with canonical v1/v2 code bytes and ABI parity.
|
||
|
||
## Changes
|
||
|
||
### 1) Dual Crowdfund AT Variants
|
||
- Added a variant toggle during creation: “Refund Donors (if goal not reached)”.
|
||
- Off (default) → v2 non‑refund: pays the awardee even if goal not met.
|
||
- On → v1 refund: refunds donors if the goal is not met.
|
||
- Implementation details:
|
||
- Pinned canonical codeBytes Base64 and codeHash:
|
||
- v1 (refund): codeHash `9gS2L74FdaG3zuEeYv815xVyHkhvLguq7ZGD6pf24i8F`, length 167.
|
||
- v2 (non‑refund): codeHash `HaqJBVVr9gZqgARZ5UZd7EU9ybyvVK2fCo9sx3gMMFsr`, length 104.
|
||
- ABI parity respected:
|
||
- Common: `[0..7]` sleepMinutes, `[8..15]` goalAtoms (u64, big‑endian).
|
||
- v1: write `PAYMENT` (2) at `[64..71]`; awardee at `[80..111]`.
|
||
- v2: awardee at `[48..79]`.
|
||
- Creation parity: codeBytes are immutable; only dataBytes vary per deployment.
|
||
|
||
### 2) Awardee Address Input + Validation
|
||
- New optional Awardee field on the creation form.
|
||
- Defaults to creator’s address if left blank.
|
||
- Validates using `/addresses/validate/{address}`.
|
||
- If the input appears to be a Qortal name, resolves via `GET_NAME_DATA` to the owner address, then validates.
|
||
- Address encoding: Base58 decode is written into a 32‑byte slot; if the decoded length < 32 (typical 25 bytes), the remainder is zero‑filled for ABI compatibility.
|
||
|
||
### 3) In‑App Labels for Donors
|
||
- Crowdfund page now displays:
|
||
- Status (existing),
|
||
- Awardee (with optional name lookup via `GET_PRIMARY_NAME`),
|
||
- Payout behavior (v1 refund vs v2 non‑refund).
|
||
|
||
### 4) Technical: Centralized AT Builder
|
||
- Added `src/lib/at/crowdfund.ts` with:
|
||
- Pinned code bytes / codeHash constants,
|
||
- Variant‑aware `buildCrowdfundDataBytes()` using big‑endian u64 writes,
|
||
- `qortToAtoms()` utility,
|
||
- Optional `assertCreationParity()` to verify codeBytes hash from `creationBytes`.
|
||
|
||
## Also included since last pre‑release
|
||
|
||
- Fix back button
|
||
- Ensures consistent navigation back to the homepage and avoids stale state when returning from crowdfund details.
|
||
|
||
- Add multiple name support
|
||
- Accounts with multiple registered names are now supported. We load and show the primary name while retaining the full list for selection.
|
||
|
||
## Developer Notes
|
||
|
||
- When adding new variants in future, keep codeBytes immutable and adjust only dataBytes offsets.
|
||
- Unit tests recommended for:
|
||
- BE u64 writes for sleep/goal,
|
||
- v1 payment type constant at byte 64,
|
||
- awardee placement offsets per variant,
|
||
- codeHash parity via `assertCreationParity()`.
|
||
|