clustering top 10 functions
transfer() vs transferFrom()
number of unique implementations for 15 most common function names
dominance of most common function
- eveem.org smart contract decompiler
- Identifying smart contract vulnerabilities
What it does
- Web application for exploratory analysis of the smart contracts
Machine learning algorithm surfaces similarities between smart contract functions
Finds known vulnerabilities in deployed smart contracts by matching patterns of code on per-function basis.
Builds the smart contract code reuse index in the scope of the ethereum network
How we built it
- Decompiled EVM bytecode into abstract syntax tree using eveem.org
- Created indexed dataset of >800,000 functions ( reverse-engineered) deployed on mainnet
- Managed database with Google BigQuery
- Built specialized index of function implementations
- Trained ML classifier to identify similar functions from other contracts
- Built statistics dashboard
- Built contract explorer web application
Challenges we ran into
- Tried and failed to use highly complex neural network because of long training time
- Building Features from Smart contract bytecode using abstract syntax trees
Accomplishments that we're proud of
- UI/Dashboard is of immediate value to the Ethereum community
- Discovered a bug in eveem.org using ML
- Built ML model that discovered some interesting insights in contract implementations
- Statistical analysis of smart contract functionality
What's next for Contract Genius
- What can users discover with this tool?
- How can developers understand their own functions better?
- How can this tool be used to identify smart contract vulnerabilities?