区块链10-区块链去中心化应用开发3-实现标准代币实现

pragma solidity ^0.5.1;

contract ERC20Interface {
  string public name;
  string public symbol;
  uint8 public decimals;
  uint public totalSupply;

//   function balanceOf(address _owner) public view returns (uint256 balance);
  function transfer(address _to, uint256 _value) public returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
  function approve(address _spender, uint256 _value) public returns (bool success);
  function allowance(address _owner, address _spender) public view returns (uint256 remaining);
  
  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract ERC20 is ERC20Interface {

  mapping (address => uint256) public balanceOf;
  mapping (address => mapping (address => uint256)) internal allowed;

  constructor() public {
    name = "MUKE Token";
    symbol = "IMOOC";
    decimals = 0;
    totalSupply = 100000000;
    balanceOf[msg.sender] = totalSupply;
  }

  // 余额
//   function balanceOf(address _owner) public view returns (uint256 balance) {
//     return balanceOf[_owner]; 
//   }
  
  function transfer(address _to, uint256 _value) public returns (bool success) {
    require(_to != address(0));
    require(balanceOf[msg.sender] >= _value);
    require(balanceOf[_to] + _value >= balanceOf[_to]);
    
    balanceOf[msg.sender] -= _value;
    balanceOf[_to] += _value;
    emit Transfer(msg.sender, _to, _value);
  }

  // 先用到approve,transferFrom必须是由发起调用的人去扣除_from账户的币,这样它必须要先被授权
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
    require(_to != address(0));
    require(balanceOf[_from] >= _value);
    require(allowed[_from][msg.sender] >= _value);
    require(balanceOf[_to] + _value >= balanceOf[_to]);

    balanceOf[_from] -= _value;
    balanceOf[_to] += _value;
    emit Transfer(_from, _to, _value);
    
    success = true;
  }
  
  function approve(address _sender, uint256 _value) public returns (bool success) {
    allowed[msg.sender][_sender] = _value;
    emit Approval(msg.sender, _sender, _value);
    success = true;
  }

  // 限额
  function allowance(address _owner, address _sender) public view returns (uint256 remaining) {
    return allowed[_owner][_sender];
  }
}

把钱包地址分享在推特或者脸书,再把帖子网站粘贴到该网站框框里,即可得到测试网络中以太币

https://faucet.rinkeby.io/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
移动互联网时代,微信、支付宝等新型支付方式,冲击了传统的现金交易方式,移动支付,改变了人们的生活方式。而数字经济时代,顺应数据经济的发展,伴随着区块链技术而来的数字货币钱包也必将冲击资产管理方式。那么到底什么是数字货币钱包呢?01钱包的概念1.区块链钱包(BlockChain Wallet)区块链钱包(Block Chain Wallet):是密钥的管理工具,只包含密钥而不是确切的某个代币;钱包中包含了成对的私钥和公钥,用户用私钥进行交易,从而证明了该用户拥有交易的输出权;而输出的交易信息则被存储在区块链中;用户在使用钱包时,你的Keystore, 助记词, 明文私钥,都是钱包;Keystore 是你加了”锁”的钱包,而助记词和明文私钥是完全暴露在外的钱包,没有任何安全性可言,所以在使用助记词和明文私钥时,一定要注意保密。2.钱包中的几个概念钱包一般包括:公钥、私钥、助记词、Keystore、密码;本质上,钱包和钥匙是对应关系,固定的钥匙直接可以打开在网络上属于自己的钱包,但为了避免传输过程中信息泄密,密码学家又运用非对称加密技术,发明了公钥和私钥,公钥主要用于传输,私钥用于解密,简单解释就是,公钥是我们的银行卡,私钥就是该银行卡密码。私钥= Keystore+密码,私钥是由56位包含数字和区分大小写的字母组成,为方便资产交易,一般采用简单密码加上Keystore就能便捷转移我们额数字资产。助记词,是加密了的私钥,是为了便于导出Keystore而发明的。02钱包的分类1.软件钱包和硬件钱包钱包在形态上,可以划分成为软件钱包和硬件钱包。软件钱包就是一个APP,装在我们的手机上或者是可以装在我们的电脑上面。硬件钱包就是专门有一个设备来存储这个私钥,涉及到签名的这些功能也在这个硬件设备上完成。2.冷钱包和热钱包按是否在线来划分,我们可以把钱包分为冷钱包和热钱包。硬件钱包不一定100%就是冷钱包。我们说的冷钱包是指私钥和签名这个动作是永远离线的。所以说冷钱包也有可能是以硬件形态来形成,也有可能是以一个软件来形成。因此很多钱包APP都支持冷热分离的操作。3.on-chain即发生在链上,给一个钱包地址发送数字货币,这笔交易在全网被广播、被确认、被打包进区块。称为on-chain交易;on-chain钱包需要自己保管私钥。4.off-chain通常经过交易所进行交易时off-chain的,本人并无私钥。私钥由交易所托管。5.全节点钱包除了保存私钥外,全节点钱包还保存了所有区块的数据,著名的是bitcoin-core。6.中心化钱包顾名思义,就是在交易过程中通过某平台或银行机构等交易的钱包,如oklink提供的保险柜。7.轻钱包只保存跟自己相关的数据的去中心化钱包。03基本功能典型的数字资产钱包主要能完成哪些功能呢?第一是存掌管区块链资产的钥匙,我们称之为叫存私钥。第二它可以查询你的资产,根据你的这个私钥公钥还有地址,可以到区块链上查询到你有多少个比特币等数字货币。第三,就是从钱包转账时,会使用到转账过程中需要的签名,和向区块链网络广播的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百战成王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值