单文件Cairo程序入口
与大多数编程语言类似,单文件的Cairo程序入口是main函数。
use debug::PrintTrait; const ONE_HOUR_IN_SECONDS: felt252 = 3600; fn main(){ ONE_HOUR_IN_SECONDS.print(); }
运行
cairo-run --path $file_path
Starknet智能合约入口
使用 #[contract]
开头,在 mod 后面加上合约名。
#[contract] mod ERC20 { struct Storage { name_: felt252, symbol_: felt252, totalSupply_: u256, balances_: LegacyMap::<ContractAddress, u256>, allowances_: LegacyMap::<(ContractAddress, ContractAddress), u256>, } #[event] fn Transfer(from: ContractAddress, to: ContractAddress, amount: u256) {} #[event] fn Approval(owner: ContractAddress, spender: ContractAddress, amount: u256) {} #[constructor] fn constructor(_name: felt252, _symbol: felt252) { name_::write(_name); symbol_::write(_symbol); } #[view] fn name() -> felt252 { name_::read() } #[view] fn symbol() -> felt252 { symbol_::read() } #[external] fn transfer(_to: ContractAddress, _amount: u256) -> bool { let _msgSender = get_caller_address(); _transfer(_msgSender, _to, _amount); true } ... }
上面是一个实例ERC20合约代码。
评论前必须登录!
注册