Slándáil chonartha cliste
Tá conarthaí cliste thar a bheith solúbtha, agus tá siad in ann méideanna móra luacha agus sonraí a rialú, agus an loighic do-athraithe a reáchtáil bunaithe ar chód a imscartar ar an blocshlabhra. Chruthaigh sé seo éiceachóras bríomhar d’fheidhmchláir dhíláraithe gan iontaoibh a sholáthraíonn go leor buntáistí thar chórais oidhreachta. Léiríonn siad freisin deiseanna d’ionsaitheoirí atá ag iarraidh brabús a dhéanamh trí leas a bhaint as leochaileachtaí i gconarthaí cliste.
Déanann blocshlabhraí poiblí, cosúil le Ethereum, an cheist maidir le conarthaí cliste a dhaingniú níos casta fós. Ní féidir cód conartha imlonnaithe go hiondúil a athrú le lochtanna slándála a phaisteáil, agus bíonn sé fíordheacair sócmhainní a ghoidtear ó chonarthaí cliste a rianú agus de ghnáth ní féidir iad a aisghabháil mar gheall ar dho- athraitheacht.
Cé go n-athraíonn figiúirí, meastar go bhfuil an méid iomlán luach a goideadh nó a cailleadh de bharr lochtanna slándála i gconarthaí cliste níos mó go mór ná $1 billiún. Áirítear leis seo teagmhais ardphróifíle, mar an hack DAO (3.6M ETH goidte, luach os cionn $1B i bpraghsanna an lae inniu), Haic sparán il-sig Parity ($30M caillte ag hackers), agus an Parity eisiúint sparán reoite (os cionn $300M in ETH faoi ghlas go deo).
De bharr na saincheisteanna thuasluaite tá sé ríthábhachtach d’fhorbróirí iarracht a dhéanamh chun conarthaí cliste atá slán, láidir agus athléimneach a thógáil. Is gnó tromchúiseach é slándáil conartha chliste, agus ní mór do gach forbróir é a fhoghlaim. Clúdóidh an treoir seo breithnithe slándála d’fhorbróirí Ethereum agus scrúdóidh sé acmhainní chun slándáil conarthaí cliste a fheabhsú.
Réamhriachtanais
Cinntigh go bhfuil tú eolach ar na bunphrionsabail fhorbartha conartha cliste sula dtéann tú i ngleic leis an tslándáil.
Treoirlínte maidir le conarthaí cliste Ethereum a thógáil
1. Dear rialuithe cearta rochtana
I gconarthaí cliste, is féidir le feidhmeanna atá marcáilte poiblí
nó seachtrach
a ghlaoch ó aon chuntais faoi úinéireacht sheachtrach (EOAanna) nó cuntais chonartha. Is gá infheictheacht phoiblí d’fheidhmeanna a shonrú más mian leat go n-idirghníomhaíonn daoine eile le do chonradh. Ní féidir feidhmeanna atá marcáilte príobháideach
a ghlaoch, áfach, ach amháin ag feidhmeanna laistigh den chonradh cliste, agus ní cuntais sheachtracha. Má thugtar rochtain do gach rannpháirtí líonra ar fheidhmeanna conartha is féidir fadhbanna a chruthú, go háirithe má chiallaíonn sé gur féidir le haon duine oibríochtaí íogaire a dhéanamh (m.sh. comharthaí nua a bhualadh).
Chun úsáid neamhúdaraithe feidhmeanna conartha cliste a chosc, is gá rialuithe rochtana slána a chur i bhfeidhm. Cuireann meicníochtaí rialaithe rochtana srian ar an gcumas feidhmeanna áirithe i gconradh cliste a úsáid d’eintitis fhormheasta, amhail cuntais atá freagrach as an gconradh a bhainistiú. Is dhá phatrún úsáideach iad an patrún inúinéireachta agus an rialú bunaithe ar ról chun rialú rochtana a chur i bhfeidhm i gconarthaí cliste:
Patrún inúinéireachta
Sa phatrún Inúinéireachta, socraítear seoladh mar “úinéir” an chonartha le linn phróiseas cruthaithe an chonartha. Sanntar modhnóir OnlyOwner
d’fheidhmeanna cosanta, rud a chinntíonn go bhfíordheimhníonn an conradh céannacht an tseolta glaonna sula gcuirtear an fheidhm i gcrích. Filleann glaonna chuig feidhmeanna cosanta ó sheoltaí eile seachas úinéir an chonartha i gcónaí, rud a chuireann cosc ar rochtain nach dteastaíonn.
Rialú rochtana ról-bhunaithe
Má chláraítear seoladh aonair mar Úinéir
i gconradh cliste, tugtar isteach riosca lárúcháin agus is pointe aonair teipe é. Má sháraítear eochracha cuntais an úinéara, is féidir le hionsaitheoirí ionsaí a dhéanamh ar an gconradh faoi úinéireacht. Sin é an fáth go bhféadfadh sé gur rogha níos fearr patrún rialaithe rochtana ról-bhunaithe a úsáid le cuntais riaracháin iolracha.
I rialú rochtana ról-bhunaithe, déantar rochtain ar fheidhmeanna íogaire a dháileadh idir sraith rannpháirtithe iontaofa. Mar shampla, d’fhéadfadh cuntas amháin a bheith freagrach as comharthaí a mhionú, agus déanann cuntas eile uasghrádú nó sos don chonradh. Má dhéantar rialú rochtana a dhílárú ar an mbealach seo, cuirtear deireadh le pointí aonair teipe agus laghdaítear boinn tuisceana iontaobhais d’úsáideoirí.
Ag baint úsáide as sparán le sínithe iolracha
Cur chuige eile chun rialú rochtana slána a chur i bhfeidhm is ea chuntas le sínithe iolracha a úsáid chun conradh a bhainistiú. Murab ionann agus EOA rialta, tá cuntais le sínithe iolracha faoi úinéireacht aonáin iolracha agus éilíonn siad sínithe ó líon íosta cuntas - abair 3-de-5 - chun idirbhearta a chur i gcrích.
Trí multisig a úsáid le haghaidh rialú rochtana tugtar isteach sraith bhreise slándála ós rud é go dteastaíonn toiliú ó pháirtithe iolracha le gníomhartha ar an spriocchonradh. Tá sé seo úsáideach go háirithe má tá gá leis an bpatrún Inúinéireachta a úsáid, toisc go mbíonn sé níos deacra d’ionsaitheoir nó do chos istigh bradacha feidhmeanna conartha íogaire a ionramháil ar son críocha mailíseacha.
2. Úsáid ráitis require(), assert(), agus revert() chun oibríochtaí conartha a chosaint
Mar atá luaite, is féidir le duine ar bith feidhmeanna poiblí a ghlaoch i do chonradh cliste nuair a bheidh sé imscaradh ar an blocshlabhra. Ós rud é nach bhfuil a fhios agat roimh ré conas a idirghníomhóidh cuntais sheachtracha le conradh, is fearr cosaintí inmheánacha a chur i bhfeidhm in aghaidh oibríochtaí fadhbacha roimh imscaradh. Is féidir leat iompar ceart a chur i bhfeidhm i gconarthaí cliste trí úsáid a bhaint as na ráitis require()
, assert()
, agus revert()
chun eisceachtaí a spreagadh agus dul ar ais athruithe staide a chealú má theipeann ar fhorghníomhú ceanglais áirithe a shásamh.
require()
: sainmhínítear require
ag tús na bhfeidhmeanna agus cinntíonn sé go gcomhlíontar coinníollacha réamhshainithe sula ritear an fheidhm ghlaoite. Is féidir ráiteas require
a úsáid chun ionchuir úsáideora a bhailíochtú, athróga staide a sheiceáil, nó chun aitheantas an chuntais ghlao a fhíordheimhniú sula dtéann tú ar aghaidh le feidhm.
assert()
: úsáidtear assert()
chun earráidí inmheánacha a bhrath agus chun sáruithe ar “do-athraithigh” a sheiceáil i do chód. Is dearbhú loighciúil é do-athraitheach faoi staid an chonartha agus ba cheart go mbeadh sé fíor i gcás gach feidhme a ritear. Sampla ide dho-athraitheach is ea an t-uas-soláthar iomlán nó iarmhéid conartha dearbháin. Trí úsáid a bhaint as assert()
cinntíonn sé nach sroicheann do chonradh staid leochaileach choíche, agus má dhéanann sé, déantar gach athrú ar athróga staide a rolladh siar.
revert()
: Is féidir revert()
a úsáid i ráiteas eile a spreagann eisceacht mura mbíonn an coinníoll riachtanach sásta. Úsáideann an conradh samplach thíos revert()
chun comhlíonadh feidhmeanna a chosaint:
1pragma solidity ^0.8.4;23contract VendingMachine {4 address owner;5 error Unauthorized();6 function buy(uint amount) public payable {7 if (amount > msg.value / 2 ether)8 revert("Not enough Ether provided.");9 // Perform the purchase.10 }11 function withdraw() public {12 if (msg.sender != owner)13 revert Unauthorized();1415 payable(msg.sender).transfer(address(this).balance);16 }17}Taispeáin gach rud
3. Conarthaí cliste a thástáil agus cruinneas an chóid a fhíorú
Ciallaíonn do-athraitheacht an chóid a fheidhmíonn i Meaisín Fíorúil Ethereum go n-éilíonn conarthaí cliste leibhéal measúnaithe cáilíochta níos airde le linn na céime forbartha. Feabhsófar an tslándáil go mó má dhéantar tástáil fhairsing ar do chonradh agus é a bhreathnú le haghaidh aon torthaí gan choinne, agus cosnóidh sé d’úsáideoirí san fhadtréimhse.
Is é an gnáth-mhodh tástálacha aonaid bheaga a scríobh le sonraí bréige a den chineál a mbeadh súil leo ó úsáideoirí an chonartha. Tá Tástáil aonaid go maith chun feidhmiúlacht fheidhmeanna áirithe a thástáil agus chun a chinntiú go n-oibríonn conradh cliste mar a bhíothas ag súil leis.
Ar an drochuair, níl an tástáil aonaid chomh héifeachtach agus is féidir chun slándáil conartha cliste a fheabhsú nuair a úsáidtear iad ina n-aonar. D’fhéadfadh tástáil aonaid a chruthú go bhfeidhmíonn feidhm i gceart le haghaidh sonraí bréige, ach níl tástálacha aonaid ach chomh héifeachtach leis na tástálacha atá scríofa. Is deacair cásanna imill caillte agus leochaileachtaí a bhrath a d'fhéadfadh sábháilteacht do chonartha cliste a bhriseadh.
Is fearr mar chur chuige tástáil aonaid a chomhcheangal le tástáil bunaithe ar mhaoin a dhéantar trí úsáid a bhaint as anailís statach agus dinimiciúil. Braitheann anailís statach ar léirithe íseal-leibhéil, mar sreabhghraif rialaithe agus crainn chomhréire teibí chun anailís a dhéanamh ar ríomhstaid insroichte agus ar chonairí feidhmithe. Idir an dá linn, déanann teicnící anailíse dinimiciúla, mar beachtú conarthaí cliste, conradh cóid a rith le luachanna ionchuir randamacha chun oibríochtaí a sháraíonn airíonna slándála a bhrath.
Teicníc eile is ea Fíorú foirmiúil chun airíonna slándála i gconarthaí cliste a fhíorú. Murab ionann agus tástáil rialta, is féidir le fíorú foirmiúil easpa earráidí a chruthú go cinntitheach i gconradh cliste. Baintear é seo amach trí shonraíocht fhoirmiúil a chruthú a chuimsíonn na hairíonna slándála inmhianaithe agus a chruthaíonn go gcloíonn samhail fhoirmiúil de na conarthaí leis an tsonraíocht seo.
4. Iarr athbhreithniú neamhspleách ar do chód
Tar éis do chonradh a thástáil, is maith an rud é iarraidh ar dhaoine eile an cód foinse a sheiceáil le haghaidh aon saincheisteanna slándála. Ní nochtfaidh an tástáil gach locht i gconradh cliste, ach má fhaightear athbhreithniú neamhspleách méadaítear an fhéidearthacht go bhfeicfidh tú leochaileachtaí.
Iniúchtaí
Bealach amháin chun athbhreithniú neamhspleách ar an gcód a dhéanamh is ea iniúchadh conartha cliste a choimisiúnú. Tá ról tábhachtach ag iniúchóirí lena chinntiú go bhfuil conarthaí cliste slán agus saor ó lochtanna cáilíochta agus earráidí dearaidh.
Mar sin féin, ba cheart duit iniúchtaí a sheachaint mar réiteach draíochta. Ní fheicfidh iniúchtaí cliste conartha gach fabht agus tá siad deartha den chuid is mó chun babhta breise athbhreithnithe a sholáthar, ar féidir leo cabhrú le saincheisteanna a bhrath a chaill forbróirí le linn na forbartha agus na tástála tosaigh. Ba cheart duit na cleachtais is fearr a leanúint freisin maidir le bheith ag obair le hiniúchóirí, mar chód a dhoiciméadú i gceart agus tuairimí inlíne a chur leis, chun an leas is fearr a bhaint as iniúchadh conartha cliste.
- Leideanna iniúchta conartha cliste & cleasanna - @tinchoabbate
- Bain an tairbhe is mó as d’iniúchadh - Tátail
Deolchairí fabht
Is cur chuige eile é clár deolchairí fabht a bhunú chun athbhreithnithe cód seachtracha a chur i bhfeidhm. Is luach saothair airgeadais é deolchairí fabht a thugtar do dhaoine aonair (go hiondúil Haiceálaithe bána) a aimsíonn leochaileachtaí in iarratas.
Nuair a úsáidtear i gceart iad, tugann deolchairí fabhtanna dreasacht do bhaill an phobail haiceála chun do chód a iniúchadh le haghaidh lochtanna criticiúla. Sampla ón bhfíorshaol is ea an “fabht airgid gan teorainn” a ligfeadh d’ionsaitheoir méid neamhtheoranta éitear a chruthú ar Soirbhíochas, prótacal Ciseal 2 a ritheann ar Ethereum. Ar ámharaí an tsaoil, d’aimsigh haiceálaí bán an locht agus chuir sé in iúl don fhoireann é, agus thuill sé íocaíocht mhór ar a shon.
Straitéis úsáideach is ea íocaíocht amach clár deolchaire fabhtanna a shocrú i gcomhréir le méid na gcistí atá i gceist. Déantar cur síos air mar deolchaire fabht scálaithe dreasachtaí airgeadais do dhaoine aonair chun leochaileachtaí a nochtadh go freagrach in ionad iad a shaothrú.
5. Lean na cleachtais is fearr le linn forbairt conarthaí cliste
Ní fhágann iniúchtaí agus deolchairí fabhtanna nach gá duit cód ardcháilíochta a scríobh. Cuirtear bonn le dea-shlándáil conartha cliste leis na próisis chuí deartha agus forbartha seo a leanas:
-
Stóráil gach cód i gcóras rialaithe leagan, mar shampla git
-
Déan gach modhnú cód trí iarratais ar tharraingt
-
Cinntigh go mbíonn athbhreithneoir neamhspleách amháin ar a laghad ag iarratais tarraingthe - má tá tú ag obair leat féin ar thionscadal, smaoinigh ar fhorbróirí eile a aimsiú agus athbhreithnithe ar chóid trádála
-
Úsáid timpeallacht forbartha chun conarthaí cliste a thástáil, a thiomsú agus a imscaradh
-
Rith do chód trí bhunuirlisí anailíse cóid, mar, Cyfrin Aderyn, Mythril agus Slither. Go hidéalach, ba chóir duit é seo a dhéanamh sula ndéantar gach iarratas ar tharraingt a chumasc agus difríochtaí san aschur a chur i gcomparáid
-
Cinntigh go dtiomsaíonn do chód gan earráidí, agus nach scaoileann an tiomsaitheoir Solidity aon rabhaidh
-
Déan do chód a dhoiciméadú i gceart (ag baint úsáide as NatSpec) agus déan cur síos i dteanga shothuigthe ar shonraí ailtireachta an chonartha. Déanfaidh sé seo níos fusa do dhaoine eile do chód a iniúchadh agus a athbhreithniú.
6. Pleananna láidre athshlánaithe ó thubaiste a chur i bhfeidhm
Má dhéantar rialuithe slána rochtana a dhearadh, modhnóirí feidhme a chur i bhfeidhm, agus moltaí eile is féidir feabhas a chur ar shlándáil chonarthaí cliste, ach ní féidir leo an seans go ndéanfar bradaíl mhailíseach as an áireamh. Chun conarthaí cliste slána a thógáil ní mór “ullmhú don teip” agus plean tacachumais a bheith ann chun freagairt go héifeachtach d’ionsaithe. Cuimseoidh plean ceart athshlánaithe tubaiste cuid de na comhpháirteanna seo a leanas nó iad uile:
Uasghráduithe conartha
Cé go bhfuil conarthaí cliste Ethereum do-athraithe de réir réamhshocraithe, is féidir méid áirithe inathraitheachta a bhaint amach trí úsáid a bhaint as patrúin uasghrádaithe. Is gá conarthaí a uasghrádú i gcásanna nach féidir do sheanchonradh a úsáid mar gheall ar locht criticiúil agus gurb é an rogha is indéanta an loighic nua a úsáid.
Oibríonn meicníochtaí uasghrádaithe conartha ar bhealach difriúil, ach tá an “patrún seachfhreastalaí” ar cheann de na cineálacha cur chuige is coitianta chun conarthaí cliste a uasghrádú. Roinneann patrúin seachfhreastalaí staid agus loighic feidhmchláir idir dhá chonradh. Stórálann an chéad chonradh (ar a dtugtar ‘conradh seachfhreastalaí’) athróga staide (m.sh., iarmhéideanna úsáideoirí), agus coimeádann an dara conradh (ar a dtugtar ‘conradh loighce’) an cód chun feidhmeanna conartha a rith.
Idirghníomhaíonn cuntais leis an gconradh seachfhreastalaí, a sheolann gach glao feidhme chuig an gconradh loighce trí delegatecall()
glao ar leibhéal íseal. Murab ionann agus gnáthghlao teachtaireachta, cinntíonn delegatecall()
an cód a ritheann ag seoladh an chonartha loighce go gcuirtear i bhfeidhm é i gcomhthéacs an chonartha glaonna. Ciallaíonn sé seo go scríobhfaidh an conradh loighce i gcónaí chuig stóras an tseachfhreastalaí (seachas a stór féin) agus go gcaomhnaítear bunluachanna msg.sender
agus msg.value
.
Chun glaonna a tharmligean chuig an gconradh loighce ní mór a sheoladh a stóráil i stóras an chonartha seachfhreastalaí. Mar sin, níl i gceist le huasghrádú loighic an chonartha ach conradh loighce eile a imscaradh agus an seoladh nua a stóráil sa chonradh seachfhreastalaí. Ós rud é go seoltar glaonna ar an gconradh seachfhreastalaí go huathoibríoch chuig an gconradh loighce nua, bheadh “uasghrádú” déanta agat ar an gconradh gan an cód a mhodhnú i ndáiríre.
Tuilleadh faoi chonarthaí a uasghrádú.
Stopanna éigeandála
Mar a luadh, ní féidir le hiniúchadh agus tástáil fhairsing gach fabht a aimsiú i gconradh cliste. Má tá leochaileacht le feiceáil i do chód tar éis imscartha, ní féidir é a phaisteáil toisc nach féidir leat an cód atá ag seoladh an chonartha a athrú. Chomh maith leis sin, d’fhéadfadh go dtógfadh sé am meicníochtaí uasghrádaithe (m.sh. patrúin seachfhreastalaí) a chur i bhfeidhm (is minic a éilíonn siad ceadú ó pháirtithe éagsúla), rud a thugann níos mó ama d’ionsaitheoirí chun níos mó damáiste a dhéanamh.
Is é an rogha núicléach feidhm “stop éigeandála” a chur i bhfeidhm a bhlocálann glaonna chuig feidhmeanna leochaileacha i gconradh. Is gnách go mbíonn na comhpháirteanna seo a leanas i stopanna éigeandála:
-
Athróg dhomhanda Boole a thugann le fios an bhfuil an conradh cliste i riocht stoptha nó nach bhfuil. Socraítear an athróg seo mar
false
agus an conradh á shocrú, ach rachaidh sé ar ais gotrue
nuair a stopfar an conradh. -
Feidhmeanna a thagraíonn don athróg Boole agus iad á gcur i gcrích. Tá feidhmeanna den sórt sin inrochtana nuair nach gcuirtear stop leis an gconradh cliste, agus éiríonn siad dorochtana nuair a spreagtar an ghné stop éigeandála.
-
Aonán a bhfuil rochtain aige ar an bhfeidhm stad éigeandála, a shocraíonn an athróg Boole mar
true
. Chun gníomhartha mailíseacha a chosc, is féidir glaonna chuig an bhfeidhm seo a theorannú chuig seoladh iontaofa (m.sh., úinéir an chonartha).
Nuair a ghníomhaíonn an conradh an stad éigeandála, ní bheidh feidhmeanna áirithe inghlaoite. Baintear é seo amach trí fheidhmeanna roghnaithe a thimfhilleadh i modhnóir a dhéanann tagairt don athróg dhomhanda. Seo thíos sampla ag cur síos ar chur i bhfeidhm an phatrúin seo i gconarthaí:
1// This code has not been professionally audited and makes no promises about safety or correctness. Use at your own risk.23contract EmergencyStop {45 bool isStopped = false;67 modifier stoppedInEmergency {8 require(!isStopped);9 _;10 }1112 modifier onlyWhenStopped {13 require(isStopped);14 _;15 }1617 modifier onlyAuthorized {18 // Check for authorization of msg.sender here19 _;20 }2122 function stopContract() public onlyAuthorized {23 isStopped = true;24 }2526 function resumeContract() public onlyAuthorized {27 isStopped = false;28 }2930 function deposit() public payable stoppedInEmergency {31 // Deposit logic happening here32 }3334 function emergencyWithdraw() public onlyWhenStopped {35 // Emergency withdraw happening here36 }37}Taispeáin gach rudCóip
Léiríonn an sampla seo bunghnéithe stadanna éigeandála:
-
Is Boole é
isStopped
a dhéanann meastóireacht arfalse
ag an tús agustrue
nuair a théann an conradh isteach sa mhód éigeandála. -
Seiceálann na modhnóirí feidhmeanna
onlyWhenStopped
agusstopedInEmergency
an athrógisStopped
. ÚsáidtearstopedInEmergency
chun feidhmeanna a rialú nár cheart a bheith inrochtana nuair a bhíonn an conradh leochaileach (m.sh.,taisce()
). Go simplí, fillfidh glaonna ar na feidhmeanna seo.
Úsáidtear onlyWhenStopped
le haghaidh feidhmeanna ba cheart a bheith inghlaoite le linn éigeandála (m.sh., emergencyWithdraw()
). Is féidir le feidhmeanna den sórt sin cabhrú leis an gcás a réiteach, agus dá bhrí sin fágtar iad as an liosta “feidhmeanna srianta”.
Trí úsáid a bhaint as feidhmiúlacht stad éigeandála cuirtear bac éifeachtach ar fáil chun déileáil le leochaileachtaí tromchúiseacha i do chonradh cliste. Mar sin féin, méadaíonn sé an gá atá ag úsáideoirí muinín a bheith acu as forbróirí gan é a ghníomhachtú ar chúiseanna leithleacha. Chuige sin, is réitigh fhéideartha iad rialú an stad éigeandála a dhílárú trí mheicníocht vótála ar slabhra, glas ama, nó formheas ó sparán síniú iolrach a chur faoina réir.
Monatóireacht ar imeachtaí
Ligeann Imeachtaí duit glaonna ar fheidhmeanna conartha cliste a rianú agus monatóireacht a dhéanamh ar athruithe ar athróga staide. Is fearr do chonradh cliste a ríomhchlárú chun imeacht a astú aon uair a dhéanann páirtí éigin gníomh atá ríthábhachtach don tsábháilteacht (m.sh. cistí a aistarraingt).
Soláthraíonn logáil imeachtaí agus monatóireacht orthu as slabhra léargais ar oibríochtaí conartha agus cabhraíonn sé le gníomhartha mailíseacha a aimsiú níos tapúla. Ciallaíonn sé seo gur féidir le d'fhoireann freagairt níos tapúla ar haiceanna agus gníomhú chun tionchar ar úsáideoirí a mhaolú, mar shampla feidhmeanna a chur ar sos nó uasghrádú a dhéanamh.
Is féidir leat uirlis monatóireachta réamhdhéanta a roghnú freisin a chuireann foláirimh ar aghaidh go huathoibríoch gach uair a idirghníomhaíonn duine le do chonarthaí. Ligfidh na huirlisí seo duit foláirimh saincheaptha a chruthú bunaithe ar thruicir éagsúla, amhail méid an idirbhirt, minicíocht glaonna feidhme, nó na feidhmeanna sonracha atá i gceist. Mar shampla, d’fhéadfá foláireamh a thagann isteach a ríomhchlárú nuair a thrasnaíonn an méid a aistarraingíodh in aon idirbheart amháin tairseach ar leith.
7. Córais rialachais shlána a dhearadh
B’fhéidir gur mhaith leat d’iarratas a dhílárú trí smacht a chur ar chroíchonarthaí cliste chuig baill an phobail. Sa chás seo, áireofar sa chóras conartha cliste modúl rialachais — meicníocht a cheadaíonn do bhaill an phobail gníomhartha riaracháin a fhormheas trí chóras rialachais ar slabhra. Mar shampla, féadfaidh sealbhóirí dearbhán vótáil ar thogra chun conradh seachfhreastalaí a uasghrádú go cur chun feidhme nua.
Is féidir le rialachas díláraithe a bheith tairbheach, go háirithe toisc go ndéanann sé leas na bhforbróirí agus na n-úsáideoirí deiridh a ailíniú. Mar sin féin, féadfaidh sásraí cliste rialachais conarthaí rioscaí nua a thabhairt isteach má chuirtear chun feidhme iad go mícheart. Cás sochreidte is ea má fhaigheann ionsaitheoir cumhacht ollmhór vótála (arna thomhas i líon na n-airíonna atá á sealbhú) trí iasacht flash a fháil agus má chuireann siad togra mailíseach chun cinn.
Bealach amháin chun fadhbanna a bhaineann le rialachas ar slabhra a chosc is ea glas ama a úsáid. Cuireann glas ama cosc ar chonradh cliste ó ghníomhartha áirithe a dhéanamh go dtí go n-imíonn méid áirithe ama thart. I measc na straitéisí eile tá “meáchan vótála” a shannadh do gach comhartha bunaithe ar cé chomh fada agus a cuireadh faoi ghlas é, nó cumhacht vótála seolta ag tréimhse stairiúil a thomhas (mar shampla, 2-3 bhloc san am a chuaigh thart) in ionad an bloc reatha. Laghdaíonn an dá mhodh an fhéidearthacht cumhacht vótála a bhailiú go tapa chun vótaí ar slabhra a mhealladh.
Tuilleadh faoi córais shlána rialachais a dhearadh, meicníochtaí éagsúla vótála sna DAOs, agus na gnáth-veicteora ionsaithe DAO a ghiaráil DeFi sna naisc chomhroinnte.
8. Laghdaigh castacht an chóid a oiread is féidir
Tá aithne ag forbróirí bogearraí traidisiúnta ar an bprionsabal KISS ("coimeád simplí é, a dhúramáin") é, mar a moltar gan castacht neamhriachtanach a thabhairt isteach i ndearadh bogearraí. Leanann sé seo an smaoineamh fadtréimhseach go “dteipeann ar chórais chasta ar bhealaí casta” agus go bhfuil siad níos mó i mbaol ó earráidí costasacha.
Tá tábhacht ar leith ag baint le rudaí a choinneáil simplí agus conarthaí cliste á scríobh, ós rud é go bhféadfadh conarthaí cliste méideanna móra luacha a rialú. Leid chun simplíocht a bhaint amach agus conarthaí cliste á scríobh ná leabharlanna atá ann cheana a athúsáid, ar nós Conarthaí OpenZeppelin, nuair is féidir. Toisc go ndearna forbróirí iniúchadh agus tástáil fhairsing ar na leabharlanna seo, laghdaítear an seans go dtabharfar isteach fabhtanna trí fheidhmiúlacht nua a scríobh ón tús.
Comhairle choitianta eile is ea feidhmeanna beaga a scríobh agus conarthaí modúlacha a choinneáil trí loighic ghnó a roinnt thar chonarthaí iolracha. Ní hamháin go laghdaítear an dromchla ionsaí i gconradh cliste nuair a scríobhtar cód níos simplí, déanann sé níos éasca freisin réasúnú a dhéanamh faoi chruinneas an chórais iomláin agus earráidí dearaidh féideartha a bhrath go luath.
9. Cosain in aghaidh leochaileachtaí coitianta i gconarthaí cliste
Athiontráil
Ní cheadaíonn an EVM comhrith, rud a chiallaíonn nach féidir le dhá chonradh a bhaineann le glao teachtaireachta oibriú go comhuaineach. Cuireann glao seachtrach feidhmiú agus cuimhne an chonartha glaonna ar sos go dtí go dtagann an glao ar ais, agus ag an bpointe sin is gnách go leantar den fhorghníomhú. Is féidir cur síos foirmiúil a dhéanamh ar an bpróiseas seo mar aistriú sreabhadh rialaithe chuig conradh eile.
Cé go bhfuil sé neamhdhíobhálach don chuid is mó, is féidir fadhbanna a chruthú, mar athiontráil, trí shreabhadh rialaithe a aistriú chuig conarthaí neamhiontaofa. Tarlaíonn ionsaí athiontrála nuair a ghlaonn conradh mailíseach ar ais isteach i gconradh leochaileach sula mbíonn agairt na bunfheidhme críochnaithe. Is fearr an cineál ionsaí seo a mhíniú le sampla.
Smaoinigh ar chonradh cliste simplí (‘Íospartach’) a ligeann do dhuine ar bith éitear a thaisceadh agus a aistarraingt:
1// This contract is vulnerable. Do not use in production23contract Victim {4 mapping (address => uint256) public balances;56 function deposit() external payable {7 balances[msg.sender] += msg.value;8 }910 function withdraw() external {11 uint256 amount = balances[msg.sender];12 (bool success, ) = msg.sender.call.value(amount)("");13 require(success);14 balances[msg.sender] = 0;15 }16}Taispeáin gach rudCóip
Nochtann an conradh seo feidhm aistarraing()
chun ligean d’úsáideoirí ETH a bhí i dtaisce sa chonradh roimhe seo a aistarraingt. Nuair a dhéantar aistarraingt a phróiseáil, déanann an conradh na hoibríochtaí seo a leanas:
- Seiceálann sé iarmhéid ETH an úsáideora
- Seolann cistí chuig an seoladh glaonna
- Athshocraíonn siad a n-iarmhéid go 0, rud a choscann aistarraingtí breise ón úsáideoir
Leanann an fheidhm withdraw()
i gconradh Victim
patrún “seiceálacha-idirghníomhaíochtaí-éifeachtaí”. Déanann sé seiceáil má shásaítear na coinníollacha atá riachtanach don fhorghníomhú (i.e., tá cothromaíocht dhearfach ETH ag an úsáideoir) agus déanann sé an idirghníomhaíocht em> trí ETH a sheoladh chuig seoladh an ghlaoiteora, sula gcuirtear éifeachtaí an idirbhirt i bhfeidhm (i.e. iarmhéid an úsáideora a laghdú).
Má ghlaoitear aistarraing()
ó chuntas faoi úinéireacht sheachtrach (EOA), feidhmíonn an fheidhm mar a bhíothas ag súil leis: seolann msg.sender.call.value()
ETH chuig an nglaoiteoir. Mar sin féin, más cuntas conartha cliste é msg.sender
glaonna aistarraing()
, seolfar cistí trí úsáid a bhaint as msg.sender.call.value()
agus spreagfar cód atá stóráilte ag an seoladh sin a rith.
Samhlaigh gurb é seo an cód a úsáidtear ag seoladh an chonartha:
1 contract Attacker {2 function beginAttack() external payable {3 Victim(victim_address).deposit.value(1 ether)();4 Victim(victim_address).withdraw();5 }67 function() external payable {8 if (gasleft() > 40000) {9 Victim(victim_address).withdraw();10 }11 }12}Taispeáin gach rudCóip
Tá an conradh seo deartha chun trí rud a dhéanamh:
- Glacadh le héarlais ó chuntas eile (EOA an ionsaitheora is dócha)
- Taisce 1 ETH isteach sa chonradh Íospartach
- Aisarraingt an 1 ETH atá stóráilte sa chonradh cliste
Níl aon rud mícheart anseo, ach amháin go bhfuil feidhm eile ag Ionsaitheoir
a ghlaonn aistarraing()
sa Victim
arís má bhíonn an gás atá fágtha ón gcód msg.sender.call.value
níos mó ná 40,000. Tugann sé seo an cumas do Ionsaitheoir
Íospartach
a iontráil arís agus tuilleadh cistí a aistarraingt roimh an chéad agairt aistarraing
críochnaithe. Breathnaíonn an timthriall mar seo:
1- Attacker's EOA calls `Attacker.beginAttack()` with 1 ETH2- `Attacker.beginAttack()` deposits 1 ETH into `Victim`3- `Attacker` calls `withdraw() in `Victim`4- `Victim` checks `Attacker`’s balance (1 ETH)5- `Victim` sends 1 ETH to `Attacker` (which triggers the default function)6- `Attacker` calls `Victim.withdraw()` again (note that `Victim` hasn’t reduced `Attacker`’s balance from the first withdrawal)7- `Victim` checks `Attacker`’s balance (which is still 1 ETH because it hasn’t applied the effects of the first call)8- `Victim` sends 1 ETH to `Attacker` (which triggers the default function and allows `Attacker` to reenter the `withdraw` function)9- The process repeats until `Attacker` runs out of gas, at which point `msg.sender.call.value` returns without triggering additional withdrawals10- `Victim` finally applies the results of the first transaction (and subsequent ones) to its state, so `Attacker`’s balance is set to 0Taispeáin gach rudCóip
Is é an achoimre ná toisc nach bhfuil iarmhéid an ghlaoiteora socraithe ag 0 go dtí go gcríochnaítear feidhmiú na feidhme, go n-éireoidh le hagairtí ina dhiaidh sin agus go gceadóidh siad don ghlaoiteoir a iarmhéid a aistarraingt go minic. Is féidir ionsaí den chineál seo a úsáid chun a chistí a dhísciú as conradh cliste, mar a tharla sa haic DAO 2016. Tá ionsaithe athiontrála fós ina fhadhb mhór do chonarthaí cliste inniu mar a léiríonn liostaí poiblí de bhradaíl athiontrála.
Conas ionsaithe athiontrála a chosc
Cur chuige chun déileáil le hathiontráil is ea seiceálacha-éifeachtaí-idirghníomhaíochtaí patrún. Ordaítear leis an bpatrún seo feidhmeanna a rith ar bhealach go ndéanann an cód na seiceálacha riachtanacha roimh dhul ar aghaidh le rith ar dtús, agus ina dhiaidh sin cód a ionramhálann staid chonartha, le cód a idirghníomhaíonn le conarthaí eile nó EOAnna ag an deireadh.
Úsáidtear an patrún seiceálacha-éifeacht-idirghníomhaíochta i leagan athbhreithnithe den chonradh Íospartach
a thaispeántar thíos:
1contract NoLongerAVictim {2 function withdraw() external {3 uint256 amount = balances[msg.sender];4 balances[msg.sender] = 0;5 (bool success, ) = msg.sender.call.value(amount)("");6 require(success);7 }8}Cóip
Déanann an conradh seo seiceáil ar iarmhéid an úsáideora, feidhmíonn sé éifeachtaí an aistarraing()
(trí iarmhéid an úsáideora a athshocrú go 0), agus leanann sé ar aghaidh chun an idirghníomhaíocht a dhéanamh (ETH a sheoladh chuig seoladh an úsáideora). Cinntíonn sé seo go ndéanann an conradh a stóras a nuashonrú roimh an nglao seachtrach, rud a chuireann deireadh leis an gcoinníoll athiontrála a chumasaigh an chéad ionsaí. D'fhéadfaí an conradh Ionsaitheoir
a ghlaoch ar ais go NoLongerAVictim
fós, ach ós rud é go bhfuil iarmhéideanna[msg.sender]
socraithe go 0, léireoidh aistarraingtí breise earráid.
Rogha eile is ea glas eisiatachta fhrithpháirtigh a úsáid (ar a dtugtar “mutex” de ghnáth) a ghlasálann cuid de stát conartha go dtí go gcríochnaítear agairt feidhme. Cuirtear é seo i bhfeidhm le hathróg Boole a shocraítear go true
sula bhfeidhmíonn an fheidhm agus a fhilleann go false
tar éis an agairt a dhéanamh. Mar atá sa sampla thíos, cosnaíonn úsáid mutex feidhm ar ghlaonna athfhillteacha agus an agairt bhunaidh fós ag próiseáil, rud a chuireann stop le hathiontráil.
1pragma solidity ^0.7.0;23contract MutexPattern {4 bool locked = false;5 mapping(address => uint256) public balances;67 modifier noReentrancy() {8 require(!locked, "Blocked from reentrancy.");9 locked = true;10 _;11 locked = false;12 }13 // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again.14 // Déanann an ráiteas `return` luacháil go `true` ach fós déanann sé `locked = false` measúnú ar an ráiteas sa mhodhnóir15 function withdraw(uint _amount) public payable noReentrancy returns(bool) {16 require(balances[msg.sender] >= _amount, "No balance to withdraw.");1718 balances[msg.sender] -= _amount;19 (bool success, ) = msg.sender.call{value: _amount}("");20 require(success);2122 return true;23 }24}Taispeáin gach rudCóip
Is féidir leat córas tarraingt íocaíochtaí a úsáid freisin a éilíonn ar úsáideoirí cistí a aistarraingt ó na conarthaí cliste, in ionad córas "brú-íocaíochtaí" a sheolann cistí chuig cuntais. Cuireann sé seo deireadh leis an bhféidearthacht cód a spreagadh gan chuimhneamh ag seoltaí anaithnide (agus féadann sé ionsaithe áirithe diúltú seirbhíse a chosc freisin).
Gannsreabhadh agus róshreabhadh slánuimhreacha
Tarlaíonn róshreabhadh slánuimhir nuair a thiteann torthaí oibríochta uimhríochta lasmuigh den raon luachanna inghlactha, rud a fhágann “rolladh anonn” go dtí an luach inléirithe is ísle. Mar shampla, ní féidir le uint8
ach luachanna suas go 2^8-1=255 a stóráil. Déanfaidh oibríochtaí uimhríochta a mbíonn luachanna níos airde ná 255
mar thoradh orthu róshreabhadh agus athshocróidh siad uint
go 0
, mar a athshocraíonn an odaiméadair ar charr go 0 uair amháin sroicheann sé an t-uasmhílteáiste (999999).
Tarlaíonn foshreafaí slánuimhir ar chúiseanna comhchosúla: titeann torthaí oibríochta uimhríochta faoin raon inghlactha. Abair go ndearna tú iarracht 0
a laghdú i uint8
, ní bheadh ann ach an toradh a rolladh anonn go dtí an t-uasluach inléirithe (255
).
D’fhéadfadh athruithe gan choinne ar athróga stáit an chonartha a bheith mar thoradh ar róshreabhadh agus ar ghannsreabhadh agus is féidir rith neamhphleanáilte a bheith mar thoradh air. Seo thíos sampla a thaispeánann conas is féidir le hionsaitheoir leas a bhaint as róshreabhadh uimhríochta i gconradh cliste chun oibríocht neamhbhailí a dhéanamh:
1pragma solidity ^0.7.6;23// This contract is designed to act as a time vault.4// User can deposit into this contract but cannot withdraw for at least a week.5// User can also extend the wait time beyond the 1 week waiting period.67/*81. Deploy TimeLock92. Deploy Attack with address of TimeLock103. Call Attack.attack sending 1 ether. You will immediately be able to11 withdraw your ether.1213What happened?14Attack caused the TimeLock.lockTime to overflow and was able to withdraw15before the 1 week waiting period.16*/1718contract TimeLock {19 mapping(address => uint) public balances;20 mapping(address => uint) public lockTime;2122 function deposit() external payable {23 balances[msg.sender] += msg.value;24 lockTime[msg.sender] = block.timestamp + 1 weeks;25 }2627 function increaseLockTime(uint _secondsToIncrease) public {28 lockTime[msg.sender] += _secondsToIncrease;29 }3031 function withdraw() public {32 require(balances[msg.sender] > 0, "Insufficient funds");33 require(block.timestamp > lockTime[msg.sender], "Lock time not expired");3435 uint amount = balances[msg.sender];36 balances[msg.sender] = 0;3738 (bool sent, ) = msg.sender.call{value: amount}("");39 require(sent, "Failed to send Ether");40 }41}4243contract Attack {44 TimeLock timeLock;4546 constructor(TimeLock _timeLock) {47 timeLock = TimeLock(_timeLock);48 }4950 fallback() external payable {}5152 function attack() public payable {53 timeLock.deposit{value: msg.value}();54 /*55 if t = current lock time then we need to find x such that56 x + t = 2**256 = 057 so x = -t58 2**256 = type(uint).max + 159 so x = type(uint).max + 1 - t60 */61 timeLock.increaseLockTime(62 type(uint).max + 1 - timeLock.lockTime(address(this))63 );64 timeLock.withdraw();65 }66}Taispeáin gach rud
Conas gannsreabhadh agus róshreabhadh slánuimhir a chosc
Ón leagan 0.8.0, diúltaíonn an tiomsaitheoir Solidity cód a mbíonn gannsreafaí agus rósreafaí slánuimhir mar thoradh air. Mar sin féin, ba cheart do chonarthaí arna dtiomsú le leagan tiomsaitheora níos ísle seiceálacha a dhéanamh ar fheidhmeanna a bhaineann le hoibríochtaí uimhríochta nó úsáid a bhaint as leabharlann (m.sh., SafeMath) a sheiceálann le haghaidh gannsreabhadh/róshreabhadh.
Ionramháil Oracle
Foinsíonn Oracail faisnéis atá as slabhra agus seolann siad ar slabhra í le húsáid ag conarthaí cliste. Le horacail, is féidir leat conarthaí cliste a dhearadh a idirghníomhaíonn le córais as slabhra, mar mhargaí caipitil, ag leathnú a bhfeidhmiú go mór.
Ach má bhíonn an t-oracal truaillithe agus faisnéis chontráilte á chur aige ar slabhra, rithfear conarthaí cliste bunaithe ar ionchuir earráideacha, rud a d'fhéadfadh fadhbanna a chruthú. Is é seo bunús an “fhadhb oracail”, a bhaineann lena chinntiú go bhfuil faisnéis ó oracal bhlocshlabhra cruinn, cothrom le dáta agus tráthúil.
Ábhar imní slándála gaolmhar is ea oracal ar slabhra a úsáid, amhail malartán díláraithe, chun spotphraghas sócmhainne a fháil. Is minic a dhéanann ardáin iasachtaithe sa tionscal airgeadais díláraithe (DeFi) é seo chun luach comhthaobhachta úsáideora a chinneadh chun a fháil amach cé mhéad is féidir leo a fháil ar iasacht.
Is minic a bhíonn praghsanna DEX cruinn, go príomha mar gheall ar arbatráisteoirí ag athbhunú paireacht sna margaí. Mar sin féin, is féidir iad a ionramháil, go háirithe má ríomhann an t-oracal ar slabhra praghsanna sócmhainní bunaithe ar phatrúin trádála stairiúla (mar a bhíonn de ghnáth).
Mar shampla, d'fhéadfadh ionsaitheoir spotphraghas sócmhainne a chaidéalú go saorga trí splanc-iasacht a fháil díreach roimh idirghníomhú le do chonradh iasachta. Dá gcuirfí ceist ar an DEX faoi phraghas na sócmhainne, thabharfadh sé luach níos airde ná an gnáthluach (mar gheall ar éileamh mór “ordú ceannaigh” an ionsaitheora ar an tsócmhainn), rud a ligeann dóibh níos mó a fháil ar iasacht ná mar ba chóir. Baineadh úsáid as "ionsaithe splanc iasachta" den sórt sin chun leas a bhaint as brath ar oracail phraghais i measc iarratais DeFi, rud a chosnaíonn na milliúin prótacail i gcistí caillte.
Conas ionramháil oracail a chosc
Is é an t-íosriachtanas chun ionramháil oracail a sheachaint ná líonra díláraithe oracail a úsáid a cheistíonn faisnéis ó fhoinsí iolracha chun pointí aonair teipe a sheachaint. I bhformhór na gcásanna, tá dreasachtaí cripteacnamaíocha tógtha ag oracail dhíláraithe chun nóid oracail a spreagadh chun faisnéis cheart a thuairisciú, rud a fhágann go bhfuil siad níos sláine ná oracail láraithe.
Má tá sé ar intinn agat ceist a chur ar oracal ar slabhra maidir le praghsanna sócmhainne, smaoinigh ar cheann a úsáid a chuireann meicníocht meánphraghais ualaithe ó thaobh ama (TWAP) i bhfeidhm. Ceistíonn TWAP oracle praghas sócmhainne ag dhá phointe éagsúla ama (a dhéanann tú is féidir é a mhodhnú) agus ríomhann sé an spotphraghas bunaithe ar an meán a fhaightear. Má roghnaíonn tú tréimhsí ama níos faide, cosnaíonn tú do phrótacal in aghaidh ionramhála praghsanna toisc nach féidir le horduithe móra a rinneadh le déanaí tionchar a imirt ar phraghsanna sócmhainní.
Acmhainní slándála conartha cliste d'fhorbróirí
Uirlisí chun conarthaí cliste a anailísiú agus chun cruinneas an chóid a fhíorú
-
Uirlisí tástála agus leabharlanna - Bailiúchán uirlisí agus leabharlann de chaighdeán an tionscail chun tástálacha aonaid a dhéanamh, anailís statach, agus anailís dhinimiciúil ar chonarthaí cliste.
-
Uirlisí fíoraithe foirmiúla - Uirlisí chun cruinneas feidhme i gconarthaí cliste a fhíorú agus chun malairtí a sheiceáil.
-
Seirbhísí cliste iniúchóireachta conartha - Liosta de na heagraíochtaí a sholáthraíonn seirbhísí iniúchta conarthaí cliste do thionscadail forbartha Ethereum.
-
Ardáin deolchaire fabht - Ardáin chun deolchairí fabhtanna a chomhordú agus luach saothair a thabhairt do nochtadh freagrach leochaileachtaí ríthábhachtacha i gconarthaí cliste.
-
Seiceálaí Forc - Uirlis in aisce ar líne chun gach faisnéis atá ar fáil maidir le conradh foirc a sheiceáil.
-
Ionchódóir ABI - _ Seirbhís saor in aisce ar líne chun feidhmeanna do chonartha Solidity agus argóintí cruthaitheora a ionchódú._
-
Aderyn - Anailíseoir Statach Solidity, ag trasnú na gCrann Comhréire Teibí (AST) chun leochaileachtaí amhrasta a aimsiú agus saincheisteanna a phriontáil amach i bhformáid marcáil síos atá éasca le tomhailt.
Uirlisí chun monatóireacht a dhéanamh ar chonarthaí cliste
-
OpenZeppelin Defender Sentinels - Uirlis chun monatóireacht a dhéanamh go huathoibríoch ar imeachtaí, feidhmeanna agus paraiméadair idirbheartaíochta ar do chonarthaí cliste agus chun freagairt dóibh.
-
Tenderly Real-Time Alerting - Uirlis chun fógraí fíor-ama a fháil nuair a tharlaíonn imeachtaí neamhghnácha nó gan choinne ar do chonarthaí nó ar do sparáin chliste.
Uirlisí le haghaidh riarachán slán chonarthaí cliste
-
OpenZeppelin Defender Admin - Comhéadan chun riarachán cliste conartha a bhainistiú, lena n-áirítear rialuithe rochtana, uasghráduithe agus cur ar sos.
-
Safe - _ Sparán conartha cliste ag rith ar Ethereum a éilíonn líon íosta daoine chun idirbheart a cheadú sular féidir leis tarlú (M-de-N)._
-
Conarthaí OpenZeppelin - Leabharlanna conartha chun gnéithe riaracháin a chur i bhfeidhm, lena n-áirítear úinéireacht conartha, uasghráduithe, rialuithe rochtana, rialachas, sos-ábaltacht, agus go leor eile.
Seirbhísí cliste iniúchta conartha
-
ConsenSys Diligence - Conradh cliste seirbhís iniúchta ag cabhrú le tionscadail ar fud an éiceachóras blocshlabhra a chinntiú go bhfuil a gcuid prótacail réidh le seoladh agus tógtha chun úsáideoirí a chosaint.
-
CertiK - Gnólacht slándála blocshlabhra le ceannródaíocht a dhéanamh ar úsáid na teicneolaíochta Fíorúcháin fhoirmiúil cheannródaíoch ar chonarthaí cliste agus líonraí blocshlabhra.
-
Trail of Bits - Cuideachta chíbearshlándála a chomhcheanglaíonn taighde slándála le meon ionsaitheora chun riosca a laghdú agus cód a neartú.
-
PeckShield - Cuideachta slándála Blocshlabhra a thairgeann táirgí agus seirbhísí ar mhaithe le slándáil, príobháideacht agus inúsáidteacht an éiceachóras blocshlabhra ar fad.
-
QuantStamp - Seirbhís iniúchta a éascaíonn glacadh príomhshrutha le teicneolaíocht blocshlabhra trí sheirbhísí slándála agus measúnaithe riosca.
-
OpenZeppelin - _ Cuideachta conartha cliste slándála a sholáthraíonn iniúchtaí slándála ar chórais dáilte._
-
Fíorú Am Reatha - Cuideachta slándála a dhéanann sainchúram de shamhaltú foirmiúil agus fíorú conarthaí cliste.
-
Hacken - _ Iniúchóir cibearshlándála Web3 le cur chuige 360-céim maidir le slándáil blocshlabhra. _
-
Nethermind - _ Seirbhísí iniúchta Solidity agus Cairo, ag cinntiú sláine conarthaí cliste agus sábháilteacht úsáideoirí ar fud Ethereum agus Starknet._
-
HashEx - Díríonn HashEx ar bhlocshlabhra agus iniúchadh conartha cliste chun slándáil criptea-airgeadraí a chinntiú, ag soláthar seirbhísí cosúil le forbairt conarthaí cliste, bréagionsaithe tástála, comhairliúchán blocshlabhra.
-
Code4rena - Ardán iniúchta iomaíoch a spreagann saineolaithe slándála conartha cliste chun leochaileachtaí a aimsiú agus cabhrú le web3 a dhéanamh níos sláine.
-
CodeHawks - Ardán iniúchtaí iomaíoch a dhéanann óstáil ar chomórtais iniúchta cliste do thaighdeoirí slándála.
-
Cyfriin - Lárionad cumhachta slándála Web3, ag goradh criptea-shlándáil trí tháirgí agus seirbhísí iniúchta conarthaí cliste.
-
ImmuneBytes - Gnólacht slándála Web3 a thairgeann iniúchtaí slándála ar chórais blocshlabhra trí fhoireann iniúchóirí a bhfuil taithí acu agus uirlisí den scoth.
-
Oxorio - Iniúchtaí conartha cliste agus blocshlabhra seirbhísí slándála le saineolas ar EVM, Solidity, ZK, teicneolaíocht tras-shlabhra do ghnólachtaí cripte agus tionscadail DeFi.
-
Inference - Cuideachta iniúchta slándála, le sainchúram in iniúchadh conartha cliste le haghaidh blocshlabhra EVM-bhunaithe. A bhuí lena n-iniúchóirí saineolacha sainaithníonn siad fadhbanna a d’fhéadfadh a bheith ann agus molann siad réitigh inghníomhaithe chun iad a réiteach roimh imscaradh.
Ardáin deolchairí lochtanna
-
Immunefi - ardán deolchaire fabhtanna le haghaidh conarthaí cliste agus tionscadail DeFi, ina ndéanann taighdeoirí slándála athbhreithniú ar an gcód, le leochaileachtaí a nochtadh, íocaíocht a fháil, agus criptiúchán níos sábháilte a dhéanamh.
-
HackerOne - Comhordú leochaileachta agus ardáin deolchaire fabhtanna a nascann gnólachtaí le tástálaithe bréagionsaithe agus taighdeoirí cibearshlándála.
-
HackenProof - Sain-ardáin deilchaire fabhtanna do tionscadail cripte (DeFi, Conarthaí Cliste, Sparán, CEX agus tuilleadh), ina soláthraíonn gairmithe slándála seirbhísí triáise agus ina n-íoctar taighdeoirí as tuarascálacha ábhartha, fíoraithe faoi fhabht.
-
Sherlock - Frithgheallaí in Web3 maidir le slándáil conarthaí cliste, le híocaíochtaí d’iniúchóirí arna mbainistiú trí chonarthaí cliste chun a chinntiú go n-íoctar fabhtanna ábhartha go cothrom.
-
CodeHawks - _ Ardáin iomaíoch deolchaire fabhtanna ina nglacann iniúchóirí páirt i gcomórtais agus i ndúshláin slándála, agus (go luath) ina n-iniúchtaí príobháideacha féin._
Foilseacháin ar leochaileachtaí agus ar shaothair conartha cliste aitheanta
-
ConsenSys: Ionsaithe Aitheanta ar Chonarthaí Cliste - Míniú sothuigthe do thosaitheoirí ar na leochaileachtaí conartha is suntasaí, le cód samplach d'fhormhór na gcásanna.
-
Clárlann SWC - Liosta coimeádta de Mhíreanna Áirimh Laige Coitianta (CWE) a bhaineann le conarthaí cliste Ethereum.
-
Rekt - Foilseachán a nuashonraítear go rialta de haiceanna agus dúshaothair ardphróifíle cripte, mar aon le tuarascálacha mionsonraithe iarbháis.
Dúshláin maidir le slándáil conartha cliste a fhoghlaim
-
Awesome BlockSec CTF -Liosta coimeádta de chluichí cogaidh slándála blocshlabhra, dúshláin, agus comórtais Gabháil na Brataí agus réiteach scríbhinní.
-
Damn Vulnerable DeFi - Cluiche cogaidh chun slándáil ionsaitheach conarthaí cliste DeFi a fhoghlaim agus scileanna a fhorbairt i bhfiach fabhtanna agus in iniúchadh slándála.
-
Ethernaut - Cluiche cogaidh bunaithe ar Web3/Solidity mar a bhfuil gach leibhéal ina chonradh cliste nach mór a 'haiceáil'.
-
HackenProof x HackTheBox - _ Dúshlán cliste haiceála conartha, suite in eachtra fantaisíochta. Má chuirtear an dúshlán i gcrích go rathúil tugtar rochtain freisin ar chlár príobháideach deolchaire fabhtanna._
Na cleachtais is fearr chun conarthaí cliste a dhaingniú
-
ConsenSys: Dea-Chleachtais Slándála Conarthaí Cliste Ethereum - Liosta cuimsitheach treoirlínte chun conarthaí cliste Ethereum a dhaingniú.
-
Nascent: Uirlisí Slándála Simplí - Bailiúchán de threoracha praiticiúla atá dírithe ar shlándáil agus seicliostaí chun conarthaí cliste a fhorbairt.
-
Patrúin Solidity - Tiomsú úsáideach de phatrúin shlána agus de dhea-chleachtais do theanga ríomhchlárúcháin na gconarthaí cliste Solidity.
-
Doiciméid Solidity: Cúrsaí Slándála - Treoirlínte chun conarthaí cliste slána a scríobh le Solidity.
-
Caighdeán Fíoraithe Slándála Conarthaí Cliste - Seicliosta ceithre pháirt déag cruthaithe chun slándáil conarthaí cliste a chaighdeánú d’fhorbróirí, d’ailtirí, d’athbhreithneoirí slándála agus do dhíoltóirí.
-
Foghlaim Slándáil agus Iniúchadh Conarthaí Cliste - Cúrsa deiridh um shlándáil agus iniúchadh conartha cliste, cruthaithe d'fhorbróirí conarthaí cliste atá ag iarraidh a gcuid cleachtais slándála is fearr a fheabhsú agus a bheith ina dtaighdeoirí slándála.