• 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. 在客户端(IE中)无法登录Citrix MetaFrame server的原因
  2. 如何开始使用PostgreSQL
  3. Sharepoint摸索之路
  4. unity android 符号表,记录腾讯bugly关于符号表的配置
  5. c语言中通过分隔符取字符串,C语言切割多层字符串(strtok_r strtok使用方法)
  6. 对Docker镜像layer的理解
  7. 《Qt Quick 4小时入门》学习笔记4
  8. webpack中,css中打包背景图,路径报错
  9. React Ant Design UI 图片上传组件 代码片段
  10. Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程) 分类:Androidandroid实例...
  11. python urllib.parse_Python3的urllib.parse常用函数小结
  12. 【优化预测】基于matlab布谷鸟算法优化灰色模型预测【含Matlab源码 1244期】
  13. c语言程序不知道头结点输出链表,C语言,不带头结点的链表,利用头插法存入信息,然后输出,没有error,却运行不了,求大神指点...
  14. 十大热门编程语言的介绍
  15. JQuery22( JQ原理 Clone)
  16. 关于win11系统下查看无线网络密码的方式
  17. Android规范写法
  18. 使用java制作一个个税计算器
  19. 圆锥曲线万能弦长公式_圆锥曲线的弦长公式及其推导过程
  20. 解读|TARS开源项目发布Go语言版本 1

热门文章

  1. Verilog HDL程序设计——基本要素
  2. centos6.9配置安装python2.7及pip
  3. 数据库里账号的密码,这样存放最安全!
  4. 微服务网关 Kong 科普
  5. 何谓 SQL 注入,这个漫画告诉你!
  6. [Python]网络爬虫(三):异常的处理和HTTP状态码的分类
  7. 【Python】青少年蓝桥杯_每日一题_8.27_因数个数
  8. mysql end log pos_MySql binlog日志详解
  9. 2020年中国医疗数据中心市场规模及发展趋势预测分析
  10. 浅谈机房内的汇流铜排