The dataset serves as the supplementary material for a survey of formal specification and verification of smart contracts.
Publication | Authors | Venue | Year | Keywords | Platform |
---|---|---|---|---|---|
A model-driven approach to smart contract development | Boogaard | Master's Thesis | 2018 | Program synthesis, Validation, ADICO statements, FSM | Ethereum |
Secure smart contract generation based on Petri Nets | Zupan et al. | Blockchain Technology for Industry 4.0 | 2020 | Petri Nets, Validation, Program synthesis | Ethereum, Hyperledger Fabric is future work |
Building executable secure design models for smart contracts with formal methods | Xu and Fink | WTSC@FC | 2019 | Set-based methods, TLA+, Design patterns, Legal contract | Ethereum |
Automatic smart contract generation using controlled natural language and template | Tateishi et al. | IBM Journal of Research and Development | 2019 | Program synthesis, LDLf, ECA rules, Template, SCXML, Statechart, DSL4SC | Hyperledger Fabric |
Tool demonstration: FSolidM for designing secure Ethereum smart contracts | Mavridou and Laszka | POST | 2018 | Program synthesis, FSM, Design patterns, FSolidM | Ethereum |
Specification mining for smart contracts with automatic abstraction tuning execution trace | Guth et al. | arXiv | 2018 | Execution trace, Event abstraction, Dependency graph, Specification mining | Ethereum |
Towards model-driven engineering of smart contracts for cyber-physical systems | Garamvölgyi et al. | IEEE DNS Workshops | 2018 | Program synthesis, YAKINDU, Cyber-physical system, Access control | Ethereum |
Smart contract design meets state machine synthesis: Case studies | Suvorov and Ulyantsev | arXiv | 2019 | LTL, Program synthesis, EFSM-tools | Ethereum |
Caterpillar: A business process execution engine on the Ethereum blockchain | López-Pintado et al. | Software: Practice and Experience | 2019 | Program synthesis, Monitoring, BPMN | Ethereum |
Optimized execution of business processes on blockchain | Garcı́a-Bañuelos et al. | BPM | 2017 | Program synthesis, BPMN, Petri nets | Ethereum |
Untrusted business processes monitoring and execution using blockchain | Weber et al. | BPM | 2016 | Program synthesis, Monitoring, BPMN | Ethereum |
Who Spent My EOS? On the (In)Security of Resource Management of EOS.IO | Lee et al. | USENIX WOOT | 2019 | Resource consumption, Exploit generation | EOS.IO |
SmartInspect: Solidity smart contract inspector | Bragagnolo | IEEE IWBOSE@SANER | 2018 | Inspection, AST | Ethereum |
Is solidity solid enough? | Crafa et al. | WTSC@FC | 2019 | Formal semantics, Solidity, Featherweight Solidity | Ethereum |
Beagle: A new framework for smart contracts taking account of law | Tsai et al. | IEEE SOSE | 2019 | DSL, Legal contract | N/A |
Gigahorse: thorough, declarative decompilation of smart contracts | Grech et al. | IEEE/ACM ICSE | 2019 | CFG, Decompilation, Datalog | Ethereum |
How effective are smart contract analysis tools? Evaluating smart contract static analysis tools using bug injection | Ghaleb and Pattabiraman | ACM ISSTA | 2020 | Bug injection, Evaluation | Ethereum |
SIF: A framework for Solidity contract instrumentation and analysis | Peng et al. | IEEE APSEC | 2019 | Bug injection, Code instrumentation, Program synthesis, AST | Ethereum |
Lorikeet: A model-driven engineering tool | Tran et al. | BPM | 2018 | BPMN, Model-driven engineering, Program synthesis | Ethereum |
The treewidth of smart contracts | Chatterjee et al. | ACM SAC | 2019 | CFG, Treewidth | Ethereum |
Proof-carrying smart contract | Dickerson et al. | WTSC@FC | 2018 | Proof-carrying code, Hoare-style properties, In theory: Why3, Boogie verification | Ethereum |
From institutions to code: Towards automated generation of smart contracts | Frantz and Nowostawski | IEEE FAS*W | 2016 | Program synthesis, DSL, ADICO statements | Ethereum |
SoK: unraveling Bitcoin smart contracts | Atzei et al. | POST | 2018 | DSL, Process algebra, Formal semantics | Bitcoin |
Porthos: macroprogramming blockchain systems | Mizzi et al. | IFIP NTMS | 2019 | DSL, Commitment, Inter-chain communication, Peyton Jones | Hyperledger Fabric, Ethereum |
Marlowe: Financial Contracts on Blockchain | Lamela Seijas and Thompson | ISoLA | 2018 | DSL, Marlowe Language, Formal semantics, Haskell, Peyton Jones | Cardano |
Fun with Bitcoin Smart Contracts | Bartoletti et al. | ISoLA | 2018 | DSL, Process algebra, BitML | Bitcoin |
Writing Safe Smart Contracts in Flint | Schrans et al. | ACM Programming | 2018 | Programming language, Asset (Linear) type, Writing restrictions | Ethereum |
Domain specific language for smart contract development | Wohrer and Zdun | IEEE ICBC | 2020 | DSL, Program synthesis, CML | Ethereum |
SmaCoNat: Smart contracts in natural language | Regnath and Steinhorst | FDL | 2018 | DSL, Cyber-physical system | N/A |
Designing secure Ethereum smart contracts: A finite state machine based approach | Mavridou and Laszka | WTSC@FC | 2018 | Program synthesis, FSM, Design patterns, FSolidM | Ethereum |
Findel: Secure derivative contracts for Ethereum | Biryukov et al. | WTSC@FC | 2017 | DSL, Financial derivative, Peyton Jones | Ethereum |
A minimal core calculus for Solidity contracts | Bartoletti et al. | ESORICS, DPM and CBT | 2019 | Formal semantics, Solidity, TinySol | Ethereum |
SPESC: A specification language for smart contracts | He et al. | IEEE COMPSAC | 2018 | DSL, Legal contract | Ethereum |
BitML: A calculus for Bitcoin smart contracts | Bartoletti and Zunino | ACM CCS | 2018 | DSL, Process algebra, Formal semantics, BitML | Bitcoin |
Flint for safer smart contracts | Schrans et al. | arXiv | 2019 | Programming language, Asset (Linear) type, Writing restrictions | Ethereum |
Certifying Findel derivatives for blockchain | Arusoaie | arXiv | 2020 | DSL, Thorem proving, Formal semantics, Coq, Peyton Jones, Financial derivatives | Ethereum |
Defining the Ethereum virtual machine for interactive theorem provers | Hirai | WTSC@FC | 2017 | Theorem proving, Isabelle/HOL, Formal semantics, Vulnerabilities, EVM, Deed | Ethereum |
Marlowe: implementing and analysing financial contracts on blockchain | Lamela Seijas et al. | WTSC@FC | 2020 | DSL, Theorem proving, Isabelle/HOL, Static analysis, Haskell SBV, Peyton Jones, Language meta-theory | Cardano |
Termination of Ethereum's smart contracts | Genet et al. | Research Report | 2020 | Theorem proving, Isabelle/HOL, Formal semantics, EVM, Resource consumption | Ethereum |
Formal verification of Deed contract in Ethereum Name Service | Hirai | Personal Website | 2016 | Theorem proving, Isabelle/HOL, Lem, EVM, Access Control, Deed | Ethereum |
Towards verifying Ethereum smart contracts at intermediate language level | Li et al. | ICFEM | 2019 | Theorem proving, Isabelle/HOL, Yul, Functional correctness, Safe arithmetics | Ethereum |
Formal specification of a security framework for smart contracts | Mandrykin et al. | FMBC@FM | 2019 | Theorem proving, Isabelle/HOL, Cap9 | Ethereum |
Towards verifying ethereum smart contract bytecode in Isabelle/HOL | Amani et al. | ACM CPP | 2018 | Theorem proving, Isabelle/HOL, Hoare logic, Program logic | Ethereum |
A hybrid formal verification system in Coq for ensuring the reliability and security of Ethereum-based service smart contracts | Yang et al. | IEEE Access | 2020 | Theorem proving, Coq, Static analysis, Symbolic & concolic execution, Hoare logic, Memory model, FEther, Lolisa, FSPVM-E | Ethereum |
FEther: An extensible definitional interpreter for smart-contract verifications in Coq | Yang and Lei | IEEE Access | 2020 | Theorem proving, Coq, Symbolic & concolic execution, Formal semantics | Ethereum |
Lolisa: Formal syntax and semantics for a subset of the Solidity programming language | Yang and Lei | arXiv | 2018 | Theorem proving, Coq, Formal semantics, Language meta-theory, Solidity | Ethereum |
Albert, an intermediate smart-contract language for the Tezos blockchain | Bernardo et al. | WTSC@FC | 2019 | Certified compilation, Coq, Ott framework, Linear types | Tezos |
Towards verification of Ethereum smart contracts: A formalization of core of Solidity | Zakrzewski | VSTTE@CAV | 2018 | Theorem proving, Coq, Formal semantics, Solidity | Ethereum |
Simplicity: A new language for blockchains | O'Connor | ACM PLAS@PLDI | 2017 | Programming language, Theorem proving, Coq, Formal semantics, Language meta-theory | Bitcoin and Bitcoin-like |
Pluralize: a trustworthy framework for high-level smart contract-draft | Dargaye et al. | arXiv | 2018 | Trust management, Theorem proving, Coq, DSL | Blockchain ADT |
Towards secure and trusted-by-design smart contracts | Dargaye et al. | JFLA | 2018 | Theorem proving, Coq, Trust management | Blockchain ADT |
Temporal properties of smart contracts | Sergey et al. | ISoLA | 2018 | Theorem proving, Coq, Formal trace semantics, Scilla | Ethereum, Zilliqa |
Mi-Cho-Coq, a framework for certifying Tezos Smart Contracts | Bernardo et al. | FMBC@FM | 2019 | Theorem proving, Coq, Weakest precondition calculus, Functional correctness, Michelson | Tezos |
Towards a smart contract verification framework in Coq | Annenkov and Spitters | FMBC@FM | 2019 | Theorem proving, Coq, Language meta-theory, Oak, AST, MetaCoq, Functional correctness | N/A |
Smart contract interactions in Coq | Nielsen and Spitters | FMBC@FM | 2019 | Theorem proving, Coq, Inter-contract analysis, Shallow embedding, Invariant, Congress | Depth-first (Ethereum) and breadth-first (Tezos) execution blockchains |
A formal verification framework for security issues of blockchain smart contracts | Sun and Yu | Electronics | 2020 | Theorem proving, Coq, Integer overflow, Functional correctness, Invariants, Access control, BNB | Ethereum |
ConCert: A smart contract certification framework in Coq | Annenkov et al. | ACM CPP | 2020 | Theorem proving, Coq, MetaCoq, AST, Language meta-theory, Acorn, Functional correctness | N/A |
Scilla: A Smart Contract Intermediate-Level LAnguage | Sergey et al. | arXiv | 2018 | Theorem proving, Coq | Zilliqa |
Raziel: Private and verifiable smart contracts on blockchains | Sanchez | arXiv | 2020 | Proof-carrying code, Theorem proving, Coq, Privacy, NIZK proof, Obliv-Java, JML | OmniLedger, Hyperledger Fabric, Ethereum |
System F in Agda, for fun and profit | Chapman et al. | MPC | 2019 | Formal Semantics, Language meta-theory, Agda, Plutus Core | Cardano |
Blockchains as Kripke models: An analysis of atomic cross-chain swap | Hirai | ISoLA | 2018 | Intuitionistic epistemic logic, Kripke model, Hashlock, Atomicity, Atomic swap | N/A (Cross-chain) |
Obsidian: Typestate and assets for safer blockchain programming | Coblenz et al. | arXiv | 2019 | Programming language, State-oriented programming, Linear types, Language meta-theory | Hyperledger Fabric |
Resources: A safe language abstraction for Mmney | Blackshear et al. | arXiv | 2020 | Move, Linear types, Language meta-theory | Libra |
Exploiting the laws of order in smart contracts | Kolluri et al. | ACM ISSTA | 2019 | Symbolic execution, Z3, Fuzzing, Event-ordering vulnerabilities, EthRacer | Ethereum |
VerX: Safety verification of smart contracts | Permenev et al. | IEEE S&P | 2020 | Symbolic execution, Z3, Delayed predicate abstraction, Reachability checking, ptLTL | Ethereum |
Security analysis of EOSIO smart contracts | He et al. | arXiv | 2020 | Symbolic execution, Z3, Static analysis, Vulnerabilities, EOSafe | EOS.IO |
Security assurance for smart contract | Zhou et al. | IFIP NTMS | 2018 | Symbolic execution, Z3, Syntax analysis, Topological analysis, Oyente, SASC | Ethereum |
The art of the scam: Demystifying honeypots in Ethereum smart contracts | Ferreira Torres et al. | USENIX Security | 2019 | Symbolic execution, Z3, Heuristics, Oyente, HoneyBadger | Ethereum |
Under-optimized smart contracts devour your money | Chen et al. | IEEE SANER | 2017 | Symbolic execution, Z3, Resource consumption, CFG, Inefficient patterns, Gasper | Ethereum |
sCompile: Critical path identification and analysis for smart contracts | Chang et al. | ICFEM | 2019 | Symbolic execution, Z3, CFG, Monetary paths | Ethereum |
Smashing Ethereum smart contracts for fun and real profit | Mueller | HITB SecConf | 2018 | Symbolic execution, Z3, CFG, Vulnerabilities, Mythril | Ethereum |
Manticore: A User-Friendly Symbolic Execution Framework for Binaries and smart contracts | Mossberg et al. | IEEE/ACM ASE | 2019 | Symbolic execution, Z3, CFG, Vulnerabilities | Ethereum |
Finding the greedy, prodigal, and suicidal contracts at scale | Nikolić et al. | ACSAC | 2018 | Symbolic execution, Z3, Trace properties, Exploit generation, Maian | Ethereum |
teEther: Gnawing at ethereum to automatically exploit smart contracts | Krupp and Rossow | USENIX Security | 2018 | Symbolic execution, Z3, Exploit generation, CFG, Trace properties, Vulnerabilities | Ethereum |
Osiris: Hunting for integer bugs in Ethereum smart contracts | Ferreira Torres et al. | ACM ACSAC | 2018 | Symbolic execution, Z3, Oyente, Integer bugs | Ethereum |
Detecting standard violation errors in smart contracts | Li and Long | arXiv | 2019 | Symbolic execution, Boolector, Invariants, ERC20, ERC721 | Ethereum |
Making smart contracts smarter | Luu et al. | ACM CCS | 2016 | Symbolic execution, Z3, CFG, Oyente | Ethereum |
Evaluating spread of 'Gasless Send' in Ethereum smart contracts | Prechtel et al. | IFIP NTMS | 2019 | Symbolic Execution Z3, Resource consumption, Mythril | Ethereum |
Precise attack synthesis for smart contracts | Feng et al. | arXiv | 2019 | Symbolic execution, Boolector, Abstract interpretation, Exploit generation, Racket, Vulnerabilities | Ethereum |
Annotary: A concolic execution system for developing secure smart contracts | Weiss and Schütte | ESORICS | 2019 | Concolic execution, Invariants, Writing restrictions, Inter-contract analysis, Mythril | Ethereum |
Towards automated verification of smart contract fairness | Liu et al. | ACM ESEC/FSE | 2020 | Symbolic execution, Z3, Dafny, Mechanism design, Invariants, FairCon | Ethereum |
On the Prediction of smart contracts' Behaviours | Laneve et al. | From Software Engineering to Formal Methods and Tools, and Back | 2019 | Symbolic analysis, Process algebra, scl, Objective function, Game theory | Ethereum |
SmartCheck: Static analysis of Ethereum smart contracts | Tikhomitov et al. | IEEE/ACM WETSEB@ICSE | 2018 | Syntactic analysis, Pattern matching, XML, XPath, Vulnerabilities | Ethereum |
SolidityCheck: Quickly detecting smart contract problems through regular expressions | Zhang et al. | arXiv | 2019 | Syntactic analysis, Pattern matching, RegEx | Ethereum |
NeuCheck: A more practical Ethereum smart contract security analysis tool | Lu et al. | Software: Practice and experience | 2019 | Syntactic analysis, Pattern matching, XML, XPath, Vulnerabilities | Ethereum |
Potential risks of Hyperledger Fabric smart contracts | Yamashita et al. | IEEE IWBOSE@SANER | 2019 | Syntactic analysis, AST, Vulnerabilities | Hyperledger Fabric |
ReJection: A AST-based reentrancy vulnerability detection method | Ma et al. | CTCIS | 2020 | Syntactic analysis, AST, Reentrancy, Slither | Ethereum |
Why do smart contracts self-destruct? Investigating the Selfdestruct function on Ethereum | Chen et al. | arXiv | 2020 | Syntactic analysis, AST, Execution trace, Machine learning, Access control | Ethereum |
EthPloit: From fuzzing to efficient exploit generation against smart contracts | Zhang et al. | IEEE SANER | 2020 | Fuzzing, Taint analysis, Exploit generation | Ethereum |
Towards Smart Hybrid Fuzzing for smart contracts | Ferreira Torres et al. | arXiv | 2020 | Fuzzing, Symbolic execution | Ethereum |
Learning to fuzz from symbolic execution with application to smart contracts | He et al. | ACM CCS | 2019 | Fuzzing, Symbolic execution, Imitation-based learning | Ethereum |
VULTRON: Catching vulnerable smart contracts once and for all | Wang et al. | IEEE/ACM ICSE | 2019 | Fuzzing, Test oracles, Invariants | Ethereum |
ContractFuzzer: Fuzzing smart contracts for vulnerability detection | Jiang et al. | IEEE/ACM ASE | 2018 | Fuzzing, Test oracles, Vulnerabilities, Instrumented EVM | Ethereum |
Harvey: A greybox fuzzer for smart contracts | Wustholz and Christakis | arXiv | 2019 | Demand-driven sequence fuzzing, Input prediction, Vulnerabilities | Ethereum |
Oracle-supported dynamic exploit generation for smart contracts | Wang et al. | arXiv | 2019 | Fuzzing, Test oracles, Invariants, Exploit Generation | Ethereum |
ReGuard: Finding reentrancy bugs in smart contracts | Liu et al. | IEEE/ACM ICSE | 2018 | Fuzzing, C++, Automata, Reentrancy, Execution trace | Ethereum |
Contracts over smart contracts: Recovering from violations dynamically | Colombo et al. | ISoLA | 2018 | Runtime verification, Checkpoining, Recovery, Code update, ContractLarva | Ethereum |
Monitoring smart contracts: Contractlarva and open challenges beyond | Pace et al. | RV | 2018 | Runtime verification, Contract instrumentation, Contractlarva, ERC20, Procurement | Ethereum |
Runtime verification of Ethereum smart contracts | Pace and Ellul | IEEE EDCC | 2018 | Runtime verification, Contract instrumentation, Contractlarva, Casino | Ethereum |
TokenScope: Automatically detecting inconsistent behaviors of cryptocurrency tokens in Ethereum | Chen et al. | ACM CCS | 2019 | Runtime verification, Execution trace, ERC20 | Ethereum |
EthScope: A transaction-centric security analytics framework to detect malicious smart contracts on Ethereum | Wu et al. | arXiv | 2020 | Runtime verification, Code instrumentation, EVM instrumentation, Execution trace | Ethereum |
EVM*: From offline detection to online reinforcement for Ethereum Virtual Machine | Ma et al. | IEEE SANER | 2019 | Runtime verification, EVM instrumentation, js-evm, Integer overflow, Timestamp dependency | Ethereum |
Sereum: Protecting existing smart contracts against re-entrancy attacks | Rodler et al. | NDSS | 2019 | Runtime verification, Taint analysis, EVM instrumentation, Reentrancy | Ethereum |
Online detection of Effectively Callback Free objects with applications to smart contracts | Grossman et al. | ACM POPL | 2018 | Runtime verification, Static analysis, Serializability, Execution trace, EVM instrumentation, Reentrancy | Ethereum |
Implementation of smart contracts using hybrid architectures with on- and off-blockchain components | Molina-Jimenez et al. | IEEE SC2 | 2018 | Runtime verification, Contract Compliance Checker, Model checking, SPIN, Legal contract | Ethereum |
Enriching smart contracts with temporal aspects | Fournier and Skarbovsky | ICBC | 2019 | Runtime verification, Complex event processing, CEP PROTON, Supply chain | Hyperledger Fabric, Composer |
Solitor: Runtime verification of smart contracts on the Ethereum network | Stegeman | Master's Thesis | 2018 | Runtime verification, Annotations, Code instrumentation, DSL, ANTLR, Solidity | Ethereum |
On observing contracts: deontic contracts meet smart contracts | Azzopardi et al. | JURIX | 2018 | Runtime verification, Code instrumentation, Deontic logic, Formal semantics, Legal contract | Ethereum |
SolAnalyser: A framework for analysing and testing smart contracts | Akca et al. | IEEE APSEC | 2019 | Runtime verification, Testing, Code instrumentation, Bug injection, AST | Ethereum |
SODA: A generic online detection framework for smart contracts | Chen et al. | NDSS | 2020 | Runtime verification, Client instrumentation, ERC20 | Ethereum |
EASYFLOW: Keep Ethereum away from overflow | Gao et al. | IEEE/ACM ICSE Companion | 2019 | Runtime verification, EVM instrumentation, Pattern matching, Integer overflow | Ethereum |
Ethereum smart contracts verification: A survey and a prototype tool | Bogdanich Espina | Bachelor's Thesis | 2019 | Runtime verification, ptLTL, Code instrumentation, Slither, VeriSol, Manticore | Ethereum |
Securing smart contract with runtime validation | Li et al. | ACM PLDI | 2020 | Runtime verification, Code instrumentation, Invariants, ERC20, ERC721, ERC1202 | Ethereum |
Ægis: Smart shielding of smart contracts | Ferreira Torres et al. | ACM CCS | 2019 | Runtime verification, Instrumented EVM, DSL, Patterns | Ethereum |
Securing smart contracts on the fly | Li et al. | arXiv | 2019 | Runtime verification, Code instrumentation, Invariants, ERC20, ERC721, ERC1202 | Ethereum |
A federated society of bots for smart contract testing | Viglianisi et al. | Journal of Systems and Software | 2020 | Testing, Static analysis, Z3, Invariants, EIP20, SoCRATES | Ethereum |
Reentrancy vulnerability identification in Ethereum smart contracts | Samreen and Alalfi | IEEE IWBOSE@SANER | 2020 | Testing, Syntactic analysis, AST | Ethereum |
EtherTrust: Sound static analysis of Ethereum bytecode | Grishchenko et al. | Technical Report | 2018 | Program verification, Reachability analysis, Horn clauses | Ethereum |
eThor: Practical and provably sound static analysis of Ethereum smart contracts | Schneidewind et al. | ACM CCS | 2020 | Program verification, Reachability analysis, Horn clauses, Hoare logic, HoRSt, DSL, Single-entrancy | Ethereum |
Foundations and tools for the static analysis of Ethereum smart contracts | Grishchenko et al. | CAV | 2018 | Program verification, Reachability analysis | Ethereum |
Deductive proof of Ethereum smart contracts using Why3 | Nehaı̈ and Bobot | FMBC@FM | 2019 | Deductive verification, Why3, Why3 FOL, Runtime errors, Functional correctness, Marketplace | Ethereum |
Towards a formally verified EVM in production environment | Zhang et al. | COORDINATION | 2020 | Deductive verification, Why3, Why3 FOL, Functional correctness, Integer overflow, Auction | Ethereum |
WhylSon: Proving your Michelson smart contracts in Why3 | Horta et al. | FMBC@CAV | 2020 | Deductive verification, Why3, Why3 FOL, Multisig, Factorial | Tezos |
GASOL: Gas analysis and optimization for Ethereum smart contracts | Albert et al. | TACAS | 2020 | Resource consumption, Resource optimization, Static analysis | Ethereum |
Formal verification of Solidity contracts in Event-B | Zhu et al. | arXiv | 2020 | Set-based methods, Event-B, Rodin, Honeypot | Ethereum |
Evaluation of logic-based smart contracts for blockchain systems | Idelberger et al. | RuleML | 2016 | Deontic defeasible logic, FCL, SPINdle | N/A |
On legal contracts, imperative and declarative smart contracts, and blockchain systems | Governatori et al. | Artificial Intelligence and Law | 2018 | Deontic defeasible logic, FCL, SPINdle | N/A |
ZEUS: Analyzing safety of smart contracts | Kalra et al. | NDSS | 2018 | LLVM, Model checking, Seahorn, Constrained Horn clauses, Abstract interpretation, Code instrumentation, XACML, FOL | Ethereum, Hyperledger Fabric |
Detecting nondeterministic payment bugs in Ethereum smart contracts | Wang et al. | ACM OOPSLA | 2019 | LLVM, Bounded model checking, SMACK, Taint analysis | Ethereum |
Smart contracts: Application scenarios for deductive program verification | Beckert et al. | FMBC@FM | 2019 | Deductive verification, KeY, JML, JavaDL, Program logic | Hyperledger Fabric |
Formal specification and verification of Hyperledger Fabric chaincode | Beckert et al. | SDLT@ICFEM | 2018 | Deductive verification, KeY, JML, JavaDL, Program logic | Hyperledger Fabric |
Smart contracts: A killer application for deductive source code verification | Ahrendt et al. | Principled Software Development | 2018 | Deductive verification, KeY, JML, JavaDL, Program logic | Ethereum |
Verification of smart contract business logic | Ahrendt et al. | FSEN | 2019 | Deductive verification, KeY, JML, JavaDL, Program logic, Solidity | Ethereum |
Semantic understanding of smart contracts: Executable operational semantics of Solidity | Jiao et al. | IEEE S&P | 2020 | K framework, Formal semantics, Solidity | Ethereum |
A language-independent approach to smart contract verification | Chen et al. | ISoLA | 2018 | K framework, Reachability logic, EVM, ERC20 | Ethereum |
KEVM: A complete formal semantics of the Ethereum Virtual Machine | Hildenbrandt et al. | IEEE CSF | 2018 | K framework, Formal semantics, Reachability logic, Matching logic, EVM | Ethereum |
IELE: A rigorously designed language and tool ecosystem for the Blockchain | Kasampalis et al. | FM | 2019 | K framework, Formal semantics, Reachability logic, Matching logic, IELE | Ethereum, Any Ethereum-style blockchain |
A formal verification tool for Ethereum VM bytecode | Park et al. | ACM ESEC/FSE | 2018 | K framework, Formal semantics, Reachability logic, Matching logic, EVM, ERC20 | Ethereum |
Securing smart contracts with information flow | Cecchetti et al. | FAB | 2020 | Information flow, Integrity, Composite vulnerabilities, Reentrancy | Ethereum |
Formal verification of smart contracts: Short paper | Bhargavan et al. | ACM PLAS@PLDI | 2016 | F*, Formal semantics, Typechecking, Effects, Resource consumption, Vulnerabilities, Solidity, EVM | Ethereum |
A semantic framework for the security analysis of ethereum smart contracts | Grishchenko et al. | POST | 2018 | F*, Formal semantics, EVM, Hyper- and safety properties | Ethereum |
Ethainter: A smart contract security analyzer for composite vulnerabilities | Brent et al. | ACM PLDI | 2020 | Datalog, Soufflé, Information flow, Gigahorse, Composite vulnerabilities, EVM | Ethereum |
Vandal: A security analysis scalable framework | Brent et al. | arXiv | 2018 | Datalog, Soufflé, CFG, Vulnerable patterns | Ethereum |
MadMax: Surviving out-of-gas conditions in Ethereum smart contracts | Grech et al. | ACM OOPSLA | 2018 | Datalog, Soufflé, Resource consumption, Vulnerable patterns | Ethereum |
Securify: Practical security analysis of smart contracts | Tsankov et al. | ACM CCS | 2018 | Datalog, Soufflé, Vulnerable patterns, Compliance patterns, DSL | Ethereum |
Smart contract vulnerabilities: Does anyone care? | Perez and Livshits | arXiv | 2019 | Datalog, Execution trace, Vulnerable patterns | Ethereum |
SAFEVM: A safety verifier for Ethereum smart contracts | Albert et al. | ACM ISSTA | 2019 | Static analysis, C, CPAchecker, SeaHorn, VeryMax, Assertions, Array access, EthIR, Oyente | Ethereum |
solc-verify: A modular verifier for Solidity smart contracts | Hajdu and Jovanović | VSTTE@CAV | 2019 | Boogie, SMT solving, Z3, CVC4, Yices2, Annotations, Invariants, DSL | Ethereum |
Formal specification and verification of Solidity contracts with events | Hajdu et al. | FMBC@CAV | 2020 | Boogie, SMT solving, Z3, CVC4, Yices2, Annotations, Invariants, DSL | Ethereum |
Formalising and verifying smart contracts with Solidifier: a bounded model checker for Solidity | Antonino and Roscoe | arXiv | 2020 | Boogie, Bounded model checking, Corral, Memory model, Annotations | Ethereum |
Formal specification and verification of smart contracts for Azure blockchain | Wang et al. | arXiv | 2019 | Boogie, Bounded model checking, Corral, Code instrumentation, Monomial predicate abstraction | Ethereum, Azure |
Running on fumes--Preventing out-of-gas vulnerabilities in Ethereum smart contracts using static resource analysis | Albert et al. | VECoS@FM | 2019 | Resource consumption, Static analysis, Oyente, EthIR, SACO, PUBS | Ethereum |
WIP: Finding bugs automatically in smart contracts with parameterized specifications | Bernardi et al. | Stanford Blockchain Conference | 2020 | Static analysis, Hoare logic, Invariants, Certora prover | Ethereum |
SMARTSHIELD: Automatic smart contract protection made easy | Zhang et al. | IEEE SANER | 2020 | Static analysis, Repair, Code update, EVM bytecode | Ethereum |
A method of logic-based smart contracts for blockchain system | Hu and Zhong | ACM ICDPA | 2018 | Active-U-Datalog, On-chain rule engine, License agreement | N/A |
EVulHunter: Detecting fake transfer vulnerabilities for EOSIO's smart contracts at Webassembly-level | Quan et al. | arXiv | 2019 | Static analysis, CFG, Pattern matching, Vulnerabilities | EOS.IO |
Proving conditional termination for smart contracts | Le et al. | ACM BCC@Asia CCS | 2018 | Static analysis, Conditional termination, Runtime enforcement | Ethereum |
Tezla, an intermediate representation for static analysis of Michelson smart contracts | Reis et al. | FMBC@CAV | 2020 | Static analysis, SoftCheck | Tezos |
EthBMC: A bounded model checker for smart contracts | Frank et al. | USENIX Security | 2020 | Bounded model checking, Symbolic execution, Yices2, Boolector, Z3, Memory model, Inter-contract analysis | Ethereum |
Safer smart contract programming with Scilla | Sergey et al. | ACM OOPSLA | 2019 | Programming language, System F, CPS, Communicating automata, Static analysis, Resource consumption, Cashflow analysis | Zilliqa |
Slither: A static analysis framework for smart contracts | Feist et al. | IEEE/ACM WETSEB@ICSE | 2019 | Static analysis, Intermediate representation, Code summarization, Vulnerable patterns, SlithIR | Ethereum |
EthIR: A framework for high-level analysis of Ethereum bytecode | Albert et al. | ATVA | 2018 | Static analysis, Intermediate representation, Oyente | Ethereum |
SMT-based verification of Solidity smart contracts | Alt and C. Reitwiessner | ISoLA | 2018 | Bounded model checking, SMT solving, Z3, AST | Ethereum |
Computing exact worst-case gas consumption for smart contracts | Marescotti et al. | ISoLA | 2018 | Resource consumption, Symbolic model checking, Solidity | Ethereum |
SMT-friendly formalization of the Solidity memory model | Hajdu and Jovanović | ESOP | 2020 | Formal semantics, Memory model, solc-verify | Ethereum |
Debugging smart contract's business logic using symbolic model-checking | Shishkin | Programming and Computer Software | 2019 | SMT solving, Z3, Symbolic model checker is under construction, Trace properties, Events | Ethereum |
VeriSmart: A highly precise safety verifier for Ethereum smart contracts | So et al. | IEEE S&P | 2020 | Static analysis, Z3, Inductive invariants generation, CEGIS-style verification, Integer bugs | Ethereum |
Formal verification of BNB smart contract | Li et al. | IEEE BIGCOM | 2019 | Process algebra, SAPIC, Tamarin prover, Invariants, BNB | Ethereum |
Verification-led smart contracts | Banach | WTSC@FC | 2019 | Program synthesis, Set-based methods, Rodin, Event-B | Ethereum |
Zkay: Specifying and enforcing data privacy in smart contracts | Steffen et al. | ACM CCS | 2019 | DSL, Privacy, NIZK proof | Ethereum |
Town Crier: An authenticated data feed for smart contracts | Zhang et al. | ACM CCS | 2016 | Privacy, Trusted hardware, Inter SGX | Ethereum |
Quantitative analysis of smart contracts | Chatterjee et al. | ESOP | 2018 | Game theory, Interval abstraction refinement, Bounded analysis, Objective function | Ethereum |
MuSC: A tool for mutation testing of Ethereum smart contract | Li et al. | IEEE/ACM ASE | 2019 | Mutation-based testing, AST | Ethereum |
Smart contract repair | Yu et al. | ACM TOSEM | 2020 | Mutation-based program repair, Code update, Resource consumption, SCRepair | Ethereum |
Broken metre: Attacking resource metering in EVM | Perez and Livshits | NDSS | 2020 | Resource consumption, Exploit generation, Mutation-based program synthesis | Ethereum |
Formal requirement enforcement on smart contracts based on Linear Dynamic Logic | Sato et al. | IEEE iThings, GreenCom, CPSCom, SmartData | 2018 | Program synthesis, Model сhecking, LDLf, ECA rules, Template, Statechart, SCXML | Hyperledger Fabric |
Modeling Bitcoin contracts by timed automata | Andrychowicz et al. | FORMATS | 2014 | Model checking, UPPAAL, Timed automata, TCTL, Timed commitment | Bitcoin |
Formal verification of smart contracts based on users and blockchain behaviors models | Abdellatif et al. | IFIP NTMS | 2018 | Model checking (statistical), BIP-SMC, BIP, Timed automata, PB-LTL, NameReg | Ethereum |
Statistical model checking for blockchain-based applications | Maksimov et al. | IOP Conference Series: Materials Science and Engineering | 2020 | Model checking (statistical), BIP-SMC, BIP, Parametrized LTL, NameReg | N/A |
Model checking smart contracts for Ethereum | Osterland and Rose | Pervasive and Mobile Computing | 2020 | Model Checking, SPIN, Promela, AST, Assertions | Ethereum |
Formal modeling and verification of smart contracts | Bai et al. | ACM ICSCA | 2018 | Model checking, SPIN, Promela, LTL | N/A |
Validation of decentralised smart contracts through game theory and formal methods | Bigi et al. | Programming Languages with Applications to Biology and Security | 2015 | Model checking, Prism, MDP, Strategic game, PCTL, BitHalo | Bitcoin |
SolidWorx: A Resilient and Trustworthy Transactive Platform for Smart and Connected Communities | Eisele et al. | IEEE iThings, GreenCom, CPSCom, SmartData | 2018 | Program synthesis, Model checking, nuXmv, FSM, BIP, CTL | Ethereum |
VeriSolid: Correct-by-design smart contracts for Ethereum | Mavridou et al. | WTSC@FC | 2019 | Program synthesis, FSolidM, Model checking, nuXmv, Design patterns, FSM, BIP, CTL | Ethereum |
Verified development and deployment of multiple interacting smart contracts with VeriSolid | Nelaturu et al. | IEEE ICBC | 2020 | Program synthesis, FSolidM, Model checking, nuXmv, Design patterns, FSM, BIP, CTL | Ethereum |
Policy specification and verification for blockchain and smart contracts in 5G networks | Unal et al. | ICT Express | 2019 | Model checking, NuSMV, Ambient calculus, Predicate logic, Access control, Wallet | N/A |
Model-checking of smart contracts | Nehaı̈ et al. | IEEE iThings, GreenCom, CPSCom, SmartData | 2018 | Model checking, NuSMV, CTL, Energy marketplace | Ethereum |
Formal verification of smart contracts using interface automata | Madl et al. | IEEE ICBC | 2019 | Model checking, NuSMV, Interface automata, CTL | Hyperledger Fabric |
Formal verification of functional requirements for smart contract compositions in supply chain management systems | Alqahtani et al. | HICSS | 2020 | Model checking, NuSMV, FSM, BIP, LTL, Supply chain | Hyperledger Fabric |
Securing smart contracts in blockchain | Kongmanee et al. | IEEE/ACM ASEW@ASE | 2019 | Model checking, NuSMV, Kripke structure, LTL | Ethereum |
On the specification and verification of atomic swap smart contracts | Meyden | IEEE ICBC | 2019 | Model checking, MCK, Concurrent game structure, ATL, SL, Atomic swap | N/A (Cross-chain) |
Developing secure Bitcoin contracts with BitML | Atzei et al. | ACM ESEC/FSE | 2019 | Model checking, Maude, BitML, LTL, Timed commitment | Bitcoin |
Formal verification of smart contracts from the perspective of concurrency | Qu et al. | SmartBlock | 2018 | Process algebra, CSP, Model checking, FDR, Vulnerability | Ethereum |
Formal analysis of smart contract based on Colored Petri Nets | Duo et al. | IEEE Intelligent Systems | 2020 | Model checking, cpntools, ASK-CTL, Hoare logic, EVM | Ethereum |
Formal verification of blockchain smart contract based on Colored Petri Net models | Liu and Liu | IEEE COMPSAC | 2019 | Model checking, cpntools, ASK-CTL, Vulnerability | Ethereum |
Verifying liquidity of Bitcoin contracts | Bartoletti and Zunino | POST | 2019 | Model checking, LTL, Liquidity | Bitcoin |
S-gram: Towards semantic-aware security auditing for Ethereum smart contracts | Liu et al. | IEEE/ACM ASE | 2018 | Statistical language modeling, Vulnerabilities, AST, Solidity | Ethereum |
Recommending differentiated code to support smart contract update | Huang et al. | IEEE/ACM ICPC | 2019 | Deep learning, Code embedding, Code update | Ethereum |
Checking smart contracts with structural code embedding | Gao et al. | IEEE TSE | 2020 | Deep learning, Code embedding, AST, Clone detection, Bug detection, SmartEmbed | Ethereum |
SmartEmbed: A tool for clone and bug detection in smart contracts through structural code embedding | Gao et al. | IEEE ICSME | 2019 | Deep learning, Code embedding, AST, Clone detection, Bug detection | Ethereum |
Towards safer smart contracts: A sequence learning approach to detecting vulnerabilities | Tann et al. | arXiv | 2018 | Deep learning, Sequence learning, LSTM RNN model, EVM opcode, Vulnerabilities, Maian | Ethereum |
Hunting the Ethereum smart contract: Color-inspired inspection of potential attacks | Huang | arXiv | 2018 | Deep learning, Transfer learning, RGB color code, Vulnerabilities, EVM bytecode | Ethereum |