// 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])
}
8 回答
当然可以在区块链中编码这种类型的数据 . 有关此过程的详细信息,请考虑访问Github上的these repositories . 这些文件代表了MIT 's and The Learning Lab'努力将获得的证书添加到区块链 . 证书涉及您要编码的大部分数据,分解为流程的多个组件:创建,查看,验证和存储证书 .
你要做的就是新生儿 . 结果它可以是详细和复杂的 . 麻省理工学院的实施很好,因为他们提供了Docker软件包,可以处理大量细节,从而更全面地了解这一过程 . 祝好运!
是的,如果您使用以太坊智能合约,您可以定义合约并将其与交易存储在一起 .
https://www.ethereum.org/greeter
请注意,如果您不加密 Contract 中存储的数据,那么每个人都可以访问它 .
请考虑从Hyperledger Fabric“Getting Started”页面中关注tutorial .
基本上你通过利用chaincodes来实现请求的逻辑,你将必须实现以下golang接口:
例如类似于此的东西:
这只是一个简化版本,而对于更复杂的版本,您可以按照“Writing Your Application”教程 .
是的,您可以在Hyperledger Fabric中实现的Blockchain中存储有关资产的信息(当前版本为1.0) . 有关资产的信息通过链码更新(基于语言的交易) . 通过使用HyperLedger Composer Playground开始试验这一点相当容易 . HyperLedger Composer使用HyperLedger Fabric V1作为其操作基础,简化了新的区块链应用程序的编写过程,尤其是原型设计 .
Composer使用建模语言来定义网络的特征(成员类型,资产类型,事件和事务定义核心网络) . 它具有强大的访问控制语言,可以精确指定谁可以访问哪些资产和哪些事务 . 它有一个简化的查询语言,可以在执行查询时自动调用ACL(这意味着即使你要求提供你不应该看到的信息,你仍然看不到它),最后,允许你写下所有的单一语言的代码 - 目前是Javascript - 包括智能交易的链代码 .
您可以通过在 Contract 中使用适当的数据结构来存储数据,然后进行生成散列的事务,您需要随时保存以供访问
是的,您可以使用 Contract 存储您想要的内容 . 当然,你必须加密你的记录 . 但是,在我看来,这不是问题 .
您可以定义 Contract 并将其部署到同行 . 您的 Contract 应定义如何存储交易 . 此外,它应该定义如何验证它们 .
是的,可以将数据存储在智能合约中,您也可以使用松露框架来创建智能合约和UI . 您可以在每次存储新内容时创建新的智能合约,并存储您创建的上一份 Contract 的地址 . 它也很容易跟踪 .
不要将数据存储在智能合约中 . 这完全是不切实际和昂贵的 . 你需要的是IPFS . IPFS是一种点对点协议,允许不可变和分散的文件共享和数据存储 . 例如,通过IPFS,与区域链(如以太坊)相结合,数据通过IPFS存储,然后相关的哈希可以绑定到智能合约 . 拥有哈希的任何人都可以调用该数据 .