• Step 1: 创建一个基础合约
pragma solidity ^0.4.7;contract Coin {address public minter;mapping (address => uint) public balances;
}

这里我们定义了一个address 作为key, uint做为value的hashTable balances; 我们还定义了一个address的变量minter;

  • Step 2: 添加一个构造函数Coin()
    function Coin() {minter = msg.sender;}

这里的代码minter = msg.sender; 代表创建这个合约的账户地址,被赋值给变量minter.

  • Step 3: 添加一个挖矿合约

      function mint(address receiver, uint amount) {if (msg.sender != minter) throw;balances[receiver] += amount;}
    

这里的核心代码在于,如果调用这个方法的账户,不是minter, 也就是创建合约的账户的话,这个mint()将无法被执行。 只有是创建合约的账户,也就是minter 才可以执行它

  • Step 4: 添加一个function send() 也就是从A转移X代币到B账户。代码如下:

      function send(address receiver, uint amount) {if (balances[msg.sender] < amount) return;balances[msg.sender] -= amount;balances[receiver] += amount;}
    

这个非常简单的转移货币的代码,也就是说msg.sender减少一定代币,接受者receiver增加一定代币

  • Step 5: 定义一个事件 Sent()

      event Sent(address from, address to, uint amount);function send(address receiver, uint amount) {if (balances[msg.sender] < amount) return;balances[msg.sender] -= amount;balances[receiver] += amount;Sent(msg.sender, receiver, amount);}
    
完整代码如下:
pragma solidity ^0.4.7;contract Coin {address public minter;mapping (address => uint) public balances;event Sent(address from, address to, uint amount);function Coin() {minter = msg.sender;}function mint(address receiver, uint amount) {if (msg.sender != minter) throw;balances[receiver] += amount;}function send(address receiver, uint amount) {if (balances[msg.sender] < amount) return;balances[msg.sender] -= amount;balances[receiver] += amount;Sent(msg.sender, receiver, amount);}
}

转载于:https://www.cnblogs.com/ceet/p/8600530.html

使用Mapping实现的以太坊智能合约的代码相关推荐

  1. 以太坊智能合约Demo

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...

  2. 使用Remix编译和部署以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的 ...

  3. 用Visual Studio开发以太坊智能合约

    2019独角兽企业重金招聘Python工程师标准>>> 区块链和以太坊 自从我熟悉区块链.以太坊和智能合约以来,一直失眠. 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议 ...

  4. 教程 | 以太坊智能合约编程之菜鸟教程

    教程 | 以太坊智能合约编程之菜鸟教程 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下 ...

  5. 以太坊智能合约安全入门了解一下(下)

    作者:RickGray 作者博客:http://rickgray.me/2018/05/26/ethereum-smart-contracts-vulnerabilities-review-part2 ...

  6. 以太坊智能合约安全入门了解一下(上)

    作者:RickGray 作者博客:http://rickgray.me/2018/05/17/ethereum-smart-contracts-vulnerabilites-review/ (注:本文 ...

  7. 浅谈以太坊智能合约的设计模式与升级方法

    浅谈以太坊智能合约的设计模式与升级方法 1. 最佳实践 2. 实用设计案例 2.1 控制器合约与数据合约: 1->1 2.2 控制器合约与数据合约: 1->N 2.3 控制器合约与数据合约 ...

  8. 以太坊智能合约编程之带菜鸟入门教程

    手把手带你走上智能合约编程之路 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角New ...

  9. Python开发以太坊智能合约指南(web3.py)

    在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...

最新文章

  1. Android版本介绍
  2. [导入]常用26句生活用语[英语]
  3. 【渝粤题库】国家开放大学2021春1373特殊教育概论题目
  4. 二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)
  5. oracle将存储过程导出,Oracle如何导出存储过程
  6. spring in action2笔记 第一章
  7. 你见过使用寿命最长的手机有多少年?
  8. C++ std :: fill()函数
  9. 错误 ORA-01102: cannot mount database in EXCLUSIVE mode 的处理方法
  10. Qt软件开发-Qt编译zlib完成文件压缩解压(win10)
  11. 《C专家编程》之 内存泄漏
  12. Linux vi 命令创建,Linux vi命令 创建文件
  13. Spring Boot应用在kubernetes的sidecar设计与实战
  14. iptables高性能前端优化-无压力配置1w+条规则
  15. 乘业绩创新高的东风,董明珠续任格力董事长几无悬念
  16. 寒假第二周 总结与反思
  17. java匹配任意,java有关正则表示式,我想匹配一个字串中的任意字元,怎么办?...
  18. 社区计算机知识,社区公共基础知识备考指导——计算机知识
  19. 【青少年编程】【三级】 捡垃圾游戏
  20. LINUX命令大全详解备忘录

热门文章

  1. 利用binlog进行数据库的还原
  2. redis和memcache的区别
  3. 带着问题学 Kubernetes 架构!
  4. Istio,灰度发布从未如此轻松!!!
  5. Istio分层架构?80%的人有误解
  6. 程序员,你是选择25k的996还是18k的八小时工作日
  7. Python ImportError: No module named 'requests'解决方法
  8. 每个程序员都应该了解的内存知识
  9. Python 实现杨辉三角
  10. Python 海龟画图(turtle)常用的颜色单词