以我的测试结果,在生产环境(不是开发环境,不是 --peer-chaincodedev ),部署方法的工作负载(例如系统运行时间和存储大小)远高于调用方法。
如果测试结果是正确的,我想部署方法的成本要比调用方法高得多。超过 1,000,000 倍的成本。
在这样的成本情况下,我们应该做什么样的设计?频率如何合适。
例如,我们应该如何避免调用部署方法?我们应该如何使用调用方法来替换部署方法?
以我的测试结果,在生产环境(不是开发环境,不是 --peer-chaincodedev ),部署方法的工作负载(例如系统运行时间和存储大小)远高于调用方法。
如果测试结果是正确的,我想部署方法的成本要比调用方法高得多。超过 1,000,000 倍的成本。
在这样的成本情况下,我们应该做什么样的设计?频率如何合适。
例如,我们应该如何避免调用部署方法?我们应该如何使用调用方法来替换部署方法?
func (t *Chaincode) Init(stub *shim.ChaincodeStub, function string, args []string) ([]byte, error) {
var err error
var Number string
if len(args) != 1 {return nil, errors.New("sign Init Expecting 1 number of arguments.")}
Number = args[0]
err = stub.PutState(Number, []byte("01"))
if err != nil {return nil, err}
return nil, nil
}
func (t *Chaincode) Invoke(stub *shim.ChaincodeStub, function string, args []string) ([]byte, error) {
if function == "delete" {
// Deletes an entity from its state
return t.delete(stub, args)
}
if function == "newcontract" {
// Deletes an entity from its state
return t.delete(stub, args)
}
xxxxxxxxxxxxxxxxxxxx
return nil, nil
}
func (t *SimpleChaincode) Query(stub *shim.ChaincodeStub, function string, args []string) ([]byte, error) {
if function != "query" {
return nil, errors.New("Invalid query function name. Expecting \"query\"")
}
xxxxxxxxxxxxxxxxxxxx
return xxx, nil
}
// Deletes an entity from state
func (t *SimpleChaincode) delete(stub *shim.ChaincodeStub, args []string) ([]byte, error) {
if len(args) != 1 {
return nil, errors.New("Incorrect number of arguments. Expecting 1")
}
A := args[0]
// Delete the key from the state in ledger
err := stub.DelState(A)
if err != nil {
return nil, errors.New("Failed to delete state")
}
return nil, nil
}