iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0
Blockchain

區塊鏈應用開發實戰系列 第 20

20. 去中心化交易所設計

  • 分享至 

  • xImage
  •  

在研究了交易所的功能需求後,小明今天便開始進行智能合約的設計。因為是以 POC (Proof Of Concept)為目的,故只要完成重要功能的 MVP(Minimum Viable Product)即可。

User 用戶功能

  • 存入 ETH 以太幣
    depositEther() payable {...}
    將用戶錢包中的 ETH 以太幣存入交易所

  • 存入 ERC20 代幣
    depositToken(string symbolName, uint amount) {...}
    將用戶錢包中的 ERC20 代幣存入交易所

  • 提領 ETH 以太幣
    withdrawEther(uint amount_in_wei) {...}
    將用戶在交易所的 ETH 以太幣領出到用戶錢包

  • 提領 ERC20 代幣
    withdrawToken(string symbolName, uint amount) {...}
    將用戶在交易所的 ERC20 代幣領出到用戶錢包

  • 檢視 ETH 以太幣餘額
    getEthBalanceInWei() constant returns (uint) {...}
    取得用戶 ETH 以太幣的餘額

  • 檢視 ERC20 代幣餘額
    getBalance(string symbolName) constant returns (uint) {...}
    取得用戶 ERC20 代幣的餘額

  • 下單買入 ERC20 代幣
    buyToken(string token, uint priceInWei, uint amount) {...}

  • 下單售出 ERC20 代幣
    sellToken(string token, uint priceInWei, uint amount) {...}

  • 取消下單
    cancelOrder(string symbolName, bool isSellOrder, uint priceInWei, uint offerKey) {...}

  • 檢視買單交易帳簿
    getBuyOrderBook(string token) constant returns (uint[], uint[]) {...}

  • 檢視賣單交易帳簿
    getSellOrderBook(string token) constant returns (uint[], uint[]) {...}

Admin 管理功能

  • 新增代幣
    addToken(string symbol_name, address erc20TokenAddress) onlyowner {...}
    新增 ERC20 代幣至交易所智能合約中

  • 檢查代幣
    hasToken(string symbol_name) constant returns (bool) {...}
    檢查某代幣是否已新增至交易所

又到了週末,好好休息吧!

本文同時發佈於作者部落格:https://www.bdetw.com/blog


/images/emoticon/emoticon34.gif想找區塊鏈人才或想學習區塊鏈知識的夥伴。歡迎參加社群小聚,一起來輕鬆交流、互相學習成長、認識新朋友、發現新機會!
 
台北區塊鏈社群
https://bitlly.co/Q4dIK
 
BDE 區塊鏈學院 - 提供專業的區塊鏈培訓與顧問服務。
https://bitlly.co/mbDwX


上一篇
19. 交易所基本功能需求
下一篇
21. 去中心化交易所資料結構
系列文
區塊鏈應用開發實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言