Search papers, labs, and topics across Lattice.
This paper compares Solidity and Move smart contracts via a mixed-methods study involving functionally-equivalent contract pairs and developer surveys. The quantitative analysis reveals that Move reduces explicit security overhead by 60% compared to Solidity, albeit with a 47% increase in code size. Developer surveys indicate a preference for Move in security-critical applications due to its compile-time guarantees, despite learning curve and ecosystem limitations.
Resource-oriented smart contract languages like Move cut security code by 60%, suggesting a path to safer DeFi even if it means writing more code.
Smart contract vulnerabilities have caused billions in financial losses, raising questions about whether programming language paradigms can reduce security overhead. While imperative languages like Solidity require developers to manually implement security checks, resource-oriented languages like Move encode safety guarantees in type systems. We present a preliminary mixed-methods study analyzing 12 functionally-equivalent contract pairs implemented in both Solidity and Move by the same development team, complemented by a survey of 11 developers experienced in both languages. Quantitative analysis reveals that Move reduces explicit security overhead by 60\% (security check density: 6.7% vs. 16.8%, p=0.002, Cohen's d=-1.75) at the cost of 47% larger code size (p=0.002, d=1.90), while maintaining identical cyclomatic complexity. Developer surveys show moderate learning difficulty but higher safety confidence in Move (Median=6/7, 10 of 11 above neutral), with 55% preferring Move for security-critical applications despite ecosystem maturity gaps. These preliminary findings suggest resource-oriented paradigms shift security from runtime validation to compile-time guarantees, though adoption requires investment in learning and tooling. The controlled comparison provides initial evidence for paradigm effects on smart contract development, informing language selection decisions and identifying opportunities for improved developer resources.