Išmani sutartinių saugumo mąstysena

1 dienoraštisNewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressNaujienlaiškiai

Užsiprenumeruokite mūsų naujienlaiškį.

Elektroninio pašto adresas

Mes gerbiame jūsų privatumą

Pagrindinis dienoraštisBlokavimo grandinės plėtra

Išmani sutartinių saugumo mąstysena

5 saugumo principai, kuriuos turi žinoti kiekvienas „Ethereum“ kūrėjas, ir esminiai kompromisai. pateikė ConsenSys 2020 m. birželio 17 d. Paskelbta 2020 m. birželio 17 d

„Blockchain“ sauga

„ConsenSys Diligence“, mūsų „blockchain“ saugumo ekspertų komanda.

Nors pramonė bręsta, pažangių sutarčių kūrimas vis dar yra gana nauja ir brandi sritis. Todėl turėtumėte tikėtis nuolatinių pokyčių saugumo srityje, kai bus aptiktos naujos klaidos ir saugos rizika bei kuriama nauja geriausia praktika. Mokymasis ir sekimas geriausia praktika yra tik pradžia saugos darbų, kuriuos turėsite atlikti kaip sumanus sutarčių kūrėjas.

Protingam sutarčių programavimui reikia kitokio inžinerinio mąstymo, nei galite būti įpratę. Gedimo kaina gali būti didelė, o pokyčiai gali būti sunkūs, todėl tai tam tikru požiūriu yra panašesnė į aparatūros programavimą ar finansinių paslaugų programavimą nei į interneto ar mobiliojo ryšio kūrimą. Todėl nepakanka gintis nuo žinomų pažeidžiamumų. Vietoj to turėsite išmokti naujos raidos filosofijos.

Pasiruoškite nesėkmei

Bet kurioje nereikšmingoje sutartyje bus klaidų. Todėl jūsų kodas turi sugebėti reaguoti į klaidas ir pažeidžiamumą.

  • Pristabdykite sutartį, kai viskas blogai („automatinis jungiklis“).
  • Tvarkykite rizikos pinigų sumą (normos ribojimas, maksimalus naudojimas).
  • Turėkite efektyvų klaidų taisymų ir patobulinimų naujinimo kelią.

Atsargiai išleiskite

Visada geriau užfiksuoti klaidas prieš išleidžiant visą produkciją.

  • Kruopščiai išbandykite sutartis ir pridėkite testus, kai aptinkami nauji atakos vektoriai.
  • Pateikite klaidų dovanos pradedant nuo alfa testnet leidimų.
  • Išleidimas etapais, vis labiau naudojant ir bandant kiekviename etape.

Sutarčių sudarymas paprastas

Sudėtingumas padidina klaidų tikimybę.


  • Įsitikinkite, kad sutarties logika yra paprasta.
  • Moduliuokite kodą, kad sutartys ir funkcijos būtų mažos.
  • Kur įmanoma, naudokite jau parašytus įrankius ar kodą (pvz., Nesukite savo atsitiktinių skaičių generatoriaus).
  • Pirmenybė teikiama aiškumui, o ne našumui, kai tik įmanoma.
  • Blokavimo grandinę naudokite tik toms sistemos dalims, kurias reikia decentralizuoti.

Būkite naujausia

Stebėkite naujus saugumo pokyčius.

  • Patikrinkite savo sutartis dėl naujų klaidų, kai tik jos bus aptiktos.
  • Kuo greičiau atnaujinkite į naujausią bet kurio įrankio ar bibliotekos versiją.
  • Priimkite naujas saugumo technikas, kurios atrodo naudingos.

Žinokite apie EVM savitumą

Nors didelė jūsų programavimo patirtis bus svarbi programuojant „Ethereum“, reikia žinoti apie tam tikras spąstus.

  • Būkite labai atsargūs dėl išorinių sutarties skambučių, kurie gali vykdyti kenksmingą kodą ir pakeisti valdymo srautą.
  • Supraskite, kad jūsų viešosios funkcijos yra viešos ir gali būti vadinamos piktybiškai ir bet kokia tvarka. Išmaniųjų sutarčių asmeninius duomenis taip pat gali matyti visi.
  • Turėkite omenyje dujų sąnaudas ir blokuojamų dujų ribą.
  • Atminkite, kad laiko žymės netikslios blokų grandinėje: kalnakasiai gali daryti įtaką operacijos vykdymo laikui per kelias sekundes.
  • „Blockchain“ nėra atsitiktinumas, dauguma atsitiktinių skaičių generavimo būdų yra žaidžiami „blockchain“.

Pagrindiniai kompromisai

Vertinant išmaniųjų sutarčių sistemos struktūrą ir saugumą, reikia atsižvelgti į keletą esminių kompromisų. Bendra rekomendacija bet kuriai išmaniųjų sutarčių sistemai yra nustatyti tinkamą šių pagrindinių kompromisų pusiausvyrą.

Ideali išmani sutarčių sistema iš programinės įrangos inžinerijos yra modulinė, ji pakartotinai naudoja kodą, o ne dubliuoja, ir palaiko atnaujinamus komponentus. Ideali išmaniųjų sutarčių sistema iš saugios architektūros šališkumo gali pasidalinti šia mintimi, ypač sudėtingesnių išmaniųjų sutarčių sistemų atveju.

Tačiau yra svarbių išimčių, kai saugos ir programinės įrangos inžinerijos geriausia praktika gali būti nesuderinta. Kiekvienu atveju tinkamas balansas gaunamas nustačius optimalų savybių derinį pagal sutarties sistemos matmenis, tokius kaip:

  • Tvirtas ir atnaujinamas
  • Monolitinis ir modulinis
  • Pasikartojimas ir pakartotinis naudojimas
Tvirtas ir atnaujinamas

Nors keliuose ištekliuose, įskaitant šį, pabrėžiamos plastiškumo charakteristikos, tokios kaip „Killable“, „Upgradeable“ arba „Modifiable“ modeliai, yra esminis kompromisas tarp kintamumo ir saugumo.

Plakimo modeliai pagal apibrėžimą suteikia sudėtingumo ir potencialių atakų paviršių. Paprastumas yra ypač veiksmingas, kai sudėtingumas yra tais atvejais, kai išmanioji sutarčių sistema iš anksto nustatytą ribotą laiką atlieka labai ribotą funkcijų rinkinį, pavyzdžiui, be valdymo riboto laiko tarpinio ženklo pardavimo sutarties sistema.

Monolitinis ir modulinis

Monolitinė savarankiška sutartis leidžia visas žinias identifikuoti ir įskaityti vietoje. Nors yra keletas labai vertinamų pažangių sutarčių sistemų, kurios egzistuoja kaip monolitai, reikia pateikti argumentą dėl ypatingo duomenų lokalizavimo ir srauto, pavyzdžiui, kodų peržiūros efektyvumo optimizavimo atveju.

Kaip ir kitų čia nagrinėjamų kompromisų atveju, geriausios saugumo praktikos pavyzdžiai nukreipiami į geriausios programinės įrangos inžinerijos praktiką paprastų trumpalaikių sutarčių atveju ir į geriausios programinės įrangos inžinerijos praktikos tendencijas sudėtingesnių nuolatinių sutarčių sistemų atveju..

Pasikartojimas ir pakartotinis naudojimas

Pažangi sutarčių sistema programinės įrangos inžinerijos požiūriu nori maksimaliai padidinti pakartotinį naudojimą, kai tai pagrįsta. Yra daugybė būdų, kaip pakartotinai naudoti sutarties kodą „Solidity“. Naudojant patikrintas anksčiau įdiegtas sutartis, kurios jums priklauso, paprastai yra saugiausias būdas pakartotinai naudoti kodą.

Dažnai pasikliaujama tais atvejais, kai nėra savarankiškų anksčiau įdiegtų sutarčių. Tokios pastangos kaip „OpenZeppelin“ solidumo biblioteka stengtis pateikti šablonus, kad saugų kodą būtų galima pakartotinai naudoti be dubliavimo. Į bet kokią sutarties saugumo analizę turi būti įtrauktas visas pakartotinai naudojamas kodas, kuris anksčiau nenustatė pasitikėjimo lygio, proporcingo rizikingoms lėšoms tikslinėje išmaniųjų sutarčių sistemoje..

Programų kūrimas ir paleidimas „Ethereum“ yra neabejotinai įdomiausia programinės įrangos inžinierių sritis, tačiau tam reikia nuolatinio grėsmių modeliavimo, saugumo audito ir reagavimo į incidentus planavimo.

Kruopštumo komanda yra čia, kad padėtų išlikti budriems ir sustiprinti pasitikėjimą savo dislokavimu.

Užsisakykite „Blockchain“ saugumo patikrinimą vietoje

Mūsų vienos dienos apžvalgos padeda jums nuo pat pradžių sukurti saugumą savo „blockchain“ kode, kad galėtumėte sutaupyti laiko ir pinigų ilgainiui. Užsisakykite šiandien „SecuritySmart“ sutartisNaujienlaiškisUžsisakykite mūsų naujienlaiškio, kuriame rasite naujausias „Ethereum“ naujienas, įmonės sprendimus, kūrėjų išteklius ir dar daugiau. El. Pašto adresas Išskirtinis turinysKaip sukurti sėkmingą „Blockchain“ produktąInternetinis seminaras

Kaip sukurti sėkmingą „Blockchain“ produktą

Kaip nustatyti ir paleisti „Ethereum“ mazgąInternetinis seminaras

Kaip nustatyti ir paleisti „Ethereum“ mazgą

Kaip susikurti savo „Ethereum“ APIInternetinis seminaras

Kaip susikurti savo „Ethereum“ API

Kaip sukurti socialinį ženkląInternetinis seminaras

Kaip sukurti socialinį ženklą

Saugumo priemonių naudojimas kuriant išmanųjį kontraktąInternetinis seminaras

Saugumo priemonių naudojimas kuriant išmanųjį kontraktą

Finansų ateitis Skaitmeninis turtas ir „DeFi“Internetinis seminaras

Finansų ateitis: skaitmeninis turtas ir „DeFi“

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map