Aptos mainnet vil snart aktivere 🔒 konfidensielle ressurser 💸!! altså krypterte saldoer og transaksjonsbeløp, 🔐 men med offentlig synlige 🌍 avsender- og mottakeradresser! (Ett skritt av gangen, folkens...) Slik fungerer de! 🤓👇
Aptos konfidensielle eiendeler bygger videre på og utvider tidligere arbeid. Vi krypterer saldoer on-chain ved hjelp av Twisted ElGamal, som PGC (). Dette stemmer godt sammen med Bulletproofs for å bevise at en kryptert saldo ble trukket riktig etter en konfidensiell sending/uttak.
Eller, som jeg ofte sier [og blir gjort narr av nå]... "Se bloggen min!"
*Bedrift 1:* I motsetning til PGC og Solana, er våre Twisted ElGamal-chiffertekster _aggressively-chunked_ for å sikre superrask dekryptering samtidig som vi håndterer balanser og mengder på ~256 biter. Vi kaller dette *chunk'n'twisted ElGamal.* For det det er verdt, Aptos trenger bare 128-bits balanser og 64-bits mengder.
For Aptos garanterer chunking at maksimal diskret log (DL)-instans som må løses under dekryptering er 32-bit, i verste fall (og i gjennomsnitt mye mindre). => lett løselig i 2^16 elliptiske kurveaddisjoner ved hjelp av enkle algoritmer som baby-step giant-step (BSGS) 👇
*Bedrift 2:* Vi øker hastigheten på BSGS for vårt valg av Ristretto255 elliptisk kurve via batch-komprimeringer. Vi reduserer også den forhåndsberegnede tabellstørrelsen med 4x (=> reduserer konfidensielle dapps' SDK-størrelse og latens) Vi kaller denne nye algoritmen *trunkert BSGS-k (TBSGS-k).*
Jeg har spilt på denne algoritmen før: ... men unnlot å understreke *hvorfor*: TBSGS-k er deterministisk => enklere å implementere og teste. TBSGS-k er bare ~2 ganger tregere (10,6 ms mot 4,8 ms) enn den mer komplekse [BL12]-algoritmen, og har bare 2 ganger større tabeller.
alin.apt
alin.apt25. feb. 2026
If you're trying to compute discrete logs faster on Ristretto255, which has slow point compression, here's a faster (and smaller-memory footprint) variant of the Baby-Step Giant-Step algorithm I and @claudeai came up with 👇
*Bedrift 3:* Når revisjon er aktivert, opprettholder vi en beviselig korrekt kryptering av hver brukers (tilgjengelige) saldo under revisorens krypteringsnøkkel (EK). Dette utelukker at revisorer kan skanne brukernes TXN-er for å rekonstruere saldoen deres. Nøkkel: det muliggjør auditor EK-rotasjoner 👌
*Ferdighet 4:* I Aptos er brukerens _signerende_ nøkkelrotasjon en sentral sikkerhetsfunksjon. Så: vi designet også konfidensielle ressurser for å støtte brukerens *dekryptering* nøkkelrotasjon! Foreløpig overlates nøkkelhåndteringspolicyer til applikasjoner/lommebøker (kjente siste ord 🤞).
Den gode nyheten: Nøkkelløse, konfidensielle dapps kan trygt gjenbruke dem 🌶️ som dekrypteringsnøkkel! () ==> ingen ekstra nøkkelhåndteringsbyrde introdusert for slike applikasjoner ==> enkleste måten å bygge en konfidensiell dapp på er som en nøkkelfri dapp; Ingen lommebok [support] nødvendig!
*Bedrift 5:* Å implementere krypto(*graf*) som sikrer ekte brukermidler er skremmende. For å minimere feil (🤞), bruker vi en i stor grad oversett metodikk for å trygt designe og komponere Sigma-protokoller: *homomorfirammeverket*, som jeg oppdaget i @danboneh sin bok 🙏
*Bedrift 6:* Den første produksjonsklare konfidensielle ressursimplementeringen i Move. Koden er for øyeblikket privat mens den gjennomgår en revisjon, men vil bli offentliggjort snart. Her er en smakebit på hvor enkel en konfidensiell overføring kan være 👇
Også, fordi jeg ikke kan hjelpe det, her er en del av vårt Sigma-protokoll-homomorfirammeverk implementert i Move 😍
*Bedrift 7:* Full kryptografisk spesifikasjon med sikkerhetsbevis. (Kanskje vi kan vibe det i @leanprover?) Kommer snart, med de krydrede detaljene, i en eprint ved siden av deg 👇
Til slutt, kreditt der kreditt er fortjent: Aptos konfidensielle eiendeler bygger videre på og utvider ideer introdusert i tidligere arbeid 👇 1. Zether (): faste kontomodellens "frontløpende" problem via ventende saldoer
2. PGC (): foreslo Twisted ElGamal + Bulletproofs som et enklere alternativ til \Sigma-kuler. Dette reduserer implementeringskompleksiteten drastisk: vi trenger bare å fokusere på å designe våre Sigma-protokoller riktig! Sikker sammensetning argumenteres nedenfor 👇
3. Solana (): tillot 48-bits overførte beløp ved å dele den ventende saldoen i en "høy" 32-bits bit og en "lav" 16-bit chunk. Vi tillater større beløp ved å bruke et høyere antall biter og ved å i tillegg dele den tilgjengelige saldoen.
Sist, men ikke minst, vil jeg takke @mstrakastrak og folkene hos @distributedlab, som hjalp til med å designe den første versjonen av den konfidensielle asset-protokollen og implementere den i Move og TypeScript 🖖 Følg med på vår felles artikkel som snart kommer ut!
68