Sort:  

data.jpg

Loading...

ether wei finney szabo
1 ether = 1018 wei
1 ether = 1000 finney
1 ether = 1000000 szabo
1 Gwei = 10
9 wei
gas prise = 2 wei

在全局命名空间中已经存在了(预设了)一些特殊的变量和函数,他们主要用来提供关于区块链的信息或一些通用的工具函数。可以把这些变量和函数理解为Solidity语言层面的(原生)API 。

blockhash(uint) :指定区块的区块哈希——仅可用于最新的 256 个区块且不包括当前区块
block.coinbase ( address ): 挖出当前区块的矿工地址
block.difficulty ( uint ): 当前区块难度
block.gaslimit ( uint ): 当前区块 gas 限额
block.number ( uint ): 当前区块号
block.timestamp ( uint): 自 unix epoch 起始当前区块以秒计的时间戳
gasleft() returns (uint256) :剩余的 gas
msg.data ( bytes ): 完整的 calldata
msg.sender ( address ): 消息发送者(当前调用)
msg.sig ( bytes4 ): calldata 的前 4 字节(也就是函数标识符)
msg.value ( uint ): 随消息发送的 wei 的数量
now (uint): 目前区块时间戳( block.timestamp 的别名 )
tx.gasprice (uint): 交易的 gas 价格
tx.origin (address payable): 交易发起者(完全的调用链)

public private external internal
可以访问,可以继承的是public external
只能内部访问,不可继承的是private internal

payable view pure
payable 可以接受以太币
view 只看不修改(状态变量)
pure 纯函数,不读也不写

memory storage
memory 存储在EVM内存中,主要有局部变量,函数参数
storage 存储在区块链中,主要有状态变量,复杂变量,数组

pragma solidity >0.4.23 <0.7.0;

contract MyStorage{
    int[] arr;
    string tt;
    function fun1(uint m, string memory s) public returns(string memory) {
        uint n = m;
        string memory str = s;
        tt = s;
        
        string memory s1 = 'abc';
        string memory s2 = s1;
        
        int[] storage abc = arr;
        return tt;
    }
}

参考
OpenZeppelin

npm install @openzeppelin/contracts

pragma solidity >=0.4.22 <0.7.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";

contract TutorialToken is ERC20, ERC20Detailed {
    constructor() ERC20Detailed("Lemool", "LEM", 0) public {
        _mint(msg.sender, 10000000);
    }
}

一经创建,每笔交易都收取一定数量的 gas ,目的是限制执行交易所需要的工作量和为交易支付手续费。EVM 执行交易时,gas 将按特定规则逐渐耗尽。

gas price 是交易发送者设置的一个值,发送者账户需要预付的手续费= gas_price * gas 。如果交易执行后还有剩余, gas 会原路返还。

类型.jpg

值类型
值类型传值时,会临时拷贝一份内容出来,而不是拷贝指针,当你修改新的变量时,不会影响原来的变量的值。
  布尔(Booleans)
  整型(Integer)
  地址(Address)
  定长字节数组(fixed byte arrays)
  有理数和整型(Rational and Integer Literals,String literals)
  枚举类型(Enums)
  函数(Function Types


引用类型(Reference Types)
引用即地址传递,复杂类型,占用空间较大。在拷贝时占用空间较大,所以考虑通过引用传递。
  不定长字节数组(bytes)
  字符串(string)
  数组(Array)
  结构体(Struts)

两者区别:
如果是值传递,修改新变量时,不会影响原来的变量值,如果是引用传递,那么当你修改新变量时,原来变量的值会跟着变化,这是因为新变量同时指向同一个地址的原因。

Coin Marketplace

STEEM 0.27
TRX 0.12
JST 0.033
BTC 62397.62
ETH 3171.83
USDT 1.00
SBD 3.77