區(qū)塊鏈原理與技術
訪問【W(wǎng)RITE-BUG數(shù)字空間】_[內附完整源碼和文檔]
一、項目背景
1.1 供應鏈+金融場景
供應鏈(Supply Chain)是指生產及流通過程中,涉及將產品或服務提供給最終用戶活動的上游與下游企業(yè)所形成的網(wǎng)鏈結構。
金融機構對不同企業(yè)的的信用評級不同,核心企業(yè)有很大的風險承擔的能力,故信用評級會高于一般企業(yè)。在供應鏈場景中,核心企業(yè)由于資金暫時短缺向下流普通公司簽訂了應收賬款單據(jù),約定某個時間后還款,這個過程可以由金融機構來作見證,從而確認這筆交易的真實性。在這段時間內,若掌握核心企業(yè)"欠條"的普通企業(yè)資金短缺需要融資,它可以憑借跟核心企業(yè)簽訂的應收賬款單據(jù)向金融結構借款,但這樣的信任關系并不會往下游傳遞。
這種不信任關系一直沿著下游的普通企業(yè)傳播,需要金融機構不斷往上驗證真實性,導致這個過程增加很多經(jīng)濟成本。導致這個問題的根本原因是核心企業(yè)的信用無法在整個供應鏈中傳遞以及交易信息不透明化所導致的。 ?
如果我們結合區(qū)塊鏈技術,將供應鏈上的每一筆交易和應收賬款單據(jù)上鏈,同時引入第三方可信機構來確認這些信息的交易,例如銀行,物流公司等,確保交易和單據(jù)的真實性,同時支持應收賬款的轉讓,融資,清算等,就可以讓核心企業(yè)的信用可以傳遞到供應鏈的下游企業(yè),減小中小企業(yè)的融資難度。 ?
本項目針對這樣一個應用場景,基于已有的開源區(qū)塊鏈系統(tǒng)FISCO-BCOS,以聯(lián)盟鏈為主,開發(fā)基于區(qū)塊鏈或區(qū)塊鏈智能合約的供應鏈金融平臺, 實現(xiàn)供應鏈應收賬款資產的溯源、流轉。
1.2 功能需求分析
基本功能:
核心企業(yè)、普通企業(yè)、金融企業(yè)的注冊。
通過賬戶查詢余額、查詢收款單據(jù)和欠款單據(jù)和查看歷史交易記錄。
核心功能:
實現(xiàn)采購商品—簽發(fā)應收賬款交易上鏈。例如車企從輪胎公司購買一批輪胎并簽訂應收賬款單據(jù)。
實現(xiàn)應收賬款的轉讓上鏈,輪胎公司從輪轂公司購買一筆輪轂,便將于車企的應收賬款單據(jù)部分轉讓給輪轂公司。輪轂公司可以利用這個新的單據(jù)去融資或者要求車企到期時歸還錢款。
利用應收賬款向銀行融資上鏈,供應鏈上所有可以利用應收賬款單據(jù)向銀行申請融資。
應收賬款支付結算上鏈,應收賬款單據(jù)到期時核心企業(yè)向下游企業(yè)支付相應的欠款。
二、方案設計
2.1 存儲設計
企業(yè)賬戶的數(shù)據(jù)結構
struct Company{ ? ?string companyName; // 企業(yè)名稱 ? ?int balance; ? ? ? ? // 賬戶余額 ? ?int companyType; ? ?// 企業(yè)類型 ? ?bool isRegistered; // 驗證企業(yè)是否存在}
企業(yè)類型由一個整形表示:分別對應金融機構、核心企業(yè)和下游普通企業(yè)。
在智能合約中,我們以企業(yè)賬戶的地址作為鍵值,用一個哈希表保存企業(yè),這樣就可以直接通過地址訪問企業(yè)的數(shù)據(jù)。
mapping(address => Company) private companyMap;
債權憑證的數(shù)據(jù)結構
struct Receipt { ? ?address from; ? ? ? // 發(fā)起方地址 ? ?address to; ? ? ? ? // 接收方地址 ? ?int amount; ? ? ? ? // 債權憑證金額 ? ?bool isSettled; ? ? // 賬單狀態(tài): 已結算 / 待結算 }
我們使用一個列表來保存所有的債權憑證
Receipt[] private receiptList;



