将数据存储在区块链上

4

我正在进行一个概念验证,需要存储一些数据,例如对象的ID、价格、所有者等。是否可以使用智能合约将这些东西存储在区块链上?如果不行,有什么方法可以使用区块链来实现呢?(我做了一些研究,人们正在使用区块链在供应链管理行业中。他们一定已经存储了这些类型的数据。)

8个回答

6

如果您使用以太坊智能合约,您可以定义您的合约并将其存储在交易中。

https://www.ethereum.org/greeter

请注意,如果您不加密存储在合约中的数据,所有人都可以访问它。


4
考虑查看来自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])
}

这只是一个简化版本,如果您需要更复杂的内容,可以参考 "编写您的应用程序" 教程。


3
是的,您可以在Hyperledger Fabric(当前版本为1.0)中实现区块链来存储有关资产的信息。通过链码(基于Go语言的交易)更新资产信息。使用HyperLedger Composer Playground可以很容易地开始尝试这个功能。HyperLedger Composer以HyperLedger Fabric V1作为其操作基础,简化了编写新区块链应用程序的过程,特别是原型设计。

Composer使用建模语言定义网络的特性(成员类型、资产类型、事件和交易定义核心网络)。它具有强大的访问控制语言,可以精确指定谁可以访问哪些资产和哪些交易。它还有一个简化的查询语言,在执行查询时自动调用ACL(这意味着即使您要查看不应看到的信息,也无法看到),最后允许您使用单一语言(目前为JavaScript)编写所有代码,包括智能交易的链码。


1
是的,您可以使用合约存储所需内容。当然,您需要加密您的记录。然而,在我看来,这不是问题所在。
您需要定义合约并将其部署到对等方。您的合约应该定义如何存储交易。此外,它还应该定义如何验证交易。

1
您可以使用适当的数据结构在合同内存储数据,然后进行交易,生成哈希值并保存以便随时访问。

1
是的,可以在智能合约中存储数据,您可以使用Truffle框架创建智能合约和UI。每次在智能合约中存储东西时,都可以创建一个新的智能合约并存储您创建的先前合约的地址。这样可以更轻松地跟踪。

0

在区块链中编码这种类型的数据是完全可能的。如果想详细了解此过程,请考虑访问Github上的这些存储库

这些文件代表MIT和The Learning Lab在将获得的证书添加到区块链方面所做的努力。证书涉及您要编码的大部分数据,将其分解为多个过程组件:创建、查看、验证和存储证书。
您正在尝试做的事情相当新颖。因此,它可能会非常详细和复杂。MIT的实现很好,因为他们提供了Docker包,可以处理大量细节,从而有机会更全面地了解该过程。祝你好运!


0
不要将数据存储在智能合约中,这完全是不切实际且昂贵的。你需要的是IPFS。IPFS是一种点对点协议,允许不可变和去中心化的文件共享和数据存储。使用IPFS与以太坊等区块链结合,数据通过IPFS进行存储,然后相关哈希可以绑定到智能合约。任何拥有哈希值的人都可以调用该数据。

IPFS仍存在可扩展性问题。将商业数据存储到不可扩展的内容中是不明智的。 - mohor chatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接