{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,9]],"date-time":"2026-06-09T15:13:17Z","timestamp":1781017997639,"version":"3.54.1"},"reference-count":44,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2023,4,26]],"date-time":"2023-04-26T00:00:00Z","timestamp":1682467200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2023,7,31]]},"abstract":"<jats:p>\n            In migrating and upgrading an Ethereum smart contract, it is necessary to transfer both the code as well as the stored data. Various methods attempt to migrate or upgrade a smart contract, but they are mostly manual, error-prone, and applicable only before deployment. Further, they have challenges in extracting the storage state of complex mapping data structures along with their keys. In this work, we present\n            <jats:italic>Smartmuv<\/jats:italic>\n            as an automatic source-code-based static analysis tool to analyze and extract the state from the storage-trie of smart contracts. Based on the abstract syntax tree and the control flow graphs of the Solidity source code, the tool analyzes each state variable including mapping types along the inheritance hierarchy. It also provides the upgrade algorithm that initializes the extracted state in the constructor of new smart contract. Smartmuv safely approximates the origin of the keys used in the mapping to extract values and has been able to extract the mapping state of 23,673 smart contracts with 95.7% overall precision. Moreover, we also validate the Smartmuv\u2019s extracted state with the third-party tool Etherscan.\n          <\/jats:p>","DOI":"10.1145\/3548683","type":"journal-article","created":{"date-parts":[[2022,7,29]],"date-time":"2022-07-29T11:48:46Z","timestamp":1659095326000},"page":"1-32","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":28,"title":["Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts"],"prefix":"10.1145","volume":"32","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-3389-9054","authenticated-orcid":false,"given":"Maha","family":"Ayub","sequence":"first","affiliation":[{"name":"Information Technology University of Punjab, Lahore, Punjab, Pakistan"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8696-2638","authenticated-orcid":false,"given":"Tania","family":"Saleem","sequence":"additional","affiliation":[{"name":"Information Technology University of Punjab, Lahore, Punjab, Pakistan"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8048-6156","authenticated-orcid":false,"given":"Muhammad","family":"Janjua","sequence":"additional","affiliation":[{"name":"Information Technology University of Punjab, Lahore, Punjab, Pakistan"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4760-0911","authenticated-orcid":false,"given":"Talha","family":"Ahmad","sequence":"additional","affiliation":[{"name":"Information Technology University of Punjab, Lahore, Punjab, Pakistan"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2023,4,26]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"Bernard Marr. 2018. Blockchain: A Very Short History Of Ethereum Everyone Should Read. Retrieved October 10 2020 from https:\/\/www.forbes.com\/sites\/bernardmarr\/2018\/02\/02\/blockchain-a-very-short-history-of-ethereum-everyone-should-read\/."},{"key":"e_1_3_2_3_2","unstructured":"OpenZepplin. 2017\u20132020. Upgrades Plugins. Retrieved September 9 2020 from https:\/\/docs.openzeppelin.com\/upgrades-plugins\/1.x\/."},{"key":"e_1_3_2_4_2","unstructured":"Steve Marx. 2018. Understanding Ethereum Smart Contract Storage. Retrieved September 9 2020 from https:\/\/programtheblockchain.com\/posts\/2018\/03\/09\/understanding-ethereum-smart-contract-storage\/."},{"key":"e_1_3_2_5_2","unstructured":"Solidity Technical Documentation. 2016\u20132020. Layout of State Variables in Storage. Retrieved September 9 2020 from https:\/\/solidity.readthedocs.io\/en\/v0.4.24\/miscellaneous.html."},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.5555\/6448"},{"key":"e_1_3_2_7_2","article-title":"Patterns for blockchain migration","volume":"1906","author":"Bandara Hmn Dilum","year":"2019","unstructured":"Hmn Dilum Bandara, Xiwei Xu, and Ingo Weber. 2019. Patterns for blockchain migration. arXiv :1906.00239. Retrieved from https:\/\/arxiv.org\/abs\/1906.00239.","journal-title":"arXiv"},{"key":"e_1_3_2_8_2","unstructured":"Chriseth Hari Mathias L. Baumann and Tony. 2021. Layout of state variables in storage. Layout of State Variables in Storage - Solidity 0.8.11 Documentation . https:\/\/docs.soliditylang.org\/en\/v0.8.11\/internals\/layout_in_storage.html."},{"key":"e_1_3_2_9_2","unstructured":"Binance DEX Community. 2019. Binance Chain Mainnet Swap. Retrieved from https:\/\/community.binance.org\/topic\/44\/binance-chain-mainnet-swap."},{"key":"e_1_3_2_10_2","unstructured":"Coin Desk. 2018. $3 Billion Blockchain Tron Kicks Off Token Migration. Retrieved from https:\/\/www.coindesk.com\/3-billion-blockchain-tron-kicks-off-token-migration-today."},{"key":"e_1_3_2_11_2","unstructured":"Eiki. 2019. Ethereum: Datastore Types Explained. Retrieved from https:\/\/medium.com\/@eiki1212\/ethereum-datastore-types-explained-b085bc79aa4b."},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1109\/WETSEB.2019.00008"},{"key":"e_1_3_2_13_2","doi-asserted-by":"crossref","unstructured":"J. F. Ferreira P. Cruz T. Durieux and R. Abreu. [n.d.]. SmartBugs: A Framework to Analyze Solidity Smart Contracts Github Repository. Retrieved February 17 2021 from https:\/\/github.com\/smartbugs\/smartbugs.","DOI":"10.1145\/3324884.3415298"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/3324884.3415298"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1109\/DSN48063.2020.00040"},{"key":"e_1_3_2_16_2","unstructured":"go ethereum. [n.d.]. Command-line Options. Retrieved from https:\/\/geth.ethereum.org\/docs\/interface\/command-line-options."},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2019.00120"},{"key":"e_1_3_2_18_2","doi-asserted-by":"crossref","first-page":"224","DOI":"10.1007\/978-3-030-44914-8_9","volume-title":"Programming Languages and Systems","author":"Hajdu \u00c1kos","year":"2020","unstructured":"\u00c1kos Hajdu and Dejan Jovanovi\u0107. 2020. SMT-friendly formalization of the solidity memory model. In Programming Languages and Systems, Peter M\u00fcller (Ed.). Springer International Publishing, Cham, 224\u2013250."},{"key":"e_1_3_2_19_2","unstructured":"Pieter H. Hartel and Mark van Staalduinen. 2019. Truffle tests for free - replaying ethereum smart contracts for transparency. arxiv:1907.09208. Retrieved from http:\/\/arxiv.org\/abs\/1907.09208."},{"key":"e_1_3_2_20_2","unstructured":"MyEtherWallet Inc. [n.d.]. Internal Transactions: What Do They Mean? Retrieved from https:\/\/kb.myetherwallet.com\/en\/transactions\/internal-transactions\/."},{"key":"e_1_3_2_21_2","unstructured":"Thomas Lisankie Joshua. [n.d.]. Ethereum Virtual Machine (EVM). Retrieved from https:\/\/ethereum.org\/en\/developers\/docs\/evm\/."},{"key":"e_1_3_2_22_2","unstructured":"josselinfeist. [n.d.]. How Contract Migration Works. Retrieved August 12 2020 from https:\/\/blog.trailofbits.com\/2018\/10\/29\/how-contract-migration-works\/."},{"key":"e_1_3_2_23_2","article-title":"RSK ETH Token Bridge","author":"Labs. RSK","unstructured":"RSK Labs. [n.d.]. RSK ETH Token Bridge. Retrieved from https:\/\/developers.rsk.co\/tools\/tokenbridge\/.","journal-title":"https:\/\/developers.rsk.co\/tools\/tokenbridge\/"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1145\/3428258"},{"key":"e_1_3_2_25_2","unstructured":"P. H. Madore. 2019. Deloitte Ditches Ethereum for VeChain Brags about Overtaking Bitcoin Transactions. Retrieved from https:\/\/finance.yahoo.com\/news\/deloitte-ditches-ethereum-vechain-brags-065730503.html?guccounter=1."},{"key":"e_1_3_2_26_2","unstructured":"Post author \u201cBy Mario.\u201d2020. Storage vs. Memory vs. Stack in Solidity; Ethereum\u2014Dlt-repo. Retrieved from https:\/\/dlt-repo.net\/storage-vs-memory-vs-stack-in-solidity-ethereum\/."},{"key":"e_1_3_2_27_2","unstructured":"Bertrand Meyer. 2019. Soundness and Completeness: With Precision. Retrieved from https:\/\/cacm.acm.org\/blogs\/blog-cacm\/236068-soundness-and-completeness-with-precision\/fulltext."},{"key":"e_1_3_2_28_2","unstructured":"Annaliese Milano and Taryana Odayar. 2018. Token Swaps: What Are They How They Work and Why They\u2019re Happening Now. CoinDesk Latest Headlines RSS . Retrieved from https:\/\/www.coindesk.com\/markets\/2018\/06\/16\/token-swaps-what-are-they-how-they-work-why-theyre-happening-now\/."},{"key":"e_1_3_2_29_2","unstructured":"olha.hlebiv. 2018. Ethereum Smart-contract Storage. Retrieved September 12 2020 from https:\/\/applicature.com\/blog\/blockchain-technology\/ethereum-smart-contract-storage."},{"key":"e_1_3_2_30_2","unstructured":"Qubicles. 2019. Migrating Ethereum Qubicle Tokens to the Telos Chain of EOS.IO Using the EOS21 Protocol. Retrieved from https:\/\/qubicles.medium.com\/migrating-ethereum-qubicle-tokens-to-the-telos-chain-of-eos-io-using-the-eos21-protocol-e79c14fcf112."},{"key":"e_1_3_2_31_2","unstructured":"Richard. 2018. Prepare Yourself for the Safex Blockchain Swap. Retrieved from https:\/\/safexnews.net\/prepare-for-safex-blockchain-swap\/."},{"key":"e_1_3_2_32_2","unstructured":"Michael Rodler Wenting Li Ghassan O. Karame and Lucas Davi. 2020. EVMPatch: Timely and Automated Patching of Ethereum Smart Contracts. arXiv:2010.00341. Retrieved from https:\/\/arxiv.org\/abs\/2010.00341."},{"key":"e_1_3_2_33_2","unstructured":"Vaibhav Saini. [n.d.]. Getting Deep into EVM: How Ethereum Works Backstage. Retrieved from https:\/\/hackernoon.com\/getting-deep-into-evm-how-ethereum-works-backstage-ac7efa1f0015."},{"key":"e_1_3_2_34_2","unstructured":"Yanniss Smaragdakis. [n.d.]. From Soundiness to Soundness. Retrieved from https:\/\/yanniss.github.io\/M221\/soundness.pdf."},{"key":"e_1_3_2_35_2","unstructured":"Peter Szilagyi. 2021. Geth v1.10.0. Retrieved from https:\/\/blog.ethereum.org\/2021\/03\/03\/geth-v1-10-0\/."},{"key":"e_1_3_2_36_2","unstructured":"T. Takenobu [n.d.]. Ethereum EVM Illustrated. Retrieved from https:\/\/takenobu-hs.github.io\/downloads\/ethereum_evm_illustrated.pdf."},{"key":"e_1_3_2_37_2","unstructured":"Crypto Market Pool Team. 2021. Access Private Data on the Ethereum Blockchain. Retrieved from https:\/\/cryptomarketpool.com\/access-private-data-on-the-eth-blockchain\/."},{"key":"e_1_3_2_38_2","unstructured":"Parity Technologies. 2019. A Postmortem on the Parity Multi-Sig Library Self-Destruct. Retrieved from https:\/\/www.parity.io\/a-postmortem-on-the-parity-multi-sig-library-self-destruct\/."},{"key":"e_1_3_2_39_2","unstructured":"vasa. [n.d.]. How to Write Upgradable Smart Contracts (Smart Contract Versioning). Retrieved August 12 2020 from https:\/\/medium.com\/swlh\/how-to-write-upgradable-smart-contracts-smart-contract-versioning-5ff5ce035732\/.Accessed: 2020-08-12."},{"key":"e_1_3_2_40_2","doi-asserted-by":"crossref","unstructured":"Martin Westerkamp. 2019. Verifiable smart contract portability. arXiv:1902.03868. Retrieved from http:\/\/arxiv.org\/abs\/1902.03868.","DOI":"10.1109\/BLOC.2019.8751335"},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1145\/3284764.3284768"},{"key":"e_1_3_2_42_2","unstructured":"Peilin Zheng Zibin Zheng and Hongning Dai. 2019. XBlock-ETH: Extracting and exploring blockchain data from ethereum. arXiv:1911.00169. Retrieved from http:\/\/arxiv.org\/abs\/1911.00169."},{"key":"e_1_3_2_43_2","unstructured":"Susan Moore Gartner. 2018. Top 3 Blockchain and Data Management Myths. Retrieved from https:\/\/www.gartner.com\/smarterwithgartner\/top-3-blockchain-and-data-management-myths\/."},{"key":"e_1_3_2_44_2","unstructured":"josselinfeist. 2018. Contract Upgrade Anti-patterns. Retrieved October 23 2020 from https:\/\/blog.trailofbits.com\/2018\/09\/05\/contract-upgrade-anti-patterns\/."},{"key":"e_1_3_2_45_2","unstructured":"vasa. 2020. How to Write Upgradable Smart Contracts (Smart Contract Versioning). Retrieved October 23 2020 from https:\/\/medium.com\/swlh\/how-to-write-upgradable-smart-contracts-smart-contract-versioning-5ff5ce035732."}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3548683","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3548683","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T17:50:52Z","timestamp":1750182652000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3548683"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,4,26]]},"references-count":44,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2023,7,31]]}},"alternative-id":["10.1145\/3548683"],"URL":"https:\/\/doi.org\/10.1145\/3548683","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,4,26]]},"assertion":[{"value":"2021-07-07","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-06-29","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-04-26","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}