单文件Cairo程序入口与大多数编程语言类似,单文件的Cairo程序入口是main函数。
此文章使用的Cairo编译器版本:1.0.0-alpha.6。因为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
使用 #[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合约代码。 <br>
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!