iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
0
Blockchain

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

21. 去中心化交易所資料結構

  • 分享至 

  • xImage
  •  

在根據交易所需求設計了基本的功能介面後,小明今天進一步思考在智能合約中,如何儲存功能中所需要的資料。

  • 首先智能合約中需要儲存,每個用戶透過存入或買賣,所擁有的以太幣或其他代幣之餘額:
    //儲存每個用戶錢包地址所對應的以太幣餘額
    mapping (address => uint) balanceEthForAddress;
    
    //儲存每個用戶錢包地址所對應的其他代幣餘額
    mapping (address => mapping (uint8 => uint)) tokenBalanceForAddress;
  • 同時因為需求可以新增多個其他代幣,所以需要對每個代幣進行流水號編碼:
    //可支援256種代幣
    mapping (uint8 => Token) tokens;
  • 而每個代幣都需要儲存該代幣的合約地址,以便呼叫該代幣合約,且儲存該代幣的名稱。更重要的是每個代幣都需要儲存各個價位買賣單的交易帳簿,同時包含現在價格/最高價格/最低價格/買賣總額等:
    struct Token {
        
        address tokenContract;
        string symbolName;
        
        mapping (uint => OrderBook) buyBook;
        uint curBuyPrice;
        uint lowestBuyPrice;
        uint amountBuyPrices;

        mapping (uint => OrderBook) sellBook;
        uint curSellPrice;
        uint highestSellPrice;
        uint amountSellPrices;

    }
  • 最後便是儲存交易帳簿的每筆買賣掛單,包括出價金額及出價者錢包地址:
    struct OrderBook {
        
        uint higherPrice;
        uint lowerPrice;
        
        mapping (uint => Offer) offers;
        
    }

    struct Offer {        
        address who;
        uint amount;
    }

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


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


上一篇
20. 去中心化交易所設計
下一篇
22. 去中心化交易所事件機制
系列文
區塊鏈應用開發實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言