Solidity学习笔记

Solidity Learning Road

  • 简单代币合约
    contract Coin{
    //关键字"public"使变量能从合约外部访问。
        address public minter;
        mapping (address => uint) public balances;
        
    //事件event让轻客户端能高效的对变化做出反应
        event Sent(address from, address to, uint amount);
        
    //这个构造函数的代码仅仅只能在合约创建的时候被运行
        function Coin(){
            minter = msg.sender;
        }
        function mint(address receiver, uint amount){
            if(msg.sender != minter) return;
            balances[receiver] += amount;
        }
        function send(address receiver, uint amount){
            if(balances[msg.sender] < amount) return;
            balances[msg.sender] -= amount;
            Sent(msg.sender, receiver, amount);
        }
    }
    mapping (address => uint) public balances;

表示声明一个map类型状态变量balances,其中k是address,v是balances。即可以存入键值对.可以根据address,查找到与之对应的balances.
我们可以提供一个接口如下提供查询访问:

    function balances(address _account) returns (uint balance){
        return balances[_account];
    }

关键字

  • contract: 合约相当于面向对象的类
  • library/using: 库。他和合约很像,但又有些不同,就我们的目的而言,库允许我们使用 using 关键字,它可以自动把库的所有方法添加给一个数据类型。具体的使用方法后面会有介绍
  • function: 声明一个函数
  • event: 声明一个事件(当完成一个操作后调用event,用于生成日志)
  • require: 用于验证 使用方式: require( a == 1); 不满足则抛出错误停止执行。经常与msg.sender一起使用对函数调用者进行验证
  • modifier: 用于声明定义一个自定义修饰符。用法后面会进行详细介绍

常用的一些内置的变量

  • msg.sender 调用者.
  • now 获取当前时间戳。将返回当前的unix时间戳(自1970年1月1日以来经过的秒数).

下面是一些使用时间单位的实用案例:

uint lastUpdated;

// 将‘上次更新时间’ 设置为 ‘现在’
function updateTimestamp() public {
  lastUpdated = now;
}

// 如果到上次`updateTimestamp` 超过5分钟,返回 'true'
// 不到5分钟返回 'false'
function fiveMinutesHavePassed() public view returns (bool) {
  return (now >= (lastUpdated + 5 minutes));
}
  • msg.sender 调用者。经常用于验证来确定调用者是否有足够的权限(获取变量或者调用函数)

数据类型

  • address:地址类型变量
  • bool/整形:int,unit/
  • string: 字符串类型
  • 数据类型转换方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值