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