Upgradebare Smart Contracts: Veilig Upgraden na Livegang

Home Blockchain & Web3 Ontwikkelaar Smart Contract Ontwikkeling: Solidity en Solana op Maat Upgradebare Smart Contracts: Veilig Upgraden na Livegang

Een normaal smart contract kan na deployment niet meer worden gewijzigd. Dat is een kracht, omdat gebruikers weten dat de regels niet veranderen, en een zwakte, omdat een bug die na de launch wordt gevonden niet kan worden hersteld. Upgradebare smart contracts lossen dit op door het adres waarmee gebruikers werken los te koppelen van de code die erachter draait, zodat de code kan worden vervangen terwijl saldi en andere state blijven staan.

Wanneer upgradebaarheid zinvol is

  • Protocollen in een vroege fase die reparaties en nieuwe functies nodig hebben naarmate ze leren van echte gebruikers.
  • Complexe systemen waarin het risico op een onontdekte bug reëel is en een migratie naar nieuwe contracts kostbaar zou zijn.
  • Koppelingen met externe protocollen die hun eigen interfaces kunnen wijzigen.

Het is minder zinvol voor eenvoudige tokens en contracts waarvan de waarde juist zit in de zekerheid dat niemand ze ooit kan wijzigen. Upgradebaarheid is een afweging: flexibiliteit voor het team tegenover vertrouwen voor gebruikers.

Upgrades veilig maken

  • Wie mag upgraden: het upgraderecht zit in een multisig, nooit bij één persoon.
  • Wanneer: upgrades gaan via een timelock, zodat gebruikers de nieuwe code zien voordat die live gaat.
  • Compatibele opslag: de nieuwe versie moet de storage-indeling van de oude behouden. Wij controleren dit automatisch vóór elke upgrade, want een afwijking beschadigt data zonder foutmelding.
  • Initialisatie: upgradebare contracts gebruiken initializers in plaats van constructors, en een onbeveiligde initializer is een bekende aanvalsroute.
  • De upgrade zelf testen: wij testen upgrades op een fork van mainnet met echte state, niet alleen de nieuwe code los.
  • Een weg naar onveranderlijkheid: als een protocol volwassen is, kan het upgraderecht worden verwijderd zodat de code definitief wordt.

Het technische mechanisme is een proxy contract. Voor een vergelijking van transparent proxies, UUPS, beacons en diamonds, zie smart contract proxy-patronen.

Veelgestelde vragen over upgradebare smart contracts

Kan elk bestaand contract upgradebaar worden gemaakt?

Niet na deployment. Upgradebaarheid moet vanaf het begin worden ingebouwd. Voor een contract dat al live en onveranderlijk is, is het alternatief een migratie: een nieuwe versie deployen en gebruikers en state overzetten.

Kosten upgradebare contracts meer gas?

Iets meer. Elke aanroep gaat via de proxy, wat een kleine overhead geeft. Voor de meeste toepassingen zijn die kosten verwaarloosbaar vergeleken met de mogelijkheid om problemen te herstellen.

Kunnen wij het contract later onveranderlijk maken?

Ja. Zodra de code definitief is, kan het upgraderecht worden opgegeven, waardoor het contract op hetzelfde adres onveranderlijk wordt.

Wie is eigenaar van de code?

Het eigendom van de broncode wordt contractueel vastgelegd, en de code kan volledig van u zijn, inclusief documentatie en tests.

Onderdeel van onze smart contract ontwikkeling. Audit gepland? Zie smart contract audit ondersteuning.

Plan uw upgradestrategie

Vertel ons hoe uw contracts zich moeten ontwikkelen. Wij helpen u bepalen of upgradebaarheid past en richten het veilig in.

Plan een vrijblijvend gesprek over upgradebare contracts