區塊鏈技術指南 - 繁中
  • 前言
  • 修訂記錄
  • 如何貢獻
  • 區塊鏈的誕生
    • 記賬科技的千年演化
    • 分佈式記賬與區塊鏈
    • 站在前人肩膀上的比特幣
    • 區塊鏈的商業價值
    • 本章小結
  • 核心技術概覽
    • 定義與原理
    • 技術的演化與分類
    • 關鍵問題和挑戰
    • 趨勢與展望
    • 認識上的誤區
    • 本章小結
  • 典型應用場景
    • 應用場景概覽
    • 金融服務
    • 徵信和權屬管理
    • 資源共享
    • 貿易管理
    • 物聯網
    • 其它場景
    • 本章小結
  • 分佈式系統核心技術
    • 一致性問題
    • 共識算法
    • FLP 不可能原理
    • CAP 原理
    • ACID 原則與多階段提交
    • Paxos 算法與 Raft 算法
    • 拜占庭問題與算法
    • 可靠性指標
    • 本章小結
  • 密碼學與安全技術
    • 密碼學簡史
    • Hash 算法與數字摘要
    • 加解密算法
    • 消息認證碼與數字簽名
    • 數字證書
    • PKI 體系
    • Merkle 樹結構
    • Bloom Filter 結構
    • 同態加密
    • 其它問題
    • 本章小結
  • 比特幣 —— 區塊鏈思想誕生的搖籃
    • 比特幣項目簡介
    • 實體貨幣到加密數字貨幣
    • 基本原理和設計
    • 挖礦過程
    • 共識機制
    • 閃電網絡
    • 側鏈
    • 熱點問題
    • 相關工具
    • 本章小結
  • 以太坊 —— 掙脫加密貨幣的枷鎖
    • 以太坊項目簡介
    • 核心概念
    • 主要設計
    • 相關工具
    • 安裝客戶端
    • 使用智能合約
    • 智能合約案例:投票
    • 本章小結
  • 超級賬本 —— 面向企業的分佈式賬本
    • 超級賬本項目簡介
    • 社區組織結構
    • 頂級項目介紹
    • 開發必備工具
    • 貢獻代碼
    • 本章小結
  • Fabric 部署與管理
    • 簡介
    • 使用 Fabric 1.0 版本
    • 使用 Fabric SDK Node
    • Fabric v0.6
      • 安裝部署
      • 使用 chaincode
      • 權限管理
      • Python 客戶端
    • 小結
  • 區塊鏈應用開發
    • 簡介
    • 鏈上代碼工作原理
    • 示例一:信息公證
    • 示例二:交易資產
    • 示例三:數字貨幣發行與管理
    • 示例四:學歷認證
    • 示例五:社區能源共享
    • 小結
  • Fabric 架構與設計
    • 簡介
    • 架構設計
    • 消息協議
    • 小結
  • 區塊鏈服務平臺設計
    • 簡介
    • IBM Bluemix 雲區塊鏈服務
    • 微軟 Azure 雲區塊鏈服務
    • 使用超級賬本 Cello 搭建區塊鏈服務
    • 本章小結
  • 性能與評測
    • 簡介
    • Hyperledger Fabric v0.6
    • 小結
  • 附錄
    • 術語
    • 常見問題
    • Golang 開發相關
      • 安裝與配置 Golang 環境
      • 編輯器與 IDE
      • 高效開發工具
    • ProtoBuf 與 gRPC
    • 參考資源鏈接
Powered by GitBook
On this page
  • 功能描述
  • 數據結構設計
  • function及各自實現的功能
  • 接口設計
  • 測試

Was this helpful?

  1. 區塊鏈應用開發

示例四:學歷認證

Previous示例三:數字貨幣發行與管理Next示例五:社區能源共享

Last updated 6 years ago

Was this helpful?

功能描述

該 實現了一個簡單的徵信管理的案例。針對於學歷認證領域,由於條約公開,在條約外無法隨意篡改的特性,天然具備穩定性和中立性。

該智能合約中三種角色如下:

  • 學校

  • 個人

  • 需要學歷認證的機構或公司

學校可以根據相關信息在區塊鏈上為某位個人授予學歷,相關機構可以查詢某人的學歷信息,由於使用私鑰簽名,確保了信息的真實有效。 為了簡單,儘量簡化相關的業務,另未完成學業的學生因違紀或外出創業退學,學校可以修改其相應的學歷信息。

賬戶私鑰應該由安裝在本地的客戶端生成,本例中為了簡便,使用模擬私鑰和公鑰。

數據結構設計

  • 學校

    • 名稱

    • 所在位置

    • 賬號地址

    • 賬號公鑰

    • 賬戶私鑰

    • 學校學生

  • 個人

    • 姓名

    • 賬號地址

    • 過往學歷

  • 學歷信息

    • 學歷信息編號

    • 就讀學校

    • 就讀年份

    • 完成就讀年份

    • 就讀狀態 // 0:畢業 1:退學

  • 修改記錄(入學也相當於一種修改記錄)

    • 編號

    • 學校賬戶地址(一般根據賬戶地址可以算出公鑰地址,然後可以進行校驗)

    • 學校簽名

    • 個人賬戶地址

    • 個人公鑰地址(個人不需要公鑰地址)

    • 修改時間

    • 修改操作// 0:正常畢業 1:退學 2:入學

對學歷操作信息所有的操作都歸為記錄。

function及各自實現的功能

  • init 初始化函數

  • invoke 調用合約內部的函數

  • updateDiploma 由學校更新學生學歷信息,並簽名(返回記錄信息)

  • enrollStudent 學校招生(返回學校信息)

  • createSchool 添加一名新學校

  • createStudent 添加一名新學生

  • getStudentByAddress 通過學生的賬號地址訪問學生的學歷信息

  • getRecordById 通過Id獲取記錄

  • getRecords 獲取全部記錄(如果記錄數大於 10,返回前 10 個)

  • getSchoolByAddress 通過學校賬號地址獲取學校的信息

  • getBackgroundById 通過學歷 Id 獲取所存儲的學歷信息

  • writeRecord 寫入記錄

  • writeSchool 寫入新創建的學校

  • writeStudent 寫入新創建的學生

接口設計

createSchool

request參數:

args[0] 學校名稱
args[1] 學校所在位置

response參數:

學校信息的字節數組,當創建一所新學校時,該學校學生賬戶地址列表為空

createStudent

request參數:

args[0] 學生的姓名

response參數:

學生信息的字節數組表示,剛創建過往學歷信息列表為空

updateDiploma

request參數

args[0] 學校賬戶地址
args[1] 學校簽名
args[2] 待修改學生的賬戶地址
args[3] //對該學生的學歷進行怎樣的修改,0:正常畢業  1:退學

response參數

返回修改記錄的字節數組表示

enrollStudent

request參數:

args[0] 學校賬戶地址
args[1] 學校簽名
args[2] 學生賬戶地址

response參數

返回修改記錄的字節數組表示

getStudentByAddress

request參數

args[0] address

response參數

學生信息的字節數組表示

getRecordById

request參數

args[0] 修改記錄的ID

response參數

修改記錄的字節數組表示

getRecords

response參數

獲取修改記錄數組(如果個數大於10,返回前10個)

getSchoolByAddress

request參數

args[0] address

response參數

學校信息的字節數組表示

getBackgroundById

request參數

args[0] ID

response參數

學歷信息的字節數組表示

測試

智能合約