首页 文章

在区块链上存储数据

提问于
浏览
2

我正在研究POC,我必须存储一些数据,例如对象的ID,价格,所有者和类似的东西 . 是否可以使用智能合约在Blockchain上存储此类内容 . 如果没有,使用区块链来实现它的方法是什么 . (我做了一些研究,人们在SCM行业中使用区块链 . 他们必须存储这些数据) .

8 回答

  • 0

    当然可以在区块链中编码这种类型的数据 . 有关此过程的详细信息,请考虑访问Github上的these repositories . 这些文件代表了MIT 's and The Learning Lab'努力将获得的证书添加到区块链 . 证书涉及您要编码的大部分数据,分解为流程的多个组件:创建,查看,验证和存储证书 .
    你要做的就是新生儿 . 结果它可以是详细和复杂的 . 麻省理工学院的实施很好,因为他们提供了Docker软件包,可以处理大量细节,从而更全面地了解这一过程 . 祝好运!

  • 3

    是的,如果您使用以太坊智能合约,您可以定义合约并将其与交易存储在一起 .

    https://www.ethereum.org/greeter

    请注意,如果您不加密 Contract 中存储的数据,那么每个人都可以访问它 .

  • 1

    请考虑从Hyperledger Fabric“Getting Started”页面中关注tutorial .

    基本上你通过利用chaincodes来实现请求的逻辑,你将必须实现以下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])
    }
    

    这只是一个简化版本,而对于更复杂的版本,您可以按照“Writing Your Application”教程 .

  • 3

    是的,您可以在Hyperledger Fabric中实现的Blockchain中存储有关资产的信息(当前版本为1.0) . 有关资产的信息通过链码更新(基于语言的交易) . 通过使用HyperLedger Composer Playground开始试验这一点相当容易 . HyperLedger Composer使用HyperLedger Fabric V1作为其操作基础,简化了新的区块链应用程序的编写过程,尤其是原型设计 .

    Composer使用建模语言来定义网络的特征(成员类型,资产类型,事件和事务定义核心网络) . 它具有强大的访问控制语言,可以精确指定谁可以访问哪些资产和哪些事务 . 它有一个简化的查询语言,可以在执行查询时自动调用ACL(这意味着即使你要求提供你不应该看到的信息,你仍然看不到它),最后,允许你写下所有的单一语言的代码 - 目前是Javascript - 包括智能交易的链代码 .

  • 1

    您可以通过在 Contract 中使用适当的数据结构来存储数据,然后进行生成散列的事务,您需要随时保存以供访问

  • 0

    是的,您可以使用 Contract 存储您想要的内容 . 当然,你必须加密你的记录 . 但是,在我看来,这不是问题 .

    您可以定义 Contract 并将其部署到同行 . 您的 Contract 应定义如何存储交易 . 此外,它应该定义如何验证它们 .

  • 1

    是的,可以将数据存储在智能合约中,您也可以使用松露框架来创建智能合约和UI . 您可以在每次存储新内容时创建新的智能合约,并存储您创建的上一份 Contract 的地址 . 它也很容易跟踪 .

  • 1

    不要将数据存储在智能合约中 . 这完全是不切实际和昂贵的 . 你需要的是IPFS . IPFS是一种点对点协议,允许不可变和分散的文件共享和数据存储 . 例如,通过IPFS,与区域链(如以太坊)相结合,数据通过IPFS存储,然后相关的哈希可以绑定到智能合约 . 拥有哈希的任何人都可以调用该数据 .

相关问题