00_Cairo1.0程序的入口

  • 0xSH
  • 更新于 2023-06-27 12:22
  • 阅读 1273

单文件Cairo程序入口与大多数编程语言类似,单文件的Cairo程序入口是main函数。

此文章使用的Cairo编译器版本:1.0.0-alpha.6。因为Cairo正在快速更新,所以不同版本的语法会有些许不同,未来将会将文章内容更新到稳定版本。

单文件Cairo程序入口<a name="heading-2"></a>

与大多数编程语言类似,单文件的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智能合约入口<a name="heading-3"></a>

使用 #[contract] 开头,在 mod 后面加上合约名。

#[contract]
mod ERC20 {
    struct Storage {
        name_: felt252,
        symbol_: felt252,
        totalSupply_: u256,
        balances_: LegacyMap::&lt;ContractAddress, u256>,
        allowances_: LegacyMap::&lt;(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>

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0xSH
0xSH
江湖只有他的大名,没有他的介绍。