簡體   English   中英

在區塊鏈上存儲數據

[英]Storing Data on Blockchain

我正在進行POC,我必須存儲一些數據,例如對象的ID,價格,所有者和類似的東西。 是否可以使用智能合約在Blockchain上存儲此類內容。 如果沒有,使用區塊鏈來實現它的方法是什么。 (我做了一些研究,人們在SCM行業中使用區塊鏈。他們必須存儲這些數據)。

請考慮使用 Hyperledger Fabric“ 入門 ”頁面中的教程

基本上,您通過利用鏈代碼實現所請求的邏輯,您將必須實現以下golang接口:

// Chaincode interface must be implemented by all chaincodes. The fabric runs
// the transactions by calling these functions as specified.
type Chaincode interface {
    // Init is called during Instantiate transaction after the chaincode container
    // has been established for the first time, allowing the chaincode to
    // initialize its internal data
    Init(stub ChaincodeStubInterface) pb.Response

    // Invoke is called to update or query the ledger in a proposal transaction.
    // Updated state variables are not committed to the ledger until the
    // transaction is committed.
    Invoke(stub ChaincodeStubInterface) pb.Response
}

例如類似於此的東西:

type myStoreChaincode struct {
}

func (cc *myStoreChaincode) Init(stub ChaincodeStubInterface) pb.Response {
    return shim.Success(nil)
}

func (cc *myStoreChaincode) Invoke(stub ChaincodeStubInterface) pb.Response {
    action, params = stub.GetFunctionAndParameters()
    if action == "storeItem" {
        cc.StoreItem(stub, params)
    }

    // Handle here other cases and possible parameters combinations
    return shim.Success(nil)
}

func (cc *myStoreChaincode) StoreItem(stub ChaincodeStubInterface, params []string) {
      // Store item on ledger, where params[0] is a key and params[1] actual value
      stub.PutState(params[0], params[1])
}

這只是一個簡化版本,而對於更復雜的版本,您可以按照“ 編寫應用程序 ”教程。

是的,您可以在Hyperledger Fabric中實現的Blockchain中存儲有關資產的信息(當前版本為1.0)。 有關資產的信息通過鏈碼更新(基於語言的交易)。 通過使用HyperLedger Composer Playground開始試驗這一點相當容易。 HyperLedger Composer使用HyperLedger Fabric V1作為其操作基礎,簡化了新的區塊鏈應用程序的編寫過程,尤其是原型設計。

Composer使用建模語言來定義網絡的特征(成員類型,資產類型,事件和事務定義核心網絡)。 它具有強大的訪問控制語言,可以精確指定誰可以訪問哪些資產和哪些事務。 它有一個簡化的查詢語言,可以在執行查詢時自動調用ACL(這意味着即使你要求提供你不應該看到的信息,你仍然看不到它),最后,允許你寫下所有的單一語言的代碼 - 目前是Javascript - 包括智能交易的鏈代碼。

是的,如果您使用以太坊智能合約,您可以定義合約並將其與交易存儲在一起。

https://www.ethereum.org/greeter

請注意,如果您不加密合同中存儲的數據,則每個人都可以訪問。

是的,您可以使用合同存儲您想要的內容。 當然,你必須加密你的記錄。 但是,在我看來,這不是問題。

您可以定義合同並將其部署到同行。 您的合同應定義如何存儲交易。 此外,它應該定義如何驗證它們。

您可以通過在合同中使用適當的數據結構來存儲數據,然后進行生成散列的事務,您需要隨時保存以供訪問

是的,可以將數據存儲在智能合約中,您也可以使用松露框架來創建智能合約和UI。 您可以在每次存儲新內容時創建新的智能合約,並存儲您創建的上一份合同的地址。 它也很容易跟蹤。

不要將數據存儲在智能合約中。 這完全是不切實際和昂貴的。 你需要的是IPFS。 IPFS是一種點對點協議,允許不可變和分散的文件共享和數據存儲。 例如,通過IPFS,與區域鏈(如以太坊)相結合,數據通過IPFS存儲,然后相關的哈希可以綁定到智能合約。 擁有哈希的任何人都可以調用該數據。

當然可以在區塊鏈中對這種類型的數據進行編碼。 有關此過程的詳細信息,請考慮在Github上訪問這些存儲庫 這些文件代表麻省理工學院和學習實驗室努力將獲得的證書添加到區塊鏈中。 證書涉及您要編碼的大部分數據,分解為流程的多個組件:創建,查看,驗證和存儲證書。
你要做的事情是相當新生的。 結果它可以是詳細和復雜的。 麻省理工學院的實施很好,因為他們提供了Docker軟件包,可以處理大量細節,從而更全面地了解這一過程。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM