MMashDiv

Bicrypto 6.8.0

20 September 2026

This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.

BINARYTRADINGSECURITYROUTINGACCOUNTSPRIVACYDEXAI INVESTMENTFOREXP2PMOBILEATTESTATIONECOSYSTEMGATEWAY

Core v6.8.0

Release Date: September 20, 2026 Tags: BINARY, TRADING, SECURITY, ROUTING, ACCOUNTS, PRIVACY, DEX, AI INVESTMENT, FOREX, P2P, MOBILE, ATTESTATION, ECOSYSTEM, GATEWAY

Overview

Binary barriers and strikes are now priced by the server. A customer could pick a level for its payout rate and then put the barrier wherever they liked, and path-dependent contracts were settled on prices they never lived through. Both are money out of the platform. If you run binary options, your barrier and strike ladders need reviewing after this update — see Upgrade Notes.

Three long-running failures are fixed. Every account self-deletion threw an error on every install from 26 August, so nothing was anonymised and nothing was closed. Every DEX swap threw an error after the customer's transaction was already on chain, from 4 August. And one capital letter in a URL walked past the licence gate, the admin audit trail, the country rules and the rate limiter, because each read the text the caller typed rather than the route the router matched.

The mobile app no longer hides regulated modules from everyone. Licence attestations became an operator switch that ships off, so a stock install serves the app exactly what the website serves. Merchant screens are new.

Update Instructions

pnpm updator

There is no schema change in this release — no new table, no seeder, and nothing to run by hand. Both halves matter: the pricing, routing and account changes are server-side and need the backend restart; the binary order panel, the chart's outcome figures and the attestation console live in the browser bundle and need the frontend rebuild.


Upgrade Notes

Binary barrier and strike ladders need re-pricing

  • This matters only if you run binary options.
  • The barrier now sits on the side of the price that is against the bettor, worked out by the server from the selected level's distance and the order's side. The ladders shipped with the product were written for the old behaviour, where the customer chose the side, so the farther and harder levels can pay less than the near ones.
  • Review your level distances and payout rates under the binary settings before you reopen the market, and treat the optimizer guide's shipped defaults as out of date.
  • Every order whose requested barrier is more than 1% away from the level's own price is logged as a warning, so the backend log shows you whether clients are still sending their own figures.

Licence attestations are now a switch, and it ships off

  • Up to 6.7.8 the mobile app served a regulated module only to residents of a country you had recorded a licence attestation for, unconditionally. (6.7.9 already carried the switch below; its notes did not say so.) An operator who had never opened that console had Trade, Futures, Staking, P2P, token offerings and copy trading dark on the app while the same account worked in the browser.
  • The behaviour is now behind Settings → Features → Verification → "Enforce Licence Attestations (Mobile App)", which ships off. On upgrade the app serves what the website serves.
  • If you recorded attestations under 6.7.x and want them enforced, turn the switch on after updating. The console now says which of the three states your install is in.

AI Investment and the referral programme on the app need two things

  • Settings → Features → Verification → "Allow AI Investment & MLM in the Mobile App" ships off. With it off the server refuses both products to the app and the website is unaffected.
  • The app must also have been built with those modules included; a stock build does not contain them at all. Both have to line up before either appears.
  • You publish the app under your own developer account, so the store-rejection risk for those two products is yours. Binary options and forex investment plans stay unavailable in the app whatever this is set to.

Work you may need to reconcile

  • DEX swaps between 4 August and 19 September that failed after the on-chain transaction went through may have no local record. The chain is the record; compare against your own wallet history.
  • Account deletion requests from 26 August to 19 September were confirmed by the customer and never carried out. Ask anyone who requested deletion to repeat it.
  • An AI investment whose principal has already been returned is now refused and left ACTIVE, with a line in the backend log naming the ids. Those rows need a decision.

Added

Merchant screens for the Payment Gateway addon on the mobile app

  • Added the gateway module to the app's catalogue, so an operator running the Payment Gateway addon can offer merchants their account status, balances, payments, refunds, payouts and a read-only key list on the phone. Registering a merchant asks the same residence question as the other regulated modules; refunds, payouts and an existing merchant's balance do not.

The attestation console says whether its rows do anything

  • Added a notice to Admin → System → Attestation that distinguishes enforcement being off, enforcement being on with no live row recorded, and enforcement working, so the screen no longer looks identical in the case where it is doing nothing.
  • Added merchant payments and AI investment to the module list on that console.

The P2P board says when an offer demands verification

  • Added the "KYC required" flag to the offer board. The trade door already refused an unverified taker on those offers, so the taker chose a trader, an amount and a payment method before being turned away.

Support can tell an unknown country from an unlicensed one

  • Added the resolved residence and the enforcement state to the app's module manifest, so a support question about a hidden screen has an answer without database access.

Changed

Binary barriers and strikes are priced by the server

  • Changed the barrier and strike to be computed from the selected level's distance and the order's side, on the server. The value the client sends is compared and logged and never stored, so a customer cannot take a level's payout rate with a barrier of their own choosing.
  • Changed copy-trading replication to price the follower's contract at the follower's own entry using the leader's distance. A follower could previously pause, wait for a leader's contract to go deep in the money, resume, and be sold it at the out-of-the-money rate.

Every gate classifies the route the router matched

  • Changed the licence gate, the admin audit trail, the country rules, the API-key scopes and the rate limiter to read the matched route rather than the path text the caller typed. The router has always matched case-insensitively, so the two disagreed whenever a letter's case did.

Account deletion closes the sessions first

  • Changed deletion to end the account's sessions before closing it and again afterwards, and to spend the one-time confirmation link inside the same transaction as the closing work, so a link cannot be burnt by an attempt that failed.
  • Changed anonymisation to destroy linked sign-in providers, so a Google or wallet login cannot reach a closed account.

Quiet ecosystem markets keep their price on screen

  • Changed the ecosystem market feed to re-send an unchanged ticker and order book every five seconds instead of broadcasting only on change. A client that missed the first snapshot previously stayed blank for the life of the connection.

Fixed

The mobile app hid every regulated module on a stock install

  • Fixed by putting attestation enforcement behind the new switch, off by default. Reported from a live install as "Trade page not working": the customer saw a message saying the platform is not licensed where they live, while the same account traded in the browser.

A binary customer could choose a level for its payout and the barrier for its odds

  • Fixed by pricing both on the server. The cases the code records: a HIGHER taken at the 0.1% rate with the barrier 50% below entry won on a 3% fall, and a TURBO UP with the barrier 1,000 points under entry paid 990 on a stake of 10 while the price stood still.

Path-dependent binary contracts were settled on prices they never lived through

  • Fixed the candle walk used to settle TOUCH/NO TOUCH and TURBO contracts. It never saw the minute the order was created in — the whole life of a one-minute order — read candles from outside the contract's life, and treated a venue that stopped answering as proof that nothing happened. An incomplete answer now refuses to settle rather than paying out.

The binary panel promised profits the platform never pays

  • Fixed the order panel and the chart tooltip, which printed an uncapped distance-times-rate figure — thousands of percent on a small stake, and a large profit on an order that had already been knocked out. Both now show the same capped figure the server settles on.

Every account self-deletion failed, on every install, for three weeks

  • Fixed the anonymiser, whose own write was refused by the user model from 26 August. The customer confirmed, saw an error, and kept an account that was never closed. The confirmation link was also spent before the work, so a failed deletion left a dead link on a live account.
  • Fixed the email-link door to refuse a Super Admin's own deletion, which the in-app door already refused.

A trailing space in an id reached the treasury account

  • Fixed the system-account guard. Identifiers are compared without padding by the database, so an id with a trailing space selected the treasury row, and the admin bulk status and delete routes and the deletion helper could anonymise and close it.

Every DEX swap failed after the transaction was on chain

  • Fixed a value written to a column that refused it, which rolled back the whole local record after the swap had already executed. Live from 4 August.

An AI investment could have its principal returned twice

  • Fixed by refusing a return whose payout has already landed, whatever route asks. A cancel or refund that recorded its ledger entry without changing the row's status left it ACTIVE, and the next settlement paid principal and profit on top under a different key, so no uniqueness rule objected.

Referral analytics answered questions about other people's accounts

  • Fixed the affiliate analytics door, which took the filter from the request body: any signed-in user could aggregate every user's referral and reward rows, or filter on somebody else's referrer id.
  • Fixed the trade-initiation answer to carry a handle only. The trade room and the live feed already removed those fields; this one door did not.
  • Fixed Smart Match, the one P2P listing a block did not reach, so a trader you have blocked no longer appears in it.

An operator's own chain token showed no price on the app

  • Fixed for markets with no recent trades, which is where the missing re-send showed: the app displayed a price of 0 and an empty book while the browser priced the same market correctly.

Forex levels were judged from a stale copy

  • Fixed five related cases where the risk engine judged a position against levels it had cached for up to thirty seconds, so a customer who moved or removed a level could still be stopped out on the old one, filled at an old entry, or expired on a time they had already extended. A stop-limit whose stop fires while it is being edited is now refused rather than resting as a limit that fills at once.

One capital letter walked past four gates

  • Fixed the licence gate serving a switched-off or unlicensed addon, the admin audit trail skipping a mutation so it went unrecorded, the country rules treating a withdrawal as no action at all — which let every partial rule through, sanctions rules included — and the rate limiter moving a signed-in caller onto the bot allowance.

Removed

The binary order panel's separate barrier direction toggle

  • Removed the Higher/Lower control that sat next to the barrier. It defaulted to "higher" whichever side the customer had chosen, so a LOWER order started in the money and every TURBO UP carried its knockout above the price, breached the moment it opened. The side button now decides which side of the price the barrier sits on.