Ethere以太坊学习笔记

以下不一定全,准确率99%

1字节等于2gas


1、变量类型
是否是真 bool 


数字类型:
int/uint:有符号和无符号整形 默认256;
int8到uint256;


地址类型:
address 20字节长度
  属性方法:
send
call
callcode
selfdestruct
delegatecall
字节类型
byte;
bytes; 1.2.3.4.5.6-256,访问方式bytes[0]
字节属性:
length;长度


数组类型:
uint[2] public u; 
长度length;
uint[2][2] public c;
字符串类型 (手续费比较贵 尴尬。。)
string
其他操作:基本无
数据类型
enums 枚举

structs 结构
默认可使用构造函数加属性参数进行传递;
mappings 映射
mappings(uint => address) public addsIndex; map数组
delete 删除;
初始化属性变量;



每个变量都默认有a()的读取方式,a(b)的肤质方式。
2、关键字
属性关键字
public;可见

方法关键字
payable 修饰方法可接受eth




3、操作
<=, <, ==, !=, >= 和 >
比较: <=, <, ==, !=, >=, > (返回 bool)
位运算: &, |, ^ (按位异或), ~ (按位取反)
算术运算 +, -,*, /, % (取余数), ** (乘方), << (左移), >> (右移)
左移运算符 x << y 和 x * 2**y 是相等的,x >> y 和 x / 2**y是相等的。






4、系统函数
block.blockhash(uint blockNumber) returns (bytes32):给定块的散列 - 仅适用于256个最新块,不包括当前块
block.coinbase(address):当前交易块是那个矿工挖出的 矿工地址
block.difficulty(uint):当前区块困难
block.gaslimit(uint):当前阻止gaslimit
block.number(uint):当前程序段号
block.timestamp(uint):当前块时间戳记,因为unix时期以来的秒数
msg.data(bytes):完成calldata
msg.gas(uint):剩余气体
msg.sender(address):当前交易触发的用户地址
msg.sig(bytes4):calldata的前四个字节(即函数标识符)
msg.value(uint):eth转换为 wei的数量 与消息一起发送的wei的数量
now(uint):当前块时间戳(别名为block.timestamp)
tx.gasprice(uint):交易的天然气价格
tx.origin(address):交易的发送者(完整的呼叫链)


5、合约间调用
send
call
callcode
delegatecall


6、event事件


主要用于日志打印
event 函数名称(参数1,参数2);


7、方法
function name(参数){public|private|internal|external} [constant] [payable]  returns(return types){}






external:可以呗其他合约调用,但是再自身合约内不能调用,需要this.f()这样使用;
public 既可以呗其他合约调用,也可以内部直接使用
internal 只能再合约和其子类合约中使用
private 只能再自己的合约内部使用,子类中也不能使用。




pure 此函数数据不会写入区块链,甚至不需要读取区块链数据
view 次函数数据不会写入区块链






constant 
payable 此方法可以接收eth




匿名函数
定义方式只需要把函数名去掉
合约不存在是被调用,接收eth时被调用;
匿名函数可以在不调用方法的情况下收到eth






修改器


 modifiers方法名字
{
if(1=1)
{
  throw;
}else
{
_;//固定写法
}
}






调用时机




function a() 修改器名称
{




}






8、api
keccak256






9、继承


使用is去继承一个合约。子类可以访问父类的除了private限制的属性或方法
包括internal方法和变量,注意不可以使用this来访问。
构造函数需


F
{
}
F1
{
unit u;
F1(uint _u)
{
}
}
B is F,F1(20)
{
F1.u;
}






10、销毁
selfdestruct(address _ad)
销毁当前合约,并把当前合约余额发送到指定地址


11、事件 event

主要用于打印日志


12、发送eth
合约给用户发送eth
msg.sender.send(数量) return bool;
msg.value //用户发送到合约的eth


owner.send(msg.value);//向合约拥有者转移eth
13、address的call方法


send 已经不可用 transfer 发送eth
call 合约间调用方式;


add.call(bytes4(keccak256("fun(uint256,uint256)")),2,2);
调用add合约内的fun函数,此函数有两个uint参数,参数传值 2,2
会操作修改fun合约内的缓存值




callcode
delegatecall
add.delegatecall(bytes4(keccak256("fun(uint256,uint256)")),2,2);
调用add合约内的fun函数,此函数有两个uint参数,参数传值 1,2
不会操作修改fun合约内的缓存值,若有操作则








13、单位
1eth = 18wei
1finney=15wei
1szabo =12wei
1gwei = 9wei
1lovelace = 6wei
1kwei = 3wei 
1wei =1wei




14、库
library 
using 

bessie love erick

紧急需要联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值