使用Mapping实现的以太坊智能合约的代码
- 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实现的以太坊智能合约的代码相关推荐
- 以太坊智能合约Demo
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...
- 使用Remix编译和部署以太坊智能合约
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的 ...
- 用Visual Studio开发以太坊智能合约
2019独角兽企业重金招聘Python工程师标准>>> 区块链和以太坊 自从我熟悉区块链.以太坊和智能合约以来,一直失眠. 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议 ...
- 教程 | 以太坊智能合约编程之菜鸟教程
教程 | 以太坊智能合约编程之菜鸟教程 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下 ...
- 以太坊智能合约安全入门了解一下(下)
作者:RickGray 作者博客:http://rickgray.me/2018/05/26/ethereum-smart-contracts-vulnerabilities-review-part2 ...
- 以太坊智能合约安全入门了解一下(上)
作者:RickGray 作者博客:http://rickgray.me/2018/05/17/ethereum-smart-contracts-vulnerabilites-review/ (注:本文 ...
- 浅谈以太坊智能合约的设计模式与升级方法
浅谈以太坊智能合约的设计模式与升级方法 1. 最佳实践 2. 实用设计案例 2.1 控制器合约与数据合约: 1->1 2.2 控制器合约与数据合约: 1->N 2.3 控制器合约与数据合约 ...
- 以太坊智能合约编程之带菜鸟入门教程
手把手带你走上智能合约编程之路 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角New ...
- Python开发以太坊智能合约指南(web3.py)
在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...
最新文章
- 在客户端(IE中)无法登录Citrix MetaFrame server的原因
- 如何开始使用PostgreSQL
- Sharepoint摸索之路
- unity android 符号表,记录腾讯bugly关于符号表的配置
- c语言中通过分隔符取字符串,C语言切割多层字符串(strtok_r strtok使用方法)
- 对Docker镜像layer的理解
- 《Qt Quick 4小时入门》学习笔记4
- webpack中,css中打包背景图,路径报错
- React Ant Design UI 图片上传组件 代码片段
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程) 分类:Androidandroid实例...
- python urllib.parse_Python3的urllib.parse常用函数小结
- 【优化预测】基于matlab布谷鸟算法优化灰色模型预测【含Matlab源码 1244期】
- c语言程序不知道头结点输出链表,C语言,不带头结点的链表,利用头插法存入信息,然后输出,没有error,却运行不了,求大神指点...
- 十大热门编程语言的介绍
- JQuery22( JQ原理 Clone)
- 关于win11系统下查看无线网络密码的方式
- Android规范写法
- 使用java制作一个个税计算器
- 圆锥曲线万能弦长公式_圆锥曲线的弦长公式及其推导过程
- 解读|TARS开源项目发布Go语言版本 1