на , планирано за активиране на , е следващата голяма мрежа надстройка на Ethereum след Pectra, и това е още една мащабна стъпка, предприета от крипто гиганта. Фусака твърд форк December 3, 2025 Фусака твърд форк Подобряване на качеството на услугите, на качеството на услугите, на качеството на услугите, на качеството на услугите и на качеството на услугите. ( Подобряване на качеството на съхранението на хранителни продукти, като се намали количеството на продуктите, които се консумират, като се намали количеството на продуктите, които се консумират, като се намали количеството на продуктите, които се консумират, като се намали количеството на продуктите, които се консумират ( ), a cap on transaction gas limits ( ), and updated ModExp gas costs ( Също така се препоръчва да се използват антибиотици, за да се предотврати възпаление на лигавицата ( ) и поддържа стабилността на плащанията на БЛОБ с граници, свързани с разходите за изпълнение ( Допълнителни подобрения включват ограничаване на размера на блока в формат RLP ( , добавяне на нов opcode CLZ за по-бързи битови операции ( ), and introducing a secp256r1 precompile ( за по-добра съвместимост със съвременните криптографски и хардуерни ключове за сигурност. EIP-7594 EIP-7823 EIP-7825 EIP-7883 EIP-7917 EIP-7918 EIP-7934 EIP-7939 EIP-7951 Точно както Pectra комбинира "Прага" и "Electra", Fusaka е комбинирано име на и Той представлява следващия скок на Ethereum към високо мащабируемо, богато на данни бъдеще, където Layer 2 rollups могат да работят по-евтино и по-бързо. Fulu (execution layer) Osaka (consensus layer) В този блог ще разделим основните характеристики на твърдия форк Fusaka, ще обясним как работи PeerDAS на практика и ще преминем през реалните мрежови изисквания за домашни заложници, свръхнодове и пълни възли - подкрепени от данни на devnet. Key Changes Introduced In Fusaka Hard Fork Ключови промени, въведени във Fusaka Hard Fork : PeerDAS - Peer Data Availability Sampling EIP-7594 Епизод 7594 Ethereum се нуждаеше от това предложение, защото мрежата иска да осигури по-голяма наличност на данни за потребителите и особено за сглобяване, но с текущото design, every node still has to download too much blob data just to check that it was actually published. This creates a scaling problem because if all nodes must download everything, the network’s bandwidth and hardware requirements go up, and decentralization can suffer. To fix this, Ethereum needs a way for nodes to confirm that data is available without downloading all of it. Data Availability Sampling (DAS) solves this by letting nodes check only small random pieces of the data. But Ethereum also needs a DAS method that fits well with the existing gossip network and doesn’t add heavy computation to block producers. PeerDAS was created to meet these needs and safely increase blob throughput while keeping node requirements low. EIP-4844 PeerDAS is a networking system that lets nodes download only small pieces of blob data to check that the full data was actually published. Instead of downloading everything, nodes use the normal gossip network to share data, discover which peers hold certain parts, and request just the small samples they need. The main idea is that by downloading only tiny, random parts of the blob, nodes can still be confident that the entire blob exists. For example, instead of downloading a full 256 KB blob, a node might download only about 1/8 of it—but because many nodes sample different parts, any missing data would quickly be noticed. За да се извърши вземането на проби, PeerDAS разширява всеки блок от Използване на основен тип кодиране. — подобно на начина, по който можете да завършите пъзел, дори ако няколко парчета са загубени. Блобът се превръща в „ред“, който съдържа първоначалните данни плюс някои допълнително кодирани данни, които позволяват да бъде възстановен по-късно. Този ред след това се разделя на много малки парчета, наречени клетки, които са най-малките проверени единици, свързани с ангажимент на KZG. Всички редове след това се реорганизират в „колони“, където всяка колона съдържа клетката в същото положение от всеки ред. Всяка колона се разпределя към определена подмрежа. Възелите са отговорни за съхраняването на определени колони въз основа на техния идентификатор на възел и за вземането на проби от няколко колони от всеки слот на връстници. EIP-4844 Erasure coding is a technique that adds extra redundant data so that the original data can be recovered even if some pieces are missing Additionally, the EIP introduces an important rule: Този лимит трябва да се налага по време на валидирането на транзакциите, слуховете, създаването на блокове и обработката на блокове.Това помага да се намалят екстремните случаи, в които една транзакция претоварва системата. no transaction can contain more than 6 blobs Плевен добавя нещо, което се нарича Доказателство за клетка KZG показва, че ангажиментът за KZG наистина съответства на една конкретна клетка (една малка част) на блок. Това позволява на възел да изтегли само клетките, които иска да вземе проба, вместо пълния блок, като същевременно гарантира целостта на данните. cell KZG proofs Но генерирането на всички тези клетъчни доказателства е скъпо. Производителят на блокове ще трябва да ги изчислява отново и отново за много блокове, което е твърде бавно. to generate all the cell proofs ahead of time and include them in the transaction wrapper. the blob transaction sender Поради това, транзакционната приказка (PooledTransactions) сега използва модифицирана опаковка: rlp([tx_payload_body, wrapper_version, blobs, commitments, cell_proofs]) Във вътрешността на новия мост, е само списък, който съдържа всяко доказателство за всяка клетка на всеки блок (например: Другите полета - , и - са точно същите като в EIP-4844.Разликата е, че старото поле "доказателства" е премахнато и заменено с това ново списък, и ново поле, наречено is added to show which wrapper format is being used. cell_proofs [cell_proof_0, cell_proof_1, ...] tx_payload_body blobs commitments cell_proofs wrapper_version на е един байт, и в това предложение винаги се поставя на на field contains all of the cell proofs for each blob, including the proofs for the extra extension cells created during erasure coding. Because of the erasure coding, each blob corresponds to Дори ако списъкът съдържа доказателства за клетките с разширение, самите блокове все още се изпращат в тяхната нормална (неразширена) форма. Блобът включва само своята оригинална половина - получаващият възел може да изчисли половината от разширяването сам, така че няма нужда да изпраща ненужни данни. wrapper_version 1 cell_proofs CELLS_PER_EXT_BLOB По-скоро официално is the proof for the j-th cell of the i-th blob after running , който произвежда както оригиналните, така и разширените клетки. cell_proofs[i * CELLS_PER_EXT_BLOB + j] compute_cells(blobs[i]) Когато един възел получи тази опаковка, той трябва да валидира транзакцията и да провери, че всичко е подредено правилно.Той трябва да провери, че броят на версиите на хеш, блогове и ангажименти всички съвпадат.Той също трябва да потвърди, че Съдържа точно Задължително е да се отбележи, че всеки продукт трябва да се съхранява в съответствие с изискванията на стандарта ( Накрая, възелът трябва да провери дали всеки ангажимент действително съвпада с блоба и неговите доказателства. , и след това проверява всички клетъчни доказателства - е позволено проверка на партиди, за да се направи това по-бързо. cell_proofs CELLS_PER_EXT_BLOB * number_of_blobs kzg_to_versioned_hash(commitments[i]) == tx_payload_body.blob_versioned_hashes[i] compute_cells Представете си, че един блок е разделен на след изтриване на кода ( Оригиналният блок съдържа , и получаващият възел ще изчисли липсващото Изпращачът трябва да включва в . Example 8 cells CELLS_PER_EXT_BLOB = 8 4 cells 4 extension cells all 8 proofs cell_proofs So for 1 blob, the transaction wrapper contains: (only original 4 cells) blobs = [blob_0] commitments = [commitment_0] (proof for each of the 8 cells) cell_proofs = [proof_0, proof_1, …, proof_7] Когато възелът взема проби, той може да поиска само клетка 2 или клетка 5 и да ги провери незабавно, като използва съответстващите доказателства, без да изтегля пълния блок. PeerDAS позволява на Ethereum да увеличи наличността на данните, без възелите да работят по-трудно. В бъдеще това може дори да доведе до , which would let Ethereum scale more. The system works well because every node has many peers. So if one peer does not give the required data, the node can simply ask another peer. This creates natural redundancy and improves security. Nodes can also choose to store данни, отколкото е необходимо, което допълнително укрепва мрежата – дори без никакви промени в протокола. 1/8 of the total blob data 1/16 or 1/32 more Validators have a bit more responsibility than normal full nodes. Since validators already run stronger hardware, PeerDAS gives them a data-custody load that matches the total number of validators. This ensures that a stable group of nodes is always available to store and share more data, which makes the network more reliable. In short, if there are 900,000 validators, each validator might be assigned a tiny portion of the total blob data to store and serve. Because validators have better machines, the network can trust them to keep this data available. PeerDAS uses Ако възлите вземат извадки от пълни редове (цели блокове), те ще трябва да създадат допълнителни "блокове за разширение", които естествено не съществуват, което ще забави производителите на блокове. Imagine a blob is a 4×4 grid of cells. Row sampling would mean taking all 4 cells from one row, but some extension rows aren’t ready yet, so the block producer would have to generate them on the spot. Column sampling means taking one cell from each row (a column). The extra cells needed for reconstruction can be prepared ahead of time, so nodes can verify the data without slowing down block production. column sampling Example: Работи изцяло с , така че не нарушава нищо вече на Ethereum. Всички тестове и подробни правила са в спецификациите за консенсус и изпълнение. EIP-7594 EIP-4844 Основният риск за сигурността във всяка DAS система е "атака за задържане на данни", където производител на блок се преструва, че данните са налични, но всъщност крие част от него. PeerDAS предотвратява това чрез използване на случайно вземане на проби: възли проверяват случайни части от данните. Колкото повече възли се вземат проби, толкова по-трудно е за нападателя да мами. EIP дори предоставя формула за изчисляване на вероятността такава атака да успее, въз основа на общия брой възли (n), общи проби (m) и проби на възел (k). Таблицата показва, че шансовете за успешна атака падат до незначително ниво, поради което PeerDAS се счита за безопасен срещу атаки, задържащи данни. . Блогът : Set upper bounds for MODEXP EIP-7823 EIP-7823 This proposal is needed because the current MODEXP precompile in Ethereum has caused many consensus bugs over the years. Most of these bugs happened because MODEXP allows extremely large and unrealistic input sizes, which creates endless, unusual cases that clients must handle. Since every node has to process whatever input a transaction provides, having no upper limit makes MODEXP harder to test, easier to break, and more likely to behave differently across different clients. Very large inputs also make the gas-cost formula hard to predict, because it is difficult to price something when its size can grow without limit. These problems also make it difficult to replace MODEXP with future EVM-level code through tools like EVMMAX, because without fixed limits, developers cannot create safe and optimized execution paths. To reduce these issues and make Ethereum more stable, this proposal adds strict maximum sizes to MODEXP inputs so that the precompile becomes safer, easier to test, and more predictable. EIP-7823 introduces a simple rule: all three length fields used by MODEXP—the size of the BASE, the EXPONENT, and the MODULUS—must be , което е 1024 байта. MODEXP входовете следват формата , as defined in , така че този EIP ограничава само стойностите на дължината. Ако всяка дължина надвишава 1024 байта, предварителната компилация незабавно спира, връща грешка и изгаря целия газ. Например, ако някой се опита да предостави BASE, който е 2000 байта дълъг, обаждането ще се провали, преди да се случи някаква работа. Тези ограничения все още поддържат всички реални случаи на използване. Проверката на RSA обикновено използва ключови размери като 1024, 2048 или 4096 бита, всички добре в рамките на новия лимит. 8192 bits or less <len(BASE)> <len(EXPONENT)> <len(MODULUS)> <BASE> <EXPONENT> <MODULUS> EIP-198 Ако MODEXP някога бъде пренаписан в EVM код с помощта на EVMMAX, разработчиците могат да добавят оптимизирани пътища за общи размери на вход като 256 бита, 381 бита или 2048 бита и да използват по-бавна пауза за по-редки случаи. С фиксирани максимални размери разработчиците могат дори да добавят специално управление за много общи модулни стойности. За да потвърдят, че тази промяна няма да наруши минали транзакции, авторите анализирали цялото използване на MODEXP от блок 5,472,266 (на 20 април 2018 г.) до блок 21,550,926 (на 4 януари 2025 г.). , far below the new 1024-byte limit. Most real calls used small lengths like 32 bytes, 128 bytes, or 256 bytes. There were a few invalid or broken calls, such as empty inputs, inputs filled with repeating bytes like , и един изключително голям, но невалиден вход. Те ще се държат по същия начин под новите граници, защото те вече са невалидни. 513 bytes 0x9e5faafc От гледна точка на сигурността, намаляването на разрешените размери на входовете не създава нови рискове. Вместо това той премахва ненужните екстремни случаи, които преди това са причинявали грешки и несъответствия между клиентите. Чрез ограничаване на входовете на MODEXP до реалистични размери, този EIP прави системата по-предсказуема, намалява странните случаи на ъгъл и намалява вероятността от грешки между различни внедрения. Тези ограничения също помагат да се подготви системата за по-гладък преход, ако бъдещите надстройки като EVMMAX въведат оптимизирани пътища за изпълнение. : Transaction Gas Limit Cap EIP-7825 EIP-7825 Ethereum се нуждае от това предложение, защото днес една транзакция може да използва почти целия блок газ лимит. Това създава няколко проблема: една транзакция може да консумира по-голямата част от ресурсите на блока и да причини забавяне в стила на DoS, големи газови операции могат да увеличат състоянието на Ethereum твърде бързо, а валидирането на блока става по-бавно и по-трудно за възлите да следват. Ако един потребител подаде огромна транзакция, която използва почти целия газ (например транзакция, която консумира 38 милиона газове в 40 милиона газови блока), тогава други нормални транзакции не могат да се впишат в блока, а всеки възел трябва да прекарва допълнително време, за да провери блока. Това заплашва стабилността на мрежата и децентра EIP-7825 въвежда твърдо правило, че никоя транзакция не може да използва повече от . This becomes a protocol-level cap, meaning it applies everywhere: when a user sends a transaction, when the txpool checks it, and when validators include it in a block. If someone sends a transaction with a gasLimit higher than this number, the client must reject it immediately with an error such as Тази граница е напълно независима от лимита на блоковите газове.Например, дори ако лимитът на блоковите газове е 40 милиона, никоя транзакция не може да използва повече от 16,7 милиона газове.Целта е да се гарантира, че много транзакции могат да се впишат във всеки блок, вместо да се позволи една транзакция да доминира в целия блок. 16,777,216 gas (2²⁴) MAX_GAS_LIMIT_EXCEED MAX_GAS_LIMIT_EXCEED За да разберете това по-добре, представете си, че един блок има място за 40 милиона газ. Без тази капачка, някой би могъл да изпрати една транзакция, която консумира 35-40 милиона газ. Тази транзакция би монополизирала блока и нямаше да остави място за други, подобно на едно лице, което наема цял автобус, така че никой друг да не може да се качи. The proposal also adds specific requirements to how clients validate transactions. The txpool must refuse a transaction if its gasLimit is above 16,777,216, meaning such a transaction never even enters the queue. During block validation, if a block contains a transaction that exceeds the cap, the block itself must be rejected. Internally, client implementations will cap the GAS_LIMIT parameter for all transactions at this value. Номерът Избрана е, защото е чиста сила на две граници, което я прави по-лесна за прилагане, и все още е достатъчно голяма, за да се справят с повечето транзакции в реалния свят, като например внедряването на интелигентни договори, сложни DeFi взаимодействия или многоетапни договори. 16,777,216 (2²⁴) Повечето потребители никога няма да забележат промяната, защото почти всички съществуващи транзакции вече консумират много по-малко от 16 милиона газ. Валидаторите и блокостроителите все още могат да създават блокове, които надвишават 16,7 милиона общия газ, стига всяка отделна транзакция да спазва новата граница. Единствените засегнати транзакции са изключително големи, които преди това са се опитали да използват повече от новия лимит. Тези транзакции сега трябва да бъдат разделени на множество по-малки операции – подобно на разбиването на много голям файл, качен на два по-малки. Тази промяна технически не е съвместима с обратната линия за тези редки екстремни транзакции, но броят на засегнатите потребители се очаква да бъде много малък. Що се отнася до сигурността, газовата капачка прави Ethereum по-устойчив на газови DoS атаки, защото атакуващите не могат да принудят валидаторите да се справят с изключително големи транзакции повече.Той също така помага да се запази времето за проверка на блоковете предвидимо, така че възлите да могат да останат в синхрон по-лесно. Като цяло, EIP-7825 е предназначен да укрепи мрежата срещу злоупотреби, да запази изискванията на възлите разумни, да подобри справедливостта в използването на блоковото пространство и да гарантира, че веригата остава бърза и стабилна, тъй като ограниченията на газа продължават да се увеличават с течение на времето. : ModExp Gas Cost Increase EIP-7883 EIP-7883 Причината Ethereum се нуждае от това предложение е, че ModExp предварително компилиране (използвани за модулна експоненциация) е бил В някои ситуации операциите на ModExp изискват много повече изчисления, отколкото потребителите в момента плащат.Това несъответствие създава риск: ако сложните повиквания на ModExp останат твърде евтини, те могат да станат and make it harder for the network to safely increase the block gas limit, since block producers may be forced to process extremely heavy operations for very little cost. To fix this, Ethereum needs to adjust the ModExp pricing formula so that the gas used properly reflects the real work done by the client. That is why EIP-7883 introduces new rules that increase the minimum cost, raise the general cost, and make operations with large inputs (especially exponents, base, or modulus over 32 bytes) more expensive, so the gas pricing matches the true computation required. underpriced bottleneck Това предложение променя алгоритъма за ценообразуване на ModExp, първоначално дефиниран в EIP-2565 чрез увеличаване на разходите по няколко важни начина. се увеличава от 200 до 500, а общата формула вече не се дели с 3, което означава, че общата цена ефективно се превръща в Например, ако повикването на ModExp по-рано струва 1200 газа, то сега ще струва около 3600 газа по новата формула. се удвоява чрез увеличаване на множителя от 8 на 16.За да се илюстрира това: ако дължината на експонента е 40 байта, EIP-2565 ще добави to the iteration count, while EIP-7883 now uses , което го прави два пъти по-скъпо. Трето, цените сега приемат За да се постигне това, е необходимо да се изчислят стойностите, които са по-високи от 32 байта.Например, ако модулът е 64 байта, новото правило прилага двойна сложност ( Заедно тези промени гарантират, че малките операции на ModExp плащат справедлива минимална такса и големите, тежки операции скалират разходите си правилно с размера. minimum gas cost three times higher exponents larger than 32 bytes 8 × (40 − 32) = 64 16 × (40 − 32) = 128 minimum base/modulus size of 32 bytes 2 × words² Предложението определя нова функция за изчисляване на газове, която актуализира правилата за сложност и преброяване на iterations.The множествена сложност сега използва стойност по подразбиране от 16 за дължини на базата/модула до 32 байта, а за по-големи входове преминава към по-тежката формула , където "слова" е броят на 8-байтовите парчета. Броят на итерациите също се актуализира, така че експонентите с 32 байта или по-малки използват дължината на бита си, за да определят сложността, но експонентите, по-големи от 32 байта, добавят много по-голямо наказание. Това гарантира, че много големи експоненти, които са изчислително скъпи на практика, сега имат много по-високи разходи за газ. Важно е, че минималната възстановена цена на газа се налага като 500 вместо предишните 200, което прави дори и най-простите повиквания на ModExp по-реалистично ценени. 2 × words² The motivation behind these pricing increases comes from benchmarks showing many situations where the ModExp precompile was significantly underpriced. The revised formula raises small operations by , typical operations by around , и много големи или небалансирани операции от много по-големи фактори - понякога повече от — в зависимост от това колко голям е експонентът, базата или модулът. Намерението не е да се промени начина, по който работи ModExp, а да се гарантира, че дори в най-интензивните от ресурси случаи на ръба той вече не застрашава стабилността на мрежата или предотвратява бъдещи увеличения до лимита на блоковите газове. , но газовото презареждане се е случвало много пъти преди в Ethereum и е добре разбрано. 150% 200% 80× backward-incompatible Резултатите от тестовете показват колко значителни могат да бъдат увеличенията. сега ще струва или 500 газа (нагоре от 200) или три пъти по-ранната си цена. но някои тежки тестови случаи виждат огромни увеличения. например, в един "exp-тежък" тест, цената скочи от 215 газ до 16 624 газ - около В друг случай, включващ операция с основно тегло, разходите варират от 1,026 до 94,448 газа, което отразява как множеството с големи числа всъщност скалира.Тези примери показват защо старата формула за ценообразуване не е реалистична и как новата по-добре съответства на изчислителната реалност. 99.69% of historical ModExp calls 76× more Що се отнася до сигурността, това предложение не създава нови вектори на атака или не прави всяка операция по-евтина. Вместо това той се фокусира върху предотвратяването на важен риск: подценените операции на ModExp биха могли да позволят на нападателите да запълнят блокове с изключително тежки изчисления за много ниски разходи. Единственият възможен недостатък е, че някои операции на ModExp може да станат надценени, но това се счита за далеч по-добър резултат от сегашния проблем с подценението. Test Case EIP-2565 Pricing EIP-7883 Pricing Increase modexp_nagydani_1_square 200 500 150% modexp_nagydani_1_qube 200 500 150% modexp_nagydani_1_pow0x10001 341 2048 501% modexp_nagydani_2_square 200 512 156% modexp_nagydani_2_qube 200 512 156% modexp_nagydani_2_pow0x10001 1365 8192 501% modexp_nagydani_3_square 341 2048 501% modexp_nagydani_3_qube 341 2048 501% modexp_nagydani_3_pow0x10001 5461 32768 500% modexp_nagydani_4_square 1365 8192 501% modexp_nagydani_4_qube 1365 8192 501% modexp_nagydani_4_pow0x10001 21845 131072 500% modexp_nagydani_5_square 5461 32768 500% modexp_nagydani_5_qube 5461 32768 500% modexp_nagydani_5_pow0x10001 87381 524288 500% modexp_marius_1_even 2057 45296 2102% modexp_guido_1_even 2298 51136 2125% modexp_guido_2_even 2300 51152 2124% modexp_guido_3_even 5400 32400 500% modexp_guido_4_even 1026 94448 9105% modexp_marcin_1_base_heavy 200 1152 476% modexp_marcin_1_exp_heavy 215 16624 7632% modexp_marcin_1_balanced 200 1200 500% modexp_marcin_2_base_heavy 867 5202 500% modexp_marcin_2_exp_heavy 852 16368 1821% modexp_marcin_2_balanced 996 5978 500% modexp_marcin_3_base_heavy 677 2032 200% modexp_marcin_3_exp_heavy 765 4080 433% modexp_marcin_3_balanced 1360 4080 200% modexp_nagydani_1_square 200 500 150% от modexp_универсал_1_универсал 200 500 150% от modexp_nagydani_1_pow0x10001 341 2048 501% modexp_универсал_2_квадрат 200 512 156% modexp_унищожител_2_унищожител 200 512 156% от modexp_nagydani_2_pow0x10001 1365 8192 501% modexp_nagydani_3_square 341 2048 501% modexp_nagydani_3_qube 341 2048 501% модификация modexp_nagydani_3_pow0x10001 5461 32768 500% modexp_универсал_4_квадрат 1365 8192 501% Модификация на модификация на модификация на модификация 1365 8192 501 % от modexp_nagydani_4_pow0x10001 21845 131072 500% modexp_nagydani_5_square 5461 32768 500% modexp_унищожител_5_унищожител 5461 32768 500% Модификация на модификация на модификация на модификация на модификация 87381 524288 500% modexp_marius_1_even 2057 45296 2 02% от modexp_guido_1_също 2298 51136 2125% modexp_guido_2_също 2300 51152 2124% modexp_guido_3_even 5400 32400 500% modexp_guido_4_even 1026 94448 9105% modexp_marcin_1_base_heavy 200 1152 476 % от modexp_marcin_1_exp_heavy 215 16624 7632% от modexp_marcin_1_балансиран 200 1200 500% modexp_marcin_2_base_heavy 867 5202 500% modexp_marcin_2_exp_heavy 852 16368 1821% от modexp_marcin_2_balanced 996 5978 500% от modexp_marcin_3_base_heavy 677 2032 200% modexp_marcin_3_exp_тежък 765 4080 433% modexp_marcin_3_balanced 1360 4080 200% от *source: https://eips.ethereum.org/EIPS/eip-7883#test-cases* : Determine proposer lookahead EIP-7917 EIP-7917 Ethereum needed this proposal because the network’s proposer schedule for the next epoch was not fully predictable. Even though the RANDAO seed for epoch is known during epoch , the actual proposer list could still change due to effective balance (EB) updates happening inside epoch Тези EB промени могат да идват от съкращения, наказания, награди над 1 ETH, консолидации на валидатори или нови депозити – особено след като EIP-7251 повиши максималния ефективен баланс над 32 ETH. Тази несигурност създава проблеми за системи, които разчитат на познаването на следващия предлагащ предварително, като например базирани протоколи за предварително потвърждение, които се нуждаят от стабилен и предсказуем график, за да работят гладко. N+1 N N За да се осъществи това, EIP въвежда детерминистко предложение lookahead чрез предварително изчисляване и съхраняване на графика на предложението за следващата MIN_SEED_LOOKAHEAD + 1 епохи в началото на всяка епоха. that always covers two full epochs of proposers - 64 slots in total. For example, when epoch N begins, this list already includes the proposer for every slot in epoch N and epoch N+1. Then, when the network moves to epoch N+1, the list is shifted forward: the proposer entries for epoch N are removed, the entries for epoch N+1 move to the front, and new proposer entries for epoch N+2 are added at the end. This makes the schedule fixed, predictable, and easy for clients to read directly, instead of recomputing proposers every slot. proposer_lookahead To keep this updated, the list shifts forward at every epoch boundary: the data for the past epoch is removed, and a new set of proposer indices for the next future epoch is computed and appended. The process uses the same seed and effective balance rules as before, but now the schedule is calculated earlier, removing the possibility of EB changes affecting it after the seed is known. The very first block after the fork also fills this entire lookahead range so that all future epochs have properly initialized schedules. Представете си, че всяка епоха има 8 слота вместо 32 (само за опростяване). Без този EIP, по време на епоха 5, знаете семето за епоха 6, но действителният предлагащ за слот 2 от епоха 6 все още може да се промени, ако валидаторът бъде отрязан или печели достатъчно награди, за да промени ефективния си баланс в епоха 5. of epoch 5, Ethereum pre-calculates all proposers for epoch 5, 6, and 7 and stores them in order inside Сега, дори ако балансите се променят по-късно в епоха 5, списъкът на предложенията за епоха 6 остава фиксиран и предсказуем. start proposer_lookahead Този EIP фиксира дългосрочен надзор в дизайна на веригата от маяци. Той гарантира, че след като RANDAO от по-ранни епохи стане наличен, изборът на валидатор за бъдещи епохи не може да бъде променен. Това също така предотвратява „ефективното смилане на баланса“, където валидаторът се опитва да коригира баланса си след като види RANDAO, за да повлияе на списъка на предложенията на следващата епоха. С детерминистичен поглед, целият вектор на атака се елиминира, което прави анализа на сигурността много по-прост. Той също така дава на клиентите на консенсуса ранна видимост за това кой ще предложи предстоящите блокове, което помага за изпълнението и позволява на графика на Авторите обмислят алтернативи, като например кеширане на ефективните баланси в началото на епохата, но това ще изисква допълнително съхранение и няма да изложи графика на EVM. Те също така проверяват съвместимостта с бъдещи функции като Single Secret Leader Election (SSLE). Преди това предложение, клиентите само изчисляват предложението за текущия слот. С EIP-7917 те сега изчисляват списъка на предложението за всички слотове в следващата епоха наведнъж по време на всеки преход на епохата. Това добавя малко работа, но изчисляването на индексите на предложението е много леко и главно включва вземане на проби от списъците на валидаторите, използвайки семето. This EIP does not change how the RANDAO delay works. The proposer lookahead for epoch is still derived from the RANDAO of epoch . The only change is that effective balances are now aligned with the same delay, so validators cannot modify their EB after seeing the RANDAO result. This removes a potential manipulation strategy, even though no attack had been discovered yet. The deterministic lookahead therefore, strengthens security and prevents malicious alteration of proposer schedules. N N − MIN_SEED_LOOKAHEAD − 1 : Blob base fee bounded by execution cost EIP-7918 EIP-7918 Ethereum needs this proposal because the current blob fee system (from В момента повечето ролки плащат много повече за изпълнителния газ (цената на включването на тяхната транзакция в блока), отколкото те плащат за действителната такса за блока. Това създава проблем: дори ако Ethereum продължава да понижава таксата за базата на блока отново и отново, общата цена на ролката не се променя, защото скъпата част все още е изпълнителния газ. Поради това таксата за базата на блока продължава да пада, докато достигне абсолютния минимум (1 wei), а протоколът вече не може да използва таксата за блока за контрол на търсенето. Тогава, когато използването на блока внезапно се покачва, таксата за блока се нуждае от много блокове, за да се изкачи обратно към нормално ниво. Това прави цените нестабилни и непредсказуеми EIP-4844 For example, imagine a rollup wants to post its data: it pays about 25,000,000 gwei in execution gas (25 gwei per gas for roughly 1,000,000 gas), while the blob fee is only around 200 gwei. This means the total cost is roughly 25,000,200 gwei, where almost the entire cost comes from execution gas, not the blob fee. If Ethereum keeps lowering the blob fee—say from 200 gwei to 50 gwei, then to 10 gwei, and eventually down to 1 wei—the total cost barely changes at all, staying almost exactly 25,000,000 gwei. Because users don’t feel any difference, they don’t change their behavior, so the protocol keeps pushing blob fees down until they hit the minimum possible value. Then, when blob demand suddenly increases again, the blob base fee has to climb all the way up from 1 wei, causing sharp, unpredictable fee spikes. Поправя това, като въвежда минимална „резервна цена“ за таксите за блокове, която зависи от основната такса за изпълнение, предотвратява падането на цените на блоковете на нереалистично ниски нива и поддържа ценообразуването на блоковете много по-стабилно и предсказуемо за ролки. EIP-7918 The core idea of EIP-7918 is simple: the price of a blob should never be cheaper than the cost of a certain amount of execution gas (called ). In the EIP, this constant is set to Механизмът работи чрез малка промяна в Функция. Обикновено тази функция увеличава или намалява базовата такса на блока в зависимост от това дали блоковете използват повече или по-малко блоков газ, отколкото целта. С това предложение, ако един блок стане „твърде евтин“ в сравнение с изпълнителния газ, функцията спира да изважда целевия блоков газ. Това прави излишъка от блоковия газ да расте по-бързо, което предотвратява по-нататъшното падане на базовата такса на блока. . BLOB_BASE_COST 2¹³ calc_excess_blob_gas() BLOB_BASE_COST × base_fee_per_gas ÷ GAS_PER_BLOB За да се разбере защо това е необходимо, помага да се погледне търсенето на blob. A rollup се грижи за общата цена, която плаща: разходите за изпълнение плюс разходите за blob. Ако таксата за изпълнение на газ е много висока - например, 20 gwei - тогава дори ако таксата за blob падне от 2 gwei до 0,2 gwei, общите разходи едва се променят. Това означава, че намаляването на базовата такса за blob няма почти никакво въздействие върху търсенето. .” It creates a situation where the demand curve is almost vertical: lowering price does not increase demand. When this happens, the blob base fee mechanism becomes blind—it keeps lowering the price even though demand does not react. That is why the blob base fee often slides down to 1 wei. Then, when real demand increases later, the protocol needs an hour or more of nearly full blocks to raise the fee back up to a reasonable level. EIP-7918 fixes this by establishing a reserve price tied to execution gas so that blob fees remain meaningful even when execution costs dominate. fee inelasticity Another reason for adding this reserve price is that nodes have to do a lot of extra work to verify the KZG proofs for blob data. These proofs are what guarantee that the data inside a blob actually matches its commitment. Under , един възел трябваше да провери само едно доказателство на блоб, което беше евтино. (PeerDAS), blobs are broken into many small pieces called cells, and every cell has its own proof. This makes verification much heavier. For example, the execution layer now has to batch-verify 128 proofs for every single blob before a transaction can even enter the mempool—this is about fifteen times more expensive than the normal KZG proof verification that smart contracts pay for. On top of that, full nodes, supernodes, and validators must verify even more proofs depending on how many columns they store or sample. A typical full node must verify proofs for all blobs in the mempool, plus eight sampled columns every slot, plus four columns it permanently custodies. All of this uses real CPU time, and it isn’t free for node operators. If blob fees drop too low, users would get this expensive compute work from the network essentially for free. By linking the blob reserve price to execution gas fees, EIP-7918 makes sure blob users always pay at least a fair minimum amount for the load they put on nodes. EIP-4844 EIP-7594 In the long run, EIP-7918 also helps prepare Ethereum for the future. As technology improves, the cost of storing and sharing data naturally gets cheaper, and Ethereum is expected to allow more blob data over time. When blob capacity increases, blob fees (in ETH) should naturally go down. This proposal supports that because the reserve price is tied to execution gas prices, not a fixed number, so it can adjust as the network grows. As both blobspace and execution blockspace expand, their price relationship stays balanced. The only time the reserve price might become too high is in a very unlikely future where Ethereum increases blob capacity a lot but does not increase execution gas capacity. In that case, blob fees might end up higher than needed. But Ethereum is not planning to scale in that way—both blobspace and execution blockspace are expected to grow together. Because of this, the chosen value ( ) is considered safe and well-balanced. BLOB_BASE_COST = 2¹³ There is one small detail to understand when execution gas fees suddenly jump. Because the blob reserve price depends on the execution base fee, a sudden rise in execution costs can temporarily push blob fees into a state where execution fees are guiding them. For example, imagine execution gas suddenly jumps from 20 gwei to 60 gwei in one block. Since the reserve price for blobs is tied to that number, blob fees cannot drop below the new higher level. Blob fees will still increase normally if blobs are being used, but the protocol will not allow them to decrease until they have risen enough to match the higher execution cost. This means blob fees may climb more slowly than execution fees for a few blocks. This small delay is not harmful — it actually prevents sharp, sudden swings in blob prices and keeps the system smoother and more stable. Авторите също така са извършили емпиричен анализ, като са приложили правилото за резервните цени към действителната активност на and По време на високи срокове на изпълнение (около ), резервният праг значително увеличава базовата такса на Блоб в сравнение със стария механизъм. по време на периоди на ниско изпълнение (около Сравнявайки хиляди блокове, авторите показват, че новият механизъм създава по-стабилно ценообразуване, докато все още реагира естествено на търсенето. November 2024 March 2025 16 gwei average 1.3 gwei average In terms of security, the change does not introduce any risks. The blob base fee will always settle at or above the cost of units of execution gas. This is safe because the mechanism only raises the minimum fee, and setting a lower bound on pricing does not interfere with protocol correctness. It simply ensures healthy economics. BLOB_BASE_COST : RLP Execution Block Size Limit EIP-7934 ЕИП-7934 Before EIP-7934, Ethereum did have a strict upper limit on how large an RLP-encoded execution block could be. In theory, a block could become extremely large if it contained many transactions or very complex data. This created two major problems: and Ако блокът е твърде голям, ще отнеме по-дълго време за възлите да го изтеглят и проверят, което забавя разпространението на блока и увеличава вероятността от временни блокчейн форкове.По-лошото е, че нападателят може умишлено да създаде много голям блок, за да претовари възлите, причинявайки закъснения или дори да ги удари офлайн – класически сценарий за отказ от услуга. , което означава, че прекалено големи изпълнителни блокове не могат да се разпространят в мрежата, създавайки фрагментация или възли, които не са съгласни по веригата.Поради тези рискове, Ethereum се нуждаеше от ясно правило на ниво протокол, за да предотврати прекалено големи блокове и да запази мрежата стабилна и сигурна. not network instability DoS attack risks 10 MB EIP-7934 решава това чрез въвеждане на on the size of an RLP-encoded execution block. The maximum allowed block size ( ) is set to , but because beacon blocks also consume some space ( ), Ethereum adds a Това означава, че действителният максимален размер на изпълнителния блок, кодиран по RLP, е Ако кодираният блок е по-голям от този лимит, блокът се счита за and nodes must reject it. With this rule in place, block producers must check the encoded size of every block they build, and validators must verify this limit during block validation. This size cap applies на газовите граници - което означава, че дори ако блокът е " ” it can still be rejected if its encoded size is too large. This ensures that both gas usage and real byte-size constraints are respected. protocol-level cap MAX_BLOCK_SIZE 10 MiB (10,485,760 bytes) SAFETY_MARGIN 2 MiB (2,097,152 bytes) MAX_RLP_BLOCK_SIZE = MAX_BLOCK_SIZE - SAFETY_MARGIN invalid independently under the gas limit, Choosing a Това е умишлено, защото съответства на съществуващото ограничение в протокола за говорене на слоеве на консенсус. Всичко, което е по-голямо от 10 MiB, не би било излъчвано в мрежата, така че този EIP привежда изпълнителния слой в съответствие с границите на слоя на консенсус. 10 MiB cap Тази промяна е с блокове по-големи от новия лимит, което означава, че миньорите и валидаторите трябва да актуализират своите клиенти, за да спазват правилото. Въпреки това, тъй като прекалено големи блокове вече са били проблематични и не са нормални в реалната работа, въздействието е минимално. По отношение на сигурността, този EIP значително укрепва Ethereum срещу целенасочени атаки DoS с размер на блок, като гарантира, че никой участник не може да създаде блокове, които претоварват мрежата. Като цяло, EIP-7934 добавя важна граница за сигурност, подобрява стабилността, изравнява поведението на EL и CL и предотвратява няколко класа атаки, свързани с създаването и разпространението на прекалено големи блокове. not backward-compatible : Count leading zeros (CLZ) opcode EIP-7939 EIP-7939 Before this EIP, Ethereum had to count the number of leading zero bits in a 256-bit number. Developers had to implement CLZ manually in Solidity using many bit-shift operations and comparisons. This was a big problem because the custom implementations were и , which increased gas usage. For zero-knowledge proving systems, the cost was even higher — right-shifts are extremely expensive to prove, so operations like CLZ slowed down ZK circuits significantly. Since CLZ is a very common low-level function used in math libraries, compression algorithms, bitmaps, signature schemes, and many cryptographic or data-processing tasks, Ethereum needed a faster and cheaper way to compute it. no built-in opcode slow, expensive used a lot of bytecode EIP-7939 solves this by introducing a Този опкод взема 256-битова стойност от стека и връща броя на водещите нулеви битове. , защото 256-битовата нула има 256 водещи нула бита. Това съответства на начина, по който CLZ работи в много CPU архитектури като ARM и x86, където тази операция е родна. , , , various math functions, byte-string comparisons, bitmap scanning, calldata compression/decompression, and post-quantum signature schemes all benefit from faster leading-zero detection. new opcode called CLZ (0x1e) 256 lnWad powWad LambertW Подобно на един , и леко повишена от старата цена на MUL, за да се избегне подценяването на опкода и причиняването на DoS рискове. benchmarks показват, че CLZ използва приблизително същото изчислително усилие като ADD, а в SP1 rv32im доказателствена среда, CLZ всъщност е , намаляване на разходите за доказване на ZK. EIP също така обяснява защо са избрали CLZ вместо : you can compute CTZ from CLZ using Но ти reliably implement CLZ using CTZ, so CLZ is more fundamental. The gas cost for CLZ is set to 5 ADD cheaper to prove than ADD CTZ (count trailing zeros) x & -x cannot Настоящият регламент е напълно съвместим с Той също така ясно обхваща случаите на ръба: например, опкодът връща 256 когато входът е нула, а няколко тестови случая показват входове като всички нули, топ-битови и напълно ненузерови стойности. Тъй като CLZ има предвидими и ниски разходи за газ, няма растеж на паметта и няма промени в състоянието, той е безопасен от проблеми с отказването от услуга. new Overall, EIP-7939 makes Ethereum faster, cheaper, and more developer-friendly by adding a simple, efficient primitive that modern CPUs already support — cutting gas, reducing bytecode size, and lowering ZK proving costs for many common operations. : Precompile for secp256r1 Curve Support EIP-7951 ЕИП-7951 Before this EIP, Ethereum did have a safe, native way to verify digital signatures created using the . This curve is the standard used in modern devices like Поради тази липса на поддръжка, приложенията и портфейлите не могат лесно да използват хардуерна сигурност на ниво устройство за подписване. related to point-at-infinity handling and incorrect signature comparison. These issues could cause incorrect verification or even risk consensus failures. not secp256r1 (P-256) curve Apple Secure Enclave, Android Keystore, HSMs, TEEs, and FIDO2/WebAuthn security keys two serious security vulnerabilities EIP-7951 fixes those security problems and introduces a safe, native precompile so Ethereum can finally support signatures from modern hardware securely and efficiently. EIP-7951 adds a new at address called , който извършва проверка на подписи на ECDSA с помощта на кривата secp256r1. Това прави проверката на подписи бърза и евтина в сравнение с прилагането на алгоритъма директно в Solidity. Прекомпилацията използва официалните параметри на кривата, определени от NIST, включително модул на полето, уравнение на кривата, база точка и подгрупа, осигурявайки силна криптографска сигурност. Точките и скаларите са кодирани в строг 32-битов формат с голям ендиан, а 64-битова стойност с пълна нула се използва, за да представлява точката в безкрайност. -хаш, подпис (r, s) и координати с публичен ключ (qx, qy) - и той връща for success or за неуспех precompiled contract 0x100 P256VERIFY 160 bytes of input 32 bytes of 1 empty output The EIP also defines strict Той проверява, че r и s са в рамките на валидни диапазони, че публичният ключ се намира на кривата и че не е точката в безкрайността. Ако нещо е невалидно, предварителният компилатор връща неуспех без да се обърне и консумира същия газ като успешен разговор. Алгоритъмът за проверка следва стандартния ECDSA: той изчислява s−1 mod n, възстановява подписващата точка R’, отхвърля, ако R’ е безкрайност, и накрая проверява дали x-координатата на R’ съответства на r (mod n). input validation rules Кривата secp256r1 е напълно дефинирана от следния набор от параметри: Base field modulus = p = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff Curve equation: y^2 = x^3 + ax + b (mod p) Curve coefficient a = 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc Curve coefficient b = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b Base point G: Gx = 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296 Gy = 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5 Subgroup order = n = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551 Cofactor = h = 0x1 These parameters are standardized by NIST in SP 800-1861. Цената на газа за операцията е определена на , which is higher than the RIP-7212 version, but matches actual performance benchmarks for secp256r1 verification. Importantly, the interface remains fully compatible with Layer 2 networks that already deployed RIP-7212—same address, same input/output format—so existing smart contracts will continue to work with no changes. The only difference is the corrected behavior and higher gas cost. 6900 gas Input: P256VERIFY call excepts 160 Bytes as input that is interpreted as byte concatenation of: 32 bytes ----> message hash (h) 32 bytes ----> signature component (r) 32 bytes ----> signature component (s) 32 bytes ----> public key x-coordinate (qx) 32 bytes ----> public key y-coordinate (qy) Output: will be 32 bytes on successfull verification and 0 bytes on failure Input Validation: The precompile MUST perform the following validation checks and return `` (failure) if any check fails: 1. Input length: Input MUST be exactly 160 bytes 2. Signature component bounds: Both r and s MUST satisfy 0 < r < n and 0 < s < n 3. Public key bounds: Both qx and qy MUST satisfy 0 ≤ qx < p and 0 ≤ qy < p 4. Point validity: The point (qx, qy) MUST satisfy the curve equation qy^2 ≡ qx^3 + a*qx + b (mod p) 5. Point not at infinity: The point (qx, qy) MUST NOT be the point at infinity (represented as (0, 0)) От гледна точка на сигурността, EIP възстановява правилното поведение на ECDSA, елиминира опасенията за малтретируемостта на нивото на предварително компилиране (оставяйки незадължителни проверки на приложенията) и изяснява, че за предварително компилиране не се изисква постоянно изпълнение. кривата secp256r1 осигурява 128-битова сигурност и е широко доверена и анализирана, което го прави безопасен за приемането на Ethereum. накратко , , решаване на проблемите със сигурността на по-ранното предложение и осигуряване на надежден, стандартизиран начин за проверка на подписи на P-256 в цялата екосистема. EIP-7951 is needed to safely bring modern hardware-backed authentication to Ethereum The table below summarizes which Ethereum clients need to implement changes for each Fusaka EIP. A check mark under показва, че EIP изисква актуализации за клиентите на консенсусния слой, докато shows that the change affects execution-layer clients. Some EIPs require updates in both layers, while others are specific to just one. Consensus Client Execution Client EIP Number EIP Name Consensus Client Execution Client EIP-7594 PeerDAS - Peer Data Availability Sampling ✅ ✅ EIP-7823 Set upper bounds for MODEXP ✅ EIP-7825 Transaction Gas Limit Cap ✅ EIP-7883 ModExp Gas Cost Increase ✅ EIP-7917 Deterministic proposer lookahead ✅ EIP-7918 Blob base fee bounded by execution cost ✅ EIP-7934 RLP Execution Block Size Limit ✅ EIP-7939 Count leading zeros (CLZ) opcode ✅ EIP-7951 Precompile for secp256r1 Curve Support ✅ EIP-7594 PeerDAS - Peer Data Availability Sampling ✅ ✅ EIP-7823 Set upper bounds for MODEXP ✅ Епизод 7825 Transaction Gas Limit Cap ✅ Епизод 7883 ModExp увеличава разходите за газ ✅ ЕИП-7917 Детерминистични предложения lookahead ✅ EIP-7918 Blob base fee bounded by execution cost ✅ ЕИП-7934 RLP Execution Block Size Limit ✅ Епизод 7939 Count leading zeros (CLZ) opcode ✅ ЕИП-7951 Поддръжка на Secp256R1 Curve ✅ In summary, these are the key EIPs included in the Fusaka hard fork. While several improvements touch both consensus and execution clients—ranging from gas adjustments and opcode updates to new precompiles—the , който въвежда извадка от наличността на peer-to-peer данни, което позволява по-ефективно и децентрализирано обработване на blob данни в мрежата. major change of this upgrade is PeerDAS