Solidity
Browse all Solidity articles.
5 min read
Library call on Starknet
A library call executes the logic of a declared contract class in the context and storage of the contract that invokes it.
13 min read
Hash Functions on Starknet
Solidity relies on keccak-256 as its primary hash function to derive deterministic identifiers from arbitrary data such as computing function selectors…
26 min read
Syscalls in Starknet
In Solidity, low-level operations like reading/writing to storage, contract to contract calls, or sending messages are performed directly through inline…
8 min read
Transfer and Approval Rules for ERC-721
This chapter continues as the third part (3/5) of our code walkthrough of OpenZeppelin’s ERC-721 CVL specification and focuses on token transfer and…
12 min read
Introduction to Invariants in Certora
Up until now, we’ve focused on verifying the behavior of individual methods or sequences of methods — ensuring that a specific function call or set of…
14 min read
Formally Verify an ERC-20 Token
In this chapter, we formally verify Solmate’s ERC-20 implementation. Note that while Solmate’s ERC-20 implementation includes a permit() function, we…
13 min read
Using “requireInvariant" in Rules and Invariants
Up until now, we’ve either written a rule to verify specific behaviors or an invariant to verify properties that must always hold true throughout the…
10 min read
Mint and Burn Rules for ERC-721
ERC-721 is the Ethereum standard for non-fungible tokens, widely used to represent digital property.
8 min read
Constraining the Ghost Values in Rules
In the previous chapter, we learned how ghost variables allow information to flow from hooks into rules.
17 min read
Loops in CVL: Path Explosion and Loop Unrolling
Loops are one of the most common programming constructs, but they remain challenging to reason about in formal verification.
14 min read
Invariants for ERC-721
In previous chapters, we explored how CVL invariants work: properties that must hold throughout all contract execution.
10 min read
Constraining Ghosts in Invariants
In the previous chapter, we saw how unconstrained ghost variables can lead to false positives.