Înapoi la portofoliuPortofoliu

Qubitensor

O cursă zilnică de minerit pe două probleme folosite pentru a testa algoritmii cuantici: Max-Cut și starea fundamentală a unui mic magnet cuantic. Contractul generează problemele din valoarea aleatoare a blocului și punctează singur fiecare răspuns, fără oracol și fără validatori.

Rol
Concepție, laborator de algoritmi, model economic, Solidity, testare, lansare și miner în browser
Lansat
15 octombrie 2026, 22:30 UTCBlocul 26.200.922, prin Custom Launch de la Programmable
Contracte
Șapte scrise de mine, toate verificateEtherscan, potrivire exactă; plus seiful de comisioane al platformei
Testare
67 de teste Foundry pe un fork de mainnetToate cele 67, rulate din nou cu succes pe 20 octombrie 2026
Tehnologii
Solidity 0.8.26 (via IR), Foundry, Solady, Uniswap v4, TypeScript
Permisiunile hookului
0x28CC

Pondere tăiată

0din 643

Faceți clic pe un nod pentru a-l muta în cealaltă parte.

Răspunsul pe care l-ar dezvălui un miner, 8 octeți, nodul x în bitul x mod 8 al octetului x / 8: 0x

Fig. 1. Max-Cut, așa cum îl verifică contractul. Împărțiți nodurile în două părți astfel încât muchiile dintre părți să cântărească cât mai mult. Acest graf cu 64 de noduri (rundele folosesc între 256 și 4.096) a fost generat după regula contractului Cut, din sămânța keccak256("qubitensor.demo.0"); la construirea acestei pagini, toate cele 128 de muchii și 64 de scoruri au fost verificate față de contractul implementat. Cea mai bună dintre 24 de rulări de călire simulată a găsit 570 din 643 (88,6%); o trecere greedy de la un start aleatoriu ajunge la aproximativ 81,3%.

Proiectul

Qubitensor transformă Ethereum într-o cursă zilnică pe două probleme dificile. În fiecare zi UTC, oricine poate deschide o rundă, iar contractul derivă din valoarea aleatoare a blocului un graf Max-Cut nou și un magnet cuantic nou. Minerii sigilează un hash al răspunsului, îl dezvăluie după 20:00 UTC, iar contractul îl punctează exact.

Primii trei pe fiecare problemă împart o parte din fondul de premii, alimentat din comisioanele de tranzacționare, și QBT nou minat. Deținătorii pot face staking în sprijinul unui miner și pot împărți câștigurile acestuia. Când răspunsurile devin prea ușoare, problemele cresc.

Problema

Proiectele crypto care folosesc cuvântul „cuantic” oferă rareori o modalitate de a verifica munca. Rețele precum Bittensor chiar recompensează calculul, dar punctarea este făcută de validatori, off-chain. Întrebarea de aici era mai restrânsă: poate un token să plătească pentru o muncă pe care lanțul însuși o generează și o verifică, de la un capăt la altul?

Și poate spune direct ce nu are cum să știe lanțul? Un contract nu poate deosebi un calculator cuantic de un laptop, iar la dimensiunile pe care le poate verifica Ethereum, astăzi se așteaptă ca algoritmii clasici să câștige. Qubitensor înregistrează tipul de solver declarat de fiecare miner, îi punctează pe toți la fel și lasă evidența publică să arate dacă asta se schimbă vreodată.

Ce am construit

  1. Un laborator de algoritmi și un model economic

    Algoritmi aleatori, greedy și de călire simulată, rulați pe formele reale ale problemelor, au stabilit regulile: un prag de 85% pentru Max-Cut (o singură trecere greedy ajunge la aproximativ 81%; cea mai bună dintre patru rulări de călire simulată a trecut de 85% pe toate cele 112 grafuri testate), un start la 256 de noduri, unde algoritmii independenți nu mai ajung la egalitate, și plăți de 20% din fondul de premii pe rundă, împărțite 70, 20 și 10.

  2. Șapte contracte

    Tokenul, cu propriile funcții de cumpărare și vânzare; hookul; Arena, care gestionează rundele, sigiliile, dezvăluirile, clasamentul, emisiunea, stakingul și dificultatea; două evaluatoare, Cut și Chem; inițializatorul lansării, Ignition; și VaultKeeper, care păstrează lichiditatea.

  3. Un simulator de circuite în Solidity

    Chem rulează un circuit de opt qubiți în numere întregi cu virgulă fixă și îi citește energia printr-un cât pe care rotunjirea nu îl poate împinge sub starea fundamentală. Costă 466.355 gas la șase qubiți și 1.721.623 la opt.

  4. Gemeni JavaScript pentru ambele evaluatoare

    Copii pas cu pas, testate față de contracte, ca un miner să știe scorul exact înainte de sigilare. Pe ele se bazează un script de minerit pentru început și un miner în browser care sigilează și dezvăluie direct din pagină.

  5. 67 de teste pe un fork de mainnet

    Inclusiv întreaga lansare prin fabrica reală de implementare a platformei și decontarea în cel mai rău caz, măsurată sub limita de gas a blocului.

  6. Pachetul de lansare

    Un depozit public de cod sursă, setări de compilare alese astfel încât scanerul de bytecode al platformei să citească corect contractele, și configurația lansării. Aprobat la prima depunere.

Brand și site

Qubitensor arată ca un instrument științific care merge după ceas: aproape negru, titluri condensate peste date monospace, violet pentru probleme și lumini roșii de start la dezvăluirea de la 20:00 UTC. Simbolul, prezentarea proiectului și site-ul folosesc un singur sistem, de la câmpul de particule de la deschidere până la pagina de minerit care urmează ziua UTC a rundei.

Paletă
Noapte #050507Alb #F2F2EEViolet #8B7BFFRoșu semnal #FF4D3DCyan #4FE3FFLime #C2FF73
Tipografie
Saira Condensed pentru titluriSaira pentru textJetBrains Mono pentru date
Simbolul Qubitensor: un inel de opt puncte tăiat de o linie diagonală
Simbol: opt qubiți, o tăietură.
Ecranul de deschidere al site-ului Qubitensor: titlul Proof of quantum work lângă un câmp de particule
Site-ul: ecranul de deschidere.
Prima pagină a prezentării proiectului Qubitensor: ziua, cele două probleme și etichetele de solver
Prezentarea proiectului, pagina unu.
Ghidul de minerit Qubitensor: minerit în șase pași
Site-ul: ghidul de minerit.

Cum funcționează

  1. 1Generare

    Deschiderea unei runde o inițializează din valoarea prevrandao a blocului. Graful Max-Cut are n noduri și 2n muchii ponderate; magnetul are între 6 și 8 qubiți, cu cuplaje și câmpuri aleatoare.

  2. 2Sigilare

    Până la 20:00 UTC, minerii depun doar un hash al răspunsului și o garanție de 0,0003 ETH.

  3. 3Dezvăluire

    Între 20:00 și miezul nopții, Arena punctează exact fiecare răspuns dezvăluit. La Max-Cut contează doar răspunsurile de la 85% din ponderea grafului în sus; la chimie, doar cele sub cel mai bun șir simplu de biți.

  4. 4Clasare

    Trei locuri pe problemă. Dacă doi mineri dezvăluie același răspuns, sigiliul mai vechi păstrează locul, așa că nimeni nu câștigă nimic grăbindu-se să dezvăluie.

  5. 5Plată

    Decontarea unei runde plătește 20% din fondul de premii și emite QBT nou al zilei, jumătate pe fiecare problemă: 70, 20 și 10 pentru cele trei locuri, împărțite cu susținătorii lor.

  6. 6Adaptare

    O egalitate între cele mai bune două tăieturi mărește următorul graf cu 25%; trei runde fără niciun răspuns la 85% îl micșorează cu 20%. Fiecare serie de 30 de runde productive adaugă un qubit.

Deschidere. Oricine poate deschide runda zilei, o singură dată, înainte de 20:00 UTC. Sămânța este keccak(prevrandao, round, Arena); graful Max-Cut este generat din keccak(seed, 0), iar magnetul din keccak(seed, 1).

Sigilare. Minerii depun un hash al răspunsului, cu o garanție de 0,0003 ETH. Nimic din sigiliu nu arată răspunsul, iar sigiliile sunt înregistrate separat pentru fiecare miner, așa că un hash copiat din mempool nu blochează pe nimeni.

Dezvăluire. Arena punctează exact fiecare răspuns și păstrează trei locuri pe problemă. Garanția se returnează indiferent de scor.

Decontare. Oricine poate deconta rundele încheiate, începând cu cea mai veche, până la 12 pe apel: 20% din fondul de premii și QBT nou al zilei, jumătate pe fiecare problemă, împărțite 70, 20 și 10.

Fig. 2. O rundă, o zi UTC. Fiecare pas poate fi făcut de oricine; contractul impune orele.

q0q1q2q3q4q5repetat de 4 oriRYRYRYRYRYRYRYRYRYRYRYRYmăsoarăenergia

RY rotește un qubit cu un unghi ales de miner, un număr de 16 biți pe poartă: 30 de unghiuri pentru șase qubiți, 40 pentru opt.

Punctele unite sunt porți CZ între qubiți vecini. RY și CZ păstrează fiecare amplitudine reală, așa că contractul poate simula starea exact, în numere întregi.

Măsoară energia înseamnă câtul Rayleigh <a|H|a> / <a|a> al stării, așa cum a fost calculată, pentru magnetul rundei H = sum J_ij Z_i Z_j + sum h_i X_i. Nu poate coborî niciodată sub energia reală a stării fundamentale, așa că rotunjirea nu poate falsifica un scor.

Fig. 3. Circuitul pe care îl simulează Chem.sol: patru straturi de rotații RY și porți CZ, apoi un strat RY final, desenat pentru șase qubiți.

1,00%Proprietarul
0,50%Fondul de premii, plătit minerilor rundă cu rundă
0,50%Răscumpărare și ardere, cel mult 1% din lichiditatea în ETH a poolului pe apel

Fig. 4. Unde ajunge taxa de 2% din partea în ETH a fiecărei tranzacții. Comisionul LP de 1% al poolului merge la poziția blocată, iar 0,30% la platformă.

Contractele, explicate

Cantitate și emitere

Pot exista cel mult un miliard de QBT. Jumătate au fost create la lansare și plasate în pool. Cealaltă jumătate nu există încă: Arena o emite rundă cu rundă minerilor care se clasează și susținătorilor lor, 250 de milioane în primul an, apoi în fiecare an jumătate din cât în anul precedent. Nimic altceva nu poate emite.

Pentru dezvoltatori

MAX_SUPPLY = 1_000_000_000 ether; POOL_SUPPLY = 500_000_000 ether merge la inițializator. mint acceptă doar ARENA și nu depășește niciodată MINED_SUPPLY. emissionOf(round) este FIRST_YEAR / 365 pe rundă și se înjumătățește la fiecare 365 de runde.

Ardere

Orice deținător își poate arde propriile QBT. Un sfert din taxa de tranzacționare cumpără QBT din pool și îl arde.

Pentru dezvoltatori

burn; QubitHook.buyback() poate fi apelat de oricine, o dată pe bloc, și cheltuiește cel mult 1% din ETH-ul pe care poolul îl are la prețul curent. burned le numără pe amândouă.

Transferuri, cumpărare și vânzare

Un ERC-20 standard, fără taxă pe transfer și fără listă neagră. Aplicația Uniswap nu poate ruta acest pool, așa că tokenul însuși poate cumpăra din pool și vinde în pool, refuzând orice execuție sub un minim stabilit de trader.

Pentru dezvoltatori

ERC20 din Solady. buy(minOut) cheltuiește msg.value și returnează ce lasă poolul; sell(amount, minOut) vinde din contul apelantului, fără nicio aprobare. Ambele eșuează sub minOut.

Comisioane

Fiecare tranzacție plătește 2% din partea sa în ETH: 1% proprietarului, 0,5% fondului de premii și 0,5% pentru răscumpărare și ardere. Nu există suprataxă de lansare. Comisionul de lichiditate de 1% al poolului merge la poziția blocată, iar 0,30% la platforma de lansare.

Pentru dezvoltatori

FEE = 20_000 pips, reținut din ETH-ul specificat înainte de swap sau din ETH-ul rezultat după el. Cotele se acumulează ca drepturi ERC-6909; sendOwnerFee(), fundPrizes() și buyback() plătesc fiecare doar acolo unde spune numele lor.

uint256 ownerPart = fee / 2;
uint256 prizePart = fee / 4;
ownerShare += ownerPart;
prizeShare += prizePart;
burnShare += fee - ownerPart - prizePart;

Premii și staking

Fiecare rundă plătește 20% din fondul de premii și QBT nou al rundei. Deținătorii pot face staking în sprijinul unui miner, începând cu runda următoare; fiecare miner împarte între 0% și 20% din câștiguri cu susținătorii săi, iar stakingul îi crește ponderea cu până la 20%, dar niciodată peste locul din fața lui.

Pentru dezvoltatori

PAYOUT_BPS = 2_000; locurile împart 70/20/10. stake, unstake și claimStake; setBackerShare, până la 2.000 bps, decontează întâi rundele anterioare. BOOST_MAX_BPS = 2_000, integral la 10.000.000 QBT. Produsele se calculează pe 512 biți, așa că nici măcar un stake de 1 wei nu poate face să depășească (overflow) totalurile altcuiva.

Angajament și dezvăluire

Răspunsurile sunt sigilate ca hash-uri până la 20:00 UTC, așa că nimeni nu le poate copia. Un duplicat dezvăluit revine celui care a sigilat primul, iar un răspuns care nu este dezvăluit niciodată își lasă garanția fondului de premii.

Pentru dezvoltatori

sealHash = keccak256(abi.encode(round, subnet, solver, keccak256(answer), salt)), înregistrat separat pentru fiecare solver. firstSeal[round][keccak(subnet, answer)] păstrează cel mai mic număr de sigiliu. Garanția este returnată la dezvăluire sau păstrată în dueEth dacă minerul refuză ETH.

Punctarea Max-Cut

Graful este regenerat din sămânță în interiorul contractului, iar răspunsul, un bit pe nod, este verificat pe fiecare muchie. Scorul este exact.

Pentru dezvoltatori

Cut.score(seed, n, side) citește patru muchii din fiecare cuvânt keccak: două capete mod n și o pondere între 1 și 8. Nodul 0 trebuie să stea în partea 0, așa că un răspuns și imaginea lui în oglindă sunt identice. Aproximativ 320 gas pe muchie: 172.703 la 256 de noduri, 2.648.369 la 4.096.

Punctarea circuitului

Contractul simulează circuitul minerului pe magnetul rundei și îi măsoară energia. Un răspuns contează doar dacă bate orice configurație simplă, fără încâlcire cuantică (entanglement).

Pentru dezvoltatori

Chem.score(seed, q, angles): amplitudini în unități de 2^-62, rotunjite în jos; energia ca un cât Rayleigh întreg, cu împărțirea finală rotunjită în sus, în unități de 2^-60. Pragul este cea mai mică intrare de pe diagonală, adică cel mai bun șir simplu de biți.

Puterile proprietarului și ale administratorului

Nu există administrator, pauză, actualizare sau vreo setare ajustabilă. Portofelul proprietarului primește partea sa din taxă și comisioanele de lichiditate ale poziției blocate.

Pentru dezvoltatori

QBT.bind și QubitHook.bindArena rulează o singură dată, din inițializator, în tranzacția de lansare. Ignition.ignite rulează o singură dată, din fabrica de implementare. Fiecare setare este o constantă.

Lichiditate

Toate cele 500 de milioane de QBT destinate poolului au intrat ca o singură poziție, emisă direct către VaultKeeper, care poate doar să trimită proprietarului comisioanele acelei poziții. Până la plasarea acelei benzi, hookul a refuzat orice alt depozit și orice tranzacție.

Pentru dezvoltatori

beforeAddLiquidity admite, doar în blocul de deschidere, o singură bandă de la MIN_TICK la OPEN_TICK, cu cel puțin BAND_LIQUIDITY; după ea, depunerile sunt deschise tuturor. VaultKeeper.collectFees(tokenId) este singura funcție a contractului.

Testare și securitate

67Teste Foundry pe un fork de mainnet, toate trecute la rularea din 20 octombrie 2026
9.989.210Gas pentru cel mai scump apel de decontare, douăsprezece runde cu câte șase câștigători susținuți prin staking, sub limita de 16.777.216 a unei tranzacții
PrimaDepunere, cea aprobată de platforma de lansare după ce a reluat întreaga lansare pe un fork

O revizuire adversarială separată a găsit o singură problemă de severitate scăzută: o dezvăluire returna garanția printr-un transfer direct, așa că un contract-miner care nu putea primi ETH rămânea blocat. Acum, dacă transferul nu reușește, rambursarea trece într-un sold pe care minerul îl retrage. Singura ei notă informativă, că cel care deschide o rundă alege blocul a cărui valoare aleatoare o inițializează, este declarată în contract: toți minerii primesc aceleași probleme timp de până la douăzeci de ore, așa că nu se câștigă niciun avans.

Măsurat pe un fork de mainnet pe 20 octombrie 2026 (test/Gas.t.sol), cu excepția lansării, care este tranzacția de pe mainnet.
OperațiuneGas
Cumpărare de QBT cu 0,1 ETH205.042
Vânzarea unei părți dintr-o deținere218.337
Deschiderea unei runde100.530
Sigilarea unui răspuns81.795
Dezvăluire Max-Cut, 256 de noduri344.530
Dezvăluire Max-Cut, 4.096 de noduri2.888.063
Dezvăluire chimie, 6 qubiți612.336
Dezvăluire chimie, 8 qubiți1.866.930
Staking în sprijinul unui miner154.455
Tranzacția de lansare pe mainnet12.334.928

Limite, spuse direct

  1. Lanțul nu poate deosebi un calculator cuantic de un laptop. Tipul de solver este declarația minerului, iar la dimensiunile pe care le poate verifica Ethereum, astăzi se așteaptă ca algoritmii clasici să câștige.
  2. O persoană poate înscrie mai multe răspunsuri diferite. Acestea coboară un alt miner în clasament doar dacă obțin un scor mai mare decât oricare dintre răspunsurile lui.
  3. Cel care deschide o rundă alege blocul a cărui valoare aleatoare o inițializează. Asta nu oferă niciun avans, pentru că toți primesc aceleași probleme timp de până la douăzeci de ore.
  4. Aplicația Uniswap nu poate ruta acest pool. Funcțiile de cumpărare și vânzare ale tokenului, alte routere și boții pot face acest lucru.
  5. Rundele se decontează doar când cineva apelează settle. Un apel închide cel mult douăsprezece runde, așa că rundele restante pot fi închise oricând cu un cost limitat în gas.

Starea on-chain

Date citite de pe Ethereum mainnet pe 20 octombrie 2026, la blocul 26.234.001

  • Fuseseră deschise patru runde, câte una pe zi începând cu 17 octombrie 2026, cu 28 de răspunsuri sigilate în total.
  • Fiecare dintre cele trei runde decontate a clasat răspunsuri pe ambele probleme.
  • Graful avea încă 256 de noduri, iar circuitul 6 qubiți: dificultatea nu se modificase.

Contracte

Contractele de pe Ethereum mainnet
ContractAdresăSursă verificată

QBTToken ERC-20 cu cumpărare și vânzare

0x0E2D39c62dd3A3BDc05D1d151Ff92fC5C9dF90A7

QubitHookHook Uniswap v4

0xf7EAdEbA2Eba60831ccD95E83802c6857EdB28CC

ArenaRunde, clasament, emisiune, staking

0x4F0fEf54dC12b7F0500311736B4F191a3443EC47

CutEvaluator Max-Cut

0x72B0612Aeb59B72b2BcF83713514445e0c664f0e

ChemSimulator și evaluator de circuit

0x653C9280B72F2816DC1221a2A7A5021A5F7B0955

IgnitionInițializarea lansării

0x123dc730bA027F3032ef0D2467dedd3e54963ae3

VaultKeeperCustodia lichidității

0x1320445F7151E191b0e45876687F032b1452C0FA

Seif de comisioaneComisionul platformei, cod Programmable

0x8F8EC8343aB6f3a268cF0016019e9d185Fb40962

Toate cele șapte contracte scrise de mine sunt verificate pe Etherscan cu potrivire exactă. Compilator: solc 0.8.26, via IR, 1.000 de rulări ale optimizatorului, EVM țintă Cancun.

Depozitul de cod sursă: github.com/Qubitensor/qubitensor-contracts (se deschide într-o filă nouă)