在区块链上存储数据
Storing Data on Blockchain
我正在开发一个 POC,我必须在其中存储一些数据,例如对象的 ID、价格、所有者和类似的东西。是否可以使用智能合约将此类内容存储在区块链上。如果不是,使用区块链实现它的方法是什么。 (我做了一些研究,人们在 SCM 行业中使用区块链。他们必须存储这些数据)。
是的,如果您使用以太坊智能合约,您可以定义您的合约并将其与交易一起存储。
https://www.ethereum.org/greeter
请注意,如果您不对合约中存储的数据进行加密,那么每个人都可以访问这些数据。
是的,您可以使用合同存储您想要的内容。当然,你必须加密你的记录。但是,我认为这不是问题。
您定义您的合同并将其部署到您的同行。你的合同应该定义如何存储交易。此外,它应该定义如何验证它们。
您可以通过在合同中使用适当的数据结构来存储数据,然后进行交易,该交易会产生您需要保存以供随时访问的哈希值
考虑关注 tutorial from Hyperledger Fabric "Getting Started 页面。
基本上,您通过利用 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”教程。
是的,您可以在 Hyperledger Fabric(当前版本为 1.0)中实现的区块链中存储有关资产的信息。有关资产的信息通过链码(基于 Go 语言的交易)更新。使用 HyperLedger Composer Playground 开始试验这个相当容易。 HyperLedger Composer 使用 HyperLedger Fabric V1 作为其操作基础,简化了新区块链应用程序的编写过程,尤其是原型制作过程。
Composer 使用建模语言来定义网络的特征(哪些成员类型、资产类型、事件和交易定义了核心网络)。它有一个强大的访问控制语言来精确指定谁可以访问哪些资产和哪些交易。它有一个简化的查询语言,在执行查询时自动调用 ACL(这意味着即使你要询问你不应该看到的信息,你仍然看不到它)最后,允许你写你所有的单一语言的代码——目前 Javascript——包括智能交易的链代码。
是的,可以将数据存储在智能合约中,您也可以使用 truffle 框架来创建智能合约和 UI。
每次在上面存储一些东西时,您都可以创建一个新的智能合约,还可以存储您创建的上一个合约的地址。它也很容易跟踪。
不要将数据存储在智能合约中。那是完全不切实际且昂贵的。你需要的是 IPFS。 IPFS 是一种 peer-to-peer 协议,允许不可变和分散的文件共享和数据存储。使用 IPFS,结合区块链,例如以太坊,数据通过 IPFS 存储,然后关联的哈希可以绑定到智能合约。任何拥有散列的人都可以调用该数据。
当然可以在区块链中对此类数据进行编码。要详细了解此过程,请考虑访问 Github 上的 these repositories。
这些文件代表麻省理工学院和学习实验室在将获得的证书添加到区块链方面所做的努力。证书涉及您要编码的大部分数据,这些数据分解为过程的多个组件:创建、查看、验证和存储证书。
您正在尝试做的事情还处于初期阶段。因此,它可能会变得详细和复杂。 MIT 的实施很好,因为他们提供了 Docker 包,这些包处理了大量细节,提供了一个更全面地理解该过程的机会。祝你好运!
我正在开发一个 POC,我必须在其中存储一些数据,例如对象的 ID、价格、所有者和类似的东西。是否可以使用智能合约将此类内容存储在区块链上。如果不是,使用区块链实现它的方法是什么。 (我做了一些研究,人们在 SCM 行业中使用区块链。他们必须存储这些数据)。
是的,如果您使用以太坊智能合约,您可以定义您的合约并将其与交易一起存储。
https://www.ethereum.org/greeter
请注意,如果您不对合约中存储的数据进行加密,那么每个人都可以访问这些数据。
是的,您可以使用合同存储您想要的内容。当然,你必须加密你的记录。但是,我认为这不是问题。
您定义您的合同并将其部署到您的同行。你的合同应该定义如何存储交易。此外,它应该定义如何验证它们。
您可以通过在合同中使用适当的数据结构来存储数据,然后进行交易,该交易会产生您需要保存以供随时访问的哈希值
考虑关注 tutorial from Hyperledger Fabric "Getting Started 页面。
基本上,您通过利用 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”教程。
是的,您可以在 Hyperledger Fabric(当前版本为 1.0)中实现的区块链中存储有关资产的信息。有关资产的信息通过链码(基于 Go 语言的交易)更新。使用 HyperLedger Composer Playground 开始试验这个相当容易。 HyperLedger Composer 使用 HyperLedger Fabric V1 作为其操作基础,简化了新区块链应用程序的编写过程,尤其是原型制作过程。
Composer 使用建模语言来定义网络的特征(哪些成员类型、资产类型、事件和交易定义了核心网络)。它有一个强大的访问控制语言来精确指定谁可以访问哪些资产和哪些交易。它有一个简化的查询语言,在执行查询时自动调用 ACL(这意味着即使你要询问你不应该看到的信息,你仍然看不到它)最后,允许你写你所有的单一语言的代码——目前 Javascript——包括智能交易的链代码。
是的,可以将数据存储在智能合约中,您也可以使用 truffle 框架来创建智能合约和 UI。 每次在上面存储一些东西时,您都可以创建一个新的智能合约,还可以存储您创建的上一个合约的地址。它也很容易跟踪。
不要将数据存储在智能合约中。那是完全不切实际且昂贵的。你需要的是 IPFS。 IPFS 是一种 peer-to-peer 协议,允许不可变和分散的文件共享和数据存储。使用 IPFS,结合区块链,例如以太坊,数据通过 IPFS 存储,然后关联的哈希可以绑定到智能合约。任何拥有散列的人都可以调用该数据。
当然可以在区块链中对此类数据进行编码。要详细了解此过程,请考虑访问 Github 上的 these repositories。
这些文件代表麻省理工学院和学习实验室在将获得的证书添加到区块链方面所做的努力。证书涉及您要编码的大部分数据,这些数据分解为过程的多个组件:创建、查看、验证和存储证书。
您正在尝试做的事情还处于初期阶段。因此,它可能会变得详细和复杂。 MIT 的实施很好,因为他们提供了 Docker 包,这些包处理了大量细节,提供了一个更全面地理解该过程的机会。祝你好运!