Älykäs sopimusturvallisuuden ajattelutapa

blogi 1NewsDevelopersEnterpriseBlockchain ExplainedTapahtumat ja konferenssitPainaUutiskirjeet

tilaa uutiskirjeemme.

Sähköpostiosoite

Kunnioitamme yksityisyyttäsi

EtusivuBlogiBlockchain Development

Älykäs sopimusturvallisuuden ajattelutapa

5 turvallisuusperiaatetta, jotka jokaisen Ethereumin kehittäjän on tiedettävä, sekä perusteelliset kompromissit. mennessä ConsenSys 17. kesäkuuta 2020 Lähetetty 17. kesäkuuta 2020

Blockchain-turvallisuus

ConsenSys Diligence, tiimimme blockchain-turvallisuusasiantuntijoita.

Vaikka ala kypsyy, älykäs sopimusten kehittäminen on edelleen suhteellisen uusi ja kypsyvä ala. Siksi sinun pitäisi odottaa jatkuvaa muutosta turvallisuusympäristössä, kun uusia vikoja ja turvallisuusriskejä havaitaan ja uusia parhaita käytäntöjä kehitetään. Oppiminen ja seuraaminen parhaat käytännöt on vasta alkua tietoturvatyölle, joka sinun on tehtävä älykkään sopimuksen kehittäjänä.

Älykäs sopimusohjelmointi vaatii erilaista teknistä ajattelutapaa kuin olet tottunut. Epäonnistumisen hinta voi olla korkea, ja muutos voi olla vaikeaa, mikä tekee siitä tavallaan enemmän samanlaista kuin laitteisto-ohjelmointi tai rahoituspalveluiden ohjelmointi kuin verkko- tai mobiilikehitys. Siksi ei riitä suojautumista tunnetuilta haavoittuvuuksilta. Sen sijaan sinun on opittava uusi kehitysfilosofia.

Valmistaudu epäonnistumiseen

Kaikissa ei-triviaalisissa sopimuksissa on virheitä. Koodisi on siis pystyttävä vastaamaan virheisiin ja haavoittuvuuksiin sulavasti.

  • Keskeytä sopimus, kun asiat menevät pieleen (“katkaisija”).
  • Hallitse riskirahaa (korkorajoitus, enimmäiskäyttö).
  • Sinulla on tehokas päivityspolku virhekorjauksiin ja parannuksiin.

Ota käyttöön huolellisesti

On aina parempi saada vikoja ennen täyttä tuotantojulkaisua.

  • Testaa sopimukset perusteellisesti ja lisää testejä aina, kun uusia hyökkäysvektoreita löydetään.
  • Tarjoa bugipalkkioita alkaen alfa testnet -julkaisuista.
  • Käyttöönotto vaiheittain lisäämällä käyttöä ja testausta kussakin vaiheessa.

Pidä sopimukset yksinkertaisina

Monimutkaisuus lisää virheiden todennäköisyyttä.


  • Varmista, että sopimuslogiikka on yksinkertainen.
  • Moduloi koodi pitämään sopimukset ja toiminnot pieninä.
  • Käytä jo kirjoitettuja työkaluja tai koodia mahdollisuuksien mukaan (esim. Älä käytä omaa satunnaislukugeneraattoriasi).
  • Mieluummin selkeys suorituskykyyn aina kun mahdollista.
  • Käytä estoketjua vain järjestelmän hajauttamista vaativiin osiin.

Pysyä ajan tasalla

Seuraa uutta turvallisuuden kehitystä.

  • Tarkista sopimuksistasi mahdolliset uudet virheet heti, kun ne havaitaan.
  • Päivitä työkalun tai kirjaston uusimpaan versioon mahdollisimman pian.
  • Ota käyttöön uudet turvallisuustekniikat, jotka vaikuttavat hyödyllisiltä.

Ole tietoinen EVM: n idiosynkrasioista

Vaikka suuri osa ohjelmointikokemuksestasi on merkityksellistä Ethereum-ohjelmoinnille, on joitain sudenkuoppia, joista on syytä olla tietoinen.

  • Ole erittäin varovainen ulkoisten sopimuspuhelujen suhteen, jotka saattavat suorittaa haitallista koodia ja muuttaa ohjausvirtaa.
  • Ymmärrä, että julkiset toimintasi ovat julkisia ja että niitä voidaan kutsua vahingollisesti ja missä tahansa järjestyksessä. Älykkäiden sopimusten yksityiset tiedot ovat myös kaikkien nähtävissä.
  • Pidä kaasukustannukset ja estokaasuraja mielessä.
  • Huomaa, että aikaleimat ovat epätarkkoja lohkoketjussa: kaivostyöläiset voivat vaikuttaa tapahtuman suorittamisaikaan muutaman sekunnin sisällä.
  • Satunnaisuus ei ole triviaali lohkoketjussa, useimmat lähestymistavat satunnaislukujen muodostamiseen ovat pelattavissa lohkoketjussa.

Perustavanlaatuiset kompromissit

Älykkään sopimusjärjestelmän rakennetta ja turvallisuutta arvioitaessa on otettava huomioon useita perustavanlaatuisia kompromisseja. Älykkäiden sopimusjärjestelmien yleinen suositus on löytää oikea tasapaino näille perustavanlaatuisille kompromisseille.

Ihanteellinen älykäs sopimusjärjestelmä ohjelmistotuotannon puolueellisuudesta on modulaarinen, käyttää koodia uudelleen kopioinnin sijaan ja tukee päivitettäviä komponentteja. Ihanteellinen älykäs sopimusjärjestelmä, joka perustuu turvalliseen arkkitehtuuriin, voi jakaa tämän ajattelutavan, etenkin monimutkaisempien älykkäiden sopimusjärjestelmien tapauksessa.

On kuitenkin tärkeitä poikkeuksia, joissa tietoturvan ja ohjelmistosuunnittelun parhaat käytännöt eivät välttämättä ole yhdenmukaisia. Kussakin tapauksessa oikea tasapaino saadaan tunnistamalla optimaalinen ominaisuuksien yhdistelmä sopimusjärjestelmän mittojen mukaan, kuten:

  • Jäykkä vs. päivitettävä
  • Monoliittinen vs. modulaarinen
  • Kopiointi vs. uudelleenkäyttö
Jäykkä vs. päivitettävä

Vaikka useat resurssit, mukaan lukien tämä, korostavat muovattavuusominaisuuksia, kuten Killable-, Upgradeable- tai Modifable-malleja, muokattavuuden ja turvallisuuden välillä on perustavanlaatuinen kompromissi..

Muotoilukuviot lisäävät määritelmän mukaan monimutkaisuutta ja mahdollisia hyökkäyspintoja. Yksinkertaisuus on erityisen tehokas monimutkaisuuden suhteen tapauksissa, joissa älykäs sopimusjärjestelmä suorittaa hyvin rajallisen joukon toimintoja ennalta määrätyn rajoitetun ajanjakson ajan, esimerkiksi hallintotapainen rajallisen ajan kehysmerkintäjärjestelmä.

Monoliittinen vs. modulaarinen

Monoliittinen itsenäinen sopimus pitää kaiken tiedon paikallisesti tunnistettavissa ja luettavissa. Vaikka harvinaisia ​​korkeasti arvostettuja älykkäitä sopimusjärjestelmiä, jotka ovat olemassa monoliitteina, on perusteltava tietojen ja virtauksen äärimmäinen sijainti – esimerkiksi koodien tarkistuksen tehokkuuden optimoimiseksi.

Kuten muillakin tässä tarkastelluilla kompromisseilla, tietoturvan parhaat käytännöt etenevät ohjelmistotuotannon parhaista käytännöistä yksinkertaisissa lyhytaikaisissa sopimuksissa ja suuntaus kohti ohjelmistotuotannon parhaita käytäntöjä monimutkaisempien ikuisten sopimusjärjestelmien tapauksessa.

Kopiointi vs. uudelleenkäyttö

Älykäs sopimusjärjestelmä ohjelmistotuotannon näkökulmasta haluaa maksimoida uudelleenkäytön, jos se on järkevää. On olemassa useita tapoja käyttää sopimuskoodia uudelleen Solidityssä. Omistamiesi todistettujen aiemmin käyttöön otettujen sopimusten käyttö on yleensä turvallisin tapa saavuttaa koodin uudelleenkäyttö.

Päällekkäisyyteen vedotaan usein tapauksissa, joissa aiemmin omistettuja sopimuksia ei ole saatavana. Ponnistelut kuten OpenZeppelinin Solidity Library pyrkivät tarjoamaan malleja, jotta suojattua koodia voidaan käyttää uudelleen ilman päällekkäisyyksiä. Kaikkiin sopimusten tietoturva-analyyseihin on sisällyttävä kaikki uudelleenkäytetyt koodit, jotka eivät ole aiemmin luoneet luottamustasoa, joka on oikeassa suhteessa kohteena olevan älykkään sopimusjärjestelmän riskeihin.

Sovellusten rakentaminen ja käynnistäminen Ethereumilla on epäilemättä nykypäivän mielenkiintoisin raja ohjelmistosuunnittelijoille, mutta se vaatii jatkuvaa uhkamallinnusta, tietoturvatarkastusta ja tapahtumien torjunnan suunnittelua.

Diligence-tiimi auttaa sinua pysymään valppaana ja lisäämään luottamusta käyttöönottosi suhteen.

Varaa Blockchain Security Spot Check

Yhden päivän arvosteluemme auttavat sinua rakentamaan turvallisuutta blockchain-koodiin alusta alkaen, jotta voit säästää aikaa ja rahaa pitkällä aikavälillä. Varaa itsellesi tänään SecuritySmart-sopimuksetUutiskirjeTilaa uutiskirjeemme, jossa on uusimmat Ethereum-uutiset, yritysratkaisut, kehittäjien resurssit ja paljon muuta.SähköpostiosoiteYksinomainen sisältöKuinka rakentaa onnistunut blockchain-tuoteWebseminaari

Kuinka rakentaa onnistunut blockchain-tuote

Kuinka perustaa ja suorittaa Ethereum-solmuWebseminaari

Kuinka perustaa ja suorittaa Ethereum-solmu

Kuinka rakentaa oma Ethereum-sovellusliittymäWebseminaari

Kuinka rakentaa oma Ethereum-sovellusliittymä

Kuinka luoda sosiaalinen tunnusWebseminaari

Kuinka luoda sosiaalinen tunnus

Turvatyökalujen käyttäminen älykkäässä sopimusten kehittämisessäWebseminaari

Turvatyökalujen käyttäminen älykkäässä sopimusten kehittämisessä

Digitaalisten varojen ja DeFi: n tulevaisuusWebseminaari

Rahoituksen tulevaisuus: digitaaliset varat ja 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