Hoe de samenvoeging de applicatielaag van Ethereum beïnvloedt

De overgang van Ethereum naar proof-of-stake – The Merge – is nabij:devnets worden opgericht, specificaties worden afgerond en het bereiken van de gemeenschap is serieus begonnen. The Merge is ontworpen om een ​​minimale impact te hebben op hoe Ethereum werkt voor eindgebruikers, slimme contracten en dapps. Dat gezegd hebbende, zijn er enkele kleine veranderingen die het vermelden waard zijn. Voordat we erop ingaan, volgen hier een paar links om context te bieden over de algehele samenvoegingsarchitectuur:

  • Evolutie van de routekaart
  • Clientarchitectuur na het samenvoegen

In de rest van dit bericht wordt ervan uitgegaan dat de lezer bekend is met het bovenstaande. Voor degenen die nog dieper willen graven, zijn de volledige specificaties voor The Merge hier beschikbaar:

  • Uitvoeringslaag
  • Consensuslaag
  • Engine-API

Blokstructuur

Na The Merge zijn er geen proof of work blocks meer op het netwerk. In plaats daarvan wordt de voormalige inhoud van het bewijs van werk een onderdeel van blokken die op de Beacon Chain zijn gemaakt. Je kunt de Beacon Chain dan beschouwen als de nieuwe proof-of-stake-consensuslaag van Ethereum, die de vorige proof-of-work-consensuslaag vervangt. Beacon chain-blokken bevatten ExecutionPayloads , die het post-merge-equivalent zijn van blokken in de huidige proof of work-keten. De afbeelding hieronder toont deze relatie:

Voor eindgebruikers en applicatieontwikkelaars:deze ExecutionPayloads zijn waar interacties met Ethereum plaatsvinden. Transacties op deze laag worden nog steeds verwerkt door cliënten van de uitvoeringslaag (Besu, Erigon, Geth, Nethermind, enz.). Gelukkig introduceert The Merge vanwege de stabiliteit van de uitvoeringslaag slechts minimale brekende wijzigingen.

Mijnbouw- en Ommer-blokvelden

Na het samenvoegen worden verschillende velden die voorheen in de headers van het bewijs van werkblok waren opgenomen ongebruikt omdat ze niet relevant zijn voor het bewijs van inzet. Om verstoring van tooling en infrastructuur tot een minimum te beperken, worden deze velden ingesteld op 0, of het equivalent van hun datastructuur, in plaats van volledig uit de datastructuur te worden verwijderd. De volledige wijzigingen om velden te blokkeren zijn te vinden in EIP-3675.

Veld Constante waarde Reageer ommers [] RLP([]) =0xc0 ommersHash 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347 =Keccak256(RLP([])) moeilijkheid 0 nonce 0x000000000000000000

Omdat proof of stake van nature geen ommers (ook wel oomblokken genoemd) zoals proof of work produceert, is de lijst hiervan in elk blok (ommers ) is leeg en de hash van deze lijst (ommersHash ) wordt de RLP-gecodeerde hash van een lege lijst. Evenzo, omdat moeilijkheid en nonce zijn kenmerken van bewijs van werk, deze worden ingesteld op 0 , met respect voor hun bytegrootte-waarden.

mixHash , een ander mijnbouwgerelateerd veld, wordt niet ingesteld op 0 maar bevat in plaats daarvan de RANDAO-waarde van de bakenketen. Meer hierover hieronder.

BLOCKHASH &MOEILIJKHEID opcodes veranderingen

Na het samenvoegen, de BLOCKHASH opcode zal nog steeds beschikbaar zijn voor gebruik, maar aangezien het niet langer zal worden vervalst door het hashingproces van het bewijs van werk, zal de pseudo-willekeurigheid die door deze opcode wordt geboden, veel zwakker zijn.

Aanverwant, de MOEILIJKHEID opcode (0x44 ) wordt bijgewerkt en hernoemd naar RANDOM . Na het samenvoegen wordt de uitvoer geretourneerd van het willekeurigheidsbaken dat door de bakenketen wordt geleverd. Deze opcode zal dus een sterkere, zij het nog steeds vooringenomen, bron van willekeur zijn voor toepassingsontwikkelaars om te gebruiken dan BLOCKHASH .

De waarde die wordt weergegeven door RANDOM wordt opgeslagen in de ExecutionPayload waar mixHash , een waarde die is gekoppeld aan de berekening van het bewijs van werk, is opgeslagen. De mixHash . van de payload veld wordt ook hernoemd willekeurig .

Hier is een illustratie van hoe de MOEILIJKHEID &RANDOM opcodes werken voor en na het samenvoegen:

Pre-merge, we zien de 0x44 opcode retourneert de moeilijkheid veld in de blokkop. Post-merge, de opcode, hernoemd naar RANDOM , verwijst naar het kopveld dat voorheen mixHash bevatte en slaat nu de willekeurige . op waarde van de bakenketenstatus.

Deze wijziging, geformaliseerd in EIP-4399, biedt ook on-chain-applicaties een manier om te beoordelen of The Merge heeft plaatsgevonden. Van het EIP:

Bovendien maken de wijzigingen die door dit EIP worden voorgesteld, slimme contracten mogelijk om te bepalen of de upgrade naar de PoS al heeft plaatsgevonden. Dit kan gedaan worden door de retourwaarde van de opcode DIFFICULTY te analyseren. Een waarde groter dan 2**64 geeft aan dat de transactie wordt uitgevoerd in het PoS-blok.

Bloktijd

De samenvoeging heeft invloed op de gemiddelde blokkeringstijd op Ethereum. Momenteel onder proof-of-work, komen er gemiddeld elke ~13 seconden blokken binnen met een behoorlijke hoeveelheid variantie in de werkelijke bloktijden. Onder bewijs van inzet komen blokken precies elke 12 seconden binnen, behalve wanneer een slot wordt gemist omdat een validator offline is of omdat ze een blok niet op tijd indienen. In de praktijk gebeurt dit momenteel in <1% van de slots.

Dit impliceert een reductie van ~1 seconde van de gemiddelde bloktijd op het netwerk. Slimme contracten die in hun berekeningen uitgaan van een bepaalde gemiddelde bloktijd, moeten hier rekening mee houden.

Safe Head &Finalized Blocks

Onder proof of work is er altijd het potentieel voor reorgs. Toepassingen wachten meestal tot er meerdere blokken zijn gedolven bovenop een nieuwe kop voordat ze het behandelen als onwaarschijnlijk dat het uit de canonieke keten wordt verwijderd, of "bevestigd". Na The Merge hebben we in plaats daarvan de concepten van afgerond en veilig hoofd blokken. Deze blokken kunnen nog betrouwbaarder worden gebruikt dan de "bevestigde" bewijs van werkblokken, maar vereisen een verschuiving in begrip om correct te gebruiken.

Een definitief blok is een blok dat door>2/3 van de validators als canoniek is geaccepteerd. Om een ​​conflicterend blok te creëren, zou een aanvaller minstens 1/3 van de totale inzet moeten verbranden. Op het moment van schrijven vertegenwoordigt dit meer dan $ 10 miljard (of> 2,5 miljoen ETH) op Ethereum.

Een veilig hoofd block is er een waarvan we verwachten dat deze onder normale netwerkomstandigheden wordt opgenomen in de canonieke keten. Uitgaande van netwerkvertragingen van minder dan 4 seconden, een eerlijke meerderheid van validators en geen aanvallen op de fork-choice-regel, is de veilige kop zal nooit wees worden. Een presentatie waarin wordt beschreven hoe de veilige hoogte wordt berekend onder verschillende scenario's is hier beschikbaar. Bovendien zijn de aannames en garanties van veilig hoofd worden formeel gedefinieerd en geanalyseerd in een komende paper.

Na het samenvoegen, de uitvoeringslaag-API's (bijv. JSON RPC) retourneren de veilige kop standaard wanneer gevraagd om de nieuwste blok. Onder normale netwerkomstandigheden is de veilige kop en de werkelijke punt van de ketting zal gelijk zijn (met een veilige kop die slechts een paar seconden achterblijft). Veilige hoofden zal minder snel worden gereorganiseerd dan het huidige bewijs van werk nieuwste blokken. Om de eigenlijke tip van het bewijs van de inzetketting bloot te leggen, een onveilige vlag wordt toegevoegd aan JSON RPC.

Gefinaliseerde blokken zullen ook worden getoond via JSON RPC, via een nieuwe gefinaliseerde vlag. Deze kunnen dan dienen als een sterkere vervanging voor bewijs van werkbevestigingen. De onderstaande tabel vat dit samen:

Bloktype Consensusmechanisme JSON RPC Voorwaarden voor reorganisatie hoofd Proof of Work nieuwste Te verwachten, moet met zorg worden gebruikt. hoofd Bewijs van inzet onveilig Te verwachten, moet met zorg worden gebruikt. veilig hoofd Proof of Stake nieuwste Mogelijk, vereist een grote netwerkvertraging of een aanval op het netwerk. bevestigd Proof of Work N.v.t. Onwaarschijnlijk, vereist een meerderheid van hashrate om een ​​concurrerende keten van diepte> # bevestigingen te ontginnen. voltooid Proof of Stake voltooid Uiterst onwaarschijnlijk, vereist>2/3 van de validators om een ​​concurrerende keten af ​​te ronden waarvoor minstens 1/3 moet worden doorgesneden.

Volgende stappen

We hopen dat dit bericht applicatieontwikkelaars helpt zich voor te bereiden op de langverwachte overgang naar proof of stake. In de komende weken zal een langlevend testnet beschikbaar worden gesteld voor testen door de bredere gemeenschap. Er is ook een aanstaande Merge-community-oproep voor infrastructuur-, tooling- en applicatieontwikkelaars om vragen te stellen en de laatste technische updates over The Merge te horen. Zie je daar 👋🏻

Bedankt aan Mikhail Kalinin voor het verstrekken van de kerninhoud van de sectie "Safe Head" en aan Danny Ryan en Matt Garnett voor het beoordelen van concepten van dit bericht.


Ethereum
  1. Blockchain
  2. Bitcoin
  3. Ethereum
  4. Digitale valuta wisselen
  5. Mijnbouw