一步步教你在以太坊发行自己的数字货币
一步步教你在以太坊發行自己的數字貨幣
置頂 2018年03月21日 15:31:04 閱讀數:1239什么是代幣
如果不那么追求精確的定義,代幣就是數字貨幣,比特幣、以太幣就是一個代幣。
利用以太坊的智能合約可以輕松編寫出屬于自己的代幣,代幣可以代表任何可以交易的東西,如:積分、財產、證書等等。
因此不管是出于商業,還是學習很多人想創建一個自己的代幣,先貼一個圖看看創建的代幣是什么樣子。
ERC20 Token
也許你經常看到ERC20和代幣一同出現, ERC20是以太坊定義的一個代幣標準。
要求我們在實現代幣的時候必須要遵守的協議,如指定代幣名稱、總量、實現代幣交易函數等,只有支持了協議才能被以太坊錢包支持。
其接口如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
簡單說明一下:
name : 代幣名稱 symbol: 代幣符號 decimals: 代幣小數點位數,代幣的最小單位, 18表示我們可以擁有 .0000000000000000001單位個代幣。 totalSupply() : 發行代幣總量。 balanceOf(): 查看對應賬號的代幣余額。 transfer(): 實現代幣交易,用于給用戶發送代幣(從我們的賬戶里)。 transferFrom(): 實現代幣用戶之間的交易。 allowance(): 控制代幣的交易,如可交易賬號及資產。 approve(): 允許用戶可花費的代幣數。- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
編寫代幣合約代碼
代幣合約代碼:
pragma solidity ^0.4.16;interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }contract TokenERC20 {string public name;string public symbol;uint8 public decimals = 18; // 18 是建議的默認值uint256 public totalSupply;mapping (address => uint256) public balanceOf; // mapping (address => mapping (address => uint256)) public allowance;event Transfer(address indexed from, address indexed to, uint256 value);event Burn(address indexed from, uint256 value);function TokenERC20(uint256 initialSupply, string tokenName, string tokenSymbol) public {totalSupply = initialSupply * 10 ** uint256(decimals);balanceOf[msg.sender] = totalSupply;name = tokenName;symbol = tokenSymbol;}function _transfer(address _from, address _to, uint _value) internal {require(_to != 0x0);require(balanceOf[_from] >= _value);require(balanceOf[_to] + _value > balanceOf[_to]);uint previousBalances = balanceOf[_from] + balanceOf[_to];balanceOf[_from] -= _value;balanceOf[_to] += _value;Transfer(_from, _to, _value);assert(balanceOf[_from] + balanceOf[_to] == previousBalances);}function transfer(address _to, uint256 _value) public {_transfer(msg.sender, _to, _value);}function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {require(_value <= allowance[_from][msg.sender]); // Check allowanceallowance[_from][msg.sender] -= _value;_transfer(_from, _to, _value);return true;}function approve(address _spender, uint256 _value) publicreturns (bool success) {allowance[msg.sender][_spender] = _value;return true;}function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {tokenRecipient spender = tokenRecipient(_spender);if (approve(_spender, _value)) {spender.receiveApproval(msg.sender, _value, this, _extraData);return true;}}function burn(uint256 _value) public returns (bool success) {require(balanceOf[msg.sender] >= _value);balanceOf[msg.sender] -= _value;totalSupply -= _value;Burn(msg.sender, _value);return true;}function burnFrom(address _from, uint256 _value) public returns (bool success) {require(balanceOf[_from] >= _value);require(_value <= allowance[_from][msg.sender]);balanceOf[_from] -= _value;allowance[_from][msg.sender] -= _value;totalSupply -= _value;Burn(_from, _value);return true;} }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
部署
在開發測試智能合約時,MetaMask和Remix Solidity IDE是兩個非常好用的工具,今天就用他們來完成部署。
安裝和配置MetaMask請參考開發、部署第一個去中心化應用,不同的上本文選擇了以太坊的測試網絡Ropsten,如果你沒有余額請點擊購買buy,進入的網站可以送一些測試以太幣給你,配置好之后,界面應該如下:
瀏覽器打開Remix Solidity IDE,復制以上源碼粘貼上,在右側選項參考如圖的設置:
注意Environment和Account和MetaMask保持一致,然后選擇合約TokenERC20,填入你想要的發行量,名稱及代號,就可以創建合約了。
這時MetaMask會彈出一個交易確認框,點SUBMIT。待合約部署交易確認之后,點擊交易詳情如下圖,復制合約地址(下圖中紅色框內)。
打開Metamask界面,切換到TOKENS,點添加合約,出現如下對話框:
填入剛剛復制的地址,點ADD,這時你就可以看到你創建的代幣了,如圖:
你已經完成了代幣的創建和部署(正式網絡和測試網絡部署方法一樣),可以在Etherscan查詢到我們剛剛部署的代幣,如文章開頭的圖片,代幣發行量為10000,單位為SB。
代幣交易
由于MetaMask插件沒有提供代幣交易功能,同時考慮到很多人并沒有以太坊錢包或是被以太坊錢包網絡同步問題折磨,今天我用網頁錢包來講解代幣交易。
進入網頁錢包地址, 第一次進入有一些安全提示需要用戶確認。
進入之后,按照下圖進行設置:
添加代幣
點擊右下Add Custom Token
進行代幣轉賬交易
代幣的發行和交易就是這么簡單,在正式的以太坊網絡上發行的方式一樣,然后就可以去ICO啦!
參考文章:
ERC20代幣標準
Create your own crypto-currency with ethereum
總結
以上是生活随笔為你收集整理的一步步教你在以太坊发行自己的数字货币的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区块链去中心化的生命之源:“DPOS(委
- 下一篇: 在细分场景的时代,如何反欺诈和防止内外勾