Populární témata
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.

italo
programátor.
Trochu všeho v @JupiterExchange. Dříve: Založil https://t.co/AArLLU0CpS (ACQ), @nodejs hlavní člen.
Binární verze Metis před verzí 7 je nyní zastaralá.

Jupiter DevRelPřed 14 h
🚨 Metis binární verze před verzí 7 byla zastaralá a už nefunguje.
Pokud jsi ještě neupgradoval na v7+, udělej to teď.
Upgrade:
Binární klíč:
Otázky:

288
🧠

Dean 利迪恩 (⚛️,🐱) | sbpf/acc23. 3. 11:38
Je jasné, proč Quasar poráží Anchor, ale hodně lidí se také ptá: "Proč Quasar poráží Pinocchia v některých CU benchmarkech?" Osobně se mi velmi nelíbí způsob formulace otázky, protože se zdá, že vyvozuje nesprávný závěr.
Rozhodně @0x_febo zanedbal optimalizaci mnoha věcí a my jsme ho předběhli. Právě naopak! Pinocchio, a nyní i novější verze Solana SDK, jsou ve skutečnosti *tak* optimální, že jediný způsob, jak jsme našli výraznější snížení CU, je zavedení dalšího kontextu ve formě frameworku.
Porovnávat knihovnu s frameworkem není srovnání jablka s jablky. Existuje mnoho programově specifických optimalizací, které je snadné implementovat, když máte dostatek kontextu, ale extrémně obtížné je zobecnit do programově nezávislé knihovny. Dovolte mi vysvětlit jeden takový případ:
V roce 2024 @cavemanloverboy představila solana-nostd-entrypoint a solana-nostd-invoke. Šlo o první vážný pokus řešit některé z nejhorších kódů Solana SDK, které spotřebovával každý onchain program. V této bedně Cavey představil techniku zvanou "nodup" entrypoint, kdy místo spálení CU pro správu duplicitních účtů jednoduše okamžitě vyhodíte chybu, jakmile na nějakou narazíte. Tato technika dobře ladí s dalšími optimalizacemi, ke kterým se později dostanu.
Bohužel, vzhledem k původnímu způsobu, jakým byl vstupní bod Solany navržen jako globální pro všechny instrukce v programu a vyžadující úplné zpracování mnoha vstupů proměnné délky pro dosažení situačního povědomí, stačí, aby jedna instrukce ve vašem programu měla potenciálně duplicitní účet pro celý program, aby nebylo možné tuto techniku využít.
Loni jsem navrhl Febo, Cavey a @alessandrod: Co kdybychom kromě toho, že registr 1 ukazuje na začátek serializované vstupní oblasti, také instancovali VM s ukazatelem na první bajt našich instrukčních dat v registru 2? To by nám umožnilo vytvářet vstupní body pro jednotlivé instrukce, což by nám umožnilo bezpečně a efektivně využívat techniky jako nodup.
@realbuffalojoe převzali myšlenku, napsali implementaci SIMD a agave a poslali spoustu šílených PR do našich nástrojů pro kompatibilitu mainnetů, aby zajistili, že to bude bezpečné pro všechny aktuálně nasazené programy a clustery. Funkce je nyní aktivní na testnetu a devnetu a má být aktivována na mainnetu během příštího týdne nebo tak. Tehdy Quasar oficiálně dosahuje kompatibility s mainnetem.
Díky naší společné práci se objevila nová optimalizace: Při předpokladu, že máte okamžitý přístup k diskriminátoru instrukcí přes r2, je nyní možné zjistit:
- přesně kolik účtů vaše výuka očekává, a
- zda budou podepisovatelní, měnité, spustitelné nebo duplikátní
Díky tomu, jak jsou příznaky účtů kódovány v souvislé čtyřbajtové sekvenci, místo abychom museli provádět čtyři samostatné kontroly (is_duplicate(), is_signer(), is_mutable(), is_executable()), můžeme tyto hodnoty skutečně složit do jednoho porovnání u16 nebo u32. To znamená, že vstupní bod r2 může bezpečně a optimálně využívat nodup; Obvykle nám také zdarma dávají šeky signer/mutable/executable!
Stále jsme na našem "unrelease" dni nula, kdy se snažíme stabilizovat API a vydat naši první oficiální verzi, ale až skončíme, určitě zveřejníme pořádný výzkum o některých technikách, které jsme během cesty objevili. Jedno je jisté: Umožnění efektivního programového rámce Solany nebylo jen @blueshift úsilím. Stojíme na ramenou obrů. 🙏
33
Top
Hodnocení
Oblíbené
