繁体   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