{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,9]],"date-time":"2026-10-09T01:21:57Z","timestamp":1791508917708,"version":"4.3.4"},"publisher-location":"Cham","reference-count":27,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030452360","type":"print"},{"value":"9783030452377","type":"electronic"}],"license":[{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2020,4,17]],"date-time":"2020-04-17T00:00:00Z","timestamp":1587081600000},"content-version":"vor","delay-in-days":107,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2020]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    We present the main concepts, components, and usage of G\n                    <jats:sc>asol<\/jats:sc>\n                    , a Gas AnalysiS and Optimization tooL for Ethereum smart contracts. G\n                    <jats:sc>asol<\/jats:sc>\n                    offers a wide variety of\n                    <jats:italic>cost models<\/jats:italic>\n                    that allow inferring the gas consumption associated to selected types of EVM instructions and\/or inferring the number of times that such types of bytecode instructions are executed. Among others, we have cost models to measure only storage opcodes, to measure a selected family of gas-consumption opcodes following the Ethereum\u2019s classification, to estimate the cost of a selected program line, etc. After choosing the desired cost model and the function of interest, G\n                    <jats:sc>asol<\/jats:sc>\n                    returns to the user an upper bound of the cost for this function. As the gas consumption is often dominated by the instructions that access the storage, G\n                    <jats:sc>asol<\/jats:sc>\n                    uses the gas analysis to detect under-optimized storage patterns, and includes an (optional) automatic optimization of the selected function. Our tool can be used within an Eclipse plugin for  which displays the gas and instructions bounds and, when applicable, the gas-optimized  function.\n                  <\/jats:p>","DOI":"10.1007\/978-3-030-45237-7_7","type":"book-chapter","created":{"date-parts":[[2020,4,17]],"date-time":"2020-04-17T06:02:53Z","timestamp":1587103373000},"page":"118-125","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":96,"title":["GASOL: Gas Analysis and Optimization for Ethereum Smart Contracts"],"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":[[2020,4,17]]},"reference":[{"key":"7_CR1","unstructured":"ExtraBalToken contract. https:\/\/etherscan.io\/address\/0x5c40ef6f527f4fba68368774e6130ce6515123f2"},{"key":"7_CR2","unstructured":"The Michelson Language. https:\/\/www.michelson-lang.com"},{"key":"7_CR3","unstructured":"Oyente: An Analysis Tool for Smart Contracts (2018), https:\/\/github.com\/melonproject\/oyente"},{"key":"7_CR4","doi-asserted-by":"crossref","unstructured":"Albert, E., Arenas, P., Flores-Montoya, A., Genaim, S., G\u00f3mez-Zamalloa, M., Martin-Martin, E., Puebla, G., Rom\u00e1n-D\u00edez, G.: SACO: Static Analyzer for Concurrent Objects. In: TACAS. LNCS, vol.\u00a08413, pp. 562\u2013567. Springer (2014)","DOI":"10.1007\/978-3-642-54862-8_46"},{"key":"7_CR5","doi-asserted-by":"crossref","unstructured":"Albert, E., Arenas, P., Genaim, S., Puebla, G.: Automatic inference of upper bounds for recurrence relations in cost analysis. In: SAS. LNCS, vol.\u00a05079, pp. 221\u2013237. Springer (2008)","DOI":"10.1007\/978-3-540-69166-2_15"},{"key":"7_CR6","unstructured":"Albert, E., Correas, J., Gordillo, P., Rom\u00e1n-D\u00edez, G., Rubio, A.: GASOL: Gas Analysis and Optimization for Ethereum Smart Contracts (Artifact) (2020), Figshare 2020, 10.6084\/m9.figshare.11876697"},{"key":"7_CR7","doi-asserted-by":"crossref","unstructured":"Albert, E., Gordillo, P., Livshits, B., Rubio, A., Sergey, I.: EthIR: A Framework for High-Level Analysis of Ethereum Bytecode. In: ATVA. LNCS, vol. 11138, pp. 513\u2013520. Springer (2018)","DOI":"10.1007\/978-3-030-01090-4_30"},{"key":"7_CR8","unstructured":"Albert, E., Gordillo, P., Rubio, A., Sergey, I.: Running on Fumes: Preventing OutOf-Gas vulnerabilitires in Ethereum Smart Contracts using Static Resource Analysis. In: VECoS. LNCS, vol. 11847, pp.63\u201378. Springer (2019)."},{"key":"7_CR9","doi-asserted-by":"crossref","unstructured":"Amani, S., B\u00e9gel, M., Bortin, M., Staples, M.: Towards Verifying Ethereum Smart Contract Bytecode in Isabelle\/HOL. In: CPP. pp. 66\u201377. ACM (2018)","DOI":"10.1145\/3167084"},{"key":"7_CR10","doi-asserted-by":"crossref","unstructured":"Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Gollamudi, A., Gonthier, G., Kobeissi, N., Kulatova, N., Rastogi, A., Sibut-Pinote, T., Swamy, N., Zanella-B\u00e9guelin, S.: Formal verification of smart contracts: Short paper. In: PLAS. pp. 91\u201396. ACM (2016)","DOI":"10.1145\/2993600.2993611"},{"key":"7_CR11","doi-asserted-by":"crossref","unstructured":"Biere, A., Cimatti, A., Clarke, E.M., Zhu, Y.: Symbolic model checking without bdds. In: TACAS. LNCS, vol.\u00a01579, pp. 193\u2013207. Springer (1999)","DOI":"10.1007\/3-540-49059-0_14"},{"key":"7_CR12","doi-asserted-by":"crossref","unstructured":"Chen, T., Li, X., Luo, X., Zhang, X.: Under-optimized smart contracts devour your money. In: SANER. pp. 442\u2013446. IEEE Computer Society (2017)","DOI":"10.1109\/SANER.2017.7884650"},{"key":"7_CR13","unstructured":"Ethereum: Solidity (2018), https:\/\/solidity.readthedocs.io"},{"key":"7_CR14","doi-asserted-by":"crossref","unstructured":"Grech, N., Kong, M., Jurisevic, A., Brent, L., Scholz, B., Smaragdakis, Y.: Madmax: surviving out-of-gas conditions in ethereum smart contracts. PACMPL 2(OOPSLA), 116:1\u2013116:27 (2018)","DOI":"10.1145\/3276486"},{"key":"7_CR15","doi-asserted-by":"crossref","unstructured":"Grishchenko, I., Maffei, M., Schneidewind, C.: A Semantic Framework for the Security Analysis of Ethereum Smart Contracts. In: POST. LNCS, vol. 10804, pp. 243\u2013269. Springer (2018)","DOI":"10.1007\/978-3-319-89722-6_10"},{"key":"7_CR16","doi-asserted-by":"crossref","unstructured":"Grossman, S., Abraham, I., Golan-Gueta, G., Michalevsky, Y., Rinetzky, N., Sagiv, M., Zohar, Y.: Online detection of effectively callback free objects with applications to smart contracts. PACMPL 2(POPL), 48:1\u201348:28 (2018)","DOI":"10.1145\/3158136"},{"key":"7_CR17","doi-asserted-by":"crossref","unstructured":"Kalra, S., Goel, S., Dhawan, M., Sharma, S.: ZEUS: analyzing safety of smart contracts. In: NDSS. The Internet Society (2018)","DOI":"10.14722\/ndss.2018.23082"},{"key":"7_CR18","doi-asserted-by":"crossref","unstructured":"Kolluri, A., Nikolic, I., Sergey, I., Hobor, A., Saxena, P.: Exploiting The Laws of Order in Smart Contracts. CoRR abs\/1810.11605 (2018)","DOI":"10.1145\/3293882.3330560"},{"key":"7_CR19","unstructured":"Krupp, J., Rossow, C.: teether: Gnawing at ethereum to automatically exploit smart contracts. In: USENIX Security Symposium. pp. 1317\u20131333. USENIX Association (2018)"},{"key":"7_CR20","doi-asserted-by":"crossref","unstructured":"Luu, L., Chu, D., Olickel, H., Saxena, P., Hobor, A.: Making smart contracts smarter. In: CCS. pp. 254\u2013269. ACM (2016)","DOI":"10.1145\/2976749.2978309"},{"key":"7_CR21","doi-asserted-by":"crossref","unstructured":"Marescotti, M., Blicha, M., Hyv\u00e4rinen, A.E.J., Asadi, S., Sharygina, N.: Computing Exact Worst-Case Gas Consumption for Smart Contracts. In: ISoLA. LNCS, vol. 11247, pp. 450\u2013465. Springer (2018)","DOI":"10.1007\/978-3-030-03427-6_33"},{"key":"7_CR22","doi-asserted-by":"crossref","unstructured":"Nikolic, I., Kolluri, A., Sergey, I., Saxena, P., Hobor, A.: Finding the greedy, prodigal, and suicidal contracts at scale. In: ACSAC. pp. 653\u2013663. ACM (2018)","DOI":"10.1145\/3274694.3274743"},{"key":"7_CR23","unstructured":"P\u00e9rez, D., Livshits, B.: Broken metre: Attacking resource metering in EVM. CoRR abs\/1909.07220 (2019), http:\/\/arxiv.org\/abs\/1909.07220"},{"key":"7_CR24","unstructured":"Schett, M., Nagele, J.: Blockchain superoptimizer. In: 29th International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2019) (2019)"},{"key":"7_CR25","doi-asserted-by":"crossref","unstructured":"Sergey, I., Nagaraj, V., Johannsen, J., Kumar, A., Trunov, A., Hao, K.C.G.: Safer smart contract programming with Scilla. In: 34th ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA 2019) (2019)","DOI":"10.1145\/3360611"},{"key":"7_CR26","doi-asserted-by":"crossref","unstructured":"Tsankov, P., Dan, A.M., Drachsler-Cohen, D., Gervais, A., B\u00fcnzli, F., Vechev, M.T.: Securify: Practical security analysis of smart contracts. In: CCS. pp. 67\u201382. ACM (2018)","DOI":"10.1145\/3243734.3243780"},{"key":"7_CR27","unstructured":"Wood, G.: Ethereum: A secure decentralised generalised transaction ledger (2014)"}],"container-title":["Lecture Notes in Computer Science","Tools and Algorithms for the Construction and Analysis of Systems"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-45237-7_7","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,3,22]],"date-time":"2021-03-22T14:05:15Z","timestamp":1616421915000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-45237-7_7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"ISBN":["9783030452360","9783030452377"],"references-count":27,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-45237-7_7","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020]]},"assertion":[{"value":"17 April 2020","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":"Dublin","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Ireland","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2020","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"25 April 2020","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"30 April 2020","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"26","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tacas2020","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.etaps.org\/2020\/tacas","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Single-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Easychair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"155","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"40","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"8","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"26% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"14","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"The conference could not take place due to the COVID-19 pandemic. There was an online event on July 2, 2020.","order":10,"name":"additional_info_on_review_process","label":"Additional Info on Review Process","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}