{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,2]],"date-time":"2025-08-02T17:35:49Z","timestamp":1754156149028,"version":"3.41.2"},"reference-count":23,"publisher":"Emerald","issue":"4","license":[{"start":{"date-parts":[[2024,4,5]],"date-time":"2024-04-05T00:00:00Z","timestamp":1712275200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.emerald.com\/insight\/site-policies"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["IJWIS"],"published-print":{"date-parts":[[2024,7,19]]},"abstract":"<jats:sec>\n<jats:title content-type=\"abstract-subheading\">Purpose<\/jats:title>\n<jats:p>Smart contracts are written in high-level programming languages, compiled into Ethereum Virtual Machine (EVM) bytecode, deployed onto blockchain systems and called with the corresponding address by transactions. The deployed smart contracts are immutable, even if there are bugs or vulnerabilities. Therefore, it is critical to verify smart contracts before deployment. This paper aims to help developers effectively and efficiently locate potential defects in smart contracts.<\/jats:p>\n<\/jats:sec>\n<jats:sec>\n<jats:title content-type=\"abstract-subheading\">Design\/methodology\/approach<\/jats:title>\n<jats:p>GethReplayer, a smart contract testing method based on transaction replay, is proposed. It constructs a parallel transaction execution environment with two virtual machines to compare the execution results. It uses the real existing transaction data on Ethereum and the source code of the tested smart contacts as inputs, conditionally substitutes the bytecode of the tested smart contract input into the testing EVM, and then monitors the environmental information to check the correctness of the contract.<\/jats:p>\n<\/jats:sec>\n<jats:sec>\n<jats:title content-type=\"abstract-subheading\">Findings<\/jats:title>\n<jats:p>Experiments verified that the proposed method is effective in smart contract testing. Virtual environmental information has a significant effect on the success of transaction replay, which is the basis for the performance of the method. The efficiency of error locating was approximately 14 times faster with the proposed method than without. In addition, the proposed method supports gas consumption analysis.<\/jats:p>\n<\/jats:sec>\n<jats:sec>\n<jats:title content-type=\"abstract-subheading\">Originality\/value<\/jats:title>\n<jats:p>This paper addresses the difficulty that developers encounter in testing smart contracts before deployment and focuses on helping develop smart contracts with as few defects as possible. GethReplayer is expected to be an alternative solution for smart contract testing and provide inspiration for further research.<\/jats:p>\n<\/jats:sec>","DOI":"10.1108\/ijwis-08-2023-0138","type":"journal-article","created":{"date-parts":[[2024,4,3]],"date-time":"2024-04-03T10:02:59Z","timestamp":1712138579000},"page":"358-373","source":"Crossref","is-referenced-by-count":1,"title":["GethReplayer: a smart contract testing method based on transaction replay"],"prefix":"10.1108","volume":"20","author":[{"given":"Xiaohong","family":"Shi","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ziyan","family":"Wang","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Runlu","family":"Zhong","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Liangliang","family":"Ma","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Xiangping","family":"Chen","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Peng","family":"Yang","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"140","published-online":{"date-parts":[[2024,4,5]]},"reference":[{"key":"key2024071811274607100_ref001","doi-asserted-by":"crossref","first-page":"482","DOI":"10.1109\/APSEC48747.2019.00071","article-title":"SolAnalyser: a framework for analysing and testing smart contracts","volume-title":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","year":"2019"},{"key":"key2024071811274607100_ref002","doi-asserted-by":"crossref","first-page":"99552","DOI":"10.1109\/ACCESS.2020.2995183","article-title":"GasFuzzer: fuzzing Ethereum smart contract binaries to expose gas-oriented exception security vulnerabilities","volume":"8","year":"2020","journal-title":"IEEE Access"},{"first-page":"21","article-title":"Smart contract testing: challenges and opportunities","year":"2022","key":"key2024071811274607100_ref003"},{"issue":"7","key":"key2024071811274607100_ref004","doi-asserted-by":"crossref","first-page":"2189","DOI":"10.1109\/TSE.2021.3054928","article-title":"DefectChecker: automated smart contract defect detection by analyzing EVM bytecode","volume":"48","year":"2022","journal-title":"IEEE Transactions on Software Engineering"},{"key":"key2024071811274607100_ref005","doi-asserted-by":"crossref","first-page":"227","DOI":"10.1109\/ASE51524.2021.9678888","article-title":"Smartian: enhancing smart contract fuzzing with static and dynamic data-flow analyses","volume-title":"2021 36th IEEE\/ACM International Conference on Automated Software Engineering (ASE)","year":"2021"},{"issue":"5","key":"key2024071811274607100_ref006","doi-asserted-by":"crossref","first-page":"480","DOI":"10.1108\/IJWIS-03-2021-0029","article-title":"An effective and elastic blockchain-based provenance preserving solution for the open data","volume":"17","year":"2021","journal-title":"International Journal of Web Information Systems"},{"year":"2019","key":"key2024071811274607100_ref007","article-title":"Truffle tests for free\u2013replaying Ethereum smart contracts for transparency"},{"key":"key2024071811274607100_ref008","doi-asserted-by":"crossref","first-page":"473","DOI":"10.1109\/QRS57517.2022.00055","article-title":"GOV: a verification method for smart contract gas-optimization","volume-title":"2022 IEEE 22nd International Conference on Software Quality, Reliability and Security (QRS)","year":"2022"},{"issue":"1","key":"key2024071811274607100_ref009","first-page":"358","article-title":"Test-case generation for data flow testing of smart contracts based on improved genetic algorithm","volume":"72","year":"2022","journal-title":"IEEE Transactions on Reliability"},{"key":"key2024071811274607100_ref010","doi-asserted-by":"crossref","first-page":"259","DOI":"10.1145\/3238147.3238177","article-title":"ContractFuzzer: fuzzing smart contracts for vulnerability detection","volume-title":"Proceedings of the 33rd ACM\/IEEE International Conference on Automated Software Engineering","year":"2018"},{"first-page":"565","article-title":"An {off-the-Chain} execution environment for scalable testing and profiling of smart contracts","year":"2021","key":"key2024071811274607100_ref011"},{"issue":"1","key":"key2024071811274607100_ref012","doi-asserted-by":"crossref","first-page":"67","DOI":"10.1007\/s11390-021-1674-4","article-title":"Characterizing and detecting gas-inefficient patterns in smart contracts","volume":"37","year":"2022","journal-title":"Journal of Computer Science and Technology"},{"key":"key2024071811274607100_ref013","first-page":"458","article-title":"SoliAudit: smart contract vulnerability assessment based on machine learning and fuzz testing","volume-title":"2019 Sixth International Conference on Internet of Things: Systems, Management and Security (IOTSMS)","year":"2019"},{"journal-title":"IEEE Transactions on Knowledge and Data Engineering","article-title":"Combining graph neural networks with expert knowledge for smart contract vulnerability detection","year":"2021","key":"key2024071811274607100_ref014"},{"key":"key2024071811274607100_ref015","doi-asserted-by":"crossref","first-page":"254","DOI":"10.1145\/2976749.2978309","article-title":"Making smart contracts smarter","volume-title":"Proceedings of the 2016 ACM SIGSAC conference on computer and communications security","year":"2016"},{"issue":"5","key":"key2024071811274607100_ref016","doi-asserted-by":"crossref","first-page":"449","DOI":"10.1108\/IJWIS-03-2021-0024","article-title":"A unified blockchain-based platform for global e-waste management","volume":"17","year":"2021","journal-title":"International Journal of Web Information Systems"},{"key":"key2024071811274607100_ref017","doi-asserted-by":"crossref","first-page":"22","DOI":"10.1109\/IWBOSE50093.2020.9050260","article-title":"Reentrancy vulnerability identification in Ethereum smart contracts","volume-title":"2020 IEEE International Workshop on Blockchain Oriented Software Engineering (IWBOSE)","year":"2020"},{"volume-title":"Hands-on Smart Contract Development with Solidity and Ethereum: From Fundamentals to Deployment","year":"2019","key":"key2024071811274607100_ref018"},{"key":"key2024071811274607100_ref019","first-page":"1","article-title":"A new scheme of vulnerability analysis in smart contract with machine learning","year":"2020","journal-title":"Wireless Networks"},{"year":"2019","key":"key2024071811274607100_ref020","article-title":"SolidityCheck: quickly detecting smart contract problems through regular expressions"},{"key":"key2024071811274607100_ref021","doi-asserted-by":"crossref","first-page":"456","DOI":"10.1109\/ISSRE.2019.00052","article-title":"MPro: combining static and symbolic analysis for scalable testing of smart contract","volume-title":"2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)","year":"2019"},{"key":"key2024071811274607100_ref022","doi-asserted-by":"crossref","first-page":"475","DOI":"10.1016\/j.future.2019.12.019","article-title":"An overview on smart contracts: challenges, advances and platforms","volume":"105","year":"2020","journal-title":"Future Generation Computer Systems"},{"key":"key2024071811274607100_ref023","doi-asserted-by":"crossref","first-page":"740","DOI":"10.1145\/3533767.3534395","article-title":"Park: accelerating smart contract vulnerability detection via parallel-fork symbolic execution","volume-title":"Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis","year":"2022"}],"container-title":["International Journal of Web Information Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.emerald.com\/insight\/content\/doi\/10.1108\/IJWIS-08-2023-0138\/full\/xml","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/www.emerald.com\/insight\/content\/doi\/10.1108\/IJWIS-08-2023-0138\/full\/html","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,24]],"date-time":"2025-07-24T22:24:15Z","timestamp":1753395855000},"score":1,"resource":{"primary":{"URL":"http:\/\/www.emerald.com\/ijwis\/article\/20\/4\/358-373\/1216711"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,4,5]]},"references-count":23,"journal-issue":{"issue":"4","published-online":{"date-parts":[[2024,4,5]]},"published-print":{"date-parts":[[2024,7,19]]}},"alternative-id":["10.1108\/IJWIS-08-2023-0138"],"URL":"https:\/\/doi.org\/10.1108\/ijwis-08-2023-0138","relation":{},"ISSN":["1744-0084","1744-0084"],"issn-type":[{"type":"print","value":"1744-0084"},{"type":"electronic","value":"1744-0084"}],"subject":[],"published":{"date-parts":[[2024,4,5]]}}}