diff --git a/fungible/cc/go.mod b/fungible/cc/go.mod index d744e243..49a2b601 100644 --- a/fungible/cc/go.mod +++ b/fungible/cc/go.mod @@ -132,11 +132,11 @@ require ( go.uber.org/zap v1.19.1 // indirect golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/net v0.0.0-20220708220712-1185a9018129 // indirect - golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect - golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect - golang.org/x/text v0.3.7 // indirect - golang.org/x/tools v0.1.11 // indirect + golang.org/x/net v0.7.0 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect + golang.org/x/tools v0.1.12 // indirect google.golang.org/genproto v0.0.0-20220718134204-073382fd740c // indirect google.golang.org/grpc v1.48.0 // indirect google.golang.org/protobuf v1.28.0 // indirect diff --git a/fungible/cc/go.sum b/fungible/cc/go.sum index bfa76617..c43d505c 100644 --- a/fungible/cc/go.sum +++ b/fungible/cc/go.sum @@ -1371,8 +1371,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220708220712-1185a9018129 h1:vucSRfWwTsoXro7P+3Cjlr6flUMtzCwzlvkxEQtHHB0= -golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1393,8 +1393,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1481,8 +1481,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1492,8 +1492,8 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1556,8 +1556,8 @@ golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.11 h1:loJ25fNOEhSXfHrpoGj91eCUThwdNX6u24rO1xnNteY= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/certifier.go b/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/certifier.go deleted file mode 100644 index 258e77da..00000000 --- a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/certifier.go +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright IBM Corp. All Rights Reserved. - -SPDX-License-Identifier: Apache-2.0 -*/ - -package tcc - -import ( - "github.com/pkg/errors" - - "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" - - "github.com/hyperledger-labs/fabric-token-sdk/token" - "github.com/hyperledger-labs/fabric-token-sdk/token/services/network" - token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" -) - -type GetTokenView struct { - Network string - Channel string - Namespace string - IDs []*token2.ID -} - -func NewGetTokensView(channel string, namespace string, ids ...*token2.ID) *GetTokenView { - return &GetTokenView{Channel: channel, Namespace: namespace, IDs: ids} -} - -func (r *GetTokenView) Call(context view.Context) (interface{}, error) { - if len(r.IDs) == 0 { - return nil, errors.Errorf("no token ids provided") - } - tms := token.GetManagementService( - context, - token.WithNetwork(r.Network), - token.WithChannel(r.Channel), - token.WithNamespace(r.Namespace), - ) - tokens, err := network.GetInstance(context, tms.Network(), tms.Channel()).QueryTokens(context, tms.Namespace(), r.IDs) - if err != nil { - return nil, errors.Wrapf(err, "failed querying tokens") - } - return tokens, nil -} diff --git a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/params.go b/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/params.go deleted file mode 100644 index f0352510..00000000 --- a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/params.go +++ /dev/null @@ -1,8 +0,0 @@ -/* -Copyright IBM Corp. All Rights Reserved. - -SPDX-License-Identifier: Apache-2.0 -*/ -package tcc - -const Params = `` diff --git a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/rwset.go b/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/rwset.go deleted file mode 100644 index 20c574f5..00000000 --- a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/rwset.go +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright IBM Corp. All Rights Reserved. - -SPDX-License-Identifier: Apache-2.0 -*/ -package tcc - -import ( - "github.com/hyperledger/fabric-chaincode-go/shim" -) - -type rwsWrapper struct { - stub shim.ChaincodeStubInterface -} - -func (rwset *rwsWrapper) SetState(namespace string, key string, value []byte) error { - return rwset.stub.PutState(key, value) -} - -func (rwset *rwsWrapper) GetState(namespace string, key string) ([]byte, error) { - return rwset.stub.GetState(key) -} - -func (rwset *rwsWrapper) DeleteState(namespace string, key string) error { - return rwset.stub.DelState(key) -} - -func (rwset *rwsWrapper) Bytes() ([]byte, error) { - return nil, nil -} - -func (rwset *rwsWrapper) Done() { -} - -func (rwset *rwsWrapper) Equals(r interface{}, namespace string) error { - panic("implement me") -} diff --git a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/shim.go b/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/shim.go deleted file mode 100644 index d17eb1ca..00000000 --- a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/shim.go +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright IBM Corp. All Rights Reserved. - -SPDX-License-Identifier: Apache-2.0 -*/ -package tcc - -import ( - "github.com/hyperledger/fabric-chaincode-go/shim" -) - -//go:generate counterfeiter -o mock/chaincode_stub_interface.go -fake-name ChaincodeStubInterface . ChaincodeStubInterface - -// ChaincodeStubInterface is used by deployable chaincode apps to access and -// modify their ledgers -type ChaincodeStubInterface interface { - shim.ChaincodeStubInterface -} diff --git a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/tcc.go b/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/tcc.go deleted file mode 100644 index 536fb68a..00000000 --- a/fungible/cc/vendor/github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/tcc/tcc.go +++ /dev/null @@ -1,343 +0,0 @@ -/* -Copyright IBM Corp. All Rights Reserved. - -SPDX-License-Identifier: Apache-2.0 -*/ - -package tcc - -import ( - "encoding/base64" - "encoding/json" - "fmt" - "io/ioutil" - "os" - "runtime/debug" - "sync" - - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/tracing" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/tracker/metrics" - "github.com/hyperledger-labs/fabric-token-sdk/token" - "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator" - token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" - "github.com/hyperledger/fabric-chaincode-go/shim" - pb "github.com/hyperledger/fabric-protos-go/peer" - "github.com/pkg/errors" -) - -var logger = flogging.MustGetLogger("token-sdk.tcc") - -const ( - InvokeFunction = "invoke" - QueryPublicParamsFunction = "queryPublicParams" - AddCertifierFunction = "addCertifier" - QueryTokensFunctions = "queryTokens" - AreTokensSpent = "areTokensSpent" - - PublicParamsPathVarEnv = "PUBLIC_PARAMS_FILE_PATH" -) - -type Agent interface { - EmitKey(val float32, event ...string) -} - -type SetupAction struct { - SetupParameters []byte -} - -func (a *SetupAction) GetSetupParameters() ([]byte, error) { - return a.SetupParameters, nil -} - -//go:generate counterfeiter -o mock/validator.go -fake-name Validator . Validator - -type Validator interface { - UnmarshallAndVerify(ledger token.Ledger, binding string, raw []byte) ([]interface{}, error) -} - -//go:generate counterfeiter -o mock/public_parameters_manager.go -fake-name PublicParametersManager . PublicParametersManager - -type PublicParametersManager interface { - GraphHiding() bool -} - -type TokenChaincode struct { - initOnce sync.Once - LogLevel string - Validator Validator - PublicParametersManager PublicParametersManager - - PPDigest []byte - TokenServicesFactory func([]byte) (PublicParametersManager, Validator, error) - - MetricsEnabled bool - MetricsServer string - MetricsLock sync.Mutex - MetricsAgent Agent -} - -func (cc *TokenChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { - logger.Infof("init token chaincode...") - - ppRaw, err := cc.Params(Params) - if err != nil { - return shim.Error(fmt.Sprintf("failed to get public parameters: %s", err)) - } - - w := translator.New("", &rwsWrapper{stub: stub}, "") - if err := w.Write(&SetupAction{SetupParameters: ppRaw}); err != nil { - return shim.Error(err.Error()) - } - - return shim.Success(nil) -} - -func (cc *TokenChaincode) Invoke(stub shim.ChaincodeStubInterface) (res pb.Response) { - defer func() { - if r := recover(); r != nil { - logger.Errorf("invoke triggered panic: %s\n%s\n", r, debug.Stack()) - res = shim.Error(fmt.Sprintf("failed responding [%s]", r)) - } else { - logger.Infof("execution terminated with status [%d]", res.Status) - } - }() - - args := stub.GetArgs() - switch l := len(args); l { - case 0: - return shim.Error("missing parameters") - default: - agent, err := cc.NewMetricsAgent(string(args[0])) - if err != nil { - return shim.Error(err.Error()) - } - agent.EmitKey(0, "tcc", "start", "TokenChaincodeInvoke"+string(args[0]), stub.GetTxID()) - defer agent.EmitKey(0, "tcc", "end", "TokenChaincodeInvoke"+string(args[0]), stub.GetTxID()) - - logger.Infof("running function [%s]", string(args[0])) - switch f := string(args[0]); f { - case InvokeFunction: - if len(args) != 1 { - return shim.Error("empty token request") - } - // extract token request from transient - t, err := stub.GetTransient() - if err != nil { - return shim.Error("failed getting transient") - } - tokenRequest, ok := t["token_request"] - if !ok { - return shim.Error("failed getting token request, entry not found") - } - return cc.ProcessRequest(tokenRequest, stub) - case QueryPublicParamsFunction: - return cc.QueryPublicParams(stub) - case QueryTokensFunctions: - if len(args) != 2 { - return shim.Error("request to retrieve tokens is empty") - } - return cc.QueryTokens(args[1], stub) - case AreTokensSpent: - if len(args) != 2 { - return shim.Error("request to check if tokens are spent is empty") - } - return cc.AreTokensSpent(args[1], stub) - default: - return shim.Error(fmt.Sprintf("function not [%s] recognized", f)) - } - } -} - -func (cc *TokenChaincode) Params(builtInParams string) ([]byte, error) { - params := cc.ReadParamsFromFile() - if params == "" { - if len(builtInParams) == 0 { - return nil, errors.New("no params provided") - } else { - params = builtInParams - } - } - - ppRaw, err := base64.StdEncoding.DecodeString(params) - if err != nil { - return nil, errors.WithMessagef(err, "failed decoding params [%s]", params) - } - - return ppRaw, nil -} - -func (cc *TokenChaincode) GetValidator(builtInParams string) (Validator, error) { - var firstInitError error - cc.initOnce.Do(func() { - if err := cc.Initialize(builtInParams); err != nil { - firstInitError = err - } - }) - - if firstInitError != nil { - return nil, firstInitError - } - return cc.Validator, nil -} - -func (cc *TokenChaincode) Initialize(builtInParams string) error { - logger.Infof("reading public parameters...") - - ppRaw, err := cc.Params(builtInParams) - if err != nil { - return errors.WithMessagef(err, "failed reading public parameters") - } - - logger.Infof("instantiate public parameter manager and validator...") - ppm, validator, err := cc.TokenServicesFactory(ppRaw) - logger.Infof("instantiate public parameter manager and validator done with err [%v]", err) - if err != nil { - return errors.Wrap(err, "failed to instantiate public parameter manager and validator") - } - cc.PublicParametersManager = ppm - cc.Validator = validator - - return nil -} - -func (cc *TokenChaincode) ReadParamsFromFile() string { - publicParamsPath := os.Getenv(PublicParamsPathVarEnv) - if publicParamsPath == "" { - fmt.Println("no PUBLIC_PARAMS_FILE_PATH provided") - return "" - } - - fmt.Println("reading " + publicParamsPath + " ...") - paramsAsBytes, err := ioutil.ReadFile(publicParamsPath) - if err != nil { - fmt.Printf( - "unable to read file %s (%s). continue looking pub params from init args or cc\n", publicParamsPath, err.Error(), - ) - return "" - } - - return base64.StdEncoding.EncodeToString(paramsAsBytes) -} - -func (cc *TokenChaincode) ProcessRequest(raw []byte, stub shim.ChaincodeStubInterface) pb.Response { - cc.MetricsAgent.EmitKey(0, "tcc", "start", "TokenChaincodeProcessRequestGetValidator", stub.GetTxID()) - validator, err := cc.GetValidator(Params) - cc.MetricsAgent.EmitKey(0, "tcc", "end", "TokenChaincodeProcessRequestGetValidator", stub.GetTxID()) - if err != nil { - return shim.Error(err.Error()) - } - - // Verify - cc.MetricsAgent.EmitKey(0, "tcc", "start", "TokenChaincodeProcessRequestUnmarshallAndVerify", stub.GetTxID()) - actions, err := validator.UnmarshallAndVerify(stub, stub.GetTxID(), raw) - if err != nil { - return shim.Error("failed to verify token request: " + err.Error()) - } - cc.MetricsAgent.EmitKey(0, "tcc", "end", "TokenChaincodeProcessRequestUnmarshallAndVerify", stub.GetTxID()) - - // Write - cc.MetricsAgent.EmitKey(0, "tcc", "start", "TokenChaincodeProcessRequestWrite", stub.GetTxID()) - - w := translator.New(stub.GetTxID(), &rwsWrapper{stub: stub}, "") - for _, action := range actions { - err = w.Write(action) - if err != nil { - return shim.Error("failed to write token action: " + err.Error()) - } - } - err = w.CommitTokenRequest(raw, false) - if err != nil { - return shim.Error("failed to write token request:" + err.Error()) - } - cc.MetricsAgent.EmitKey(0, "tcc", "end", "TokenChaincodeProcessRequest", stub.GetTxID()) - - return shim.Success(nil) -} - -func (cc *TokenChaincode) QueryPublicParams(stub shim.ChaincodeStubInterface) pb.Response { - w := translator.New(stub.GetTxID(), &rwsWrapper{stub: stub}, "") - raw, err := w.ReadSetupParameters() - if err != nil { - shim.Error("failed to retrieve public parameters: " + err.Error()) - } - if len(raw) == 0 { - return shim.Error("need to initialize public parameters") - } - return shim.Success(raw) -} - -func (cc *TokenChaincode) QueryTokens(idsRaw []byte, stub shim.ChaincodeStubInterface) pb.Response { - var ids []*token2.ID - if err := json.Unmarshal(idsRaw, &ids); err != nil { - logger.Errorf("failed unmarshalling tokens ids: [%s]", err) - return shim.Error(err.Error()) - } - - logger.Debugf("query tokens [%v]...", ids) - - w := translator.New(stub.GetTxID(), &rwsWrapper{stub: stub}, "") - res, err := w.QueryTokens(ids) - if err != nil { - logger.Errorf("failed query tokens [%v]: [%s]", ids, err) - return shim.Error(fmt.Sprintf("failed query tokens [%v]: [%s]", ids, err)) - } - raw, err := json.Marshal(res) - if err != nil { - logger.Errorf("failed marshalling tokens: [%s]", err) - return shim.Error(fmt.Sprintf("failed marshalling tokens: [%s]", err)) - } - return shim.Success(raw) -} - -func (cc *TokenChaincode) AreTokensSpent(idsRaw []byte, stub shim.ChaincodeStubInterface) pb.Response { - _, err := cc.GetValidator(Params) - if err != nil { - return shim.Error(err.Error()) - } - - var ids []string - if err := json.Unmarshal(idsRaw, &ids); err != nil { - logger.Errorf("failed unmarshalling tokens ids: [%s]", err) - return shim.Error(err.Error()) - } - - logger.Debugf("check if tokens are spent [%v]...", ids) - - w := translator.New(stub.GetTxID(), &rwsWrapper{stub: stub}, "") - res, err := w.AreTokensSpent(ids, cc.PublicParametersManager.GraphHiding()) - if err != nil { - logger.Errorf("failed to check if tokens are spent [%v]: [%s]", ids, err) - return shim.Error(fmt.Sprintf("failed to check if tokens are spent [%v]: [%s]", ids, err)) - } - raw, err := json.Marshal(res) - if err != nil { - logger.Errorf("failed marshalling spent flags: [%s]", err) - return shim.Error(fmt.Sprintf("failed marshalling spent flags: [%s]", err)) - } - return shim.Success(raw) -} - -func (cc *TokenChaincode) NewMetricsAgent(id string) (Agent, error) { - cc.MetricsLock.Lock() - defer cc.MetricsLock.Unlock() - - if cc.MetricsAgent != nil { - return cc.MetricsAgent, nil - } - - if !cc.MetricsEnabled { - cc.MetricsAgent = metrics.NewNullAgent() - return cc.MetricsAgent, nil - } - - var err error - cc.MetricsAgent, err = metrics.NewStatsdAgent( - tracing.Host(id), - tracing.StatsDSink(cc.MetricsServer), - ) - if err != nil { - return nil, err - } - return cc.MetricsAgent, nil -} diff --git a/fungible/cc/vendor/golang.org/x/net/bpf/vm_instructions.go b/fungible/cc/vendor/golang.org/x/net/bpf/vm_instructions.go index cf8947c3..0aa307c0 100644 --- a/fungible/cc/vendor/golang.org/x/net/bpf/vm_instructions.go +++ b/fungible/cc/vendor/golang.org/x/net/bpf/vm_instructions.go @@ -94,7 +94,7 @@ func jumpIfCommon(cond JumpTest, skipTrue, skipFalse uint8, regA uint32, value u func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { offset := int(ins.Off) - size := int(ins.Size) + size := ins.Size return loadCommon(in, offset, size) } @@ -121,7 +121,7 @@ func loadExtension(ins LoadExtension, in []byte) uint32 { func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { offset := int(ins.Off) + int(regX) - size := int(ins.Size) + size := ins.Size return loadCommon(in, offset, size) } diff --git a/fungible/cc/vendor/golang.org/x/net/html/parse.go b/fungible/cc/vendor/golang.org/x/net/html/parse.go index 038941d7..46a89eda 100644 --- a/fungible/cc/vendor/golang.org/x/net/html/parse.go +++ b/fungible/cc/vendor/golang.org/x/net/html/parse.go @@ -184,7 +184,7 @@ func (p *parser) clearStackToContext(s scope) { } } -// parseGenericRawTextElements implements the generic raw text element parsing +// parseGenericRawTextElement implements the generic raw text element parsing // algorithm defined in 12.2.6.2. // https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text // TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part @@ -734,7 +734,7 @@ func inHeadIM(p *parser) bool { return false } -// 12.2.6.4.5. +// Section 12.2.6.4.5. func inHeadNoscriptIM(p *parser) bool { switch p.tok.Type { case DoctypeToken: diff --git a/fungible/cc/vendor/golang.org/x/net/html/render.go b/fungible/cc/vendor/golang.org/x/net/html/render.go index b46d81ca..497e1320 100644 --- a/fungible/cc/vendor/golang.org/x/net/html/render.go +++ b/fungible/cc/vendor/golang.org/x/net/html/render.go @@ -85,7 +85,7 @@ func render1(w writer, n *Node) error { if _, err := w.WriteString(""); err != nil { @@ -96,7 +96,7 @@ func render1(w writer, n *Node) error { if _, err := w.WriteString("" case CommentToken: - return "" + return "" case DoctypeToken: - return "" + return "" } return "Invalid(" + strconv.Itoa(int(t.Type)) + ")" } @@ -598,6 +598,11 @@ scriptDataDoubleEscapeEnd: // readComment reads the next comment token starting with "") return } @@ -628,17 +632,50 @@ func (z *Tokenizer) readComment() { if dashCount >= 2 { c = z.readByte() if z.err != nil { - z.data.end = z.raw.end + z.data.end = z.calculateAbruptCommentDataEnd() return - } - if c == '>' { + } else if c == '>' { z.data.end = z.raw.end - len("--!>") return + } else if c == '-' { + dashCount = 1 + beginning = false + continue } } } dashCount = 0 + beginning = false + } +} + +func (z *Tokenizer) calculateAbruptCommentDataEnd() int { + raw := z.Raw() + const prefixLen = len("