Kuidas kasutada nutikat lepinguturbeanalüsaatorit Oyente - Solidity Tutorial

Oma eelmistes ajaveebides oleme õppinud, kuidas luua Ethereumi brauseripõhisel IDE-l põhinevat lihtsat kehtivat nutikat lepingut, kuidas juurutada trükkimise ja Ganache CLI-vahenditega Solidity skript „Tere maailm“ ning kuidas vaadata üle oma nutikad lepingukoodid koos automaatse auditeerimise tööriistaga Mythril.

Enamasti Ethereumi nutikatel lepingutel põhinevate ICO-de plahvatusliku kasvuga muutuvad koodide ülevaatamine ja koodide turvalisus tähtsamaks kui kunagi varem. Primaarse nutika lepingikeelena mõjutasid Solidity C ++, Python ja JavaScripti ning selle eesmärk on suunata Ethereumi virtuaalmasin (EVM). Hiljutises Blackhat Ethereumi konverentsil väitis Trail of Bits, et „kindlus on peaaegu kõigi Ethereumi probleemide allikas”.

Bits’s Blackhat Ethereumi esitluse jälg

Omaenda koodide ülevaatamise tavades oleme märganud, et Oyente, mis on veel üks nutikas lepinguliste automaatse auditeerimise tööriist, on aidanud meil täpselt tuvastada mitmeid õigustatud vigu, selle asemel et lihtsalt hunnik valehäireid esile tõsta.

2016. aasta jaanuaris töötasid Oyente välja Singapuri riikliku ülikooli teadlased. Uurimistöö algdokumendi leiate siit. Oyente on sümboolne täitmistööriist, mis töötab otse koos Ethereumi virtuaalse masina (EVM) baidikoodiga, ilma et oleks juurdepääsu kõrgel tasemel esindusele (nt Solidity, Serpent). See mehhanism on kriitiline, kuna Ethereumi plokiahela talletab ainult EVM-i lepingute baitkoode, mitte nende allikat.

Oyente suudab tuvastada mõned viimased Ethereumi turvavead, sealhulgas TheDAO viga, mis põhjustas 2016. aasta juunis 60 miljoni USA dollari suuruse kaotuse.

Selles artiklis tutvustame, kuidas Oyente Ubuntu süsteemi installida, juurutada ja kasutada. Ubuntu versioon, mida selle artikli jaoks kasutan, on Ubuntu 64-bitine, 16.04.4. Soovitame tungivalt käivitada Ubuntu VMWare'is, kuna see on palju sujuvam kui VirtualBox ja palju odavam (tasuta) kui Parallels.

Linuxi töökeskkonna seadistamine:

sudo apt-get install python
sudo apt install python-pip
pip install virtualenv
sudo apt install vim

Käivitage Python Virtualesbinv:

python -m virtualenv envsp
allikas env / bin / aktiveeri

Installige Oyente:

pip2 install oyente

Võib ilmneda järgmine tõrge:

Selle põhjuseks on vale python3 versioon. Proovige seda probleemi lahendada järgmiselt.

sudo apt-get install python3-venv
Python3 -m venv venv
pip install web3

Seejärel kontrollige python3 versiooni ja laske Ubuntu seadistada python3 versiooni päisefailiga Python.h, käivitades:

python3 - versioon

Ja siis jookse:

sudo apt-get install python3.6-dev

Pange tähele, et peate asendama “3.6” Python3 versiooninumbriga.

Proovige uuesti Oyente installimist:

pip2 install oyente

Install Solidity:

sudo add-apt-repository ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install solc

Installige Ethereumi virtuaalmasin (EVM):

sudo apt-get install tarkvara-omadused-ühine
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install ethereum

Installige Z3:

See samm võib võtta kuni 30 minutit. Haarake endale kohv ja nautige videot.

skriptid python / mk_make.py - python
cd ehitada
tegema
sudo teha install

Rihuta !! Olete Oyente'i installinud! Hinnakem nüüd nutikat lepingut sellega.

python oyente.py -s 

Kontrollige, kas teie väljund sarnaneb ülaltooduga. Kui jah, siis Oyente töötab teie Ubuntuga täiesti hästi! Sul on hea minna.

Järeldus

Siin on minu soovitus automaatse auditeerimise tööriistade kasutamiseks: vaadake esmalt üle käsitsi ja siis kasutage tööriista märkamata probleemide paljastamiseks, mitte vastupidi. Hea töövoo säilitamine on kasulik, nii et automaatseadmete loodud tulemused ei eksitaks teie enda otsuseid.

Samuti väärib märkimist, et võrreldes muude nutikate lepingute auditeerimise tööriistadega, näiteks Mythril, pakub Oyente paremaid tulemusi. Selle järeldame, analüüsides ja võrreldes hoolikalt meie käsitsi ülevaatuse aruandeid ja automaatsete tööriistade aruandeid mitme Uinti ala- ja ülevooluvea korral. Kuigi Mythril genereerib rohkem teateid, on enamik neist ilmsed valehäired. Usume, et Mythril ei võta koodi konteksti nii palju arvesse kui Oyente.

Kokkuvõtteks võiks öelda, et arendajad ja krüptovea kaevajad peaksid Oyente'i tõesti kaaluma, kui soovite oma nutikaid lepinguid kindlustada.

Autor Yuan He, saidi HaloBlock.io turvateadlane