|
| 1 | +# Bison Wallet v1.1.0 |
| 2 | + |
| 3 | +This is a major feature release with 397 commits from 18+ contributors. It |
| 4 | +introduces Monero support, cross-chain bridging, private atomic swaps, gasless |
| 5 | +EVM redemptions, Politeia governance integration, and significantly expanded |
| 6 | +market making capabilities. All users must update. The protocol is incompatible |
| 7 | +between versions. |
| 8 | + |
| 9 | +## Important Upgrade Notes |
| 10 | + |
| 11 | +### Protocol Incompatibility |
| 12 | + |
| 13 | +This release introduces per-match swap addresses, which change the trade |
| 14 | +negotiation protocol. Old clients cannot trade on a v1.1.0 server and new |
| 15 | +clients cannot trade on a v1.0.x server. |
| 16 | + |
| 17 | +### EVM Contract Upgrade (Server Operators) |
| 18 | + |
| 19 | +v1.0.6 used EVM contract version 0. v1.1.0 defaults to contract version 1. |
| 20 | +The server's RPC client binds to a single contract version, so after upgrading |
| 21 | +the server cannot verify coins from in-flight v0 swaps. To handle this safely, |
| 22 | +operators should either: |
| 23 | + |
| 24 | +1. Wait for all active EVM swaps to complete before upgrading, OR |
| 25 | +2. Place an `evm-protocol-overrides.json` file in the server's working |
| 26 | + directory to keep v0 until remaining swaps drain: |
| 27 | + |
| 28 | + ```json |
| 29 | + {"eth": 0, "usdc.eth": 0, "usdt.eth": 0, "matic.eth": 0} |
| 30 | + ``` |
| 31 | + |
| 32 | + Once no v0 swaps remain, remove the file and restart to use v1. |
| 33 | + |
| 34 | +## New Features |
| 35 | + |
| 36 | +### Monero Wallet |
| 37 | + |
| 38 | +- Add Monero wallet support with CGO-based wallet integration (#3295, #3494) |
| 39 | +- Automatic download of required Monero client tools (#3441) |
| 40 | +- Reworked wallet creation flow and Opener interface (#3412, #3400) |
| 41 | +- Monero atomic swap protocol with testnet support (#2936, #2942) |
| 42 | +- Monero development harness (#2786) |
| 43 | + |
| 44 | +### Cross-Chain Bridging |
| 45 | + |
| 46 | +- Add Across Protocol support for bridging between Ethereum and Polygon PoS (#3331, #3216) |
| 47 | +- Bridge POL from Polygon PoS to Ethereum (#3333) |
| 48 | +- Track Polygon bridge deposit completion (#3326) |
| 49 | +- Bridge UI for user-initiated cross-chain transfers (#3484) |
| 50 | +- Use bridging in market making for cross-chain arbitrage (#3344) |
| 51 | + |
| 52 | +### Private Atomic Swaps |
| 53 | + |
| 54 | +- Implement private atomic swaps for BTC and DCR using adaptor signatures (#3290) |
| 55 | +- Bundled libsecp256k1 C library for adaptor signatures and DLEQ proofs (#2810) |
| 56 | + |
| 57 | +### Gasless EVM Redemptions |
| 58 | + |
| 59 | +- Implement gasless redemptions for ETH/POL using EIP-712 relayed transactions (#3175, #3555) |
| 60 | +- Update EVM v1 swap contract with gasless redeem support (#2038, #3488) |
| 61 | + |
| 62 | +### OP Stack L2 Support |
| 63 | + |
| 64 | +- Add Base network support (#3323) |
| 65 | +- Add L1 fee support for OP Stack L2s (#3520) |
| 66 | + |
| 67 | +### Politeia Governance Integration |
| 68 | + |
| 69 | +- Integrate Politeia proposal voting into the wallet (#3428, #3461) |
| 70 | +- Move Politeia voting lifecycle from Core to wallet (#3536) |
| 71 | +- Add default Pi keys from network params to voting preferences (#3495) |
| 72 | + |
| 73 | +### Market Making Enhancements |
| 74 | + |
| 75 | +- Add Bitget exchange adapter (#3430) |
| 76 | +- Add MEXC exchange adapter (#3367) |
| 77 | +- Add Coinbase exchange adapter (#2809) |
| 78 | +- Multi-hop arbitrage support and improvements (#3267, #3314) |
| 79 | +- Epoch reporting for bot performance analysis (#2808, #3050) |
| 80 | +- Display profit for each run and total profit on archives page (#3291) |
| 81 | +- Live config and balance updates for running bots (#3081) |
| 82 | +- Internal transfers between DEX and CEX balances (#2891) |
| 83 | +- Market making server snapshots (#3508) |
| 84 | +- Volume minimums and sanity checks for oracle rates (#2937) |
| 85 | + |
| 86 | +### Mobile and Companion App |
| 87 | + |
| 88 | +- Mobile companion app with Tor implementation (#2715) |
| 89 | +- Route all outgoing connections through Tor (#3542) |
| 90 | +- Require auth for companion app QR endpoint (#3541) |
| 91 | + |
| 92 | +### Desktop Application |
| 93 | + |
| 94 | +- Move desktop app from WebView to Electron (#3388) |
| 95 | +- Remove old Mac build and reorganize packaging (#3534) |
| 96 | + |
| 97 | +### Other New Features |
| 98 | + |
| 99 | +- Add user onboarding game (#2921) |
| 100 | +- Add wallet timeouts for unresponsive wallets (#3514) |
| 101 | +- Add active trade limit (#3511) |
| 102 | +- Show upgrade banner when newer version is available on GitHub (#3286) |
| 103 | +- Download log files from UI (#3192) |
| 104 | +- Add fiat value to order preview in trade form (#3448) |
| 105 | +- Add slippage warnings for market orders (#3538) |
| 106 | +- Add support for enabling/disabling a DEX account (#2946) |
| 107 | +- Show partially filled status for cancelled orders (#3420) |
| 108 | +- Add MATIC token on Ethereum network (#2988) |
| 109 | +- Change native Polygon asset from MATIC to POL (#2957) |
| 110 | +- Allow Firo to send to EXX addresses (#3119) |
| 111 | +- Add DigiByte v8.22+ descriptor wallet support (#3376) |
| 112 | + |
| 113 | +## Fixes and Improvements |
| 114 | + |
| 115 | +### Trade and Swap Reliability |
| 116 | + |
| 117 | +- Fix infinite refund loop (#3522) |
| 118 | +- Babysit refund transactions for reliable completion (#3082) |
| 119 | +- Add broadcast recovery for stuck transactions (#3519) |
| 120 | +- Add SPV rescan stall detection and recovery (#3533) |
| 121 | +- Recover stale mempool redeem/refund transactions (#3535) |
| 122 | +- Keep trying init with the same secret on failures (#3269) |
| 123 | +- Fall back to normal redeem when gasless relay fails (#574a4234) |
| 124 | +- Retry block tx lookup in FindRedemption for multi-node setups (#3562) |
| 125 | + |
| 126 | +### Server |
| 127 | + |
| 128 | +- Add secret hash deduplication to prevent replay (#3556) |
| 129 | +- Fix market buy funding validation (#3546) |
| 130 | +- Harden comms rate limiting (#3527) |
| 131 | +- Stash old fee rate momentarily after rate increase to avoid races (#3397) |
| 132 | +- Add dedicated table for tracking reputation effects (#3259) |
| 133 | +- Fix nil market panic on startup revocation (#02668c27) |
| 134 | +- Update BTC rate providers (#3543) |
| 135 | + |
| 136 | +### Market Making Fixes |
| 137 | + |
| 138 | +- Fix unclickable rebalance settings for saved CEX bots (#3537) |
| 139 | +- Fix CEX surplus allocation bug (#3313) |
| 140 | +- Fix deposit balance check deadlock (#3066) |
| 141 | +- Fix multi trade funding error (#3099) |
| 142 | +- Fix withdrawal amount race (#3301) |
| 143 | +- Binance: MATIC to POL update, fix orderbook sync (#3311, #2908) |
| 144 | +- Cancel existing orders when starting bot (#2894) |
| 145 | + |
| 146 | +### Wallet Fixes |
| 147 | + |
| 148 | +- Fix incorrect USD fee error when sending USDC (#3458) |
| 149 | +- Fix stack overflow in WalletTransaction (#3460) |
| 150 | +- Fix bricked app after interrupt during registration (#3473) |
| 151 | +- Fix Zcash multisplit (#2931) |
| 152 | +- Fix Electrum Firo market making issues (#3202) |
| 153 | +- Fix Polygon wallet connected/disconnected notifications (#3163) |
| 154 | +- Fix ETH user action resolution handling (#3178) |
| 155 | +- Fix negative swap confs for DCR (#3009) |
| 156 | +- Fix connecting via Tor (#2934) |
| 157 | +- Expire prepaid bonds correctly (#3220) |
| 158 | +- Use user-set gas limit for ETH (#3469) |
| 159 | +- Treat "already known" ETH tx responses as success (#3498) |
| 160 | +- Fix ZEC refund fee calculation for ZIP-317 compliance (#3562) |
| 161 | +- Fix wallet unlock affecting all networks for same ticker (#3562) |
| 162 | + |
| 163 | +### UI Fixes |
| 164 | + |
| 165 | +- Fix slippage estimation overflow (#3544) |
| 166 | +- Fix reconfigure from UI (#3553) |
| 167 | +- Fix rate display on fee bump notification (#3405) |
| 168 | +- Fix market page daily high/low rate (#3014) |
| 169 | +- Hide "~USD" when no fiat rate is available (#3471) |
| 170 | +- Language fallback to prevent crash on unsupported locales (#3414) |
| 171 | +- Updated Chinese and German translations (#3071, #3124) |
| 172 | +- Show disabled state for individually disabled token wallets (#3562) |
| 173 | + |
| 174 | +### WebSocket and Networking |
| 175 | + |
| 176 | +- Fix WebSocket read loop blocking (#3501) |
| 177 | +- Reset read deadline after message handling (#3507) |
| 178 | +- Double the default websocket request timeout (#3076) |
| 179 | + |
| 180 | +## Developer / Infrastructure |
| 181 | + |
| 182 | +### Lexi Database |
| 183 | + |
| 184 | +- Add new Lexi database package as a replacement for BoltDB (#3033) |
| 185 | +- Add transaction support, index upgrades, simplified upgrade API (#3328, #3294, #3317) |
| 186 | +- Migrate ETH transaction DB to Lexi (#3213) |
| 187 | + |
| 188 | +### Tatanka Mesh (Next-Gen DEX) |
| 189 | + |
| 190 | +- Add orderbook with map structure and push data (#3194, #3244, #3221) |
| 191 | +- Add order compatibility and matching functions (#3165) |
| 192 | +- Switch to AES for end-to-end encryption (#3204) |
| 193 | +- Add fee rate estimate oracle (#2769) |
| 194 | +- Add simnet harness and connect to mesh in core (#3339) |
| 195 | + |
| 196 | +### Build and CI |
| 197 | + |
| 198 | +- Go 1.25 and updated GitHub actions (#3347) |
| 199 | +- Docker base images updated (#3341) |
| 200 | +- Add more platforms for binary builds (#3073) |
| 201 | +- Implement snap package (#2580) |
| 202 | +- Migrate BTC harness to descriptor wallets (#3480) |
| 203 | + |
| 204 | +### Dependencies |
| 205 | + |
| 206 | +- Update dcrwallet to v5 (#3234) |
| 207 | +- Update secp256k1 to 4.4.0 (#3198) |
| 208 | +- Update btcwallet to v0.16.10 (#3206) |
| 209 | +- Bump Decred deps to latest release versions (#3426) |
| 210 | +- Switch bchwallet and go-bip39 to bisoncraft (#3479) |
| 211 | + |
| 212 | +### Code Quality |
| 213 | + |
| 214 | +- RPC server refactor (#3503) |
| 215 | +- Replace `interface{}` with `any` throughout (#3509, #3504, #3515) |
| 216 | +- Modernize to use `slices`, `maps`, built-in `max`/`min` (#3334, #3337) |
| 217 | +- DRY up v1 token gas values across EVM chains (#3562) |
| 218 | + |
| 219 | +### Simnet Testing |
| 220 | + |
| 221 | +- Add per-match address simnet trade tests and README (#3562) |
| 222 | + |
| 223 | +## Code Summary |
| 224 | + |
| 225 | +958 files changed, 169,616 insertions(+), 40,875 deletions(-) |
| 226 | + |
| 227 | +| Contributor | Commits | |
| 228 | +| --- | --- | |
| 229 | +| JoeGruffins | 98 | |
| 230 | +| Marton | 78 | |
| 231 | +| buck54321 | 78 | |
| 232 | +| Philemon Ukane | 28 | |
| 233 | +| dev-warrior777 | 19 | |
| 234 | +| Justin Do | 15 | |
| 235 | +| Jamie Holdstock | 11 | |
| 236 | +| peterzen | 11 | |
| 237 | +| karamble | 4 | |
| 238 | +| David Hill | 2 | |
| 239 | +| bochinchero | 2 | |
| 240 | +| norwnd | 2 | |
| 241 | +| slightsharp | 2 | |
| 242 | +| Dave Collins | 1 | |
| 243 | +| Jared Tate | 1 | |
0 commit comments