Cairo1.0程序的入口

  • A+
所属分类:以太坊ETH

chatGPT账号

Cairo1.0程序的入口

单文件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合约代码。

免责声明

免责声明:

本文不代表知点网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点区块链研究院声明:知点区块链研究院内容由知点网发布,部分来源于互联网和行业分析师投稿收录,内容为知点区块链研究院加盟专职分析师独立观点,不代表知点网立场。

 

本文是全系列中第92 / 214篇:行业技术

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
知点

发表评论

您必须登录才能发表评论!