Steven5538

Write Your Own Ethereum Smart Contract for ICO

Word count: 990Reading time: 3 min
2017/12/24 Share

大概是從今年初開始,Blockchain 開始變成顯學。
為什麼?不外乎就是價格開始水漲船高加上新聞不斷大肆報導,大概已經到了連賣菜的都可以跟你談比特幣。

在漸漸變成顯學之際,智能合約也開始興起。
智能合約的概念其實在 Bitcoin 裡面就已經存在,但由於不夠平易近人,在當時並非一個明顯的特色。

Etheruem 出來後,其簡單的智能合約撰寫方式讓大家開始認識到 cryptocurrency 也可以這樣玩。簡單來說就是將程式的操作流程放在區塊鏈上,任何人都可以驗證這段程式碼,透過區塊鏈讓這段程式碼永垂不朽,你無需運行任何 server,區塊鏈本身會幫你做到程式的邏輯。也由於 Etheruem 的 smart contract 本身具備圖靈完備性,你幾乎可以在區塊鏈上完成所有事情。

經過漫長歲月的磨練後,想賺錢的人們透過智能合約變形出了一個新東西 - ICO (Initial Coin Offering)。
其概念跟 IPO (Initial Public Offering) 是一樣的,你用你的貨幣 (ETH) 交換該公司的股票 (Token),若股票 (Token) 上市後,其價值可能會比你當初投入的還多,亦或是沒有上市成為壁紙。
也因為一開始幾個顯眼的 ICO ROI 高的嚇人,致使之後的 ICO 百花綻放。

不過這麼多 ICO,如何判斷是否會上交易所等並不在這篇的內容中。我想告訴大家的是,ICO 本身非常若根據 Ethereum,是非常簡單的一件事情,可說是只要有一點程式底子就可以完成。

事前準備

  • Ethereum test network,請同步一下 ethereum test network 的帳本,然後用 CPU 挖一點 ETH 就好,這樣比較方便測試。
  • metamask,也是幫助開發。
  • 網頁版的 solidity IDE - https://remix.ethereum.org/
  • JS 基礎

撰寫

其實在撰寫上強烈建議參考 zeppelin-solidity,一個不安全的 smart contract 將會導致非常多的資安問題,如果連官方推薦的 parity 都會犯錯,我想我們如果沒有要開發非常複雜的程式邏輯,還是參考別人的就行了。

下面用 Example 介紹一怎麼寫一個自己的 Token:

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
pragma solidity ^0.4.18;


import "../token/StandardToken.sol";


/**
* @title SimpleToken
* @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.
* Note they can later distribute these tokens as they wish using `transfer` and other
* `StandardToken` functions.
*/
contract SimpleToken is StandardToken {

string public constant name = "SimpleToken";
string public constant symbol = "SIM";
uint8 public constant decimals = 18;

uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));

/**
* @dev Constructor that gives msg.sender all of existing tokens.
*/
function SimpleToken() public {
totalSupply = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
}

}

可以看到 name 代表你的 Token Name,symbol 代表你的 Token 簡碼 decimals 則是你希望你的 Token 支援的浮點數精度,INITIAL_SUPPLY 則是你總共要發行多少 Token。

短短幾行程式碼在 push 上 ethereum blockchain 後,你就可以看到一個基本的 Token 產生了。

但這樣的 Token 是沒辦法發行的,你如果想要上架交易所,會規定至少要是 ERC20 規範

程式碼較長且複雜,我就留下範例連結了。

如果你成功的產生了屬於你的 ERC20 Token,接下來就是產生 Crowdsale Contract

接著,就是將 Token 從你的帳號發到 Crowdsale 上,就可以準備開始你的 ICO 了。

後記

你會發現,ETH ICO 的流程是非常簡單的,且目前無法可管,所以在挑選要投資的項目時,請務必仔細的查驗欲投資的項目。你可以在 etherscan 查看項目的 contract code 是否與其想要做的功能相符,或者對方宣稱的功能並非 Ethereum 能夠做到的卻發行 ERC20 Token,甚至連 contract code 都不願意提供的項目,那在投資時請再三考慮。

CATALOG
  1. 1. 事前準備
  2. 2. 撰寫
  3. 3. 後記