使用Mapping实现的以太坊智能合约的代码
生活随笔
收集整理的這篇文章主要介紹了
使用Mapping实现的以太坊智能合约的代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- Step 1: 創建一個基礎合約
這里我們定義了一個address 作為key, uint做為value的hashTable balances; 我們還定義了一個address的變量minter;
- Step 2: 添加一個構造函數Coin()
這里的代碼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实现的以太坊智能合约的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一,二,十六
- 下一篇: 桐花万里python路-高级篇-并发编程