了解了线上电商和线下购物的短板,线上线下结合是新的销售通路,而这个新的销售通路就是新零售模式。在互联网工具快速发展的时期,要以互联网为依托,通过运用大数据、人工智能等先进技术手段,对商品的生产、流通与销售过程进行升级改造,进而重塑业态结构与生态圈,并对线上服务、线下体验以及现代物流进行深度融合,一是让商家生产消费者喜欢的商品,二是让消费者更容易找到自己喜欢的商品,实现线上考察、线下体验,线上线下购买。商家和消费者更有效的链接就是新零售模式。
ERC20约定了一个代币合约需要实现的接口:
//接口标准
contract ERC20{
function totalSupply()constant returns(uint totalSupply);//总发行量
function balanceOf(address _owner)constant returns(uint balance);
//代币分发(注意,这个只有合约的Creator可以调用)
function transfer(address _to,uint _value)returns(bool success);
//这里是拥有者和拥有者之间的代币转移
function transferFrom(address _from,address _to,uint _value)returns(bool success);
function approve(address _spender,uint _value)returns(bool success);
function allowance(address _owner,address _spender)constant returns(uint remaining);
event Transfer(address indexed _from,address indexed _to,uint _value);
event Approval(address indexed _owner,address indexed _spender,uint _value);
//Token信息
string public constant name="4FunCoin";
string public constant symbol="4FC";
uint8 public constant decimals=18;//token的精度,大部分都是18
}
上面的代码是一个标准的ERC20标准的代码,规范给出了框架,我们只需要实现相应的函数就好了,这里给出函数说明。
接口函数说明
函数的形参是局部有效,所以前面使用下划线,与其他的变量区别开来.如_owner.
totalSupply()函数返回这个Token的总发行量;
balanceOf()查询某个地址的Token数量,结合mapping实现
transfer()owner使用这个进行发送代币
transferFrom()token的所有者用来发送token
allowance()控制代币的交易,如可交易账号及资产,控制Token的流通
approve()允许用户可花费的代币数;
事件函数说明
这里两个Event是重点,事件,可以被前端js代码捕获到并进行相应的处理:
event Transfer()Token的转账事件
event Approval()允许事件
ERC20代币合约实现
理解了上面的函数,下面的代码,就实现了Token合约的函数填充
pragma solidity^0.4.16;
interface tokenRecipient{function receiveApproval(address _from,uint256 _value,address _token,bytes _extraData)public;}//token的接受者这里声明接口,将会在我们的ABI里
contract TokenERC20{
/Token的属性说明*/
string public name=4FunCoin;
string public symbol=4FC;
uint8 public decimals=18;//18是建议的默认值
uint256 public totalSupply;//发行量
//建立映射地址对应了uint'便是他的余额
mapping(address=>uint256)public balanceOf;
//地址对应余额
mapping(address=>mapping(address=>uint256))public allowance;
//事件,用来通知客户端Token交易发生
event Transfer(address indexed from,address indexed to,uint256 value);
//事件,用来通知客户端代币被消耗(这里就不是转移,是token用了就没了)
event Burn(address indexed from,uint256 value);
//这里是构造函数,实例创建时候执行
function TokenERC20(uint256 initialSupply,string tokenName,string tokenSymbol)public{
totalSupply=initialSupply10*uint256(decimals);//这里确定了总发行量
balanceOf[msg.sender]=totalSupply;//这里就比较重要,这里相当于实现了,把token全部给合约的Creator
name=tokenName;
symbol=tokenSymbol;
}