Solidity语言基础

solidity是静态类型,编译型,高级预言。针对EVM专门设计,受到C++、JS等语言影响。

数据类型

值类型

布尔、整型、定长字节数字、枚举、函数类型、地址类型

十六进制常量、有理数和整形常量、字符串常量、地址常量

引用类型

结构体

数组

映射类型

全局变量及函数

区块和交易

block.number (uint) 当前区块号

block.timestamp (uint)   自unix epoch 起始当前区块以秒计算的时间戳

msg.sender (address)消息发送者(当前调用)

msg.value (uint) 随消息发送的wei的数量

tx.origin (address payable)  消息的发起者(完全的调用链)

错误处理(require()/revert())

在程序发⽣错误时的处理⽅式:EVM通过回退状态来处理错误的,以便保证状态修改的事务性

assert()和require()⽤来进⾏条件检查,并在条件不满⾜时抛出异常

assert(bool condition)

如果不满足条件,则会导致Panic 错误,则撤销状态更改 - 用于检查内部错误。

require(bool condition)

如果条件不满足则撤销状态更改 - 用于检查由输入或者外部组件引起的错误。

revert(“msg”):

终止运行并撤销状态更改,可以同时提供一个解释性的字符串。

Error 定义错误

数学和密码学

addmod(uint x, uint y, uint k) returns (uint)

计算 (x + y) % k,加法会在任意精度下执行,并且加法的结果即使超过 2**256 也不会被截取。从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)。

mulmod(uint x, uint y, uint k) returns (uint)

计算 (x * y) % k,乘法会在任意精度下执行,并且乘法的结果即使超过 2**256 也不会被截取。从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)。

keccak256((bytes memory) returns (bytes32)

 计算 Keccak-256 哈希。

ABI 编码

ABI:Application Binary Interface 应⽤程序⼆进制接⼝

ABI 接⼝描述: 定义如何与合约交互

ABI 编码 • 函数选择器:对函数签名计算Keccak-256哈希,取前 4 个字节

地址成员

<address>.balance (uint256)

以 Wei 为单位的 地址类型 Address 的余额

<address>.code (bytes memory)

在 地址类型 Address 上的代码(可以为空)

<address>.codehash (bytes32)

地址类型 Address 的codehash

<address payable>.transfer(uint256 amount)

向 地址类型 Address 发送数量为 amount 的 Wei,失败时抛出异常,使用固定(不可调节)的 2300 gas 的矿工费。

<address payable>.send(uint256 amount) returns (bool)

向 地址类型 Address 发送数量为 amount 的 Wei,失败时返回 false,发送 2300 gas 的矿工费用,不可调节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值