{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,9,12]],"date-time":"2026-09-12T01:38:23Z","timestamp":1789177103149,"version":"build-2803163510"},"publisher-location":"Cham","reference-count":27,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783031308222","type":"print"},{"value":"9783031308239","type":"electronic"}],"license":[{"start":{"date-parts":[[2023,1,1]],"date-time":"2023-01-01T00:00:00Z","timestamp":1672531200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2023,4,22]],"date-time":"2023-04-22T00:00:00Z","timestamp":1682121600000},"content-version":"vor","delay-in-days":111,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2023]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    Efficiency is a fundamental property of any type of program, but it is even more so in the context of the programs executing on the blockchain (known as\n                    <jats:italic>smart contracts<\/jats:italic>\n                    ). This is because optimizing smart contracts has direct consequences on reducing the costs of deploying and executing the contracts, as there are fees to pay related to their bytes-size and to their resource consumption (called\n                    <jats:italic>gas<\/jats:italic>\n                    ). Optimizing memory usage is considered a challenging problem that, among other things, requires a precise inference of the memory locations being accessed. This is also the case for the Ethereum Virtual Machine (EVM) bytecode generated by the most-widely used compiler, , whose rather unconventional and low-level memory usage challenges automated reasoning. This paper presents a static analysis, developed at the level of the EVM bytecode generated by , that infers write memory accesses that are needless and thus can be safely removed. The application of our implementation on more than 19,000 real smart contracts has detected about 6,200 needless write accesses in less than 4 hours. Interestingly, many of these writes were involved in memory usage patterns generated by  that can be greatly optimized by removing entire blocks of bytecodes. To the best of our knowledge, existing optimization tools cannot infer such needless write accesses, and hence cannot detect these inefficiencies that affect both the deployment and the execution costs of Ethereum smart contracts.\n                  <\/jats:p>","DOI":"10.1007\/978-3-031-30823-9_23","type":"book-chapter","created":{"date-parts":[[2023,4,21]],"date-time":"2023-04-21T16:19:12Z","timestamp":1682093952000},"page":"448-466","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":6,"title":["Inferring Needless Write Memory Accesses on Ethereum Bytecode"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0048-0705","authenticated-orcid":false,"given":"Elvira","family":"Albert","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3219-0799","authenticated-orcid":false,"given":"Jes\u00fas","family":"Correas","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6189-4667","authenticated-orcid":false,"given":"Pablo","family":"Gordillo","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5427-8855","authenticated-orcid":false,"given":"Guillermo","family":"Rom\u00e1n-D\u00edez","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-0501-9830","authenticated-orcid":false,"given":"Albert","family":"Rubio","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2023,4,22]]},"reference":[{"key":"23_CR1","unstructured":"Bamboo. https:\/\/github.com\/pirapira\/bamboo."},{"key":"23_CR2","unstructured":"ERC721A.https:\/\/etherscan.io\/address\/0xfcd5c0ef90715dc052dad6de08efda758aa09f60#code."},{"key":"23_CR3","unstructured":"Serpent. https:\/\/github.com\/ethereum\/wiki\/wiki\/Serpent."},{"key":"23_CR4","unstructured":"Vyper. https:\/\/github.com\/ethereum\/vyper."},{"key":"23_CR5","unstructured":"Etherscan. https:\/\/etherscan.io, 2018."},{"key":"23_CR6","unstructured":"Solidity documentation, 2021.https:\/\/docs.soliditylang.org\/en\/latest\/index.html."},{"key":"23_CR7","doi-asserted-by":"crossref","unstructured":"Elvira Albert, Puri Arenas, Jes\u00fas Correas, Samir Genaim, Miguel G\u00f3mez-Zamalloa, and Germ\u00e1n\u00a0Puebla an\u00a0d Guillermo Rom\u00e1n-D\u00edez. Object-Sensitive Cost Analysis for Concurrent Objects. Software Testing, Verification and Reliability, 25(3):218\u2013271, 2015.","DOI":"10.1002\/stvr.1569"},{"key":"23_CR8","doi-asserted-by":"crossref","unstructured":"Elvira Albert, Jes\u00fas Correas, Pablo Gordillo, Guillermo Rom\u00e1n-D\u00edez, and Albert Rubio. Inferring needless write memory accesses on ethereum bytecode (extended version), 2023. arXiv:2301.04757 [cs.PL].","DOI":"10.1007\/978-3-031-30823-9_23"},{"key":"23_CR9","doi-asserted-by":"crossref","unstructured":"Elvira Albert, Pablo Gordillo, Alejandro Hern\u00e1ndez-Cerezo, and Albert Rubio. A Max-SMT Superoptimizer for EVM handling Memory and Storage. In Dana Fisman and Grigore Rosu, editors, 28th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS 2022. Proceedings, volume 13243 of Lecture Notes in Computer Science, pages 201\u2013219. Springer, 2022.","DOI":"10.1007\/978-3-030-99524-9_11"},{"key":"23_CR10","doi-asserted-by":"crossref","unstructured":"T.\u00a0Brandst\u00e4tter, S.\u00a0Schulte, J.\u00a0Cito, and M.\u00a0Borkowski. Characterizing Efficiency Optimizations in Solidity Smart Contracts. In 2020 IEEE International Conference on Blockchain (Blockchain), pages 281\u2013290, 2020.","DOI":"10.1109\/Blockchain50366.2020.00042"},{"key":"23_CR11","doi-asserted-by":"crossref","unstructured":"Ramkrishna Chatterjee, Barbara\u00a0G. Ryder, and William Landi. Relevant context inference. In Andrew\u00a0W. Appel and Alex Aiken, editors, POPL \u201999, Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Antonio, TX, USA, January 20-22, 1999, pages 133\u2013146. ACM, 1999.","DOI":"10.1145\/292540.292554"},{"key":"23_CR12","unstructured":"Ting Chen, Youzheng Feng, Zihao Li, Hao Zhou, Xiapu Luo, Xiaoqi Li, Xiuzhuo Xiao, Jiachi Chen, and Xiaosong Zhang. Gaschecker: Scalable analysis for discovering gas-inefficient smart contracts. IEEE Transactions on Emerging Topics in Computing, PP(99):1\u201314, 03 2020."},{"key":"23_CR13","doi-asserted-by":"crossref","unstructured":"Ting Chen, Zihao Li, Hao Zhou, Jiachi Chen, Xiapu Luo, Xiaoqi Li, and Xiaosong Zhang. Towards saving money in using smart contracts. In Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results, ICSE (NIER) 2018, Gothenburg, Sweden, May 27 - June 03, 2018, pages 81\u201384, 2018.","DOI":"10.1145\/3183399.3183420"},{"key":"23_CR14","doi-asserted-by":"crossref","unstructured":"Bo\u00a0Gao, Siyuan Shen, Ling Shi, Jiaying Li, Jun Sun, and Lei Bu. Verification assisted gas reduction for smart contracts. In 28th Asia-Pacific Software Engineering Conference, APSEC 2021, Taipei, Taiwan, December 6-9, 2021, pages 264\u2013274. IEEE, 2021.","DOI":"10.1109\/APSEC53868.2021.00034"},{"key":"23_CR15","doi-asserted-by":"crossref","unstructured":"Neville Grech, Lexi Brent, Bernhard Scholz, and Yannis Smaragdakis. Gigahorse: thorough, declarative decompilation of smart contracts. In Joanne\u00a0M. Atlee, Tevfik Bultan, and Jon Whittle, editors, Proceedings of the 41st International Conference on Software Engineering, ICSE 2019, Montreal, QC, Canada, May 25-31, 2019, pages 1176\u20131186. IEEE \/ ACM, 2019.","DOI":"10.1109\/ICSE.2019.00120"},{"key":"23_CR16","doi-asserted-by":"crossref","unstructured":"Neville Grech, Sifis Lagouvardos, Ilias Tsatiris, and Yannis Smaragdakis. Elipmoc: Advanced decompilation of ethereum smart contracts. Proc. ACM Program. Lang., 6(OOPSLA):77:1\u201377:27, 2022.","DOI":"10.1145\/3527321"},{"key":"23_CR17","doi-asserted-by":"crossref","unstructured":"\u00c1kos Hajdu and Dejan Jovanovic. Smt-friendly formalization of the solidity memory model. In Peter M\u00fcller, editor, Programming Languages and Systems - 29th European Symposium on Programming, ESOP 2020, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2020, Dublin, Ireland, April 25-30, 2020, Proceedings, volume 12075 of Lecture Notes in Computer Science, pages 224\u2013250. Springer, 2020.","DOI":"10.1007\/978-3-030-44914-8_9"},{"key":"23_CR18","doi-asserted-by":"crossref","unstructured":"George Kastrinis and Yannis Smaragdakis. Hybrid context-sensitivity for points-to analysis. In Hans-Juergen Boehm and Cormac Flanagan, editors, ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI \u201913, Seattle, WA, USA, June 16-19, 2013, pages 423\u2013434. ACM, 2013.","DOI":"10.1145\/2491956.2462191"},{"key":"23_CR19","doi-asserted-by":"crossref","unstructured":"Sifis Lagouvardos, Neville Grech, Ilias Tsatiris, and Yannis Smaragdakis. Precise static modeling of ethereum \u201cmemory\u201d. Proc. ACM Program. Lang., 4(OOPSLA):190:1\u2013190:26, 2020.","DOI":"10.1145\/3428258"},{"key":"23_CR20","doi-asserted-by":"crossref","unstructured":"Ana Milanova, Atanas Rountev, and Barbara\u00a0G. Ryder. Parameterized Object Sensitivity for Points-to Analysis for Java. ACM Transactions on Software Engineering Methodology, 14:1\u201341, 2005.","DOI":"10.1145\/1044834.1044835"},{"key":"23_CR21","unstructured":"Mayukh Mukhopadhyay. Ethereum Smart Contract Development. Packt publishing, 2018."},{"key":"23_CR22","unstructured":"Julian Nagele and Maria\u00a0A Schett. Blockchain superoptimizer. In Preproceedings of 29th International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2019), 2019."},{"key":"23_CR23","doi-asserted-by":"crossref","unstructured":"F.\u00a0Nielson, H.\u00a0R. Nielson, and C.\u00a0Hankin. Principles of Program Analysis. Springer, 1999.","DOI":"10.1007\/978-3-662-03811-6"},{"key":"23_CR24","unstructured":"Maria\u00a0A. Schett and Julian Nagele. Populating the Peephole Optimizer of a Smart Contract Compiler. In Bruno Bernardo and Diego Marmsoler, editors, 2nd Workshop on Formal Methods for Blockchains (FMBC 2020), volume\u00a084 of OpenAccess Series in Informatics (OASIcs), pages 3:1\u20133:15. Schloss Dagstuhl\u2013Leibniz-Zentrum f\u00fcr Informatik, 2020."},{"key":"23_CR25","doi-asserted-by":"crossref","unstructured":"Clara Schneidewind, Ilya Grishchenko, Markus Scherer, and Matteo Maffei. eThor: Practical and provably sound static analysis of ethereum smart contracts. In Jay Ligatti, Xinming Ou, Jonathan Katz, and Giovanni Vigna, editors, CCS \u201920: 2020 ACM SIGSAC Conference on Computer and Communications Security, USA, November 9-13, 2020, pages 621\u2013640. ACM, 2020.","DOI":"10.1145\/3372297.3417250"},{"key":"23_CR26","doi-asserted-by":"crossref","unstructured":"Petar Tsankov, Andrei\u00a0Marian Dan, Dana Drachsler-Cohen, Arthur Gervais, Florian B\u00fcnzli, and Martin\u00a0T. Vechev. Securify: Practical Security Analysis of Smart Contracts. In David Lie, Mohammad Mannan, Michael Backes, and XiaoFeng Wang, editors, Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, CCS 2018, Toronto, ON, Canada, October 15-19, 2018, pages 67\u201382. ACM, 2018.","DOI":"10.1145\/3243734.3243780"},{"key":"23_CR27","unstructured":"Gavin Wood. Ethereum: A secure decentralised generalised transaction ledger, 2019."}],"container-title":["Lecture Notes in Computer Science","Tools and Algorithms for the Construction and Analysis of Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-031-30823-9_23","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,6,9]],"date-time":"2026-06-09T17:06:23Z","timestamp":1781024783000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-031-30823-9_23"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023]]},"ISBN":["9783031308222","9783031308239"],"references-count":27,"URL":"https:\/\/doi.org\/10.1007\/978-3-031-30823-9_23","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023]]},"assertion":[{"value":"22 April 2023","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"TACAS","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Tools and Algorithms for the Construction and Analysis of Systems","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Paris","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"France","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2023","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"22 April 2023","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"27 April 2023","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"29","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tacas2023","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/etaps.org\/2023\/tacas","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}