{"id":18674,"date":"2026-03-26T08:42:39","date_gmt":"2026-03-26T08:42:39","guid":{"rendered":"https:\/\/cryptoted.net\/index.php\/2026\/03\/26\/dev-update-formal-methods-ethereum-foundation-blog\/"},"modified":"2026-03-26T08:42:39","modified_gmt":"2026-03-26T08:42:39","slug":"dev-update-formal-methods-ethereum-foundation-blog","status":"publish","type":"post","link":"https:\/\/cryptoted.net\/index.php\/2026\/03\/26\/dev-update-formal-methods-ethereum-foundation-blog\/","title":{"rendered":"Dev Update: Formal Methods | Ethereum Foundation Blog"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<blockquote class=\"chakra-code css-gk0tva\">\n<p class=\"chakra-text css-gi02ar\">I\u2019m joining Ethereum as a formal verification engineer. My reasoning: formal verification makes sense as a profession only in a rare situation where<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">the verification target follows short, simple rules (EVM);<\/li>\n<li class=\"css-0\">the target carries lots of value (Eth and other tokens);<\/li>\n<li class=\"css-0\">the target is tricky enough to get right (any nontrivial program);<\/li>\n<li class=\"css-0\">and the community is aware that it\u2019s important to get it right (maybe).<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">My last job as a formal verification engineer prepared me for this challenge. Besides, around Ethereum, I\u2019ve been playing with two projects: an online service called <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/dr-y.no-ip.net\/\">Dr. Y\u2019s Ethereum Contract Analyzer<\/a> and <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/pirapira\/evmverif\/\">a github repository<\/a> containing Coq proofs. These projects are at the opposite extremes of a spectrum between an automatic analyzer and a manual proof development.<\/p>\n<p class=\"chakra-text css-gi02ar\">Considering the collective impact to the whole ecosystem, I\u2019m attracted to an automatic analyzer integrated in a compiler. Many people would run it and some would notice its warnings. On the other hand, since any surprising behavior can be considered a bug, any surprise should be removed, but computers cannot sense the human expectations. For telling human expectations to the machines, some manual efforts are necessary. The contract developers need to specify the contract in a machine-readable language and give hints to the machines why the implementation matches the specification (in most cases the machine wants more and more hints until the human realizes a bug, frequently in the specification). This is labor intensive, but such manual efforts are justifiable when a contract is designed to carry multi-million dollars.<\/p>\n<\/blockquote>\n<p class=\"chakra-text css-gi02ar\">Having a person dedicated to formal methods not only gives us the ability to move faster in this important but also fruitful area, it hopefully also allows us to communicate better with academia in order to connect the various singular projects that have appeared in the past weeks.<\/p>\n<p class=\"chakra-text css-gi02ar\">Here are some projects we would like to tackle in the future, most of them will probably be done in cooperation with other teams.<\/p>\n<p>Solidity:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">extending the Solidity to Why3 translation to the full Solidity language (maybe switch to F*)<\/li>\n<li class=\"css-0\">formal specification of Solidity<\/li>\n<li class=\"css-0\">syntax and semantics of modal logics for reasoning about multiple parties<\/li>\n<\/ul>\n<p>Community:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">creating a map of formal verification projects on Ethereum<\/li>\n<li class=\"css-0\">collecting buggy Solidity codes, for benchmarking automatic analyzers<\/li>\n<li class=\"css-0\">analyzing deployed contracts on the blockchain for vulnerabilities (related: <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eprint.iacr.org\/2016\/633\">OYENTE tool<\/a>)<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">Tools:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">provide a human- and machine-readable formalization of the EVM, which can also be executed<\/li>\n<li class=\"css-0\">developing formally verified libraries in EVM bytecode or Solidity<\/li>\n<li class=\"css-0\">developing a formally verified compiler for a tiny language<\/li>\n<li class=\"css-0\">explore the potential for interaction-oriented languages (&#8220;if X happens then do Y; you can only do Z if you did A&#8221;)<\/li>\n<\/ul>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2016\/09\/01\/formal-methods-roadmap\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019m joining Ethereum as a formal verification engineer. My reasoning: formal verification makes sense as a profession only in a rare situation where the verification target follows short, simple rules (EVM); the target carries lots of value (Eth and other tokens); the target is tricky enough to get right (any nontrivial program); and the community [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":18498,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[24],"tags":[],"kronos_expire_date":[],"class_list":["post-18674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ethereum"],"_links":{"self":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/comments?post=18674"}],"version-history":[{"count":0,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18674\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media\/18498"}],"wp:attachment":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media?parent=18674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/categories?post=18674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/tags?post=18674"},{"taxonomy":"kronos_expire_date","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/kronos_expire_date?post=18674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}