Expand description
Solidity Metadata Extraction Module
This module provides functionality for extracting metadata from Solidity source code, including contract definitions, function signatures, state variables, events, and Natspec documentation.
§Key Components
ContractMetadata- Complete metadata for a Solidity contractFunctionMetadata- Function signature and body informationNatspecDoc- Extracted Natspec documentation (@title, @notice, @dev, etc.)analyse_all_sources- Main entry point for multi-file analysis
§Example
ⓘ
use neo_solidity::solidity::{analyse_all_sources, ContractMetadata};
let sources = vec![("Contract.sol".to_string(), source_code)];
let contracts = analyse_all_sources(&sources)?;Structs§
- Contract
Metadata - Diagnostic
- Enum
Metadata - Event
Metadata - Event
Parameter - Function
Metadata - Natspec
Doc - Natspec documentation extracted from Solidity source comments
- Parameter
Metadata - Selector
Registry - State
Variable Metadata - Struct
Field Metadata - Struct
Metadata
Enums§
- Diagnostic
Severity - Function
Kind - Solidity
Error - Errors from Solidity compilation
- State
Mutability
Functions§
- analyse_
all_ sources - analyse_
source - apply_
base_ 🔒constructors_ and_ modifiers - apply_
modifier_ 🔒calls_ to_ body - apply_
modifiers_ 🔒and_ base_ constructors - base_
last_ 🔒name - build_
method_ 🔒name_ counts - build_
modifier_ 🔒definition_ map - build_
parameter_ 🔒substitutions - c3_
merge 🔒 - canonical_
param_ 🔒type - check_
bn254_ 🔒precompile_ usage - Detect BN254 elliptic curve precompile usage and suggest Neo alternatives.
- check_
erc20_ 🔒approve_ pattern - Detect ERC-20 approve/allowance/transferFrom and note they are not in NEP-17.
- check_
erc20_ 🔒transfer_ pattern - Detect ERC-20 style
transfer(address, uint256)and suggest NEP-17 4-param form. - check_
erc721_ 🔒transfer_ from_ pattern - Detect ERC-721
transferFrom(from, to, tokenId)and suggest NEP-11transfer(to, tokenId, data). - check_
erc1155_ 🔒pattern - Detect ERC-1155 multi-token pattern and note Neo N3 has no direct equivalent.
- check_
erc2612_ 🔒permit_ pattern - Detect ERC-2612 permit pattern and note Neo uses checkWitness instead.
- check_
erc4626_ 🔒vault_ pattern - Detect ERC-4626 tokenized vault pattern and suggest NEP-17 replacement.
- check_
receive_ 🔒fallback_ pattern - Detect
receive()/fallback()and suggestonNEP17Payment(). - check_
return_ 🔒statements - check_
supports_ 🔒interface_ pattern - Detect
supportsInterface(bytes4)and note that Neo uses manifest instead. - collect_
interface_ 🔒events - collect_
interface_ 🔒events_ recursive - collect_
interface_ 🔒types - collect_
interface_ 🔒types_ recursive - compute_
function_ 🔒selector - contract_
linearization_ 🔒base_ to_ derived - contract_
linearization_ 🔒mro - convert_
contract 🔒 - convert_
enum 🔒 - convert_
event 🔒 - convert_
function 🔒 - convert_
parameter 🔒 - convert_
state_ 🔒variable - convert_
struct 🔒 - enums_
to_ 🔒type_ metadata - extract_
return_ expression - flatten_
contract_ 🔒inheritance - function_
ty_ 🔒key - getter_
signature_ 🔒from_ neotype - inheritance_
contract_ 🔒chain - modifier_
placeholder_ 🔒stmt - normalize_
event_ 🔒signature - rewrite_
expression 🔒 - rewrite_
statement 🔒 - solidity_
type_ 🔒from_ neotype - statement_
list_ 🔒from_ body - structs_
to_ 🔒type_ metadata - synthesize_
public_ 🔒getters - validate_
abstract_ 🔒contract - validate_
contract - validate_
erc_ 🔒nep_ patterns - ERC → NEP pattern adaptation diagnostics.
- validate_
events 🔒 - validate_
flatten_ 🔒warnings - validate_
library 🔒 - validate_
methods 🔒 - validate_
return_ 🔒types - validate_
state_ 🔒variables - validate_
type_ 🔒definitions - validate_
using_ 🔒directives