Callbacks är viktiga i många programmeringsmiljöer, men komplicerar drastiskt programmets förståelse och resonemang eftersom de gör det möjligt att mutera objektets lokala tillstånd genom externa objekt på oväntade sätt och därmed bryta modularitet. Den berömda DAO bugg i cryptocurrency ramverket Ethereum, anställd callbacks för att stjäla $ 150M. Vi definierar begreppet effektivt Callback Free (ECF) objekt för att tillåta callbacks utan att förhindra modulära resonemang. Ett objekt är ECF i en given körning spår om det finns en likvärdig exekvering spår utan callbacks till detta objekt. Ett objekt är ECF om det är ECF i varje möjlig körning spår. Vi studerar möjligheten att dynamiskt kontrollera ECF i ett givet utförande spår och statiskt kontrollera om ett objekt är ECF. Vi visar också att dynamisk kontroll av ECF i Ethereum är genomförbart och kan göras online. Genom att köra historien om alla avrättning spår i Ethereum, kunde vi kontrollera att praktiskt taget alla befintliga kontrakt utföranden, exklusive dessa av DAO eller kontrakt med liknande kända sårbarheter, är ECF. Slutligen visar vi att ECF, vare sig det verifieras dynamiskt eller statiskt, möjliggör modulärt resonemang om objekt med inkapslat tillstånd.
För att förhindra DAO, Grossman et al. föreslå begreppet effektivt Callback Free (ECF) objekt för att tillåta callbacks utan att förhindra modulära resonemang REF.
Online detection of effectively callback free objects with applications to smart contracts
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}