3.18 去中心化圖書館

尹成發表於2018-11-08
  1. 概述:以太坊線上圖書館,所有的圖書借閱資訊全部儲存在以太坊區塊鏈上
  2. 專案架構 
  3. 後端邏輯 
    1. 初始化web3
    2. 初始化合約
    3. 監聽 
      1. 獲取所有賬號
      2. 獲取所有書本
      3. 按鈕事件
      4. 監聽 
        1. 借出事件
        2. 歸還事件
    4. 獲取圖書
    5. 初始化圖書狀態
    6. 列出所有賬號
    7. 切換賬號
    8. 新增記錄
    9. 圖書按鈕點選事件
    10. 新增借閱記錄
    11. 獲取當前時間
  4. 實現
    pragma solidity ^0.4.18;
    contract Library {
        mapping(uint => address) bookStatus; //書籍狀態 查詢指定書籍是否已經被借出,如果沒有借出 則地址為0x0,否則應該是借閱人的地址
        struct Record{
            address user; // 借閱人
            uint timestamp; // 借閱時間
            uint rtype; // 型別 1-借出,2-歸還
        }
        mapping(uint=>Record[]) record; // 指定書籍的借閱記錄
        event BorrowEvent(address indexed _from, uint _id, uint _cost); //借出事件
        event Reback(address indexed _from , uint _id); //歸還
        // 借書
        function borrow(uint _id) payable returns(bool){
            ...
            return true;
        }
        // 歸還
        function reback(uint _id) returns(bool) {
            ...;
            return true;
        }
        // 查詢指定圖書狀態
        function getBookStatus(uint _id) returns (int) {
            int status = 0;
            ...       
            return status;
        }
        // 查詢指定書籍的借閱人
        function getBookBorrower(uint _id) constant returns(address) {
            return bookStatus[_id];
        }
    }

 

 

相關文章