主頁 > 區塊鏈 > Hyperledger fabric 基礎知識總結

Hyperledger fabric 基礎知識總結

2021-09-09 13:15:25 區塊鏈

hyperledger fabric專案概述

Hyperledger,中文名為超級賬本,是Linux基金會于2015年發起的推進區塊鏈數字技術和交易驗證的開源專案,Hyperledger的目標是讓成員共同合作、共建開放平臺以滿足來自多個不同行業各種用戶的需求,同時能大大簡化業務流程,

隨著hyperledger專案的不斷擴大,單一的專案無法滿足業務的需求,因此hyperledger逐步由一個單一的專案發展成一個專案組,而hyperledger fabric就是其中一個專案,hyperledger專案組主要的專案如下:
在這里插入圖片描述

fabric的特點

  • 相對于公有鏈,fabric更適合于企業級業務,
  • 高度模塊化和可配置的結構,可為各行各業的業務提供創新性、多樣性和優化,
  • 支持通用編程語言撰寫智能合約,
  • 參與者的身份不能是匿名或者不可信任的
  • 可拔插共識協議,使得平臺能夠更有效地進行定制,以適應特定的業務場景和信任模型
  • 不需要原生加密貨幣的共識協議來激勵挖礦或者推動智能合約的執行,降低了系統的風險,并且可以與其他分布式系統大致相同的運營成本部署平臺

fabric的關鍵組件

節點(Peer)

節點是區塊鏈交易處理和賬本維護的主體,主要負責參與共識程序和通過執行鏈碼實作對賬本的讀寫操作,Peer根據功能的不同可以分為背書節點(Endorser Peer)、提交節點(Committer Peer)、根據通信不同分為錨節點(Anchor Peer)、主節點(Leader Peer),

  • 背書節點:背書節點負責根據事先設定策略對交易進行簽名背書,在鏈碼實體化的時候設定背書策略,指定哪些節點用于背書,當客戶端向節點發起交易背書時,該節點才有背書功能,否則只是普通的記賬節點,
  • 提交節點:該節點負責維護狀態資料和賬本的副本,
  • 錨節點:錨節點是隨通道存在的,是能被其他通道發現的節點,每個通道上有一個或多個錨節點,
  • 主節點:主節點負責與Orderer通信,把共識后的區塊傳輸到其他節點,

排序服務(Orderer)

排序服務為區塊鏈網路中不同通道產生的交易進行排序,并廣播給節點,排序服務獨立于節點流程之外,并以先到先處理的方式為網路上所有通道做交易排序,排序服務是以可插拔組件的方式實作的,目前默認實作了solo、Kafka和Raft,排序服務與整個網路相系結,包含與每個成員相關的加密材料,

排序服務又可以稱為共識,是計算機科學深入研究的一個領域,有許多方法可以實作它,每種方法都有不同的權衡,例如PBFT(實用拜占庭容錯)可以為檔案副本提供一種相互通信的機制,使其能夠保持各個副本的一致性,即使在發生損壞的情況下也是如此,又如在位元幣中,通過作業量證明(POW)進行排序,在這個程序中,相互競爭的計算機競相解決一個密碼難題,這個謎題定義了所有程序隨后建立的順序,

客戶端(Client)

客戶端是與fabric網路組件發送請求進行交行的介面,包括:

  • Fabric-CA客戶端:負責節點注冊登記,包括登記注冊用戶資訊、獲取注冊證書與私鑰資訊等,
    • CA節點:CA(Certificate Authority)節點類似于證書機構,提供用戶身份注冊服務,基于數字證書與標準的PKI服務管理fabric網路中的成員身份資訊,管理證書生命周期如創建、撤銷、認證等操作,以及身份鑒別與權限控制功能,包括Ecerts(身份證書)、Tcerts(交易證書)等,
  • Fabric客戶端:負責網路配置與節點管理,包括初始化與更新配置、啟動和停止節點等,同時,還負責通道管理(創建、更新、查詢等)與鏈碼生命周期管理(安裝、實體化、呼叫、升級等),能通過Peer節點服務客戶端發送訊息給背書節點與排序服務請求處理,包括交易背書、創建通道、更新通道配置、交易排序、請求區塊資料等,
    • 目前fabric客戶端包括CLI命令列和多種語言的SDK(例如:Node.js、Go、Java、Python等),SDK提供了與其他服務節點進行互動的API介面,包括了配置操作、通道操作、鏈碼操作、節點操作、日志操作等,支持開發豐富的應用程式,

鏈碼(Chaincode)

鏈碼就是fabric的智能合約,其應用了一種新的架構:執行—排序—驗證,解決了順序執行模型面臨的彈性、靈活性、可伸縮性、性能和機密性的問題,并且在交易達成最終一致前執行交易,其執行交易的執行流程分為三個步驟:

  1. 執行一個交易并檢查其正確性,從而給它背書,
  2. 通過共識協議將交易排序
  3. 提交交易到賬本前先根據特定的應用程式的背書策略驗證交易

fabric的智能合約分為系統鏈碼和用戶鏈碼,通常情況下,鏈碼要經過安裝和實體化步驟之后才能正常呼叫,同時必須實作Chaincode型別介面的Init()方法與Invoke()方法,

  • 系統鏈碼在節點啟動或者初始化新鏈結構(節點加入通道、節點啟動恢復等)時完成部署,用于支持配置管理、背書簽名、鏈碼生命周期管理等系統功能,并運行在goroutine中,有一下五類系統鏈碼:
    • CSCC(Configuration System Chaincode):配置系統鏈碼,負責管理系統配置,支持的命令包括JoinChain節點加入應用通道、GetConfigBlock獲取通道配置區塊、UpdateConfigBlock更新通道配置區塊、GetChannels獲取節點加入的通道串列等,
    • ESCC(Endorsement System Chiancode):背書管理系統鏈碼,負責對模擬執行結果背書簽名,并創建提案回應訊息,同時設定管理背書策略,
    • LSCC(Lifecycle System Chaincode):生命周期系統鏈碼,負責管理用戶鏈碼的生命周期,如打包、安裝、實體化、升級、呼叫、查詢等鏈碼操作,
    • QSCC(Query System Chaincode):查詢系統鏈碼,負責查詢賬本和區塊鏈資訊,支持的命令包括:GetChainInfo獲取區塊鏈資訊、GetBlockByNumber獲取指定區塊號的區塊資料、GetBlockByHash獲取指定區塊頭哈希值的區塊資料、GetTransactionByID獲取指定交易ID的交易資料、GetBlockByTxID獲取指定交易TxID的區塊資料等,
    • VSCC(Verification System Chaincode):驗證系統鏈碼,負責對交易資料進行驗證,并檢查簽名背書資訊是否滿足預定的背書策略,
  • 用戶鏈碼是指用戶撰寫的智能合約代碼,通常運行在Docker容器內,支持打包、安裝、實體化、升級、呼叫等鏈碼操作,

通道(Channel)

通道是用于資料隔離和保密的一個私有區塊鏈,通道中的節點共享該通道的賬本,交易方必須通過該通道的授權才能與賬本進行互動,通道是由一個配置區塊來定義的, fabric的通道分為應用通道和系統通道:

  • 應用通道:保存應用程式的配置等,為應用程式處理交易提供隔離機制,在指定通道的組織成員間共享賬本資料,客戶端向Orderer節點發送通道配置交易資訊創建應用通道,并生成該通道的創世塊,同時還可以提交新的通道配置交易資訊以更新通道配置,另外,應用通道賬本上還保存了應用通道的創世塊、配置區塊與普通交易區塊,fabric創建或更新應用通道時,必須制定通道配置交易檔案,
  • 系統通道:保存Orderer配置(共識組件型別、服務地址、出塊規則、通道數量等)、系統通道的創世塊及其更新的配置區塊,基于系統通道配置與應用通道配置交易訊息創建新的應用通道,并將其注冊到Orderer的多通道注冊器Registrar物件上,同時啟動通道共識組件鏈物件,從而能夠正常處理應用通道上的交易訊息請求,

賬本(Ledger)

賬本記錄著業務的當前狀態,就像一個交易日記,它呈現了一組賬本狀態的當前值,同時記錄了促成了賬本狀態的交易歷史,fabric的賬本由世界狀態和區塊鏈兩部分組成,

  • 世界狀態:世界狀態是一個資料庫,它存盤了一組賬本狀態的當前值,通過世界狀態,程式可以直接訪問一個賬本狀態的當前值,不需要遍歷整個交易日志來記錄當前值,默認情況下,賬本狀態是以鍵值對的方式表示的,
  • 區塊鏈:區塊鏈是交易日志,它記錄了促成當前世界狀態的所有改變,交易被收集在附加到區塊鏈的區塊中,能幫助我們理解所有促成當前世界狀態的改變歷史,其中每個區塊結構如下:
    • 區塊頭:區塊頭包含三個欄位,這些欄位在創建一個區塊時被寫入:
      • 區塊編號:編號從0開始,每在區塊鏈上增加一個新的區塊,編號就會加1
      • 當前區塊的哈希值:當前區塊中包含所有交易的哈希值
      • 前一個區塊頭的哈希值:區塊鏈中一個區塊頭的哈希值
    • 區塊資料:這部分包含了一個有序的交易串列,區塊資料是在排序服務創建區塊時被寫入的:
      • 交易頭:記錄了關于交易的一些重要元資料,比如相關鏈碼的名字以及版本
      • 交易簽名:包含了一個由客戶端應用程式創建的加密簽名,該欄位是用來檢查交易細節是否被修改,因為交易簽名的生成需要用到應用程式的私鑰,
      • 交易提案:負責對應用程式提供會給智能合約輸入引數的進行編碼,隨后該智能合約生成提案賬本更新,在智能合約運行時,這個提案提供了一套輸入引數,這些引數同當前的世界狀態一起決定了新的賬本的世界狀態,
      • 交易回應:它是以讀寫集的形式記錄下世界狀態之前和之后的值,交易回應是智能合約的輸出,如果交易驗證成功,那么該交易會被應用到賬本上,從而更新世界狀態,
      • 交易背書:它指的是一組簽名交易回應,這些簽名都來自背書策略規定的相關組織,并且這些組織的數量必須滿足背書策略的要求,
    • 區塊元資料:這個部分包含了區塊被寫入的時間、區塊寫入者的證書、公鑰以及簽名,隨后,區塊的提交者也會為每一筆交易添加一個有效或無效的標記,但由于這一資訊與區塊同時產生,所以它不會被包含在哈希中

賬本具有以下特征:

  • 查詢和使用基于鍵的查找更新賬本、范圍查詢和組合鍵查詢
  • 使用富查詢語言的只讀查詢(需使用CouchDB作為狀態資料庫)
  • 只讀歷史查詢——查詢某一個鍵的賬本歷史記錄
  • 交易由鏈碼中讀取的鍵/值版本和鏈碼中寫入的鍵/值的版本組成
  • 交易包含每個背書節點的簽名,并提交給排序服務
  • 交易排序后進入區塊,并從排序服務廣播到通道的節點上
  • 節點根據背書策略驗證交易并執行這些策略
  • 在添加區塊之前,執行版本控制檢查,以確保所讀取的資產的狀態自鏈碼執行時間以來沒有更改
  • 一旦交易被驗證和提交,就不可更改
  • 通道的賬本包含一個定義的了策略、訪問控制串列和其他相關資訊的區塊配置
  • 通道包含成員服務提供者實體,允許從不同的證書頒發機構派發加密材料

區塊鏈網路

區塊鏈網路是為應用程式提供賬本和智能合約服務的技識訓礎設施,首先,智能合約用于生產交易,這些交易隨后被分發到網路中的每一個節點,并在每個節點的賬本副本上記錄下來并且是不可篡改的,這個應用程式的用戶可能是客戶端應用的最終用戶,或者是一個區塊鏈網路的管理員

在大多數情況下,多個組織作為一個聯盟聚集在一起形成網路,它們的權限由一組策略決定,這些策略在最初配置網路時由聯盟決定,網路的策略也可以進行改變,這取決于聯盟中組織的協議

fabric架構

fabric 邏輯架構

在這里插入圖片描述fabric的架構分為網路層、核心層和介面層,

核心層

  • 成員服務(Membership Services):提供成員服務功能,包括注冊、登記、申請證書等功能,節點只有獲得證書才能加入到區塊鏈網路中,在1.0版本以后,由可拔插的Fabric CA組件進行處理,
  • 區塊鏈服務(BlockChain Services):負責賬本的計算和存盤、節點間的排序服務、背書驗證管理以及賬本存盤方式等功能的實作,是區塊鏈的核心組成部分,為區塊鏈的主體功能提供了底層支撐,
  • 鏈碼服務(Chaincode Services):鏈碼和底層賬本是解耦的,鏈碼的更新不會影響原有的資料,運行與單獨的容器內,安裝和實體化后通過gRPC與同一通道內的節點進行連接,

介面層

介面層給第三方應用提供API進行呼叫,方便開發,可以通過SDK或者CLI方式進行安裝并呼叫鏈碼,同時通過Events監聽區塊鏈網路中發生的事件,

網路層

fabric使用gRPC和Gossip協議進行網路通信,

fabric的網路結構

在這里插入圖片描述N:fabric網路、R:組織、A:應用程式、CA:CA節點、S:智能合約、L:賬本、P:節點、C:通道、O:排序服務

該網路中有R1、R2、R3、R4四個組織,其中R4是為初始網路管理員,R1為后添加的網路管理員,R1和R4有著相同的網路權限,O4為R4組織創建的排序服務,對通道C1和C2的的交易進行排序,R1和R2在通道C1中、R2和R3在通道C2中,這兩個通道內的資料相互隔離、互不可見,L為節點P上的賬本、S為節點P上的智能合約,Ax是對應組織的應用程式,CAx為對應組織的證書認證機構,

fabric 交易流程

在這里插入圖片描述1. 客戶端發送簽名提案訊息到背書節點,請求背書節點進行處理,
Client節點構造簽名提案訊息(SignedProposal型別),通過呼叫背書服務客戶端的ProcessProposal()介面提交該訊息到背書節點,請求模擬執行交易提案并簽名背書,
2. 背書節點模擬執行交易提案并簽名背書,有以下操作:

  • 檢查簽名提案訊息的格式合法性與簽名有效性,包括頭部通道、簽名頭部、簽名域、交易ID、訊息擴展域的ChaincodeId屬性與PayloadVisibility可見性模式等,
  • 檢查提案訊息的創建者是否滿足指定通道上的通道訪問權限,
  • 檢查并啟動鏈碼容器以模擬執行交易提案,并將模擬執行結果暫時保存在交易模擬器中,等待排序共識與交易驗證,而不是直接更新到賬本中,
  • 呼叫ESCC系統鏈碼對該提案訊息的模擬結果讀寫集進行簽名背書,
  1. 背書節點向客戶端回傳提案回應訊息,并分發隱私資料明文,
  2. 處理提案回應訊息,
    • 客戶端節點決議背書節點回復的提案回應訊息,獲取背書結果并檢查提案回應訊息狀態的合法性,以判斷是否收集了足夠多的符合要求的背書簽名資訊,
  3. 發送交易資料給Orderer排序節點請求排序,
    • 當收集到足夠多符合要求的背書簽名之后,客戶端節點基于模擬執行結果、背書簽名等構造合法的簽名交易訊息,通過Broadcast()服務介面將該訊息提交給Orderer排序節點,請求交易排序,
  4. Orderer服務節點對交易進行排序并構造新區塊,
    • Ordere排序節點提供solo型別、kafka型別等共識組件,對符合通道處理要求的合法交易資訊(普通交易資訊、配置交易資訊等)進行排序并達成一致觀點,并對一段時間內接收到一批交易訊息按照打包交易的出塊規則構造新區塊,創建應用通道或更新配置通道,同時提交賬本,
  5. Leader主節點請求Orderer服務節點發送通道賬本區塊
    • Leader主節點通過Deliver()服務介面代表組織從Orderer節點請求通道賬本上所有的區塊資料,并通過Gossip訊息協議分發到組織內的其他Peer節點,
  6. Committer記賬節點驗證交易并提交賬本,
  7. Leader主節點分發資料與狀態同步,
    • Leader主節點基于Gossip訊息協議將區塊資料分發到組織內的其他節點上,同時,節點之間通過反熵演算法等機制主動拉取缺失的資料、節點身份資訊等,以確保組織內所有節點上的賬本資料等資訊保存同步,
  8. Committer記賬節點驗證交易并提交賬本,

結語

本文是對fabric知識的總結,參考網路上的資源,這個github上有許多區塊鏈學習資料,可以參考一下:https://github.com/blockchainGuide/blockchainguide,如果文章有不足之處,歡迎評論提出,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/298719.html

標籤:區塊鏈

上一篇:BTC/ETH 短期內該怎么做?

下一篇:基金的選擇方法及MATLAB實作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more