Jak funguje RandomX, těžební algoritmus pro Monero?

5
(6)

RandomX je název těžebního algoritmu pro Monero, nejpopulárnější anonymní kryptoměnu, která má za cíl chránit svou vlastní síť před ASIC miningem, umožnit těžbu pouze na CPU a zároveň zajistit obrovskou bezpečnost svého protokolu a blockchainu.

RandomX je algoritmus Proof of Work (PoW) a byl navržen tak, aby nahradil starý monerovský algoritmus CryptoNight.

Stejně jako jeho předchůdce byl i RandomX vytvořen jako bezpečný a defaultní algoritmus pro Monero. Nabízí vysokou úroveň kryptografie s důrazem na soukromí a anonymitu. Především byl ale navržen tak, aby byl odolný vůči těžbě pomocí ASICů. CryptoNight tuto schopnost již před nějakým časem ztratil a udržel se nad vodou jen díky několika aktualizacím. Tým Monero se však rozhodl vytvořit nový algoritmus od základů. Algoritmus, který využije to nejlepší z CryptoNight a vytvoří tak novou těžební základnu.

Výsledek? Těžební algoritmus, jaký tu ještě nebyl, a s velmi slibnou odolností vůči ASICům. Kromě toho došlo také ke zlepšení těžební kapacity pro CPU, což opět zlepšilo decentralizaci těžebního systému Monera.

RandomX je však mnohem víc než jen nějaký buzzword. Jedná se o ověřený a auditovaný algoritmus s velkým potenciálem růstu. A právě z těchto důvodů budeme věnovat prostor analýze RandomX a všem inovacím, které přinesl nejen do světa Monera, ale i do světa kryptoměn jako takových.

Původ RandomX

Jak jsme již zmínili, RandomX vznikl z potřeby projektu Monero (XMR) mít nový těžební algoritmus, který by odolal ASICům.

Připomeňme si, že v roce 2018 představily společnosti Baikal a Bitmain první ASIC pro CryptoNight, čímž definitivně prolomily ASIC rezistenci, kterou uvedený algoritmus představoval několik let. Pro obě společnosti to byl docela úspěch, zejména s ohledem na to, že CryptoNight nebyl v žádném případě jednoduchý algoritmus. Od počátku byl navržen tak, aby ASICům odolával.

Úspěch společností však nebyl dobře přijat Monero komunitou a dalšími blockchain komunitami, které CryptoNight používaly. V Monero komunitě nebyli ASIC mineři nikdy vnímáni v moc pozitivním světle.

Výrobní monopol ASICů a přístup subjektů s velkými finančními prostředky k nim nedává obyčejným lidem prakticky žádnou možnost profitovat z těžby. Síť pak zůstává centralizovaná v rukou několika málo osob. Jde o něco, co v praxi znamená selhání celé filozofie coinu.

V případě Monera se těžba obecně prováděla pomocí CPU a GPU, takže ASICy představovaly vážné centralizační a bezpečnostní riziko kvůli možnosti 51% útoku.

Monero proto začalo okamžitě reagovat a vyvíjet nové varianty CryptoNight, které by mohly negativně ovlivnit výkon ASICů. Některé z aktualizací byly nepochybně zlepšením, ale ASICy stále odolávaly. V tomto okamžiku bylo jasné, že CryptoNight prostě nestačí a Monero potřebuje nový algoritmus.

A tak se zrodil shitcoin Monero Classic poháněný těžaři s ASICy. Tento pokus však komunita vůbec nepřijala.

Dne 31. října 2018 však byl zahájen vývoj protokolu RandomX. Tento nový algoritmus by podle vývojářů Monera představoval radikální změnu v těžbě. Práce se nakonec vyplatila 5. května 2019, kdy byla oficiálně vydána první verze RandomX.

Algoritmus RandomX pro Monero vyvinuli vývojáři tevator, hyc, vielmetti, antanst a Schernykh a 30. listopadu 2019 byl úspěšně aktivován v Monero síti.

RandomX
Kalkulačka zisku z hashování měny Monero využívající náklady na elektřinu a hashovací výkon v starém protokolu CryptoNight (cryptocompare.com 03/2018)

Jak RandomX funguje?

Základní funkce RandomX je napsána již v jeho názvu: jeho základním principem je randomizace (náhodnost). Co to ale znamená? No, znamená to, že RandomX je navržen tak, aby vytvořil zcela náhodný “pracovní prostor” neboli scratchpad s velkou spotřebou paměti, a to pomocí pokročilých virtualizačních technik. Díky těmto třem pilířům je RandomX odolný vůči ASIC těžbě.

Ve skutečnosti je RandomX odolný nejen vůči ASIC, ale také vůči GPU, protože tyto čipy nemají potřebné instrukce pro provádění složitých operací RandomX. Výsledkem je, že RandomX se snaží být těžebním algoritmem pouze pro CPU, který nabízí nejvyšší možnou odolnost vůči jiným typům těžby. Na druhou stranu se snaží vyhnout velmi známým botnetům v Moneru, protože RandomX jejich implementaci téměř znemožňuje. Zejména v zařízeních s nízkou spotřebou energie, jako jsou chytré televizory nebo IoT zařízení (IoT).

Jak to ale RandomX všechno umožňuje? Pojďme se tedy podívat na technologie, které stojí za tímto novým algoritmem, trochu důkladněji.

Dva typy těžby pro dvě různá použití

RandomX má zejména dva režimy těžby. Každý z nich má velmi odlišné požadavky a výkon. Rychlý režim je nejvýkonnější a nejnáročnější na zdroje, vyžaduje alespoň 2 GB RAMky. Pokud však má operační systém dodatečnou podporu pro NUMA (Non-Uniform Memory Access), Huge Pages (stránkování paměti ve velkých blocích), procesory s velkým počtem jader a alespoň 2 GB RAMky na jedno jádro procesoru, výsledný výkon RandomX se výrazně zlepší. Celá tato paměť se totiž používá k vytvoření náhodného scratchpadu RandomX.

Druhým režimem je Lightweight Mode, který vyžaduje pouze 256 MB RAMky a byl navržen pro použití v ověřovacích uzlech Monera. Těžební výkon v tomto režimu je omezený a je až 6krát nižší než v rychlém režimu, takže zisky z těžby by byly při použití tohoto režimu spíše zanedbatelné.

V tomto bodě se objevuje první překážka pro ASIC. Je sice pravda, že ASICy mohou mít v současnosti velké množství RAMky (například Ethereum, které má obvykle 4 až 8 GB RAM), ale to tyto počítače poměrně prodražuje.

Za druhé, vzhledem k vysoké spotřebě výpočetního výkonu, je-li počítač infikován “cryptojackem” pro těžbu Monera, uživatel jej snadno identifikuje. A to je něco, co výrazně snižuje šance na úspěch botnetu.

Použitá kryptografie

Jestli jsme si na něco v rámci Monera zvykli, pak je to použití pokročilé kryptografie při jeho vývoji. V tomto případě není RandomX žádnou výjimkou. RandomX hojně využívá hashovací funkce Blake2b, generátor hesel Argon2d a symetrickou kryptografii AES. Výsledkem je výjimečná kryptografická kvalita protokolu RandomX.

Monero se však nespokojilo pouze s vlastní prací a rozhodlo se provést formální kryptografický audit bezpečnosti a implementace algoritmu RandomX. Celkem čtyři audity provedly společnosti Trail of Bits, X41 D-SEC, Kudelski Security a Quarkslab, přičemž všechny řídila OSTIF, organizace s dlouhou historií v oblasti kybernetické bezpečnosti a kryptografie.

Všechny audity již byly provedeny a jejich výsledky jsou slibné. Pokud se chcete o těchto auditech dozvědět více, najdete jejich výsledky na tomto odkazu.

Těžba Monera pomocí RandomX na Windowsu 10.

Proof of Work schéma

Schéma RandomX Proof of Work (PoW) je následující:

Nejprve se vygeneruje klíč (tzv. K key), který se vybere jako hash bloku v blockchainu. Tento blok se nazývá “Key block”. Pro optimální výkonnost těžby a ověřování by měl být klíč měněn každých 2048 bloků (přibližně 2,8 dne) a mezi změnou Key blocku a změnou K key by měla být prodleva 64 bloků (přibližně 2 hodiny). Toho lze dosáhnout změnou K key, když “blockHeight% 2048 == 64” (kde % je modul dělení) a výběrem Key blocku tak, aby “keyBlockHeight% 2048 == 0“.

V tomto okamžiku je vstupem H standardní hash blob s vybranou hodnotou nuncio (nonce).

Ačkoli to všechno může vypadat poměrně složitě, algoritmus RandomX jednoduše řečeno funguje tak, že jeho Proof of Work pracuje za dvou důležitých předpokladů:

  1. Potřebujete klíč (tzv. K key), který se musí měnit každých 2048 bloků. Tento klíč je nezbytný k tomu, aby RandomX mohl generovat platné hashe a bloky pro síť.
  2. K key se generuje pomocí dat z blockchainu a nakonec pomocí bezpečného systému generování klíčů.

Na druhou stranu algoritmus situaci poněkud komplikuje tím, že vyžaduje specifické podmínky realizace. Mezi tyto podmínky můžeme zařadit např.:

  • 64bitovou architekturu procesoru, která umožňuje zpracovávat velké množství dat a paměti.
  • Jednotku FPU (Floating Point Unit), která splňuje požadavky standardu IEEE 754. Pokud jednotka není kompatibilní, nelze údaje vygenerované algoritmem ověřit.
  • Podpora AES. Pokud je podpora zajištěna hardwarem s rozšířeními, jako je AES-NI, je výkon algoritmu mnohem lepší.
  • Spousta vyrovnávací paměti pro každý thread algoritmu. Alespoň 16 KB paměti L1, 256 KB L2 cache a 2 MB paměti L3.
  • Operační systém s podporou zpracování velkých paměťových stránek. Nezapomeňte, že RandomX využívá nejméně 2 GB paměti RAM a požadavky se mohou zvýšit v závislosti na konfiguraci!

RandomX VM

Vlastností, která pravděpodobně činí RandomX tak dobře odolným vůči ASICům (a která je jedinečnou vlastností tohoto algoritmu), je jeho virtuální stroj neboli VM (Virtual Machine).

RandomX provádí veškerou kryptografii a těžbu v rámci jednoduchého virtuálního stroje, jehož účelem je izolovat celý proces těžby do řady procesů, které jednají podle vlastních instrukcí a podle virtualizované architektury.

RandomX se tak snaží zvýšit složitost implementace ASIC řešení na dosud nevídanou úroveň. Zároveň se tím zjednodušuje implementace CPU, kterou lze podle potřeby upravovat. Tento virtuální stroj může provádět různé úkoly díky tomu, že může velmi snadno komunikovat s procesorem.

Úkolem tohoto virtuálního stroje je vytvořit potřebné prostředí pro provedení proof-of-work. K dosažení tohoto cíle VM vytvoří náhodný pracovní prostor (scratchpad v paměti), který je vysoce šifrovaný a plný entropie (náhodných dat, která budou později použita pro proof-of-work).

Jakmile jsou tyto podmínky vytvořeny, virtuální počítač obdrží pokyny k provádění těžebních programů. Každý z těchto programů je vytvořen pomocí náhodných dat z pracovního prostoru a výsledkem je nový, zcela jedinečný program.

Tento program použije všechny procesy povolené VM k provádění těžby, což znamená, že program může provádět pouze instrukce povolené VM (256 instrukcí a 20 registrů), nic víc. V tomto okamžiku je dění ve VM RandomX pro zbytek počítače prakticky neviditelné díky použití kryptografie v celém procesu.

Tento proces vytváření náhodných programů pro provádění těžby se nazývá Dynamic Proof of Work a je to systém, který RandomX používá právě v tomto bodě. Tento systém lze definovat následujícím způsobem:

  1. Nejprve se vygeneruje náhodný program. To je to, co VM dělá, když spouští scratchpad a všechny programové prvky v prvním pracovním cyklu.
  2. Pak má VM na starosti funkci překladače mezi CPU a náhodnými programy. Náhodné programy mohou používat pouze instrukce z VM, ale VM tyto akce překládá do strojového kódu srozumitelného pro CPU. Tímto způsobem procesor reaguje na akce a VM dostává odpovědi. Protože instrukce používají kryptografii, je jejich optimalizace velmi nákladná.
  3. Nakonec se program spustí a v tomto okamžiku VM umožní přístup k CPU a jeho funkcím, aniž by ztratil spojení s náhodným programem. Tento bod nastává za velmi specifických a zvláštních podmínek, které jsou již přímo naprogramovány v algoritmu RandomX.

VM RandomX je bezpochyby nejsložitějším a nejhůře replikovatelným prvkem, což z něj činí nejlepší pojistku proti ASIC miningu.

Výhody a nevýhody algoritmu

Výhody

  • Jedná se o algoritmus s jasným bezpečnostním záměrem. Díky použití algoritmů AES, Blake2 a Argon2 je RandomX velmi bezpečný.
  • Protože je navržen pro CPU a má struktury odolné vůči ASIC a GPU, může tento algoritmus lépe využívat CPU hardware. RandomX tak nabízí lepší výnosy pro CPU těžaře, kteří mohou i nadále více vydělávat na těžbě Monera.
  • Odolnost vůči ASIC umožňuje blockchainům využívajícím RandomX větší decentralizaci na úrovni těžby.
  • RandomX je algoritmus, který prošel několika oficiálními audity.

Nevýhody

  • Je složitý. Použití VM a náhodnosti procesů činí tento algoritmus mnohem složitějším na vývoj a debugování.
  • Používání VM otevírá dveře postranním útokům, které lze za určitých podmínek využít k prolomení systému a zneužití zvýšení výkonu. Použití kryptografického kódu ve scratchpadu však tento útok velmi ztěžuje, a proto se mnozí domnívají, že je prakticky nemožný.
  • Zařízení s 32bitovým procesorem nemohou algoritmus správně využívat.

Klikni na hvězdičky pro hodnocení!

Průměrné hodnocení 5 / 5. Počet hlasujících 6

Buď první kdo článek ohodnotí

Přihlásit k odběru
Upozornit na
guest
1 Komentář
nejstarší
Nejnovější S nejvíce hlasy
Zpětná vazba na text v článku
Zobrazit všechny komentáře
Fantom

Díky za technický článek o mé nejoblíbenější kryptoměně 🙂
Zvažovali jste v redakci nějaký podobný článek o BTC security budget/miners incentives?
Já bych ho velice uvítal a dost možná i dost ostatních čtenářů…. .

spot_img