Get Started
- CodeAnt AI
- Control Center
- Pull Request Review
- IDE
- Compliance
- Anti-Patterns
- Code Governance
- Infrastructure Security Database
- Application Security Database
- Apex
- Bash
- C
- Clojure
- Cpp
- Csharp
- Dockerfile
- Elixir
- Fingerprints
- Generic
- Go
- Html
- Java
- Javascript
- Json
- Kotlin
- Ocaml
- Php
- Problem-based-packs
- Python
- Ruby
- Rust
- Scala
- Solidity
- Swift
- Terraform
- Typescript
- Yaml
Solidity
Best practice
By demanding that the receiver of the owner permissions actively accept via a contract call of its own, Ownable2Step
and Ownable2StepUpgradeable
prevent the contract ownership from accidentally being transferred to an address that cannot handle it.
To guarantee arguments type safety it is recommended to use abi.encodeCall
instead of abi.encodeWithSelector
.