From 8a46f40a5a1f93551f945f5aeb5a6896aa6cc876 Mon Sep 17 00:00:00 2001 From: Angelo De Caro Date: Fri, 22 Oct 2021 16:25:43 +0200 Subject: [PATCH 1/4] introduce more abstractions Signed-off-by: Angelo De Caro --- go.mod | 1 + go.sum | 2 + token/core/fabtoken/driver/driver.go | 4 +- token/core/fabtoken/service.go | 10 +- token/core/zkatdlog/nogh/driver/driver.go | 5 +- token/core/zkatdlog/nogh/service.go | 5 +- token/sdk/fabric/selector.go | 11 +- token/sdk/fabric/vault.go | 8 +- token/sdk/sdk.go | 8 +- .../services/certifier/interactive/driver.go | 3 +- .../{vault/processor => fabric}/issued.go | 2 +- .../{vault/processor => fabric}/ownership.go | 2 +- .../{vault/processor => fabric}/processor.go | 2 +- token/services/fabric/rws.go | 47 + .../{vault/processor => fabric}/support.go | 2 +- token/services/fabric/vault.go | 84 ++ token/services/selector/inmemory/locker.go | 30 +- token/services/tcc/rwset.go | 31 +- token/services/ttx/approver.go | 6 +- token/services/ttx/namespace.go | 3 +- token/services/vault/approver/approver.go | 14 +- token/services/vault/certification/storage.go | 19 +- token/services/vault/driver/driver.go | 37 + token/services/vault/query/query.go | 41 +- .../vault/translator/mock/issue_action.go | 360 +++---- .../translator/mock/issuing_validator.go | 34 +- token/services/vault/translator/mock/rwset.go | 958 +++--------------- .../vault/translator/mock/transfer_action.go | 509 ++++------ token/services/vault/translator/rwset.go | 49 +- token/services/vault/translator/translator.go | 3 +- ...suite_test.go => translator_suite_test.go} | 2 +- .../vault/translator/translator_test.go | 9 +- token/services/vault/vault.go | 17 +- 33 files changed, 815 insertions(+), 1503 deletions(-) rename token/services/{vault/processor => fabric}/issued.go (98%) rename token/services/{vault/processor => fabric}/ownership.go (98%) rename token/services/{vault/processor => fabric}/processor.go (99%) create mode 100644 token/services/fabric/rws.go rename token/services/{vault/processor => fabric}/support.go (99%) create mode 100644 token/services/fabric/vault.go create mode 100644 token/services/vault/driver/driver.go rename token/services/vault/translator/{zk_suite_test.go => translator_suite_test.go} (88%) diff --git a/go.mod b/go.mod index e86d83b0f..22aa62433 100755 --- a/go.mod +++ b/go.mod @@ -33,5 +33,6 @@ require ( github.com/stretchr/testify v1.7.1-0.20210116013205-6990a05d54c2 github.com/tedsuo/ifrit v0.0.0-20191009134036-9a97d0632f00 go.uber.org/atomic v1.7.0 + golang.org/x/sys v0.0.0-20211020174200-9d6173849985 // indirect gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index da55e82f8..72d58d11e 100644 --- a/go.sum +++ b/go.sum @@ -1480,6 +1480,8 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c h1:taxlMj0D/1sOAuv/CbSD+MMDof2vbyPTqz5FNYKpXt8= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/token/core/fabtoken/driver/driver.go b/token/core/fabtoken/driver/driver.go index 6c3435bb1..1c48c1fc0 100644 --- a/token/core/fabtoken/driver/driver.go +++ b/token/core/fabtoken/driver/driver.go @@ -16,6 +16,7 @@ import ( "github.com/hyperledger-labs/fabric-token-sdk/token/core/identity" "github.com/hyperledger-labs/fabric-token-sdk/token/core/identity/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/driver" + fabric3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault" ) @@ -40,11 +41,10 @@ func (d *Driver) NewTokenService(sp view2.ServiceProvider, publicParamsFetcher d return nil, errors.WithMessagef(err, "fabric channel [%s:%s] does not exists", network, channel) } - qe := vault.NewVault(sp, ch, namespace).QueryEngine() + qe := vault.New(sp, ch.Name(), namespace, fabric3.NewVault(ch)).QueryEngine() nodeIdentity := view2.GetIdentityProvider(sp).DefaultIdentity() return fabtoken.NewService( sp, - ch, namespace, fabtoken.NewPublicParamsManager(&fabtoken.VaultPublicParamsLoader{ TokenVault: qe, diff --git a/token/core/fabtoken/service.go b/token/core/fabtoken/service.go index 3a80f62b2..de4b96f11 100644 --- a/token/core/fabtoken/service.go +++ b/token/core/fabtoken/service.go @@ -3,12 +3,12 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ + package fabtoken import ( "sync" - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" @@ -16,11 +16,6 @@ import ( token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) -type Channel interface { - Name() string - Vault() *fabric.Vault -} - type PublicParamsLoader interface { Load() (*PublicParams, error) ForceFetch() (*PublicParams, error) @@ -45,7 +40,6 @@ type PublicParametersManager interface { type Service struct { SP view2.ServiceProvider - Channel Channel Namespace string PPM PublicParametersManager TokenLoader TokenLoader @@ -61,7 +55,6 @@ type Service struct { func NewService( sp view2.ServiceProvider, - channel Channel, namespace string, ppm PublicParametersManager, tokenLoader TokenLoader, @@ -71,7 +64,6 @@ func NewService( ) *Service { s := &Service{ SP: sp, - Channel: channel, Namespace: namespace, TokenLoader: tokenLoader, QE: qe, diff --git a/token/core/zkatdlog/nogh/driver/driver.go b/token/core/zkatdlog/nogh/driver/driver.go index a1743f2bb..909f44395 100644 --- a/token/core/zkatdlog/nogh/driver/driver.go +++ b/token/core/zkatdlog/nogh/driver/driver.go @@ -19,6 +19,7 @@ import ( "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/validator" zkatdlog "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/nogh" "github.com/hyperledger-labs/fabric-token-sdk/token/driver" + fabric3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault" ) @@ -49,8 +50,8 @@ func (d *Driver) NewTokenService(sp view2.ServiceProvider, publicParamsFetcher d namespace, sp, publicParamsFetcher, - &zkatdlog.VaultTokenCommitmentLoader{TokenVault: vault.NewVault(sp, ch, namespace).QueryEngine()}, - vault.NewVault(sp, ch, namespace).QueryEngine(), + &zkatdlog.VaultTokenCommitmentLoader{TokenVault: vault.New(sp, ch.Name(), namespace, fabric3.NewVault(ch)).QueryEngine()}, + vault.New(sp, ch.Name(), namespace, fabric3.NewVault(ch)).QueryEngine(), identity.NewProvider( sp, map[driver.IdentityUsage]identity.Mapper{ diff --git a/token/core/zkatdlog/nogh/service.go b/token/core/zkatdlog/nogh/service.go index 3cf9183b4..fe85ffd7f 100644 --- a/token/core/zkatdlog/nogh/service.go +++ b/token/core/zkatdlog/nogh/service.go @@ -8,10 +8,12 @@ package nogh import ( "sync" - "github.com/IBM/mathlib" + math "github.com/IBM/mathlib" "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" + "github.com/pkg/errors" + "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto" "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/ppm" "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/token" @@ -19,7 +21,6 @@ import ( api3 "github.com/hyperledger-labs/fabric-token-sdk/token/driver" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" token3 "github.com/hyperledger-labs/fabric-token-sdk/token/token" - "github.com/pkg/errors" ) const ( diff --git a/token/sdk/fabric/selector.go b/token/sdk/fabric/selector.go index 7328988f9..4a6d747a4 100644 --- a/token/sdk/fabric/selector.go +++ b/token/sdk/fabric/selector.go @@ -15,7 +15,14 @@ import ( "github.com/hyperledger-labs/fabric-token-sdk/token/services/selector/inmemory" ) -type GetFabricNetworkServiceFunc func(network string) fabric.NetworkService +type Vault struct { + *fabric.Vault +} + +func (v *Vault) Status(id string) (int, error) { + r, _, err := v.Vault.Status(id) + return int(r), err +} type LockerProvider struct { sp view.ServiceProvider @@ -32,5 +39,5 @@ func (s *LockerProvider) New(network string, channel string, namespace string) s if err != nil { panic(err) } - return inmemory.NewLocker(ch, s.sleepTimeout, s.validTxEvictionTimeoutMillis) + return inmemory.NewLocker(&Vault{Vault: ch.Vault()}, s.sleepTimeout, s.validTxEvictionTimeoutMillis) } diff --git a/token/sdk/fabric/vault.go b/token/sdk/fabric/vault.go index 1a2c2c110..baf86064b 100644 --- a/token/sdk/fabric/vault.go +++ b/token/sdk/fabric/vault.go @@ -8,7 +8,9 @@ package fabric import ( "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view" + "github.com/hyperledger-labs/fabric-token-sdk/token/driver" + fabric3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault" ) @@ -21,9 +23,11 @@ func NewVaultProvider(sp view.ServiceProvider) *VaultProvider { } func (v *VaultProvider) Vault(network string, channel string, namespace string) driver.Vault { - return vault.NewVault( + ch := fabric.GetChannel(v.sp, network, channel) + return vault.New( v.sp, - fabric.GetChannel(v.sp, network, channel), + ch.Name(), namespace, + fabric3.NewVault(ch), ) } diff --git a/token/sdk/sdk.go b/token/sdk/sdk.go index fa1278de9..03876609b 100644 --- a/token/sdk/sdk.go +++ b/token/sdk/sdk.go @@ -27,9 +27,9 @@ import ( _ "github.com/hyperledger-labs/fabric-token-sdk/token/services/auditor/auditdb/db/memory" _ "github.com/hyperledger-labs/fabric-token-sdk/token/services/certifier/dummy" _ "github.com/hyperledger-labs/fabric-token-sdk/token/services/certifier/interactive" + fabric3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/query" "github.com/hyperledger-labs/fabric-token-sdk/token/services/selector" - "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/processor" ) var logger = flogging.MustGetLogger("token-sdk") @@ -63,12 +63,12 @@ func (p *SDK) Install() error { n := fabric.GetFabricNetworkService(p.registry, network) if err := n.ProcessorManager().AddProcessor( namespace, - processor.NewTokenRWSetProcessor( + fabric3.NewTokenRWSetProcessor( n, namespace, p.registry, - processor.NewOwnershipMultiplexer(&processor.WalletOwnership{}), - processor.NewIssuedMultiplexer(&processor.WalletIssued{}), + fabric3.NewOwnershipMultiplexer(&fabric3.WalletOwnership{}), + fabric3.NewIssuedMultiplexer(&fabric3.WalletIssued{}), ), ); err != nil { return errors.Wrapf(err, "failed adding transaction processors") diff --git a/token/services/certifier/interactive/driver.go b/token/services/certifier/interactive/driver.go index 81bbfd509..33f2a4947 100644 --- a/token/services/certifier/interactive/driver.go +++ b/token/services/certifier/interactive/driver.go @@ -17,6 +17,7 @@ import ( "github.com/hyperledger-labs/fabric-token-sdk/token" "github.com/hyperledger-labs/fabric-token-sdk/token/services/certifier/driver" + fabric3 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault" ) @@ -42,7 +43,7 @@ func (d *Driver) NewCertificationClient(sp view2.ServiceProvider, network, chann if !ok { ch := fabric.GetChannel(sp, network, channel) fabricVault := ch.Vault() - tokenVault := vault.NewVault(sp, ch, namespace) + tokenVault := vault.New(sp, ch.Name(), namespace, fabric3.NewVault(ch)) // Load certifier identities var tmsConfigs []*token.TMS diff --git a/token/services/vault/processor/issued.go b/token/services/fabric/issued.go similarity index 98% rename from token/services/vault/processor/issued.go rename to token/services/fabric/issued.go index 1ab127fc0..68a389c7e 100644 --- a/token/services/vault/processor/issued.go +++ b/token/services/fabric/issued.go @@ -4,7 +4,7 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ -package processor +package fabric import ( "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" diff --git a/token/services/vault/processor/ownership.go b/token/services/fabric/ownership.go similarity index 98% rename from token/services/vault/processor/ownership.go rename to token/services/fabric/ownership.go index e95e50fcd..ef160a2f5 100644 --- a/token/services/vault/processor/ownership.go +++ b/token/services/fabric/ownership.go @@ -4,7 +4,7 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ -package processor +package fabric import ( "github.com/hyperledger-labs/fabric-token-sdk/token" diff --git a/token/services/vault/processor/processor.go b/token/services/fabric/processor.go similarity index 99% rename from token/services/vault/processor/processor.go rename to token/services/fabric/processor.go index 0a7c8066c..8b440d09c 100644 --- a/token/services/vault/processor/processor.go +++ b/token/services/fabric/processor.go @@ -4,7 +4,7 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ -package processor +package fabric import ( "strconv" diff --git a/token/services/fabric/rws.go b/token/services/fabric/rws.go new file mode 100644 index 000000000..12ac21006 --- /dev/null +++ b/token/services/fabric/rws.go @@ -0,0 +1,47 @@ +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package fabric + +import ( + "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" +) + +type RWSWrapper struct { + r *fabric.RWSet +} + +func NewRWSWrapper(r *fabric.RWSet) *RWSWrapper { + return &RWSWrapper{r: r} +} + +func (rwset *RWSWrapper) SetState(namespace string, key string, value []byte) error { + return rwset.r.SetState(namespace, key, value) +} + +func (rwset *RWSWrapper) GetState(namespace string, key string) ([]byte, error) { + return rwset.r.GetState(namespace, key) +} + +func (rwset *RWSWrapper) DeleteState(namespace string, key string) error { + return rwset.r.DeleteState(namespace, key) +} + +func (rwset *RWSWrapper) Bytes() ([]byte, error) { + return rwset.r.Bytes() +} + +func (rwset *RWSWrapper) Done() { + rwset.r.Done() +} + +func (rwset *RWSWrapper) SetStateMetadata(namespace, key string, metadata map[string][]byte) error { + return rwset.r.SetStateMetadata(namespace, key, metadata) +} + +func (rwset *RWSWrapper) Equals(r interface{}, namespace string) error { + return rwset.r.Equals(r, namespace) +} diff --git a/token/services/vault/processor/support.go b/token/services/fabric/support.go similarity index 99% rename from token/services/vault/processor/support.go rename to token/services/fabric/support.go index d207e965f..ccb11403e 100644 --- a/token/services/vault/processor/support.go +++ b/token/services/fabric/support.go @@ -3,7 +3,7 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ -package processor +package fabric import ( "encoding/json" diff --git a/token/services/fabric/vault.go b/token/services/fabric/vault.go new file mode 100644 index 000000000..672b1c73c --- /dev/null +++ b/token/services/fabric/vault.go @@ -0,0 +1,84 @@ +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package fabric + +import ( + "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" + + "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/driver" +) + +type Vault struct { + ch *fabric.Channel +} + +func NewVault(ch *fabric.Channel) *Vault { + return &Vault{ch: ch} +} + +func (v *Vault) NewQueryExecutor() (driver.Executor, error) { + qe, err := v.ch.Vault().NewQueryExecutor() + if err != nil { + return nil, err + } + return &Executor{qe: qe}, nil +} + +func (v *Vault) NewRWSet(txid string) (driver.RWSet, error) { + rws, err := v.ch.Vault().NewRWSet(txid) + if err != nil { + return nil, err + } + return NewRWSWrapper(rws), nil +} + +type Executor struct { + qe *fabric.QueryExecutor +} + +func (e *Executor) Done() { + e.qe.Done() +} + +func (e *Executor) GetState(namespace string, key string) ([]byte, error) { + return e.qe.GetState(namespace, key) +} + +func (e *Executor) GetStateRangeScanIterator(namespace string, start string, end string) (driver.Iterator, error) { + it, err := e.qe.GetStateRangeScanIterator(namespace, start, end) + if err != nil { + return nil, err + } + return &Iterator{it: it}, nil +} + +func (e *Executor) GetStateMetadata(namespace string, id string) (map[string][]byte, error) { + r, _, _, err := e.qe.GetStateMetadata(namespace, id) + return r, err +} + +type Iterator struct { + it *fabric.ResultsIterator +} + +func (i *Iterator) Close() { + i.it.Close() +} + +func (i *Iterator) Next() (*driver.Entry, error) { + r, err := i.it.Next() + if err != nil { + return nil, err + } + if r == nil { + return nil, nil + } + return &driver.Entry{ + Key: r.Key, + Raw: r.Raw, + }, nil +} diff --git a/token/services/selector/inmemory/locker.go b/token/services/selector/inmemory/locker.go index a6dd8843d..d247ada80 100644 --- a/token/services/selector/inmemory/locker.go +++ b/token/services/selector/inmemory/locker.go @@ -3,6 +3,7 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ + package inmemory import ( @@ -10,7 +11,6 @@ import ( "sync" "time" - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging" "github.com/pkg/errors" @@ -20,8 +20,14 @@ import ( var logger = flogging.MustGetLogger("token-sdk.selector.inmemory") -type Channel interface { - Vault() *fabric.Vault +const ( + _ int = iota + Valid // Transaction is valid and committed + Invalid // Transaction is invalid and has been discarded +) + +type Vault interface { + Status(id string) (int, error) } type lockEntry struct { @@ -35,16 +41,16 @@ func (l *lockEntry) String() string { } type locker struct { - ch Channel + vault Vault lock sync.RWMutex locked map[string]*lockEntry sleepTimeout time.Duration validTxEvictionTimeoutMillis int64 } -func NewLocker(ch Channel, timeout time.Duration, validTxEvictionTimeoutMillis int64) selector.Locker { +func NewLocker(vault Vault, timeout time.Duration, validTxEvictionTimeoutMillis int64) selector.Locker { r := &locker{ - ch: ch, + vault: vault, sleepTimeout: timeout, lock: sync.RWMutex{}, locked: map[string]*lockEntry{}, @@ -107,13 +113,13 @@ func (d *locker) UnlockByTxID(txID string) { } } -func (d *locker) reclaim(id *token2.Id, txID string) (bool, fabric.ValidationCode) { - status, _, err := d.ch.Vault().Status(txID) +func (d *locker) reclaim(id *token2.Id, txID string) (bool, int) { + status, err := d.vault.Status(txID) if err != nil { return false, status } switch status { - case fabric.Invalid: + case Invalid: delete(d.locked, id.String()) return true, status default: @@ -131,20 +137,20 @@ func (d *locker) scan() { var removeList []string d.lock.RLock() for id, entry := range d.locked { - status, _, err := d.ch.Vault().Status(entry.TxID) + status, err := d.vault.Status(entry.TxID) if err != nil { logger.Warnf("failed getting status for token [%s] locked by [%s], remove", id, entry) removeList = append(removeList, id) continue } switch status { - case fabric.Valid: + case Valid: // remove only if elapsed enough time from last access, to avoid concurrency issue if time.Now().Sub(entry.LastAccess).Milliseconds() > d.validTxEvictionTimeoutMillis { removeList = append(removeList, id) logger.Debugf("token [%s] locked by [%s] in status [%s], time elapsed, remove", id, entry, status) } - case fabric.Invalid: + case Invalid: removeList = append(removeList, id) logger.Debugf("token [%s] locked by [%s] in status [%s], remove", id, entry, status) default: diff --git a/token/services/tcc/rwset.go b/token/services/tcc/rwset.go index 6811bc94e..2f5ec921f 100644 --- a/token/services/tcc/rwset.go +++ b/token/services/tcc/rwset.go @@ -6,7 +6,6 @@ SPDX-License-Identifier: Apache-2.0 package tcc import ( - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger/fabric-chaincode-go/shim" ) @@ -17,39 +16,27 @@ type rwsWrapper struct { 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, opts ...fabric.GetStateOpt) ([]byte, error) { + +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() { return } -func (rwset *rwsWrapper) GetStateMetadata(namespace, key string, opts ...fabric.GetStateOpt) (map[string][]byte, error) { - return nil, nil -} + func (rwset *rwsWrapper) SetStateMetadata(namespace, key string, metadata map[string][]byte) error { return nil } -func (rwset *rwsWrapper) AppendRWSet(raw []byte, nss ...string) error { - return nil -} -func (rwset *rwsWrapper) GetReadAt(ns string, i int) (string, []byte, error) { - return "", nil, nil -} -func (rwset *rwsWrapper) GetWriteAt(ns string, i int) (string, []byte, error) { - return "", nil, nil -} -func (rwset *rwsWrapper) NumReads(ns string) int { - return 0 -} -func (rwset *rwsWrapper) NumWrites(ns string) int { - return 0 -} -func (rwset *rwsWrapper) Namespaces() []string { - return nil + +func (rwset *rwsWrapper) Equals(r interface{}, namespace string) error { + panic("implement me") } diff --git a/token/services/ttx/approver.go b/token/services/ttx/approver.go index dda691b44..4fb02afd3 100644 --- a/token/services/ttx/approver.go +++ b/token/services/ttx/approver.go @@ -3,6 +3,7 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ + package ttx import ( @@ -12,6 +13,7 @@ import ( view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" + fabric2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" approver2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/approver" ) @@ -34,9 +36,9 @@ func (a approver) Validate(tx *Transaction) error { ts := tx.TokenService() app := approver2.NewTokenRWSetApprover( ts.Validator(), - fabric.GetVault(tx.tx.ServiceProvider, tx.Network(), tx.Channel()), + fabric2.NewVault(fabric.GetChannel(tx.tx.ServiceProvider, tx.Network(), tx.Channel())), tx.ID(), - rws, + fabric2.NewRWSWrapper(rws), ts.Namespace(), ) diff --git a/token/services/ttx/namespace.go b/token/services/ttx/namespace.go index 2d5e63e14..fff73139d 100644 --- a/token/services/ttx/namespace.go +++ b/token/services/ttx/namespace.go @@ -15,6 +15,7 @@ import ( "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" "github.com/hyperledger-labs/fabric-token-sdk/token" + fabric2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator" ) @@ -194,7 +195,7 @@ func (t *Namespace) updateRWSetAndMetadata(action interface{}) error { // commit action, if any if action != nil { issuingValidator := &allIssuersValid{} - w := translator.New(issuingValidator, t.tx.ID(), rws, ns) + w := translator.New(issuingValidator, t.tx.ID(), fabric2.NewRWSWrapper(rws), ns) err = w.Write(action) if err != nil { return errors.Wrap(err, "failed to write token action") diff --git a/token/services/vault/approver/approver.go b/token/services/vault/approver/approver.go index c91cead7c..1b185348d 100644 --- a/token/services/vault/approver/approver.go +++ b/token/services/vault/approver/approver.go @@ -8,20 +8,22 @@ package approver import ( "crypto/rand" - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" + "github.com/pkg/errors" + + "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/driver" + "github.com/hyperledger-labs/fabric-token-sdk/token" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator" - "github.com/pkg/errors" ) var logger = flogging.MustGetLogger("token.tms.zkat.approver") type Vault interface { - NewQueryExecutor() (*fabric.QueryExecutor, error) - NewRWSet(txid string) (*fabric.RWSet, error) + NewQueryExecutor() (driver.Executor, error) + NewRWSet(txid string) (driver.RWSet, error) } type Verifier interface { @@ -38,7 +40,7 @@ type approver struct { namespace string } -func NewTokenRWSetApprover(validator translator.Validator, vault Vault, txID string, RWSet translator.RWSet, namespace string) *approver { +func NewTokenRWSetApprover(validator translator.Validator, vault Vault, txID string, RWSet driver.RWSet, namespace string) *approver { return &approver{ vault: vault, TxID: txID, @@ -103,7 +105,7 @@ func (i *allIssuersValid) Validate(creator view.Identity, tokenType string) erro } type backend struct { - qe *fabric.QueryExecutor + qe driver.Executor sp SignatureProvider namespace string } diff --git a/token/services/vault/certification/storage.go b/token/services/vault/certification/storage.go index a36559be7..3701649d9 100644 --- a/token/services/vault/certification/storage.go +++ b/token/services/vault/certification/storage.go @@ -8,25 +8,20 @@ package certification import ( "strconv" - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/kvs" - "github.com/hyperledger-labs/fabric-token-sdk/token/token" "github.com/pkg/errors" -) -type Channel interface { - Name() string - Vault() *fabric.Vault -} + "github.com/hyperledger-labs/fabric-token-sdk/token/token" +) type Storage struct { sp view.ServiceProvider - channel Channel + channel string namespace string } -func NewStorage(sp view.ServiceProvider, channel Channel, namespace string) *Storage { +func NewStorage(sp view.ServiceProvider, channel string, namespace string) *Storage { return &Storage{sp: sp, channel: channel, namespace: namespace} } @@ -34,7 +29,7 @@ func (v *Storage) Exists(id *token.Id) bool { k := kvs.CreateCompositeKeyOrPanic( "token-sdk.certifier.certification", []string{ - v.channel.Name(), + v.channel, v.namespace, id.TxId, strconv.FormatUint(uint64(id.Index), 10), @@ -48,7 +43,7 @@ func (v *Storage) Store(certifications map[*token.Id][]byte) error { k := kvs.CreateCompositeKeyOrPanic( "token-sdk.certifier.certification", []string{ - v.channel.Name(), + v.channel, v.namespace, id.TxId, strconv.FormatUint(uint64(id.Index), 10), @@ -66,7 +61,7 @@ func (v *Storage) Get(ids []*token.Id, callback func(*token.Id, []byte) error) e k := kvs.CreateCompositeKeyOrPanic( "token-sdk.certifier.certification", []string{ - v.channel.Name(), + v.channel, v.namespace, id.TxId, strconv.FormatUint(uint64(id.Index), 10), diff --git a/token/services/vault/driver/driver.go b/token/services/vault/driver/driver.go new file mode 100644 index 000000000..a2ad1d563 --- /dev/null +++ b/token/services/vault/driver/driver.go @@ -0,0 +1,37 @@ +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package driver + +// RWSet interface, used to read from, and write to, a rwset. +type RWSet interface { + SetState(namespace string, key string, value []byte) error + GetState(namespace string, key string) ([]byte, error) + DeleteState(namespace string, key string) error + SetStateMetadata(namespace, key string, metadata map[string][]byte) error + Equals(rwset interface{}, namespace string) error +} + +type Entry struct { + Key string + Raw []byte +} + +type Iterator interface { + Close() + Next() (*Entry, error) +} + +type Executor interface { + Done() + GetState(namespace string, key string) ([]byte, error) + GetStateRangeScanIterator(namespace string, s string, e string) (Iterator, error) + GetStateMetadata(namespace string, id string) (map[string][]byte, error) +} + +type Vault interface { + NewQueryExecutor() (Executor, error) +} diff --git a/token/services/vault/query/query.go b/token/services/vault/query/query.go index 89890594d..09ed1386d 100644 --- a/token/services/vault/query/query.go +++ b/token/services/vault/query/query.go @@ -3,42 +3,37 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ + package query import ( "encoding/json" - "github.com/pkg/errors" - - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging" + "github.com/pkg/errors" - "github.com/hyperledger-labs/fabric-token-sdk/token/driver" + driver2 "github.com/hyperledger-labs/fabric-token-sdk/token/driver" + "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/driver" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) var logger = flogging.MustGetLogger("token-sdk.tms.zkat.query") -type Channel interface { - Name() string - Vault() *fabric.Vault -} - type Engine struct { - channel Channel + Vault driver.Vault namespace string } -func NewEngine(channel Channel, namespace string) *Engine { +func NewEngine(vault driver.Vault, namespace string) *Engine { return &Engine{ - channel: channel, + Vault: vault, namespace: namespace, } } func (e *Engine) IsMine(id *token.Id) (bool, error) { - qe, err := e.channel.Vault().NewQueryExecutor() + qe, err := e.Vault.NewQueryExecutor() if err != nil { return false, err } @@ -66,7 +61,7 @@ func (e *Engine) ListUnspentTokens() (*token.UnspentTokens, error) { endKey := startKey + string(keys.MaxUnicodeRuneValue) logger.Debugf("New query executor") - qe, err := e.channel.Vault().NewQueryExecutor() + qe, err := e.Vault.NewQueryExecutor() if err != nil { return nil, err } @@ -129,7 +124,7 @@ func (e *Engine) ListUnspentTokens() (*token.UnspentTokens, error) { func (e *Engine) ListAuditTokens(ids ...*token.Id) ([]*token.Token, error) { logger.Debugf("retrieve inputs for auditing...") - qe, err := e.channel.Vault().NewQueryExecutor() + qe, err := e.Vault.NewQueryExecutor() if err != nil { return nil, err } @@ -167,7 +162,7 @@ func (e *Engine) ListHistoryIssuedTokens() (*token.IssuedTokens, error) { endKey := startKey + string(keys.MaxUnicodeRuneValue) logger.Debugf("New query executor") - qe, err := e.channel.Vault().NewQueryExecutor() + qe, err := e.Vault.NewQueryExecutor() if err != nil { return nil, err } @@ -230,7 +225,7 @@ func (e *Engine) ListHistoryIssuedTokens() (*token.IssuedTokens, error) { } func (e *Engine) PublicParams() ([]byte, error) { - qe, err := e.channel.Vault().NewQueryExecutor() + qe, err := e.Vault.NewQueryExecutor() if err != nil { return nil, err } @@ -248,8 +243,8 @@ func (e *Engine) PublicParams() ([]byte, error) { return raw, nil } -func (e *Engine) GetTokenInfos(ids []*token.Id, callback driver.QueryCallbackFunc) error { - qe, err := e.channel.Vault().NewQueryExecutor() +func (e *Engine) GetTokenInfos(ids []*token.Id, callback driver2.QueryCallbackFunc) error { + qe, err := e.Vault.NewQueryExecutor() if err != nil { return err } @@ -259,7 +254,7 @@ func (e *Engine) GetTokenInfos(ids []*token.Id, callback driver.QueryCallbackFun if err != nil { return errors.Wrapf(err, "error creating output ID: %v", id) } - meta, _, _, err := qe.GetStateMetadata(e.namespace, outputID) + meta, err := qe.GetStateMetadata(e.namespace, outputID) if err != nil { return errors.Wrapf(err, "failed getting metadata for id [%v]", id) } @@ -271,8 +266,8 @@ func (e *Engine) GetTokenInfos(ids []*token.Id, callback driver.QueryCallbackFun return nil } -func (e *Engine) GetTokenCommitments(ids []*token.Id, callback driver.QueryCallbackFunc) error { - qe, err := e.channel.Vault().NewQueryExecutor() +func (e *Engine) GetTokenCommitments(ids []*token.Id, callback driver2.QueryCallbackFunc) error { + qe, err := e.Vault.NewQueryExecutor() if err != nil { return err } @@ -296,7 +291,7 @@ func (e *Engine) GetTokenCommitments(ids []*token.Id, callback driver.QueryCallb func (e *Engine) GetTokens(inputs ...*token.Id) ([]string, []*token.Token, error) { logger.Debugf("retrieve tokens from ids...") - qe, err := e.channel.Vault().NewQueryExecutor() + qe, err := e.Vault.NewQueryExecutor() if err != nil { return nil, nil, err } diff --git a/token/services/vault/translator/mock/issue_action.go b/token/services/vault/translator/mock/issue_action.go index 1c10e0f24..18bb7f67a 100644 --- a/token/services/vault/translator/mock/issue_action.go +++ b/token/services/vault/translator/mock/issue_action.go @@ -8,31 +8,30 @@ import ( ) type IssueAction struct { - GetIssuerStub func() []byte - getIssuerMutex sync.RWMutex - getIssuerArgsForCall []struct { - } - getIssuerReturns struct { + SerializeStub func() ([]byte, error) + serializeMutex sync.RWMutex + serializeArgsForCall []struct{} + serializeReturns struct { result1 []byte + result2 error } - getIssuerReturnsOnCall map[int]struct { + serializeReturnsOnCall map[int]struct { result1 []byte + result2 error } - GetMetadataStub func() []byte - getMetadataMutex sync.RWMutex - getMetadataArgsForCall []struct { - } - getMetadataReturns struct { - result1 []byte + NumOutputsStub func() int + numOutputsMutex sync.RWMutex + numOutputsArgsForCall []struct{} + numOutputsReturns struct { + result1 int } - getMetadataReturnsOnCall map[int]struct { - result1 []byte + numOutputsReturnsOnCall map[int]struct { + result1 int } GetSerializedOutputsStub func() ([][]byte, error) getSerializedOutputsMutex sync.RWMutex - getSerializedOutputsArgsForCall []struct { - } - getSerializedOutputsReturns struct { + getSerializedOutputsArgsForCall []struct{} + getSerializedOutputsReturns struct { result1 [][]byte result2 error } @@ -42,149 +41,122 @@ type IssueAction struct { } IsAnonymousStub func() bool isAnonymousMutex sync.RWMutex - isAnonymousArgsForCall []struct { - } - isAnonymousReturns struct { + isAnonymousArgsForCall []struct{} + isAnonymousReturns struct { result1 bool } isAnonymousReturnsOnCall map[int]struct { result1 bool } - NumOutputsStub func() int - numOutputsMutex sync.RWMutex - numOutputsArgsForCall []struct { - } - numOutputsReturns struct { - result1 int - } - numOutputsReturnsOnCall map[int]struct { - result1 int + GetIssuerStub func() []byte + getIssuerMutex sync.RWMutex + getIssuerArgsForCall []struct{} + getIssuerReturns struct { + result1 []byte } - SerializeStub func() ([]byte, error) - serializeMutex sync.RWMutex - serializeArgsForCall []struct { + getIssuerReturnsOnCall map[int]struct { + result1 []byte } - serializeReturns struct { + GetMetadataStub func() []byte + getMetadataMutex sync.RWMutex + getMetadataArgsForCall []struct{} + getMetadataReturns struct { result1 []byte - result2 error } - serializeReturnsOnCall map[int]struct { + getMetadataReturnsOnCall map[int]struct { result1 []byte - result2 error } invocations map[string][][]interface{} invocationsMutex sync.RWMutex } -func (fake *IssueAction) GetIssuer() []byte { - fake.getIssuerMutex.Lock() - ret, specificReturn := fake.getIssuerReturnsOnCall[len(fake.getIssuerArgsForCall)] - fake.getIssuerArgsForCall = append(fake.getIssuerArgsForCall, struct { - }{}) - fake.recordInvocation("GetIssuer", []interface{}{}) - fake.getIssuerMutex.Unlock() - if fake.GetIssuerStub != nil { - return fake.GetIssuerStub() +func (fake *IssueAction) Serialize() ([]byte, error) { + fake.serializeMutex.Lock() + ret, specificReturn := fake.serializeReturnsOnCall[len(fake.serializeArgsForCall)] + fake.serializeArgsForCall = append(fake.serializeArgsForCall, struct{}{}) + fake.recordInvocation("Serialize", []interface{}{}) + fake.serializeMutex.Unlock() + if fake.SerializeStub != nil { + return fake.SerializeStub() } if specificReturn { - return ret.result1 + return ret.result1, ret.result2 } - fakeReturns := fake.getIssuerReturns - return fakeReturns.result1 + return fake.serializeReturns.result1, fake.serializeReturns.result2 } -func (fake *IssueAction) GetIssuerCallCount() int { - fake.getIssuerMutex.RLock() - defer fake.getIssuerMutex.RUnlock() - return len(fake.getIssuerArgsForCall) -} - -func (fake *IssueAction) GetIssuerCalls(stub func() []byte) { - fake.getIssuerMutex.Lock() - defer fake.getIssuerMutex.Unlock() - fake.GetIssuerStub = stub +func (fake *IssueAction) SerializeCallCount() int { + fake.serializeMutex.RLock() + defer fake.serializeMutex.RUnlock() + return len(fake.serializeArgsForCall) } -func (fake *IssueAction) GetIssuerReturns(result1 []byte) { - fake.getIssuerMutex.Lock() - defer fake.getIssuerMutex.Unlock() - fake.GetIssuerStub = nil - fake.getIssuerReturns = struct { +func (fake *IssueAction) SerializeReturns(result1 []byte, result2 error) { + fake.SerializeStub = nil + fake.serializeReturns = struct { result1 []byte - }{result1} + result2 error + }{result1, result2} } -func (fake *IssueAction) GetIssuerReturnsOnCall(i int, result1 []byte) { - fake.getIssuerMutex.Lock() - defer fake.getIssuerMutex.Unlock() - fake.GetIssuerStub = nil - if fake.getIssuerReturnsOnCall == nil { - fake.getIssuerReturnsOnCall = make(map[int]struct { +func (fake *IssueAction) SerializeReturnsOnCall(i int, result1 []byte, result2 error) { + fake.SerializeStub = nil + if fake.serializeReturnsOnCall == nil { + fake.serializeReturnsOnCall = make(map[int]struct { result1 []byte + result2 error }) } - fake.getIssuerReturnsOnCall[i] = struct { + fake.serializeReturnsOnCall[i] = struct { result1 []byte - }{result1} + result2 error + }{result1, result2} } -func (fake *IssueAction) GetMetadata() []byte { - fake.getMetadataMutex.Lock() - ret, specificReturn := fake.getMetadataReturnsOnCall[len(fake.getMetadataArgsForCall)] - fake.getMetadataArgsForCall = append(fake.getMetadataArgsForCall, struct { - }{}) - fake.recordInvocation("GetMetadata", []interface{}{}) - fake.getMetadataMutex.Unlock() - if fake.GetMetadataStub != nil { - return fake.GetMetadataStub() +func (fake *IssueAction) NumOutputs() int { + fake.numOutputsMutex.Lock() + ret, specificReturn := fake.numOutputsReturnsOnCall[len(fake.numOutputsArgsForCall)] + fake.numOutputsArgsForCall = append(fake.numOutputsArgsForCall, struct{}{}) + fake.recordInvocation("NumOutputs", []interface{}{}) + fake.numOutputsMutex.Unlock() + if fake.NumOutputsStub != nil { + return fake.NumOutputsStub() } if specificReturn { return ret.result1 } - fakeReturns := fake.getMetadataReturns - return fakeReturns.result1 + return fake.numOutputsReturns.result1 } -func (fake *IssueAction) GetMetadataCallCount() int { - fake.getMetadataMutex.RLock() - defer fake.getMetadataMutex.RUnlock() - return len(fake.getMetadataArgsForCall) -} - -func (fake *IssueAction) GetMetadataCalls(stub func() []byte) { - fake.getMetadataMutex.Lock() - defer fake.getMetadataMutex.Unlock() - fake.GetMetadataStub = stub +func (fake *IssueAction) NumOutputsCallCount() int { + fake.numOutputsMutex.RLock() + defer fake.numOutputsMutex.RUnlock() + return len(fake.numOutputsArgsForCall) } -func (fake *IssueAction) GetMetadataReturns(result1 []byte) { - fake.getMetadataMutex.Lock() - defer fake.getMetadataMutex.Unlock() - fake.GetMetadataStub = nil - fake.getMetadataReturns = struct { - result1 []byte +func (fake *IssueAction) NumOutputsReturns(result1 int) { + fake.NumOutputsStub = nil + fake.numOutputsReturns = struct { + result1 int }{result1} } -func (fake *IssueAction) GetMetadataReturnsOnCall(i int, result1 []byte) { - fake.getMetadataMutex.Lock() - defer fake.getMetadataMutex.Unlock() - fake.GetMetadataStub = nil - if fake.getMetadataReturnsOnCall == nil { - fake.getMetadataReturnsOnCall = make(map[int]struct { - result1 []byte +func (fake *IssueAction) NumOutputsReturnsOnCall(i int, result1 int) { + fake.NumOutputsStub = nil + if fake.numOutputsReturnsOnCall == nil { + fake.numOutputsReturnsOnCall = make(map[int]struct { + result1 int }) } - fake.getMetadataReturnsOnCall[i] = struct { - result1 []byte + fake.numOutputsReturnsOnCall[i] = struct { + result1 int }{result1} } func (fake *IssueAction) GetSerializedOutputs() ([][]byte, error) { fake.getSerializedOutputsMutex.Lock() ret, specificReturn := fake.getSerializedOutputsReturnsOnCall[len(fake.getSerializedOutputsArgsForCall)] - fake.getSerializedOutputsArgsForCall = append(fake.getSerializedOutputsArgsForCall, struct { - }{}) + fake.getSerializedOutputsArgsForCall = append(fake.getSerializedOutputsArgsForCall, struct{}{}) fake.recordInvocation("GetSerializedOutputs", []interface{}{}) fake.getSerializedOutputsMutex.Unlock() if fake.GetSerializedOutputsStub != nil { @@ -193,8 +165,7 @@ func (fake *IssueAction) GetSerializedOutputs() ([][]byte, error) { if specificReturn { return ret.result1, ret.result2 } - fakeReturns := fake.getSerializedOutputsReturns - return fakeReturns.result1, fakeReturns.result2 + return fake.getSerializedOutputsReturns.result1, fake.getSerializedOutputsReturns.result2 } func (fake *IssueAction) GetSerializedOutputsCallCount() int { @@ -203,15 +174,7 @@ func (fake *IssueAction) GetSerializedOutputsCallCount() int { return len(fake.getSerializedOutputsArgsForCall) } -func (fake *IssueAction) GetSerializedOutputsCalls(stub func() ([][]byte, error)) { - fake.getSerializedOutputsMutex.Lock() - defer fake.getSerializedOutputsMutex.Unlock() - fake.GetSerializedOutputsStub = stub -} - func (fake *IssueAction) GetSerializedOutputsReturns(result1 [][]byte, result2 error) { - fake.getSerializedOutputsMutex.Lock() - defer fake.getSerializedOutputsMutex.Unlock() fake.GetSerializedOutputsStub = nil fake.getSerializedOutputsReturns = struct { result1 [][]byte @@ -220,8 +183,6 @@ func (fake *IssueAction) GetSerializedOutputsReturns(result1 [][]byte, result2 e } func (fake *IssueAction) GetSerializedOutputsReturnsOnCall(i int, result1 [][]byte, result2 error) { - fake.getSerializedOutputsMutex.Lock() - defer fake.getSerializedOutputsMutex.Unlock() fake.GetSerializedOutputsStub = nil if fake.getSerializedOutputsReturnsOnCall == nil { fake.getSerializedOutputsReturnsOnCall = make(map[int]struct { @@ -238,8 +199,7 @@ func (fake *IssueAction) GetSerializedOutputsReturnsOnCall(i int, result1 [][]by func (fake *IssueAction) IsAnonymous() bool { fake.isAnonymousMutex.Lock() ret, specificReturn := fake.isAnonymousReturnsOnCall[len(fake.isAnonymousArgsForCall)] - fake.isAnonymousArgsForCall = append(fake.isAnonymousArgsForCall, struct { - }{}) + fake.isAnonymousArgsForCall = append(fake.isAnonymousArgsForCall, struct{}{}) fake.recordInvocation("IsAnonymous", []interface{}{}) fake.isAnonymousMutex.Unlock() if fake.IsAnonymousStub != nil { @@ -248,8 +208,7 @@ func (fake *IssueAction) IsAnonymous() bool { if specificReturn { return ret.result1 } - fakeReturns := fake.isAnonymousReturns - return fakeReturns.result1 + return fake.isAnonymousReturns.result1 } func (fake *IssueAction) IsAnonymousCallCount() int { @@ -258,15 +217,7 @@ func (fake *IssueAction) IsAnonymousCallCount() int { return len(fake.isAnonymousArgsForCall) } -func (fake *IssueAction) IsAnonymousCalls(stub func() bool) { - fake.isAnonymousMutex.Lock() - defer fake.isAnonymousMutex.Unlock() - fake.IsAnonymousStub = stub -} - func (fake *IssueAction) IsAnonymousReturns(result1 bool) { - fake.isAnonymousMutex.Lock() - defer fake.isAnonymousMutex.Unlock() fake.IsAnonymousStub = nil fake.isAnonymousReturns = struct { result1 bool @@ -274,8 +225,6 @@ func (fake *IssueAction) IsAnonymousReturns(result1 bool) { } func (fake *IssueAction) IsAnonymousReturnsOnCall(i int, result1 bool) { - fake.isAnonymousMutex.Lock() - defer fake.isAnonymousMutex.Unlock() fake.IsAnonymousStub = nil if fake.isAnonymousReturnsOnCall == nil { fake.isAnonymousReturnsOnCall = make(map[int]struct { @@ -287,128 +236,101 @@ func (fake *IssueAction) IsAnonymousReturnsOnCall(i int, result1 bool) { }{result1} } -func (fake *IssueAction) NumOutputs() int { - fake.numOutputsMutex.Lock() - ret, specificReturn := fake.numOutputsReturnsOnCall[len(fake.numOutputsArgsForCall)] - fake.numOutputsArgsForCall = append(fake.numOutputsArgsForCall, struct { - }{}) - fake.recordInvocation("NumOutputs", []interface{}{}) - fake.numOutputsMutex.Unlock() - if fake.NumOutputsStub != nil { - return fake.NumOutputsStub() +func (fake *IssueAction) GetIssuer() []byte { + fake.getIssuerMutex.Lock() + ret, specificReturn := fake.getIssuerReturnsOnCall[len(fake.getIssuerArgsForCall)] + fake.getIssuerArgsForCall = append(fake.getIssuerArgsForCall, struct{}{}) + fake.recordInvocation("GetIssuer", []interface{}{}) + fake.getIssuerMutex.Unlock() + if fake.GetIssuerStub != nil { + return fake.GetIssuerStub() } if specificReturn { return ret.result1 } - fakeReturns := fake.numOutputsReturns - return fakeReturns.result1 -} - -func (fake *IssueAction) NumOutputsCallCount() int { - fake.numOutputsMutex.RLock() - defer fake.numOutputsMutex.RUnlock() - return len(fake.numOutputsArgsForCall) + return fake.getIssuerReturns.result1 } -func (fake *IssueAction) NumOutputsCalls(stub func() int) { - fake.numOutputsMutex.Lock() - defer fake.numOutputsMutex.Unlock() - fake.NumOutputsStub = stub +func (fake *IssueAction) GetIssuerCallCount() int { + fake.getIssuerMutex.RLock() + defer fake.getIssuerMutex.RUnlock() + return len(fake.getIssuerArgsForCall) } -func (fake *IssueAction) NumOutputsReturns(result1 int) { - fake.numOutputsMutex.Lock() - defer fake.numOutputsMutex.Unlock() - fake.NumOutputsStub = nil - fake.numOutputsReturns = struct { - result1 int +func (fake *IssueAction) GetIssuerReturns(result1 []byte) { + fake.GetIssuerStub = nil + fake.getIssuerReturns = struct { + result1 []byte }{result1} } -func (fake *IssueAction) NumOutputsReturnsOnCall(i int, result1 int) { - fake.numOutputsMutex.Lock() - defer fake.numOutputsMutex.Unlock() - fake.NumOutputsStub = nil - if fake.numOutputsReturnsOnCall == nil { - fake.numOutputsReturnsOnCall = make(map[int]struct { - result1 int +func (fake *IssueAction) GetIssuerReturnsOnCall(i int, result1 []byte) { + fake.GetIssuerStub = nil + if fake.getIssuerReturnsOnCall == nil { + fake.getIssuerReturnsOnCall = make(map[int]struct { + result1 []byte }) } - fake.numOutputsReturnsOnCall[i] = struct { - result1 int + fake.getIssuerReturnsOnCall[i] = struct { + result1 []byte }{result1} } -func (fake *IssueAction) Serialize() ([]byte, error) { - fake.serializeMutex.Lock() - ret, specificReturn := fake.serializeReturnsOnCall[len(fake.serializeArgsForCall)] - fake.serializeArgsForCall = append(fake.serializeArgsForCall, struct { - }{}) - fake.recordInvocation("Serialize", []interface{}{}) - fake.serializeMutex.Unlock() - if fake.SerializeStub != nil { - return fake.SerializeStub() +func (fake *IssueAction) GetMetadata() []byte { + fake.getMetadataMutex.Lock() + ret, specificReturn := fake.getMetadataReturnsOnCall[len(fake.getMetadataArgsForCall)] + fake.getMetadataArgsForCall = append(fake.getMetadataArgsForCall, struct{}{}) + fake.recordInvocation("GetMetadata", []interface{}{}) + fake.getMetadataMutex.Unlock() + if fake.GetMetadataStub != nil { + return fake.GetMetadataStub() } if specificReturn { - return ret.result1, ret.result2 + return ret.result1 } - fakeReturns := fake.serializeReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *IssueAction) SerializeCallCount() int { - fake.serializeMutex.RLock() - defer fake.serializeMutex.RUnlock() - return len(fake.serializeArgsForCall) + return fake.getMetadataReturns.result1 } -func (fake *IssueAction) SerializeCalls(stub func() ([]byte, error)) { - fake.serializeMutex.Lock() - defer fake.serializeMutex.Unlock() - fake.SerializeStub = stub +func (fake *IssueAction) GetMetadataCallCount() int { + fake.getMetadataMutex.RLock() + defer fake.getMetadataMutex.RUnlock() + return len(fake.getMetadataArgsForCall) } -func (fake *IssueAction) SerializeReturns(result1 []byte, result2 error) { - fake.serializeMutex.Lock() - defer fake.serializeMutex.Unlock() - fake.SerializeStub = nil - fake.serializeReturns = struct { +func (fake *IssueAction) GetMetadataReturns(result1 []byte) { + fake.GetMetadataStub = nil + fake.getMetadataReturns = struct { result1 []byte - result2 error - }{result1, result2} + }{result1} } -func (fake *IssueAction) SerializeReturnsOnCall(i int, result1 []byte, result2 error) { - fake.serializeMutex.Lock() - defer fake.serializeMutex.Unlock() - fake.SerializeStub = nil - if fake.serializeReturnsOnCall == nil { - fake.serializeReturnsOnCall = make(map[int]struct { +func (fake *IssueAction) GetMetadataReturnsOnCall(i int, result1 []byte) { + fake.GetMetadataStub = nil + if fake.getMetadataReturnsOnCall == nil { + fake.getMetadataReturnsOnCall = make(map[int]struct { result1 []byte - result2 error }) } - fake.serializeReturnsOnCall[i] = struct { + fake.getMetadataReturnsOnCall[i] = struct { result1 []byte - result2 error - }{result1, result2} + }{result1} } func (fake *IssueAction) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getIssuerMutex.RLock() - defer fake.getIssuerMutex.RUnlock() - fake.getMetadataMutex.RLock() - defer fake.getMetadataMutex.RUnlock() + fake.serializeMutex.RLock() + defer fake.serializeMutex.RUnlock() + fake.numOutputsMutex.RLock() + defer fake.numOutputsMutex.RUnlock() fake.getSerializedOutputsMutex.RLock() defer fake.getSerializedOutputsMutex.RUnlock() fake.isAnonymousMutex.RLock() defer fake.isAnonymousMutex.RUnlock() - fake.numOutputsMutex.RLock() - defer fake.numOutputsMutex.RUnlock() - fake.serializeMutex.RLock() - defer fake.serializeMutex.RUnlock() + fake.getIssuerMutex.RLock() + defer fake.getIssuerMutex.RUnlock() + fake.getMetadataMutex.RLock() + defer fake.getMetadataMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/token/services/vault/translator/mock/issuing_validator.go b/token/services/vault/translator/mock/issuing_validator.go index 03da31a24..324513c24 100644 --- a/token/services/vault/translator/mock/issuing_validator.go +++ b/token/services/vault/translator/mock/issuing_validator.go @@ -9,11 +9,11 @@ import ( ) type IssuingValidator struct { - ValidateStub func(view.Identity, string) error + ValidateStub func(creator view.Identity, tokenType string) error validateMutex sync.RWMutex validateArgsForCall []struct { - arg1 view.Identity - arg2 string + creator view.Identity + tokenType string } validateReturns struct { result1 error @@ -25,23 +25,22 @@ type IssuingValidator struct { invocationsMutex sync.RWMutex } -func (fake *IssuingValidator) Validate(arg1 view.Identity, arg2 string) error { +func (fake *IssuingValidator) Validate(creator view.Identity, tokenType string) error { fake.validateMutex.Lock() ret, specificReturn := fake.validateReturnsOnCall[len(fake.validateArgsForCall)] fake.validateArgsForCall = append(fake.validateArgsForCall, struct { - arg1 view.Identity - arg2 string - }{arg1, arg2}) - fake.recordInvocation("Validate", []interface{}{arg1, arg2}) + creator view.Identity + tokenType string + }{creator, tokenType}) + fake.recordInvocation("Validate", []interface{}{creator, tokenType}) fake.validateMutex.Unlock() if fake.ValidateStub != nil { - return fake.ValidateStub(arg1, arg2) + return fake.ValidateStub(creator, tokenType) } if specificReturn { return ret.result1 } - fakeReturns := fake.validateReturns - return fakeReturns.result1 + return fake.validateReturns.result1 } func (fake *IssuingValidator) ValidateCallCount() int { @@ -50,22 +49,13 @@ func (fake *IssuingValidator) ValidateCallCount() int { return len(fake.validateArgsForCall) } -func (fake *IssuingValidator) ValidateCalls(stub func(view.Identity, string) error) { - fake.validateMutex.Lock() - defer fake.validateMutex.Unlock() - fake.ValidateStub = stub -} - func (fake *IssuingValidator) ValidateArgsForCall(i int) (view.Identity, string) { fake.validateMutex.RLock() defer fake.validateMutex.RUnlock() - argsForCall := fake.validateArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2 + return fake.validateArgsForCall[i].creator, fake.validateArgsForCall[i].tokenType } func (fake *IssuingValidator) ValidateReturns(result1 error) { - fake.validateMutex.Lock() - defer fake.validateMutex.Unlock() fake.ValidateStub = nil fake.validateReturns = struct { result1 error @@ -73,8 +63,6 @@ func (fake *IssuingValidator) ValidateReturns(result1 error) { } func (fake *IssuingValidator) ValidateReturnsOnCall(i int, result1 error) { - fake.validateMutex.Lock() - defer fake.validateMutex.Unlock() fake.ValidateStub = nil if fake.validateReturnsOnCall == nil { fake.validateReturnsOnCall = make(map[int]struct { diff --git a/token/services/vault/translator/mock/rwset.go b/token/services/vault/translator/mock/rwset.go index 9b66209ef..4a554fd80 100644 --- a/token/services/vault/translator/mock/rwset.go +++ b/token/services/vault/translator/mock/rwset.go @@ -4,73 +4,28 @@ package mock import ( "sync" - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator" ) type RWSet struct { - AppendRWSetStub func([]byte, ...string) error - appendRWSetMutex sync.RWMutex - appendRWSetArgsForCall []struct { - arg1 []byte - arg2 []string - } - appendRWSetReturns struct { - result1 error - } - appendRWSetReturnsOnCall map[int]struct { - result1 error - } - BytesStub func() ([]byte, error) - bytesMutex sync.RWMutex - bytesArgsForCall []struct { - } - bytesReturns struct { - result1 []byte - result2 error - } - bytesReturnsOnCall map[int]struct { - result1 []byte - result2 error - } - DeleteStateStub func(string, string) error - deleteStateMutex sync.RWMutex - deleteStateArgsForCall []struct { - arg1 string - arg2 string + SetStateStub func(namespace string, key string, value []byte) error + setStateMutex sync.RWMutex + setStateArgsForCall []struct { + namespace string + key string + value []byte } - deleteStateReturns struct { + setStateReturns struct { result1 error } - deleteStateReturnsOnCall map[int]struct { + setStateReturnsOnCall map[int]struct { result1 error } - DoneStub func() - doneMutex sync.RWMutex - doneArgsForCall []struct { - } - GetReadAtStub func(string, int) (string, []byte, error) - getReadAtMutex sync.RWMutex - getReadAtArgsForCall []struct { - arg1 string - arg2 int - } - getReadAtReturns struct { - result1 string - result2 []byte - result3 error - } - getReadAtReturnsOnCall map[int]struct { - result1 string - result2 []byte - result3 error - } - GetStateStub func(string, string, ...fabric.GetStateOpt) ([]byte, error) + GetStateStub func(namespace string, key string) ([]byte, error) getStateMutex sync.RWMutex getStateArgsForCall []struct { - arg1 string - arg2 string - arg3 []fabric.GetStateOpt + namespace string + key string } getStateReturns struct { result1 []byte @@ -80,88 +35,24 @@ type RWSet struct { result1 []byte result2 error } - GetStateMetadataStub func(string, string, ...fabric.GetStateOpt) (map[string][]byte, error) - getStateMetadataMutex sync.RWMutex - getStateMetadataArgsForCall []struct { - arg1 string - arg2 string - arg3 []fabric.GetStateOpt - } - getStateMetadataReturns struct { - result1 map[string][]byte - result2 error - } - getStateMetadataReturnsOnCall map[int]struct { - result1 map[string][]byte - result2 error - } - GetWriteAtStub func(string, int) (string, []byte, error) - getWriteAtMutex sync.RWMutex - getWriteAtArgsForCall []struct { - arg1 string - arg2 int - } - getWriteAtReturns struct { - result1 string - result2 []byte - result3 error - } - getWriteAtReturnsOnCall map[int]struct { - result1 string - result2 []byte - result3 error - } - NamespacesStub func() []string - namespacesMutex sync.RWMutex - namespacesArgsForCall []struct { - } - namespacesReturns struct { - result1 []string - } - namespacesReturnsOnCall map[int]struct { - result1 []string - } - NumReadsStub func(string) int - numReadsMutex sync.RWMutex - numReadsArgsForCall []struct { - arg1 string - } - numReadsReturns struct { - result1 int - } - numReadsReturnsOnCall map[int]struct { - result1 int - } - NumWritesStub func(string) int - numWritesMutex sync.RWMutex - numWritesArgsForCall []struct { - arg1 string - } - numWritesReturns struct { - result1 int - } - numWritesReturnsOnCall map[int]struct { - result1 int - } - SetStateStub func(string, string, []byte) error - setStateMutex sync.RWMutex - setStateArgsForCall []struct { - arg1 string - arg2 string - arg3 []byte + DeleteStateStub func(namespace string, key string) error + deleteStateMutex sync.RWMutex + deleteStateArgsForCall []struct { + namespace string + key string } - setStateReturns struct { + deleteStateReturns struct { result1 error } - setStateReturnsOnCall map[int]struct { + deleteStateReturnsOnCall map[int]struct { result1 error } - SetStateMetadataStub func(string, string, map[string][]byte) error + SetStateMetadataStub func(namespace, key string, metadata map[string][]byte) error setStateMetadataMutex sync.RWMutex setStateMetadataArgsForCall []struct { - arg1 string - arg2 string - arg3 map[string][]byte + namespace string + key string + metadata map[string][]byte } setStateMetadataReturns struct { result1 error @@ -169,300 +60,93 @@ type RWSet struct { setStateMetadataReturnsOnCall map[int]struct { result1 error } - invocations map[string][][]interface{} - invocationsMutex sync.RWMutex -} - -func (fake *RWSet) AppendRWSet(arg1 []byte, arg2 ...string) error { - var arg1Copy []byte - if arg1 != nil { - arg1Copy = make([]byte, len(arg1)) - copy(arg1Copy, arg1) - } - fake.appendRWSetMutex.Lock() - ret, specificReturn := fake.appendRWSetReturnsOnCall[len(fake.appendRWSetArgsForCall)] - fake.appendRWSetArgsForCall = append(fake.appendRWSetArgsForCall, struct { - arg1 []byte - arg2 []string - }{arg1Copy, arg2}) - fake.recordInvocation("AppendRWSet", []interface{}{arg1Copy, arg2}) - fake.appendRWSetMutex.Unlock() - if fake.AppendRWSetStub != nil { - return fake.AppendRWSetStub(arg1, arg2...) - } - if specificReturn { - return ret.result1 + EqualsStub func(rwset interface{}, namespace string) error + equalsMutex sync.RWMutex + equalsArgsForCall []struct { + rwset interface{} + namespace string } - fakeReturns := fake.appendRWSetReturns - return fakeReturns.result1 -} - -func (fake *RWSet) AppendRWSetCallCount() int { - fake.appendRWSetMutex.RLock() - defer fake.appendRWSetMutex.RUnlock() - return len(fake.appendRWSetArgsForCall) -} - -func (fake *RWSet) AppendRWSetCalls(stub func([]byte, ...string) error) { - fake.appendRWSetMutex.Lock() - defer fake.appendRWSetMutex.Unlock() - fake.AppendRWSetStub = stub -} - -func (fake *RWSet) AppendRWSetArgsForCall(i int) ([]byte, []string) { - fake.appendRWSetMutex.RLock() - defer fake.appendRWSetMutex.RUnlock() - argsForCall := fake.appendRWSetArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2 -} - -func (fake *RWSet) AppendRWSetReturns(result1 error) { - fake.appendRWSetMutex.Lock() - defer fake.appendRWSetMutex.Unlock() - fake.AppendRWSetStub = nil - fake.appendRWSetReturns = struct { + equalsReturns struct { result1 error - }{result1} -} - -func (fake *RWSet) AppendRWSetReturnsOnCall(i int, result1 error) { - fake.appendRWSetMutex.Lock() - defer fake.appendRWSetMutex.Unlock() - fake.AppendRWSetStub = nil - if fake.appendRWSetReturnsOnCall == nil { - fake.appendRWSetReturnsOnCall = make(map[int]struct { - result1 error - }) } - fake.appendRWSetReturnsOnCall[i] = struct { + equalsReturnsOnCall map[int]struct { result1 error - }{result1} -} - -func (fake *RWSet) Bytes() ([]byte, error) { - fake.bytesMutex.Lock() - ret, specificReturn := fake.bytesReturnsOnCall[len(fake.bytesArgsForCall)] - fake.bytesArgsForCall = append(fake.bytesArgsForCall, struct { - }{}) - fake.recordInvocation("Bytes", []interface{}{}) - fake.bytesMutex.Unlock() - if fake.BytesStub != nil { - return fake.BytesStub() } - if specificReturn { - return ret.result1, ret.result2 - } - fakeReturns := fake.bytesReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *RWSet) BytesCallCount() int { - fake.bytesMutex.RLock() - defer fake.bytesMutex.RUnlock() - return len(fake.bytesArgsForCall) -} - -func (fake *RWSet) BytesCalls(stub func() ([]byte, error)) { - fake.bytesMutex.Lock() - defer fake.bytesMutex.Unlock() - fake.BytesStub = stub -} - -func (fake *RWSet) BytesReturns(result1 []byte, result2 error) { - fake.bytesMutex.Lock() - defer fake.bytesMutex.Unlock() - fake.BytesStub = nil - fake.bytesReturns = struct { - result1 []byte - result2 error - }{result1, result2} + invocations map[string][][]interface{} + invocationsMutex sync.RWMutex } -func (fake *RWSet) BytesReturnsOnCall(i int, result1 []byte, result2 error) { - fake.bytesMutex.Lock() - defer fake.bytesMutex.Unlock() - fake.BytesStub = nil - if fake.bytesReturnsOnCall == nil { - fake.bytesReturnsOnCall = make(map[int]struct { - result1 []byte - result2 error - }) +func (fake *RWSet) SetState(namespace string, key string, value []byte) error { + var valueCopy []byte + if value != nil { + valueCopy = make([]byte, len(value)) + copy(valueCopy, value) } - fake.bytesReturnsOnCall[i] = struct { - result1 []byte - result2 error - }{result1, result2} -} - -func (fake *RWSet) DeleteState(arg1 string, arg2 string) error { - fake.deleteStateMutex.Lock() - ret, specificReturn := fake.deleteStateReturnsOnCall[len(fake.deleteStateArgsForCall)] - fake.deleteStateArgsForCall = append(fake.deleteStateArgsForCall, struct { - arg1 string - arg2 string - }{arg1, arg2}) - fake.recordInvocation("DeleteState", []interface{}{arg1, arg2}) - fake.deleteStateMutex.Unlock() - if fake.DeleteStateStub != nil { - return fake.DeleteStateStub(arg1, arg2) + fake.setStateMutex.Lock() + ret, specificReturn := fake.setStateReturnsOnCall[len(fake.setStateArgsForCall)] + fake.setStateArgsForCall = append(fake.setStateArgsForCall, struct { + namespace string + key string + value []byte + }{namespace, key, valueCopy}) + fake.recordInvocation("SetState", []interface{}{namespace, key, valueCopy}) + fake.setStateMutex.Unlock() + if fake.SetStateStub != nil { + return fake.SetStateStub(namespace, key, value) } if specificReturn { return ret.result1 } - fakeReturns := fake.deleteStateReturns - return fakeReturns.result1 + return fake.setStateReturns.result1 } -func (fake *RWSet) DeleteStateCallCount() int { - fake.deleteStateMutex.RLock() - defer fake.deleteStateMutex.RUnlock() - return len(fake.deleteStateArgsForCall) -} - -func (fake *RWSet) DeleteStateCalls(stub func(string, string) error) { - fake.deleteStateMutex.Lock() - defer fake.deleteStateMutex.Unlock() - fake.DeleteStateStub = stub +func (fake *RWSet) SetStateCallCount() int { + fake.setStateMutex.RLock() + defer fake.setStateMutex.RUnlock() + return len(fake.setStateArgsForCall) } -func (fake *RWSet) DeleteStateArgsForCall(i int) (string, string) { - fake.deleteStateMutex.RLock() - defer fake.deleteStateMutex.RUnlock() - argsForCall := fake.deleteStateArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2 +func (fake *RWSet) SetStateArgsForCall(i int) (string, string, []byte) { + fake.setStateMutex.RLock() + defer fake.setStateMutex.RUnlock() + return fake.setStateArgsForCall[i].namespace, fake.setStateArgsForCall[i].key, fake.setStateArgsForCall[i].value } -func (fake *RWSet) DeleteStateReturns(result1 error) { - fake.deleteStateMutex.Lock() - defer fake.deleteStateMutex.Unlock() - fake.DeleteStateStub = nil - fake.deleteStateReturns = struct { +func (fake *RWSet) SetStateReturns(result1 error) { + fake.SetStateStub = nil + fake.setStateReturns = struct { result1 error }{result1} } -func (fake *RWSet) DeleteStateReturnsOnCall(i int, result1 error) { - fake.deleteStateMutex.Lock() - defer fake.deleteStateMutex.Unlock() - fake.DeleteStateStub = nil - if fake.deleteStateReturnsOnCall == nil { - fake.deleteStateReturnsOnCall = make(map[int]struct { +func (fake *RWSet) SetStateReturnsOnCall(i int, result1 error) { + fake.SetStateStub = nil + if fake.setStateReturnsOnCall == nil { + fake.setStateReturnsOnCall = make(map[int]struct { result1 error }) } - fake.deleteStateReturnsOnCall[i] = struct { + fake.setStateReturnsOnCall[i] = struct { result1 error }{result1} } -func (fake *RWSet) Done() { - fake.doneMutex.Lock() - fake.doneArgsForCall = append(fake.doneArgsForCall, struct { - }{}) - fake.recordInvocation("Done", []interface{}{}) - fake.doneMutex.Unlock() - if fake.DoneStub != nil { - fake.DoneStub() - } -} - -func (fake *RWSet) DoneCallCount() int { - fake.doneMutex.RLock() - defer fake.doneMutex.RUnlock() - return len(fake.doneArgsForCall) -} - -func (fake *RWSet) DoneCalls(stub func()) { - fake.doneMutex.Lock() - defer fake.doneMutex.Unlock() - fake.DoneStub = stub -} - -func (fake *RWSet) GetReadAt(arg1 string, arg2 int) (string, []byte, error) { - fake.getReadAtMutex.Lock() - ret, specificReturn := fake.getReadAtReturnsOnCall[len(fake.getReadAtArgsForCall)] - fake.getReadAtArgsForCall = append(fake.getReadAtArgsForCall, struct { - arg1 string - arg2 int - }{arg1, arg2}) - fake.recordInvocation("GetReadAt", []interface{}{arg1, arg2}) - fake.getReadAtMutex.Unlock() - if fake.GetReadAtStub != nil { - return fake.GetReadAtStub(arg1, arg2) - } - if specificReturn { - return ret.result1, ret.result2, ret.result3 - } - fakeReturns := fake.getReadAtReturns - return fakeReturns.result1, fakeReturns.result2, fakeReturns.result3 -} - -func (fake *RWSet) GetReadAtCallCount() int { - fake.getReadAtMutex.RLock() - defer fake.getReadAtMutex.RUnlock() - return len(fake.getReadAtArgsForCall) -} - -func (fake *RWSet) GetReadAtCalls(stub func(string, int) (string, []byte, error)) { - fake.getReadAtMutex.Lock() - defer fake.getReadAtMutex.Unlock() - fake.GetReadAtStub = stub -} - -func (fake *RWSet) GetReadAtArgsForCall(i int) (string, int) { - fake.getReadAtMutex.RLock() - defer fake.getReadAtMutex.RUnlock() - argsForCall := fake.getReadAtArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2 -} - -func (fake *RWSet) GetReadAtReturns(result1 string, result2 []byte, result3 error) { - fake.getReadAtMutex.Lock() - defer fake.getReadAtMutex.Unlock() - fake.GetReadAtStub = nil - fake.getReadAtReturns = struct { - result1 string - result2 []byte - result3 error - }{result1, result2, result3} -} - -func (fake *RWSet) GetReadAtReturnsOnCall(i int, result1 string, result2 []byte, result3 error) { - fake.getReadAtMutex.Lock() - defer fake.getReadAtMutex.Unlock() - fake.GetReadAtStub = nil - if fake.getReadAtReturnsOnCall == nil { - fake.getReadAtReturnsOnCall = make(map[int]struct { - result1 string - result2 []byte - result3 error - }) - } - fake.getReadAtReturnsOnCall[i] = struct { - result1 string - result2 []byte - result3 error - }{result1, result2, result3} -} - -func (fake *RWSet) GetState(arg1 string, arg2 string, arg3 ...fabric.GetStateOpt) ([]byte, error) { +func (fake *RWSet) GetState(namespace string, key string) ([]byte, error) { fake.getStateMutex.Lock() ret, specificReturn := fake.getStateReturnsOnCall[len(fake.getStateArgsForCall)] fake.getStateArgsForCall = append(fake.getStateArgsForCall, struct { - arg1 string - arg2 string - arg3 []fabric.GetStateOpt - }{arg1, arg2, arg3}) - fake.recordInvocation("GetState", []interface{}{arg1, arg2, arg3}) + namespace string + key string + }{namespace, key}) + fake.recordInvocation("GetState", []interface{}{namespace, key}) fake.getStateMutex.Unlock() if fake.GetStateStub != nil { - return fake.GetStateStub(arg1, arg2, arg3...) + return fake.GetStateStub(namespace, key) } if specificReturn { return ret.result1, ret.result2 } - fakeReturns := fake.getStateReturns - return fakeReturns.result1, fakeReturns.result2 + return fake.getStateReturns.result1, fake.getStateReturns.result2 } func (fake *RWSet) GetStateCallCount() int { @@ -471,22 +155,13 @@ func (fake *RWSet) GetStateCallCount() int { return len(fake.getStateArgsForCall) } -func (fake *RWSet) GetStateCalls(stub func(string, string, ...fabric.GetStateOpt) ([]byte, error)) { - fake.getStateMutex.Lock() - defer fake.getStateMutex.Unlock() - fake.GetStateStub = stub -} - -func (fake *RWSet) GetStateArgsForCall(i int) (string, string, []fabric.GetStateOpt) { +func (fake *RWSet) GetStateArgsForCall(i int) (string, string) { fake.getStateMutex.RLock() defer fake.getStateMutex.RUnlock() - argsForCall := fake.getStateArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 + return fake.getStateArgsForCall[i].namespace, fake.getStateArgsForCall[i].key } func (fake *RWSet) GetStateReturns(result1 []byte, result2 error) { - fake.getStateMutex.Lock() - defer fake.getStateMutex.Unlock() fake.GetStateStub = nil fake.getStateReturns = struct { result1 []byte @@ -495,8 +170,6 @@ func (fake *RWSet) GetStateReturns(result1 []byte, result2 error) { } func (fake *RWSet) GetStateReturnsOnCall(i int, result1 []byte, result2 error) { - fake.getStateMutex.Lock() - defer fake.getStateMutex.Unlock() fake.GetStateStub = nil if fake.getStateReturnsOnCall == nil { fake.getStateReturnsOnCall = make(map[int]struct { @@ -510,395 +183,72 @@ func (fake *RWSet) GetStateReturnsOnCall(i int, result1 []byte, result2 error) { }{result1, result2} } -func (fake *RWSet) GetStateMetadata(arg1 string, arg2 string, arg3 ...fabric.GetStateOpt) (map[string][]byte, error) { - fake.getStateMetadataMutex.Lock() - ret, specificReturn := fake.getStateMetadataReturnsOnCall[len(fake.getStateMetadataArgsForCall)] - fake.getStateMetadataArgsForCall = append(fake.getStateMetadataArgsForCall, struct { - arg1 string - arg2 string - arg3 []fabric.GetStateOpt - }{arg1, arg2, arg3}) - fake.recordInvocation("GetStateMetadata", []interface{}{arg1, arg2, arg3}) - fake.getStateMetadataMutex.Unlock() - if fake.GetStateMetadataStub != nil { - return fake.GetStateMetadataStub(arg1, arg2, arg3...) - } - if specificReturn { - return ret.result1, ret.result2 - } - fakeReturns := fake.getStateMetadataReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *RWSet) GetStateMetadataCallCount() int { - fake.getStateMetadataMutex.RLock() - defer fake.getStateMetadataMutex.RUnlock() - return len(fake.getStateMetadataArgsForCall) -} - -func (fake *RWSet) GetStateMetadataCalls(stub func(string, string, ...fabric.GetStateOpt) (map[string][]byte, error)) { - fake.getStateMetadataMutex.Lock() - defer fake.getStateMetadataMutex.Unlock() - fake.GetStateMetadataStub = stub -} - -func (fake *RWSet) GetStateMetadataArgsForCall(i int) (string, string, []fabric.GetStateOpt) { - fake.getStateMetadataMutex.RLock() - defer fake.getStateMetadataMutex.RUnlock() - argsForCall := fake.getStateMetadataArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 -} - -func (fake *RWSet) GetStateMetadataReturns(result1 map[string][]byte, result2 error) { - fake.getStateMetadataMutex.Lock() - defer fake.getStateMetadataMutex.Unlock() - fake.GetStateMetadataStub = nil - fake.getStateMetadataReturns = struct { - result1 map[string][]byte - result2 error - }{result1, result2} -} - -func (fake *RWSet) GetStateMetadataReturnsOnCall(i int, result1 map[string][]byte, result2 error) { - fake.getStateMetadataMutex.Lock() - defer fake.getStateMetadataMutex.Unlock() - fake.GetStateMetadataStub = nil - if fake.getStateMetadataReturnsOnCall == nil { - fake.getStateMetadataReturnsOnCall = make(map[int]struct { - result1 map[string][]byte - result2 error - }) - } - fake.getStateMetadataReturnsOnCall[i] = struct { - result1 map[string][]byte - result2 error - }{result1, result2} -} - -func (fake *RWSet) GetWriteAt(arg1 string, arg2 int) (string, []byte, error) { - fake.getWriteAtMutex.Lock() - ret, specificReturn := fake.getWriteAtReturnsOnCall[len(fake.getWriteAtArgsForCall)] - fake.getWriteAtArgsForCall = append(fake.getWriteAtArgsForCall, struct { - arg1 string - arg2 int - }{arg1, arg2}) - fake.recordInvocation("GetWriteAt", []interface{}{arg1, arg2}) - fake.getWriteAtMutex.Unlock() - if fake.GetWriteAtStub != nil { - return fake.GetWriteAtStub(arg1, arg2) - } - if specificReturn { - return ret.result1, ret.result2, ret.result3 - } - fakeReturns := fake.getWriteAtReturns - return fakeReturns.result1, fakeReturns.result2, fakeReturns.result3 -} - -func (fake *RWSet) GetWriteAtCallCount() int { - fake.getWriteAtMutex.RLock() - defer fake.getWriteAtMutex.RUnlock() - return len(fake.getWriteAtArgsForCall) -} - -func (fake *RWSet) GetWriteAtCalls(stub func(string, int) (string, []byte, error)) { - fake.getWriteAtMutex.Lock() - defer fake.getWriteAtMutex.Unlock() - fake.GetWriteAtStub = stub -} - -func (fake *RWSet) GetWriteAtArgsForCall(i int) (string, int) { - fake.getWriteAtMutex.RLock() - defer fake.getWriteAtMutex.RUnlock() - argsForCall := fake.getWriteAtArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2 -} - -func (fake *RWSet) GetWriteAtReturns(result1 string, result2 []byte, result3 error) { - fake.getWriteAtMutex.Lock() - defer fake.getWriteAtMutex.Unlock() - fake.GetWriteAtStub = nil - fake.getWriteAtReturns = struct { - result1 string - result2 []byte - result3 error - }{result1, result2, result3} -} - -func (fake *RWSet) GetWriteAtReturnsOnCall(i int, result1 string, result2 []byte, result3 error) { - fake.getWriteAtMutex.Lock() - defer fake.getWriteAtMutex.Unlock() - fake.GetWriteAtStub = nil - if fake.getWriteAtReturnsOnCall == nil { - fake.getWriteAtReturnsOnCall = make(map[int]struct { - result1 string - result2 []byte - result3 error - }) - } - fake.getWriteAtReturnsOnCall[i] = struct { - result1 string - result2 []byte - result3 error - }{result1, result2, result3} -} - -func (fake *RWSet) Namespaces() []string { - fake.namespacesMutex.Lock() - ret, specificReturn := fake.namespacesReturnsOnCall[len(fake.namespacesArgsForCall)] - fake.namespacesArgsForCall = append(fake.namespacesArgsForCall, struct { - }{}) - fake.recordInvocation("Namespaces", []interface{}{}) - fake.namespacesMutex.Unlock() - if fake.NamespacesStub != nil { - return fake.NamespacesStub() - } - if specificReturn { - return ret.result1 - } - fakeReturns := fake.namespacesReturns - return fakeReturns.result1 -} - -func (fake *RWSet) NamespacesCallCount() int { - fake.namespacesMutex.RLock() - defer fake.namespacesMutex.RUnlock() - return len(fake.namespacesArgsForCall) -} - -func (fake *RWSet) NamespacesCalls(stub func() []string) { - fake.namespacesMutex.Lock() - defer fake.namespacesMutex.Unlock() - fake.NamespacesStub = stub -} - -func (fake *RWSet) NamespacesReturns(result1 []string) { - fake.namespacesMutex.Lock() - defer fake.namespacesMutex.Unlock() - fake.NamespacesStub = nil - fake.namespacesReturns = struct { - result1 []string - }{result1} -} - -func (fake *RWSet) NamespacesReturnsOnCall(i int, result1 []string) { - fake.namespacesMutex.Lock() - defer fake.namespacesMutex.Unlock() - fake.NamespacesStub = nil - if fake.namespacesReturnsOnCall == nil { - fake.namespacesReturnsOnCall = make(map[int]struct { - result1 []string - }) - } - fake.namespacesReturnsOnCall[i] = struct { - result1 []string - }{result1} -} - -func (fake *RWSet) NumReads(arg1 string) int { - fake.numReadsMutex.Lock() - ret, specificReturn := fake.numReadsReturnsOnCall[len(fake.numReadsArgsForCall)] - fake.numReadsArgsForCall = append(fake.numReadsArgsForCall, struct { - arg1 string - }{arg1}) - fake.recordInvocation("NumReads", []interface{}{arg1}) - fake.numReadsMutex.Unlock() - if fake.NumReadsStub != nil { - return fake.NumReadsStub(arg1) - } - if specificReturn { - return ret.result1 - } - fakeReturns := fake.numReadsReturns - return fakeReturns.result1 -} - -func (fake *RWSet) NumReadsCallCount() int { - fake.numReadsMutex.RLock() - defer fake.numReadsMutex.RUnlock() - return len(fake.numReadsArgsForCall) -} - -func (fake *RWSet) NumReadsCalls(stub func(string) int) { - fake.numReadsMutex.Lock() - defer fake.numReadsMutex.Unlock() - fake.NumReadsStub = stub -} - -func (fake *RWSet) NumReadsArgsForCall(i int) string { - fake.numReadsMutex.RLock() - defer fake.numReadsMutex.RUnlock() - argsForCall := fake.numReadsArgsForCall[i] - return argsForCall.arg1 -} - -func (fake *RWSet) NumReadsReturns(result1 int) { - fake.numReadsMutex.Lock() - defer fake.numReadsMutex.Unlock() - fake.NumReadsStub = nil - fake.numReadsReturns = struct { - result1 int - }{result1} -} - -func (fake *RWSet) NumReadsReturnsOnCall(i int, result1 int) { - fake.numReadsMutex.Lock() - defer fake.numReadsMutex.Unlock() - fake.NumReadsStub = nil - if fake.numReadsReturnsOnCall == nil { - fake.numReadsReturnsOnCall = make(map[int]struct { - result1 int - }) - } - fake.numReadsReturnsOnCall[i] = struct { - result1 int - }{result1} -} - -func (fake *RWSet) NumWrites(arg1 string) int { - fake.numWritesMutex.Lock() - ret, specificReturn := fake.numWritesReturnsOnCall[len(fake.numWritesArgsForCall)] - fake.numWritesArgsForCall = append(fake.numWritesArgsForCall, struct { - arg1 string - }{arg1}) - fake.recordInvocation("NumWrites", []interface{}{arg1}) - fake.numWritesMutex.Unlock() - if fake.NumWritesStub != nil { - return fake.NumWritesStub(arg1) - } - if specificReturn { - return ret.result1 - } - fakeReturns := fake.numWritesReturns - return fakeReturns.result1 -} - -func (fake *RWSet) NumWritesCallCount() int { - fake.numWritesMutex.RLock() - defer fake.numWritesMutex.RUnlock() - return len(fake.numWritesArgsForCall) -} - -func (fake *RWSet) NumWritesCalls(stub func(string) int) { - fake.numWritesMutex.Lock() - defer fake.numWritesMutex.Unlock() - fake.NumWritesStub = stub -} - -func (fake *RWSet) NumWritesArgsForCall(i int) string { - fake.numWritesMutex.RLock() - defer fake.numWritesMutex.RUnlock() - argsForCall := fake.numWritesArgsForCall[i] - return argsForCall.arg1 -} - -func (fake *RWSet) NumWritesReturns(result1 int) { - fake.numWritesMutex.Lock() - defer fake.numWritesMutex.Unlock() - fake.NumWritesStub = nil - fake.numWritesReturns = struct { - result1 int - }{result1} -} - -func (fake *RWSet) NumWritesReturnsOnCall(i int, result1 int) { - fake.numWritesMutex.Lock() - defer fake.numWritesMutex.Unlock() - fake.NumWritesStub = nil - if fake.numWritesReturnsOnCall == nil { - fake.numWritesReturnsOnCall = make(map[int]struct { - result1 int - }) - } - fake.numWritesReturnsOnCall[i] = struct { - result1 int - }{result1} -} - -func (fake *RWSet) SetState(arg1 string, arg2 string, arg3 []byte) error { - var arg3Copy []byte - if arg3 != nil { - arg3Copy = make([]byte, len(arg3)) - copy(arg3Copy, arg3) - } - fake.setStateMutex.Lock() - ret, specificReturn := fake.setStateReturnsOnCall[len(fake.setStateArgsForCall)] - fake.setStateArgsForCall = append(fake.setStateArgsForCall, struct { - arg1 string - arg2 string - arg3 []byte - }{arg1, arg2, arg3Copy}) - fake.recordInvocation("SetState", []interface{}{arg1, arg2, arg3Copy}) - fake.setStateMutex.Unlock() - if fake.SetStateStub != nil { - return fake.SetStateStub(arg1, arg2, arg3) +func (fake *RWSet) DeleteState(namespace string, key string) error { + fake.deleteStateMutex.Lock() + ret, specificReturn := fake.deleteStateReturnsOnCall[len(fake.deleteStateArgsForCall)] + fake.deleteStateArgsForCall = append(fake.deleteStateArgsForCall, struct { + namespace string + key string + }{namespace, key}) + fake.recordInvocation("DeleteState", []interface{}{namespace, key}) + fake.deleteStateMutex.Unlock() + if fake.DeleteStateStub != nil { + return fake.DeleteStateStub(namespace, key) } if specificReturn { return ret.result1 } - fakeReturns := fake.setStateReturns - return fakeReturns.result1 + return fake.deleteStateReturns.result1 } -func (fake *RWSet) SetStateCallCount() int { - fake.setStateMutex.RLock() - defer fake.setStateMutex.RUnlock() - return len(fake.setStateArgsForCall) -} - -func (fake *RWSet) SetStateCalls(stub func(string, string, []byte) error) { - fake.setStateMutex.Lock() - defer fake.setStateMutex.Unlock() - fake.SetStateStub = stub +func (fake *RWSet) DeleteStateCallCount() int { + fake.deleteStateMutex.RLock() + defer fake.deleteStateMutex.RUnlock() + return len(fake.deleteStateArgsForCall) } -func (fake *RWSet) SetStateArgsForCall(i int) (string, string, []byte) { - fake.setStateMutex.RLock() - defer fake.setStateMutex.RUnlock() - argsForCall := fake.setStateArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +func (fake *RWSet) DeleteStateArgsForCall(i int) (string, string) { + fake.deleteStateMutex.RLock() + defer fake.deleteStateMutex.RUnlock() + return fake.deleteStateArgsForCall[i].namespace, fake.deleteStateArgsForCall[i].key } -func (fake *RWSet) SetStateReturns(result1 error) { - fake.setStateMutex.Lock() - defer fake.setStateMutex.Unlock() - fake.SetStateStub = nil - fake.setStateReturns = struct { +func (fake *RWSet) DeleteStateReturns(result1 error) { + fake.DeleteStateStub = nil + fake.deleteStateReturns = struct { result1 error }{result1} } -func (fake *RWSet) SetStateReturnsOnCall(i int, result1 error) { - fake.setStateMutex.Lock() - defer fake.setStateMutex.Unlock() - fake.SetStateStub = nil - if fake.setStateReturnsOnCall == nil { - fake.setStateReturnsOnCall = make(map[int]struct { +func (fake *RWSet) DeleteStateReturnsOnCall(i int, result1 error) { + fake.DeleteStateStub = nil + if fake.deleteStateReturnsOnCall == nil { + fake.deleteStateReturnsOnCall = make(map[int]struct { result1 error }) } - fake.setStateReturnsOnCall[i] = struct { + fake.deleteStateReturnsOnCall[i] = struct { result1 error }{result1} } -func (fake *RWSet) SetStateMetadata(arg1 string, arg2 string, arg3 map[string][]byte) error { +func (fake *RWSet) SetStateMetadata(namespace string, key string, metadata map[string][]byte) error { fake.setStateMetadataMutex.Lock() ret, specificReturn := fake.setStateMetadataReturnsOnCall[len(fake.setStateMetadataArgsForCall)] fake.setStateMetadataArgsForCall = append(fake.setStateMetadataArgsForCall, struct { - arg1 string - arg2 string - arg3 map[string][]byte - }{arg1, arg2, arg3}) - fake.recordInvocation("SetStateMetadata", []interface{}{arg1, arg2, arg3}) + namespace string + key string + metadata map[string][]byte + }{namespace, key, metadata}) + fake.recordInvocation("SetStateMetadata", []interface{}{namespace, key, metadata}) fake.setStateMetadataMutex.Unlock() if fake.SetStateMetadataStub != nil { - return fake.SetStateMetadataStub(arg1, arg2, arg3) + return fake.SetStateMetadataStub(namespace, key, metadata) } if specificReturn { return ret.result1 } - fakeReturns := fake.setStateMetadataReturns - return fakeReturns.result1 + return fake.setStateMetadataReturns.result1 } func (fake *RWSet) SetStateMetadataCallCount() int { @@ -907,22 +257,13 @@ func (fake *RWSet) SetStateMetadataCallCount() int { return len(fake.setStateMetadataArgsForCall) } -func (fake *RWSet) SetStateMetadataCalls(stub func(string, string, map[string][]byte) error) { - fake.setStateMetadataMutex.Lock() - defer fake.setStateMetadataMutex.Unlock() - fake.SetStateMetadataStub = stub -} - func (fake *RWSet) SetStateMetadataArgsForCall(i int) (string, string, map[string][]byte) { fake.setStateMetadataMutex.RLock() defer fake.setStateMetadataMutex.RUnlock() - argsForCall := fake.setStateMetadataArgsForCall[i] - return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 + return fake.setStateMetadataArgsForCall[i].namespace, fake.setStateMetadataArgsForCall[i].key, fake.setStateMetadataArgsForCall[i].metadata } func (fake *RWSet) SetStateMetadataReturns(result1 error) { - fake.setStateMetadataMutex.Lock() - defer fake.setStateMetadataMutex.Unlock() fake.SetStateMetadataStub = nil fake.setStateMetadataReturns = struct { result1 error @@ -930,8 +271,6 @@ func (fake *RWSet) SetStateMetadataReturns(result1 error) { } func (fake *RWSet) SetStateMetadataReturnsOnCall(i int, result1 error) { - fake.setStateMetadataMutex.Lock() - defer fake.setStateMetadataMutex.Unlock() fake.SetStateMetadataStub = nil if fake.setStateMetadataReturnsOnCall == nil { fake.setStateMetadataReturnsOnCall = make(map[int]struct { @@ -943,35 +282,68 @@ func (fake *RWSet) SetStateMetadataReturnsOnCall(i int, result1 error) { }{result1} } +func (fake *RWSet) Equals(rwset interface{}, namespace string) error { + fake.equalsMutex.Lock() + ret, specificReturn := fake.equalsReturnsOnCall[len(fake.equalsArgsForCall)] + fake.equalsArgsForCall = append(fake.equalsArgsForCall, struct { + rwset interface{} + namespace string + }{rwset, namespace}) + fake.recordInvocation("Equals", []interface{}{rwset, namespace}) + fake.equalsMutex.Unlock() + if fake.EqualsStub != nil { + return fake.EqualsStub(rwset, namespace) + } + if specificReturn { + return ret.result1 + } + return fake.equalsReturns.result1 +} + +func (fake *RWSet) EqualsCallCount() int { + fake.equalsMutex.RLock() + defer fake.equalsMutex.RUnlock() + return len(fake.equalsArgsForCall) +} + +func (fake *RWSet) EqualsArgsForCall(i int) (interface{}, string) { + fake.equalsMutex.RLock() + defer fake.equalsMutex.RUnlock() + return fake.equalsArgsForCall[i].rwset, fake.equalsArgsForCall[i].namespace +} + +func (fake *RWSet) EqualsReturns(result1 error) { + fake.EqualsStub = nil + fake.equalsReturns = struct { + result1 error + }{result1} +} + +func (fake *RWSet) EqualsReturnsOnCall(i int, result1 error) { + fake.EqualsStub = nil + if fake.equalsReturnsOnCall == nil { + fake.equalsReturnsOnCall = make(map[int]struct { + result1 error + }) + } + fake.equalsReturnsOnCall[i] = struct { + result1 error + }{result1} +} + func (fake *RWSet) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.appendRWSetMutex.RLock() - defer fake.appendRWSetMutex.RUnlock() - fake.bytesMutex.RLock() - defer fake.bytesMutex.RUnlock() - fake.deleteStateMutex.RLock() - defer fake.deleteStateMutex.RUnlock() - fake.doneMutex.RLock() - defer fake.doneMutex.RUnlock() - fake.getReadAtMutex.RLock() - defer fake.getReadAtMutex.RUnlock() - fake.getStateMutex.RLock() - defer fake.getStateMutex.RUnlock() - fake.getStateMetadataMutex.RLock() - defer fake.getStateMetadataMutex.RUnlock() - fake.getWriteAtMutex.RLock() - defer fake.getWriteAtMutex.RUnlock() - fake.namespacesMutex.RLock() - defer fake.namespacesMutex.RUnlock() - fake.numReadsMutex.RLock() - defer fake.numReadsMutex.RUnlock() - fake.numWritesMutex.RLock() - defer fake.numWritesMutex.RUnlock() fake.setStateMutex.RLock() defer fake.setStateMutex.RUnlock() + fake.getStateMutex.RLock() + defer fake.getStateMutex.RUnlock() + fake.deleteStateMutex.RLock() + defer fake.deleteStateMutex.RUnlock() fake.setStateMetadataMutex.RLock() defer fake.setStateMetadataMutex.RUnlock() + fake.equalsMutex.RLock() + defer fake.equalsMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/token/services/vault/translator/mock/transfer_action.go b/token/services/vault/translator/mock/transfer_action.go index c924da522..b3c401c65 100644 --- a/token/services/vault/translator/mock/transfer_action.go +++ b/token/services/vault/translator/mock/transfer_action.go @@ -8,23 +8,30 @@ import ( ) type TransferAction struct { - GetInputsStub func() ([]string, error) - getInputsMutex sync.RWMutex - getInputsArgsForCall []struct { - } - getInputsReturns struct { - result1 []string + SerializeStub func() ([]byte, error) + serializeMutex sync.RWMutex + serializeArgsForCall []struct{} + serializeReturns struct { + result1 []byte result2 error } - getInputsReturnsOnCall map[int]struct { - result1 []string + serializeReturnsOnCall map[int]struct { + result1 []byte result2 error } + NumOutputsStub func() int + numOutputsMutex sync.RWMutex + numOutputsArgsForCall []struct{} + numOutputsReturns struct { + result1 int + } + numOutputsReturnsOnCall map[int]struct { + result1 int + } GetSerializedOutputsStub func() ([][]byte, error) getSerializedOutputsMutex sync.RWMutex - getSerializedOutputsArgsForCall []struct { - } - getSerializedOutputsReturns struct { + getSerializedOutputsArgsForCall []struct{} + getSerializedOutputsReturns struct { result1 [][]byte result2 error } @@ -32,20 +39,10 @@ type TransferAction struct { result1 [][]byte result2 error } - IsGraphHidingStub func() bool - isGraphHidingMutex sync.RWMutex - isGraphHidingArgsForCall []struct { - } - isGraphHidingReturns struct { - result1 bool - } - isGraphHidingReturnsOnCall map[int]struct { - result1 bool - } - IsRedeemAtStub func(int) bool + IsRedeemAtStub func(index int) bool isRedeemAtMutex sync.RWMutex isRedeemAtArgsForCall []struct { - arg1 int + index int } isRedeemAtReturns struct { result1 bool @@ -53,32 +50,10 @@ type TransferAction struct { isRedeemAtReturnsOnCall map[int]struct { result1 bool } - NumOutputsStub func() int - numOutputsMutex sync.RWMutex - numOutputsArgsForCall []struct { - } - numOutputsReturns struct { - result1 int - } - numOutputsReturnsOnCall map[int]struct { - result1 int - } - SerializeStub func() ([]byte, error) - serializeMutex sync.RWMutex - serializeArgsForCall []struct { - } - serializeReturns struct { - result1 []byte - result2 error - } - serializeReturnsOnCall map[int]struct { - result1 []byte - result2 error - } - SerializeOutputAtStub func(int) ([]byte, error) + SerializeOutputAtStub func(index int) ([]byte, error) serializeOutputAtMutex sync.RWMutex serializeOutputAtArgsForCall []struct { - arg1 int + index int } serializeOutputAtReturns struct { result1 []byte @@ -88,70 +63,117 @@ type TransferAction struct { result1 []byte result2 error } + GetInputsStub func() ([]string, error) + getInputsMutex sync.RWMutex + getInputsArgsForCall []struct{} + getInputsReturns struct { + result1 []string + result2 error + } + getInputsReturnsOnCall map[int]struct { + result1 []string + result2 error + } + IsGraphHidingStub func() bool + isGraphHidingMutex sync.RWMutex + isGraphHidingArgsForCall []struct{} + isGraphHidingReturns struct { + result1 bool + } + isGraphHidingReturnsOnCall map[int]struct { + result1 bool + } invocations map[string][][]interface{} invocationsMutex sync.RWMutex } -func (fake *TransferAction) GetInputs() ([]string, error) { - fake.getInputsMutex.Lock() - ret, specificReturn := fake.getInputsReturnsOnCall[len(fake.getInputsArgsForCall)] - fake.getInputsArgsForCall = append(fake.getInputsArgsForCall, struct { - }{}) - fake.recordInvocation("GetInputs", []interface{}{}) - fake.getInputsMutex.Unlock() - if fake.GetInputsStub != nil { - return fake.GetInputsStub() +func (fake *TransferAction) Serialize() ([]byte, error) { + fake.serializeMutex.Lock() + ret, specificReturn := fake.serializeReturnsOnCall[len(fake.serializeArgsForCall)] + fake.serializeArgsForCall = append(fake.serializeArgsForCall, struct{}{}) + fake.recordInvocation("Serialize", []interface{}{}) + fake.serializeMutex.Unlock() + if fake.SerializeStub != nil { + return fake.SerializeStub() } if specificReturn { return ret.result1, ret.result2 } - fakeReturns := fake.getInputsReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *TransferAction) GetInputsCallCount() int { - fake.getInputsMutex.RLock() - defer fake.getInputsMutex.RUnlock() - return len(fake.getInputsArgsForCall) + return fake.serializeReturns.result1, fake.serializeReturns.result2 } -func (fake *TransferAction) GetInputsCalls(stub func() ([]string, error)) { - fake.getInputsMutex.Lock() - defer fake.getInputsMutex.Unlock() - fake.GetInputsStub = stub +func (fake *TransferAction) SerializeCallCount() int { + fake.serializeMutex.RLock() + defer fake.serializeMutex.RUnlock() + return len(fake.serializeArgsForCall) } -func (fake *TransferAction) GetInputsReturns(result1 []string, result2 error) { - fake.getInputsMutex.Lock() - defer fake.getInputsMutex.Unlock() - fake.GetInputsStub = nil - fake.getInputsReturns = struct { - result1 []string +func (fake *TransferAction) SerializeReturns(result1 []byte, result2 error) { + fake.SerializeStub = nil + fake.serializeReturns = struct { + result1 []byte result2 error }{result1, result2} } -func (fake *TransferAction) GetInputsReturnsOnCall(i int, result1 []string, result2 error) { - fake.getInputsMutex.Lock() - defer fake.getInputsMutex.Unlock() - fake.GetInputsStub = nil - if fake.getInputsReturnsOnCall == nil { - fake.getInputsReturnsOnCall = make(map[int]struct { - result1 []string +func (fake *TransferAction) SerializeReturnsOnCall(i int, result1 []byte, result2 error) { + fake.SerializeStub = nil + if fake.serializeReturnsOnCall == nil { + fake.serializeReturnsOnCall = make(map[int]struct { + result1 []byte result2 error }) } - fake.getInputsReturnsOnCall[i] = struct { - result1 []string + fake.serializeReturnsOnCall[i] = struct { + result1 []byte result2 error }{result1, result2} } +func (fake *TransferAction) NumOutputs() int { + fake.numOutputsMutex.Lock() + ret, specificReturn := fake.numOutputsReturnsOnCall[len(fake.numOutputsArgsForCall)] + fake.numOutputsArgsForCall = append(fake.numOutputsArgsForCall, struct{}{}) + fake.recordInvocation("NumOutputs", []interface{}{}) + fake.numOutputsMutex.Unlock() + if fake.NumOutputsStub != nil { + return fake.NumOutputsStub() + } + if specificReturn { + return ret.result1 + } + return fake.numOutputsReturns.result1 +} + +func (fake *TransferAction) NumOutputsCallCount() int { + fake.numOutputsMutex.RLock() + defer fake.numOutputsMutex.RUnlock() + return len(fake.numOutputsArgsForCall) +} + +func (fake *TransferAction) NumOutputsReturns(result1 int) { + fake.NumOutputsStub = nil + fake.numOutputsReturns = struct { + result1 int + }{result1} +} + +func (fake *TransferAction) NumOutputsReturnsOnCall(i int, result1 int) { + fake.NumOutputsStub = nil + if fake.numOutputsReturnsOnCall == nil { + fake.numOutputsReturnsOnCall = make(map[int]struct { + result1 int + }) + } + fake.numOutputsReturnsOnCall[i] = struct { + result1 int + }{result1} +} + func (fake *TransferAction) GetSerializedOutputs() ([][]byte, error) { fake.getSerializedOutputsMutex.Lock() ret, specificReturn := fake.getSerializedOutputsReturnsOnCall[len(fake.getSerializedOutputsArgsForCall)] - fake.getSerializedOutputsArgsForCall = append(fake.getSerializedOutputsArgsForCall, struct { - }{}) + fake.getSerializedOutputsArgsForCall = append(fake.getSerializedOutputsArgsForCall, struct{}{}) fake.recordInvocation("GetSerializedOutputs", []interface{}{}) fake.getSerializedOutputsMutex.Unlock() if fake.GetSerializedOutputsStub != nil { @@ -160,8 +182,7 @@ func (fake *TransferAction) GetSerializedOutputs() ([][]byte, error) { if specificReturn { return ret.result1, ret.result2 } - fakeReturns := fake.getSerializedOutputsReturns - return fakeReturns.result1, fakeReturns.result2 + return fake.getSerializedOutputsReturns.result1, fake.getSerializedOutputsReturns.result2 } func (fake *TransferAction) GetSerializedOutputsCallCount() int { @@ -170,15 +191,7 @@ func (fake *TransferAction) GetSerializedOutputsCallCount() int { return len(fake.getSerializedOutputsArgsForCall) } -func (fake *TransferAction) GetSerializedOutputsCalls(stub func() ([][]byte, error)) { - fake.getSerializedOutputsMutex.Lock() - defer fake.getSerializedOutputsMutex.Unlock() - fake.GetSerializedOutputsStub = stub -} - func (fake *TransferAction) GetSerializedOutputsReturns(result1 [][]byte, result2 error) { - fake.getSerializedOutputsMutex.Lock() - defer fake.getSerializedOutputsMutex.Unlock() fake.GetSerializedOutputsStub = nil fake.getSerializedOutputsReturns = struct { result1 [][]byte @@ -187,8 +200,6 @@ func (fake *TransferAction) GetSerializedOutputsReturns(result1 [][]byte, result } func (fake *TransferAction) GetSerializedOutputsReturnsOnCall(i int, result1 [][]byte, result2 error) { - fake.getSerializedOutputsMutex.Lock() - defer fake.getSerializedOutputsMutex.Unlock() fake.GetSerializedOutputsStub = nil if fake.getSerializedOutputsReturnsOnCall == nil { fake.getSerializedOutputsReturnsOnCall = make(map[int]struct { @@ -202,74 +213,21 @@ func (fake *TransferAction) GetSerializedOutputsReturnsOnCall(i int, result1 [][ }{result1, result2} } -func (fake *TransferAction) IsGraphHiding() bool { - fake.isGraphHidingMutex.Lock() - ret, specificReturn := fake.isGraphHidingReturnsOnCall[len(fake.isGraphHidingArgsForCall)] - fake.isGraphHidingArgsForCall = append(fake.isGraphHidingArgsForCall, struct { - }{}) - fake.recordInvocation("IsGraphHiding", []interface{}{}) - fake.isGraphHidingMutex.Unlock() - if fake.IsGraphHidingStub != nil { - return fake.IsGraphHidingStub() - } - if specificReturn { - return ret.result1 - } - fakeReturns := fake.isGraphHidingReturns - return fakeReturns.result1 -} - -func (fake *TransferAction) IsGraphHidingCallCount() int { - fake.isGraphHidingMutex.RLock() - defer fake.isGraphHidingMutex.RUnlock() - return len(fake.isGraphHidingArgsForCall) -} - -func (fake *TransferAction) IsGraphHidingCalls(stub func() bool) { - fake.isGraphHidingMutex.Lock() - defer fake.isGraphHidingMutex.Unlock() - fake.IsGraphHidingStub = stub -} - -func (fake *TransferAction) IsGraphHidingReturns(result1 bool) { - fake.isGraphHidingMutex.Lock() - defer fake.isGraphHidingMutex.Unlock() - fake.IsGraphHidingStub = nil - fake.isGraphHidingReturns = struct { - result1 bool - }{result1} -} - -func (fake *TransferAction) IsGraphHidingReturnsOnCall(i int, result1 bool) { - fake.isGraphHidingMutex.Lock() - defer fake.isGraphHidingMutex.Unlock() - fake.IsGraphHidingStub = nil - if fake.isGraphHidingReturnsOnCall == nil { - fake.isGraphHidingReturnsOnCall = make(map[int]struct { - result1 bool - }) - } - fake.isGraphHidingReturnsOnCall[i] = struct { - result1 bool - }{result1} -} - -func (fake *TransferAction) IsRedeemAt(arg1 int) bool { +func (fake *TransferAction) IsRedeemAt(index int) bool { fake.isRedeemAtMutex.Lock() ret, specificReturn := fake.isRedeemAtReturnsOnCall[len(fake.isRedeemAtArgsForCall)] fake.isRedeemAtArgsForCall = append(fake.isRedeemAtArgsForCall, struct { - arg1 int - }{arg1}) - fake.recordInvocation("IsRedeemAt", []interface{}{arg1}) + index int + }{index}) + fake.recordInvocation("IsRedeemAt", []interface{}{index}) fake.isRedeemAtMutex.Unlock() if fake.IsRedeemAtStub != nil { - return fake.IsRedeemAtStub(arg1) + return fake.IsRedeemAtStub(index) } if specificReturn { return ret.result1 } - fakeReturns := fake.isRedeemAtReturns - return fakeReturns.result1 + return fake.isRedeemAtReturns.result1 } func (fake *TransferAction) IsRedeemAtCallCount() int { @@ -278,22 +236,13 @@ func (fake *TransferAction) IsRedeemAtCallCount() int { return len(fake.isRedeemAtArgsForCall) } -func (fake *TransferAction) IsRedeemAtCalls(stub func(int) bool) { - fake.isRedeemAtMutex.Lock() - defer fake.isRedeemAtMutex.Unlock() - fake.IsRedeemAtStub = stub -} - func (fake *TransferAction) IsRedeemAtArgsForCall(i int) int { fake.isRedeemAtMutex.RLock() defer fake.isRedeemAtMutex.RUnlock() - argsForCall := fake.isRedeemAtArgsForCall[i] - return argsForCall.arg1 + return fake.isRedeemAtArgsForCall[i].index } func (fake *TransferAction) IsRedeemAtReturns(result1 bool) { - fake.isRedeemAtMutex.Lock() - defer fake.isRedeemAtMutex.Unlock() fake.IsRedeemAtStub = nil fake.isRedeemAtReturns = struct { result1 bool @@ -301,8 +250,6 @@ func (fake *TransferAction) IsRedeemAtReturns(result1 bool) { } func (fake *TransferAction) IsRedeemAtReturnsOnCall(i int, result1 bool) { - fake.isRedeemAtMutex.Lock() - defer fake.isRedeemAtMutex.Unlock() fake.IsRedeemAtStub = nil if fake.isRedeemAtReturnsOnCall == nil { fake.isRedeemAtReturnsOnCall = make(map[int]struct { @@ -314,193 +261,157 @@ func (fake *TransferAction) IsRedeemAtReturnsOnCall(i int, result1 bool) { }{result1} } -func (fake *TransferAction) NumOutputs() int { - fake.numOutputsMutex.Lock() - ret, specificReturn := fake.numOutputsReturnsOnCall[len(fake.numOutputsArgsForCall)] - fake.numOutputsArgsForCall = append(fake.numOutputsArgsForCall, struct { - }{}) - fake.recordInvocation("NumOutputs", []interface{}{}) - fake.numOutputsMutex.Unlock() - if fake.NumOutputsStub != nil { - return fake.NumOutputsStub() +func (fake *TransferAction) SerializeOutputAt(index int) ([]byte, error) { + fake.serializeOutputAtMutex.Lock() + ret, specificReturn := fake.serializeOutputAtReturnsOnCall[len(fake.serializeOutputAtArgsForCall)] + fake.serializeOutputAtArgsForCall = append(fake.serializeOutputAtArgsForCall, struct { + index int + }{index}) + fake.recordInvocation("SerializeOutputAt", []interface{}{index}) + fake.serializeOutputAtMutex.Unlock() + if fake.SerializeOutputAtStub != nil { + return fake.SerializeOutputAtStub(index) } if specificReturn { - return ret.result1 + return ret.result1, ret.result2 } - fakeReturns := fake.numOutputsReturns - return fakeReturns.result1 + return fake.serializeOutputAtReturns.result1, fake.serializeOutputAtReturns.result2 } -func (fake *TransferAction) NumOutputsCallCount() int { - fake.numOutputsMutex.RLock() - defer fake.numOutputsMutex.RUnlock() - return len(fake.numOutputsArgsForCall) +func (fake *TransferAction) SerializeOutputAtCallCount() int { + fake.serializeOutputAtMutex.RLock() + defer fake.serializeOutputAtMutex.RUnlock() + return len(fake.serializeOutputAtArgsForCall) } -func (fake *TransferAction) NumOutputsCalls(stub func() int) { - fake.numOutputsMutex.Lock() - defer fake.numOutputsMutex.Unlock() - fake.NumOutputsStub = stub +func (fake *TransferAction) SerializeOutputAtArgsForCall(i int) int { + fake.serializeOutputAtMutex.RLock() + defer fake.serializeOutputAtMutex.RUnlock() + return fake.serializeOutputAtArgsForCall[i].index } -func (fake *TransferAction) NumOutputsReturns(result1 int) { - fake.numOutputsMutex.Lock() - defer fake.numOutputsMutex.Unlock() - fake.NumOutputsStub = nil - fake.numOutputsReturns = struct { - result1 int - }{result1} +func (fake *TransferAction) SerializeOutputAtReturns(result1 []byte, result2 error) { + fake.SerializeOutputAtStub = nil + fake.serializeOutputAtReturns = struct { + result1 []byte + result2 error + }{result1, result2} } -func (fake *TransferAction) NumOutputsReturnsOnCall(i int, result1 int) { - fake.numOutputsMutex.Lock() - defer fake.numOutputsMutex.Unlock() - fake.NumOutputsStub = nil - if fake.numOutputsReturnsOnCall == nil { - fake.numOutputsReturnsOnCall = make(map[int]struct { - result1 int +func (fake *TransferAction) SerializeOutputAtReturnsOnCall(i int, result1 []byte, result2 error) { + fake.SerializeOutputAtStub = nil + if fake.serializeOutputAtReturnsOnCall == nil { + fake.serializeOutputAtReturnsOnCall = make(map[int]struct { + result1 []byte + result2 error }) } - fake.numOutputsReturnsOnCall[i] = struct { - result1 int - }{result1} + fake.serializeOutputAtReturnsOnCall[i] = struct { + result1 []byte + result2 error + }{result1, result2} } -func (fake *TransferAction) Serialize() ([]byte, error) { - fake.serializeMutex.Lock() - ret, specificReturn := fake.serializeReturnsOnCall[len(fake.serializeArgsForCall)] - fake.serializeArgsForCall = append(fake.serializeArgsForCall, struct { - }{}) - fake.recordInvocation("Serialize", []interface{}{}) - fake.serializeMutex.Unlock() - if fake.SerializeStub != nil { - return fake.SerializeStub() +func (fake *TransferAction) GetInputs() ([]string, error) { + fake.getInputsMutex.Lock() + ret, specificReturn := fake.getInputsReturnsOnCall[len(fake.getInputsArgsForCall)] + fake.getInputsArgsForCall = append(fake.getInputsArgsForCall, struct{}{}) + fake.recordInvocation("GetInputs", []interface{}{}) + fake.getInputsMutex.Unlock() + if fake.GetInputsStub != nil { + return fake.GetInputsStub() } if specificReturn { return ret.result1, ret.result2 } - fakeReturns := fake.serializeReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *TransferAction) SerializeCallCount() int { - fake.serializeMutex.RLock() - defer fake.serializeMutex.RUnlock() - return len(fake.serializeArgsForCall) + return fake.getInputsReturns.result1, fake.getInputsReturns.result2 } -func (fake *TransferAction) SerializeCalls(stub func() ([]byte, error)) { - fake.serializeMutex.Lock() - defer fake.serializeMutex.Unlock() - fake.SerializeStub = stub +func (fake *TransferAction) GetInputsCallCount() int { + fake.getInputsMutex.RLock() + defer fake.getInputsMutex.RUnlock() + return len(fake.getInputsArgsForCall) } -func (fake *TransferAction) SerializeReturns(result1 []byte, result2 error) { - fake.serializeMutex.Lock() - defer fake.serializeMutex.Unlock() - fake.SerializeStub = nil - fake.serializeReturns = struct { - result1 []byte +func (fake *TransferAction) GetInputsReturns(result1 []string, result2 error) { + fake.GetInputsStub = nil + fake.getInputsReturns = struct { + result1 []string result2 error }{result1, result2} } -func (fake *TransferAction) SerializeReturnsOnCall(i int, result1 []byte, result2 error) { - fake.serializeMutex.Lock() - defer fake.serializeMutex.Unlock() - fake.SerializeStub = nil - if fake.serializeReturnsOnCall == nil { - fake.serializeReturnsOnCall = make(map[int]struct { - result1 []byte +func (fake *TransferAction) GetInputsReturnsOnCall(i int, result1 []string, result2 error) { + fake.GetInputsStub = nil + if fake.getInputsReturnsOnCall == nil { + fake.getInputsReturnsOnCall = make(map[int]struct { + result1 []string result2 error }) } - fake.serializeReturnsOnCall[i] = struct { - result1 []byte + fake.getInputsReturnsOnCall[i] = struct { + result1 []string result2 error }{result1, result2} } -func (fake *TransferAction) SerializeOutputAt(arg1 int) ([]byte, error) { - fake.serializeOutputAtMutex.Lock() - ret, specificReturn := fake.serializeOutputAtReturnsOnCall[len(fake.serializeOutputAtArgsForCall)] - fake.serializeOutputAtArgsForCall = append(fake.serializeOutputAtArgsForCall, struct { - arg1 int - }{arg1}) - fake.recordInvocation("SerializeOutputAt", []interface{}{arg1}) - fake.serializeOutputAtMutex.Unlock() - if fake.SerializeOutputAtStub != nil { - return fake.SerializeOutputAtStub(arg1) +func (fake *TransferAction) IsGraphHiding() bool { + fake.isGraphHidingMutex.Lock() + ret, specificReturn := fake.isGraphHidingReturnsOnCall[len(fake.isGraphHidingArgsForCall)] + fake.isGraphHidingArgsForCall = append(fake.isGraphHidingArgsForCall, struct{}{}) + fake.recordInvocation("IsGraphHiding", []interface{}{}) + fake.isGraphHidingMutex.Unlock() + if fake.IsGraphHidingStub != nil { + return fake.IsGraphHidingStub() } if specificReturn { - return ret.result1, ret.result2 + return ret.result1 } - fakeReturns := fake.serializeOutputAtReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *TransferAction) SerializeOutputAtCallCount() int { - fake.serializeOutputAtMutex.RLock() - defer fake.serializeOutputAtMutex.RUnlock() - return len(fake.serializeOutputAtArgsForCall) -} - -func (fake *TransferAction) SerializeOutputAtCalls(stub func(int) ([]byte, error)) { - fake.serializeOutputAtMutex.Lock() - defer fake.serializeOutputAtMutex.Unlock() - fake.SerializeOutputAtStub = stub + return fake.isGraphHidingReturns.result1 } -func (fake *TransferAction) SerializeOutputAtArgsForCall(i int) int { - fake.serializeOutputAtMutex.RLock() - defer fake.serializeOutputAtMutex.RUnlock() - argsForCall := fake.serializeOutputAtArgsForCall[i] - return argsForCall.arg1 +func (fake *TransferAction) IsGraphHidingCallCount() int { + fake.isGraphHidingMutex.RLock() + defer fake.isGraphHidingMutex.RUnlock() + return len(fake.isGraphHidingArgsForCall) } -func (fake *TransferAction) SerializeOutputAtReturns(result1 []byte, result2 error) { - fake.serializeOutputAtMutex.Lock() - defer fake.serializeOutputAtMutex.Unlock() - fake.SerializeOutputAtStub = nil - fake.serializeOutputAtReturns = struct { - result1 []byte - result2 error - }{result1, result2} +func (fake *TransferAction) IsGraphHidingReturns(result1 bool) { + fake.IsGraphHidingStub = nil + fake.isGraphHidingReturns = struct { + result1 bool + }{result1} } -func (fake *TransferAction) SerializeOutputAtReturnsOnCall(i int, result1 []byte, result2 error) { - fake.serializeOutputAtMutex.Lock() - defer fake.serializeOutputAtMutex.Unlock() - fake.SerializeOutputAtStub = nil - if fake.serializeOutputAtReturnsOnCall == nil { - fake.serializeOutputAtReturnsOnCall = make(map[int]struct { - result1 []byte - result2 error +func (fake *TransferAction) IsGraphHidingReturnsOnCall(i int, result1 bool) { + fake.IsGraphHidingStub = nil + if fake.isGraphHidingReturnsOnCall == nil { + fake.isGraphHidingReturnsOnCall = make(map[int]struct { + result1 bool }) } - fake.serializeOutputAtReturnsOnCall[i] = struct { - result1 []byte - result2 error - }{result1, result2} + fake.isGraphHidingReturnsOnCall[i] = struct { + result1 bool + }{result1} } func (fake *TransferAction) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getInputsMutex.RLock() - defer fake.getInputsMutex.RUnlock() + fake.serializeMutex.RLock() + defer fake.serializeMutex.RUnlock() + fake.numOutputsMutex.RLock() + defer fake.numOutputsMutex.RUnlock() fake.getSerializedOutputsMutex.RLock() defer fake.getSerializedOutputsMutex.RUnlock() - fake.isGraphHidingMutex.RLock() - defer fake.isGraphHidingMutex.RUnlock() fake.isRedeemAtMutex.RLock() defer fake.isRedeemAtMutex.RUnlock() - fake.numOutputsMutex.RLock() - defer fake.numOutputsMutex.RUnlock() - fake.serializeMutex.RLock() - defer fake.serializeMutex.RUnlock() fake.serializeOutputAtMutex.RLock() defer fake.serializeOutputAtMutex.RUnlock() + fake.getInputsMutex.RLock() + defer fake.getInputsMutex.RUnlock() + fake.isGraphHidingMutex.RLock() + defer fake.isGraphHidingMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/token/services/vault/translator/rwset.go b/token/services/vault/translator/rwset.go index b5f4bca9e..8eaf416dd 100644 --- a/token/services/vault/translator/rwset.go +++ b/token/services/vault/translator/rwset.go @@ -3,57 +3,14 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ + package translator -import ( - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" -) +import "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/driver" //go:generate counterfeiter -o mock/rwset.go -fake-name RWSet . RWSet // RWSet interface, used to read from, and write to, a rwset. type RWSet interface { - SetState(namespace string, key string, value []byte) error - GetState(namespace string, key string, opts ...fabric.GetStateOpt) ([]byte, error) - DeleteState(namespace string, key string) error - Bytes() ([]byte, error) - Done() - GetStateMetadata(namespace, key string, opts ...fabric.GetStateOpt) (map[string][]byte, error) - SetStateMetadata(namespace, key string, metadata map[string][]byte) error - AppendRWSet(raw []byte, nss ...string) error - GetReadAt(ns string, i int) (string, []byte, error) - GetWriteAt(ns string, i int) (string, []byte, error) - NumReads(ns string) int - NumWrites(ns string) int - Namespaces() []string -} - -//go:generate counterfeiter -o mock/rwsetvalidator.go -fake-name RWSetValidator . RWSetValidator - -// RWSetValidator interface checks whether the information in the RWSet matches the expected outputs -type RWSetValidator interface { - Validate(raw []byte) error -} - -type ReadOnlyRWSet interface { - // GetReadAt returns the i-th read (key, value) in the namespace ns of this rwset. - // The value is loaded from the ledger, if present. If the key's version in the ledger - // does not match the key's version in the read, then it returns an error. - GetReadAt(ns string, i int) (string, []byte, error) - - // GetWriteAt returns the i-th write (key, value) in the namespace ns of this rwset. - GetWriteAt(ns string, i int) (string, []byte, error) - - // NumReads returns the number of reads in the namespace ns of this rwset. - NumReads(ns string) int - - // NumWrites returns the number of writes in the namespace ns of this rwset. - NumWrites(ns string) int - - // Namespaces returns the namespace labels in this rwset. - Namespaces() []string -} - -type RWSetImporter interface { - RWSet(raw []byte) (ReadOnlyRWSet, error) + driver.RWSet } diff --git a/token/services/vault/translator/translator.go b/token/services/vault/translator/translator.go index 1b1f5e948..fc135598f 100644 --- a/token/services/vault/translator/translator.go +++ b/token/services/vault/translator/translator.go @@ -8,9 +8,8 @@ package translator import ( "strconv" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash" - "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/flogging" + "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash" "github.com/pkg/errors" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" diff --git a/token/services/vault/translator/zk_suite_test.go b/token/services/vault/translator/translator_suite_test.go similarity index 88% rename from token/services/vault/translator/zk_suite_test.go rename to token/services/vault/translator/translator_suite_test.go index 7b6e8fddc..cdcb6d52e 100644 --- a/token/services/vault/translator/zk_suite_test.go +++ b/token/services/vault/translator/translator_suite_test.go @@ -12,7 +12,7 @@ import ( . "github.com/onsi/gomega" ) -func TestZKToken(t *testing.T) { +func TestTranslator(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Translator and Approver Suite") } diff --git a/token/services/vault/translator/translator_test.go b/token/services/vault/translator/translator_test.go index da8120a7b..a7e786736 100644 --- a/token/services/vault/translator/translator_test.go +++ b/token/services/vault/translator/translator_test.go @@ -8,12 +8,13 @@ package translator_test import ( "strconv" - "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" - writer2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator" - mock "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator/mock" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/pkg/errors" + + "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" + writer2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator" + "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/translator/mock" ) const ( @@ -280,7 +281,7 @@ var _ = Describe("Translator", func() { Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("already spent")) Expect(fakeRWSet.GetStateCallCount()).To(Equal(3)) - ns, snkey, _ := fakeRWSet.GetStateArgsForCall(2) + ns, snkey := fakeRWSet.GetStateArgsForCall(2) Expect(ns).To(Equal(tokenNameSpace)) Expect(snkey).To(Equal(sn[2])) }) diff --git a/token/services/vault/vault.go b/token/services/vault/vault.go index bd584ed2d..7d814ad0a 100644 --- a/token/services/vault/vault.go +++ b/token/services/vault/vault.go @@ -3,35 +3,32 @@ Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ + package vault import ( - "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" "github.com/hyperledger-labs/fabric-smart-client/platform/view" - "github.com/hyperledger-labs/fabric-token-sdk/token/driver" + + driver2 "github.com/hyperledger-labs/fabric-token-sdk/token/driver" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/certification" + "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/driver" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/query" ) -type Channel interface { - Name() string - Vault() *fabric.Vault -} - type Vault struct { sp view.ServiceProvider queryEngine *query.Engine certificationStorage *certification.Storage } -func NewVault(sp view.ServiceProvider, channel Channel, namespace string) *Vault { +func New(sp view.ServiceProvider, channel string, namespace string, vault driver.Vault) *Vault { return &Vault{ - queryEngine: query.NewEngine(channel, namespace), + queryEngine: query.NewEngine(vault, namespace), certificationStorage: certification.NewStorage(sp, channel, namespace), } } -func (v *Vault) QueryEngine() driver.QueryEngine { +func (v *Vault) QueryEngine() driver2.QueryEngine { return v.queryEngine } From eb2e4f5d3bcf8cbd7038c78c537d17de3d84c610 Mon Sep 17 00:00:00 2001 From: Angelo De Caro Date: Fri, 22 Oct 2021 16:43:08 +0200 Subject: [PATCH 2/4] mod update Signed-off-by: Angelo De Caro --- go.mod | 5 +---- go.sum | 11 ++--------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 22aa62433..43ffd4680 100755 --- a/go.mod +++ b/go.mod @@ -17,9 +17,7 @@ require ( github.com/dgraph-io/badger/v3 v3.2011.1 github.com/golang/protobuf v1.5.2 github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 // indirect - github.com/google/addlicense v1.0.0 // indirect - github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect - github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211015115528-782c5aee50b7 + github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211022125455-3c72131a3c4d github.com/hyperledger/fabric v1.4.0-rc1.0.20210722174351-9815a7a8f0f7 github.com/hyperledger/fabric-chaincode-go v0.0.0-20210718160520-38d29fabecb9 github.com/hyperledger/fabric-protos-go v0.0.0-20210911123859-041d13f0980c @@ -33,6 +31,5 @@ require ( github.com/stretchr/testify v1.7.1-0.20210116013205-6990a05d54c2 github.com/tedsuo/ifrit v0.0.0-20191009134036-9a97d0632f00 go.uber.org/atomic v1.7.0 - golang.org/x/sys v0.0.0-20211020174200-9d6173849985 // indirect gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 72d58d11e..ea2006367 100644 --- a/go.sum +++ b/go.sum @@ -131,7 +131,6 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmatcuk/doublestar/v4 v4.0.2 h1:X0krlUVAVmtr2cRoTqR8aDMrDqnB36ht8wpWTiQ3jsA= github.com/bmatcuk/doublestar/v4 v4.0.2/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= @@ -416,7 +415,6 @@ github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/logger v1.0.0/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= @@ -474,7 +472,6 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/addlicense v1.0.0 h1:cqvo5suPWlsk6r6o42Fs2K66xYCl2tnhVPUYoP3EnO4= github.com/google/addlicense v1.0.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -513,7 +510,6 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -572,8 +568,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211015115528-782c5aee50b7 h1:w+Da49/tLGTJIB8JChvEZLUb+knU4YBpbwSJ1tmt/8E= -github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211015115528-782c5aee50b7/go.mod h1:5nb+I767ih87ABv96XRWxVXVncVdolPv3MvjlQ7hkIQ= +github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211022125455-3c72131a3c4d h1:bA2WeOpFoZJTHLIpqnEuUuEJ/Hw3G6IpHICCR2WV63U= +github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211022125455-3c72131a3c4d/go.mod h1:iGRusTQNJMc3GhHDpI1uaQRMqt61ZVDEOGjWteVJh8c= github.com/hyperledger-labs/weaver-dlt-interoperability/common/protos-go v1.2.3-alpha.1 h1:vBvo0PNm82ht7wpBjlYY4ZHxV3YprCfdVd3T4JG9vBw= github.com/hyperledger-labs/weaver-dlt-interoperability/common/protos-go v1.2.3-alpha.1/go.mod h1:POCGO/RK9YDfgdhuyqjoD9tRNtWfK7Rh5AYYmsb1Chc= github.com/hyperledger-labs/weaver-dlt-interoperability/sdks/fabric/go-sdk v1.2.3-alpha.1.0.20210812140206-37f430515b8c h1:pKr8VnHlduEgdInwLWykYAw+lpUizjQJaJ8I5fVoRUo= @@ -1391,7 +1387,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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 h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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= @@ -1478,8 +1473,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211013075003-97ac67df715c h1:taxlMj0D/1sOAuv/CbSD+MMDof2vbyPTqz5FNYKpXt8= -golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo= golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= From 33c814051179b0c4cdfa22c0d78b627ae10aea02 Mon Sep 17 00:00:00 2001 From: Angelo De Caro Date: Fri, 22 Oct 2021 17:04:28 +0200 Subject: [PATCH 3/4] fix rws equal Signed-off-by: Angelo De Caro --- token/services/fabric/rws.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/token/services/fabric/rws.go b/token/services/fabric/rws.go index 12ac21006..12ea9e5b5 100644 --- a/token/services/fabric/rws.go +++ b/token/services/fabric/rws.go @@ -8,6 +8,7 @@ package fabric import ( "github.com/hyperledger-labs/fabric-smart-client/platform/fabric" + "github.com/pkg/errors" ) type RWSWrapper struct { @@ -43,5 +44,12 @@ func (rwset *RWSWrapper) SetStateMetadata(namespace, key string, metadata map[st } func (rwset *RWSWrapper) Equals(r interface{}, namespace string) error { - return rwset.r.Equals(r, namespace) + switch t := r.(type) { + case *RWSWrapper: + return rwset.r.Equals(t.r, namespace) + case *fabric.RWSet: + return rwset.r.Equals(t, namespace) + default: + return errors.Errorf("invalid type, got [%T]", t) + } } From d553adc2ca704495b16711a86dcdadfd237215c0 Mon Sep 17 00:00:00 2001 From: Angelo De Caro Date: Fri, 22 Oct 2021 17:34:13 +0200 Subject: [PATCH 4/4] fix conversion error Signed-off-by: Angelo De Caro --- go.mod | 2 ++ go.sum | 5 ++++ integration/token/tcc/basic/tests.go | 8 +++--- integration/token/tcc/basic/views/redeem.go | 2 +- integration/token/tcc/basic/views/transfer.go | 4 +-- token/certification.go | 10 +++---- token/core/fabtoken/certification.go | 6 ++--- token/core/fabtoken/loaders.go | 2 +- token/core/fabtoken/sender.go | 2 +- token/core/fabtoken/service.go | 6 ++--- token/core/zkatdlog/nogh/certifier.go | 6 ++--- token/core/zkatdlog/nogh/loaders.go | 8 +++--- token/core/zkatdlog/nogh/sender.go | 11 ++++---- token/core/zkatdlog/nogh/service.go | 6 ++--- token/driver/certfication.go | 10 +++---- token/driver/request.go | 6 ++--- token/driver/transfer.go | 2 +- token/driver/vault.go | 16 ++++++------ token/metadata.go | 4 +-- token/request.go | 10 +++---- token/selector.go | 2 +- token/services/certifier/client.go | 4 +-- token/services/certifier/driver/driver.go | 4 +-- token/services/certifier/dummy/driver.go | 4 +-- .../services/certifier/interactive/client.go | 16 ++++++------ .../services/certifier/interactive/service.go | 8 +++--- token/services/fabric/processor.go | 4 +-- token/services/fabric/support.go | 12 ++++----- token/services/selector/inmemory/locker.go | 6 ++--- token/services/selector/selector.go | 24 ++++++++--------- token/services/tcc/certifier.go | 4 +-- token/services/tcc/tcc.go | 2 +- token/services/vault/certification/storage.go | 6 ++--- token/services/vault/keys/keys.go | 26 +++++++++---------- token/services/vault/query/query.go | 22 ++++++++-------- token/services/vault/translator/translator.go | 20 +++++++------- token/stream.go | 8 +++--- token/token/token.go | 12 ++++----- token/vault.go | 6 ++--- 39 files changed, 162 insertions(+), 154 deletions(-) diff --git a/go.mod b/go.mod index 43ffd4680..05bc6618f 100755 --- a/go.mod +++ b/go.mod @@ -17,6 +17,8 @@ require ( github.com/dgraph-io/badger/v3 v3.2011.1 github.com/golang/protobuf v1.5.2 github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 // indirect + github.com/google/addlicense v1.0.0 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect github.com/hyperledger-labs/fabric-smart-client v0.0.0-20211022125455-3c72131a3c4d github.com/hyperledger/fabric v1.4.0-rc1.0.20210722174351-9815a7a8f0f7 github.com/hyperledger/fabric-chaincode-go v0.0.0-20210718160520-38d29fabecb9 diff --git a/go.sum b/go.sum index ea2006367..0f965285e 100644 --- a/go.sum +++ b/go.sum @@ -131,6 +131,7 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmatcuk/doublestar/v4 v4.0.2 h1:X0krlUVAVmtr2cRoTqR8aDMrDqnB36ht8wpWTiQ3jsA= github.com/bmatcuk/doublestar/v4 v4.0.2/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= @@ -415,6 +416,7 @@ github.com/go-sql-driver/mysql v1.3.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/logger v1.0.0/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= @@ -472,6 +474,7 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/addlicense v1.0.0 h1:cqvo5suPWlsk6r6o42Fs2K66xYCl2tnhVPUYoP3EnO4= github.com/google/addlicense v1.0.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -510,6 +513,7 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= @@ -1387,6 +1391,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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 h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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= diff --git a/integration/token/tcc/basic/tests.go b/integration/token/tcc/basic/tests.go index 0a6a3325e..c4c9dca73 100644 --- a/integration/token/tcc/basic/tests.go +++ b/integration/token/tcc/basic/tests.go @@ -272,8 +272,8 @@ func TestAll(network *integration.Infrastructure) { // Transfer by IDs txID := issueCash(network, "", "CHF", 17, "alice") - txID = transferCashByIDs(network, "alice", "", []*token2.Id{{TxId: txID, Index: 0}}, 17, "bob") - redeemCashByIDs(network, "bob", "", []*token2.Id{{TxId: txID, Index: 0}}, 17) + txID = transferCashByIDs(network, "alice", "", []*token2.ID{{TxId: txID, Index: 0}}, 17, "bob") + redeemCashByIDs(network, "bob", "", []*token2.ID{{TxId: txID, Index: 0}}, 17) } /* @@ -347,7 +347,7 @@ func transferCash(network *integration.Infrastructure, id string, wallet string, } } -func transferCashByIDs(network *integration.Infrastructure, id string, wallet string, ids []*token2.Id, amount uint64, receiver string, errorMsgs ...string) string { +func transferCashByIDs(network *integration.Infrastructure, id string, wallet string, ids []*token2.ID, amount uint64, receiver string, errorMsgs ...string) string { txid, err := network.Client(id).CallView("transfer", common.JSONMarshall(&views.Transfer{ Wallet: wallet, Type: "", @@ -397,7 +397,7 @@ func redeemCash(network *integration.Infrastructure, id string, wallet string, t Expect(err).NotTo(HaveOccurred()) } -func redeemCashByIDs(network *integration.Infrastructure, id string, wallet string, ids []*token2.Id, amount uint64) { +func redeemCashByIDs(network *integration.Infrastructure, id string, wallet string, ids []*token2.ID, amount uint64) { _, err := network.Client(id).CallView("redeem", common.JSONMarshall(&views.Redeem{ Wallet: wallet, Type: "", diff --git a/integration/token/tcc/basic/views/redeem.go b/integration/token/tcc/basic/views/redeem.go index 0a72b7cf8..91684aea1 100644 --- a/integration/token/tcc/basic/views/redeem.go +++ b/integration/token/tcc/basic/views/redeem.go @@ -22,7 +22,7 @@ type Redeem struct { // Wallet is the identifier of the wallet that owns the tokens to redeem Wallet string // TokenIDs contains a list of token ids to redeem. If empty, tokens are selected on the spot. - TokenIDs []*token.Id + TokenIDs []*token.ID // Type of tokens to redeem Type string // Amount to redeem diff --git a/integration/token/tcc/basic/views/transfer.go b/integration/token/tcc/basic/views/transfer.go index 9b18ce9a5..a122a5a86 100644 --- a/integration/token/tcc/basic/views/transfer.go +++ b/integration/token/tcc/basic/views/transfer.go @@ -25,7 +25,7 @@ type Transfer struct { // Wallet is the identifier of the wallet that owns the tokens to transfer Wallet string // TokenIDs contains a list of token ids to transfer. If empty, tokens are selected on the spot. - TokenIDs []*token.Id + TokenIDs []*token.ID // Type of tokens to transfer Type string // Amount to transfer @@ -139,7 +139,7 @@ func (t *TransferWithSelectorView) Call(context view.Context) (interface{}, erro // The sender tries to select the requested amount of tokens of the passed type. // If a failure happens, the sender retries up to 5 times, waiting 10 seconds after each failure. // This is just an example, any other policy can be implemented. - var ids []*token.Id + var ids []*token.ID var sum token.Quantity for i := 0; i < 5; i++ { diff --git a/token/certification.go b/token/certification.go index 7a4cf3377..74bdf2fa3 100644 --- a/token/certification.go +++ b/token/certification.go @@ -14,15 +14,15 @@ type CertificationManager struct { c driver.CertificationService } -func (c *CertificationManager) NewCertificationRequest(ids []*token2.Id) ([]byte, error) { +func (c *CertificationManager) NewCertificationRequest(ids []*token2.ID) ([]byte, error) { return c.c.NewCertificationRequest(ids) } -func (c *CertificationManager) Certify(wallet *CertifierWallet, ids []*token2.Id, tokens [][]byte, request []byte) ([][]byte, error) { +func (c *CertificationManager) Certify(wallet *CertifierWallet, ids []*token2.ID, tokens [][]byte, request []byte) ([][]byte, error) { return c.c.Certify(wallet.w, ids, tokens, request) } -func (c *CertificationManager) VerifyCertifications(ids []*token2.Id, certifications [][]byte) error { +func (c *CertificationManager) VerifyCertifications(ids []*token2.ID, certifications [][]byte) error { return c.c.VerifyCertifications(ids, certifications) } @@ -30,10 +30,10 @@ type CertificationClient struct { cc driver.CertificationClient } -func (c *CertificationClient) IsCertified(id *token2.Id) bool { +func (c *CertificationClient) IsCertified(id *token2.ID) bool { return c.cc.IsCertified(id) } -func (c *CertificationClient) RequestCertification(ids ...*token2.Id) error { +func (c *CertificationClient) RequestCertification(ids ...*token2.ID) error { return c.cc.RequestCertification(ids...) } diff --git a/token/core/fabtoken/certification.go b/token/core/fabtoken/certification.go index ac75489c4..a626e5a58 100644 --- a/token/core/fabtoken/certification.go +++ b/token/core/fabtoken/certification.go @@ -11,14 +11,14 @@ import ( token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) -func (s *Service) NewCertificationRequest(ids []*token2.Id) ([]byte, error) { +func (s *Service) NewCertificationRequest(ids []*token2.ID) ([]byte, error) { return nil, nil } -func (s *Service) Certify(wallet driver.CertifierWallet, ids []*token2.Id, tokens [][]byte, request []byte) ([][]byte, error) { +func (s *Service) Certify(wallet driver.CertifierWallet, ids []*token2.ID, tokens [][]byte, request []byte) ([][]byte, error) { return nil, nil } -func (s *Service) VerifyCertifications(ids []*token2.Id, certifications [][]byte) error { +func (s *Service) VerifyCertifications(ids []*token2.ID, certifications [][]byte) error { return nil } diff --git a/token/core/fabtoken/loaders.go b/token/core/fabtoken/loaders.go index cab236b67..9aca876e6 100644 --- a/token/core/fabtoken/loaders.go +++ b/token/core/fabtoken/loaders.go @@ -18,7 +18,7 @@ type VaultTokenLoader struct { TokenVault api2.QueryEngine } -func (s *VaultTokenLoader) GetTokens(ids []*token.Id) ([]string, []*token.Token, error) { +func (s *VaultTokenLoader) GetTokens(ids []*token.ID) ([]string, []*token.Token, error) { return s.TokenVault.GetTokens(ids...) } diff --git a/token/core/fabtoken/sender.go b/token/core/fabtoken/sender.go index 14f444eaf..d5d806fb9 100644 --- a/token/core/fabtoken/sender.go +++ b/token/core/fabtoken/sender.go @@ -14,7 +14,7 @@ import ( token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) -func (s *Service) Transfer(txID string, wallet driver.OwnerWallet, ids []*token2.Id, Outputs ...*token2.Token) (driver.TransferAction, *driver.TransferMetadata, error) { +func (s *Service) Transfer(txID string, wallet driver.OwnerWallet, ids []*token2.ID, Outputs ...*token2.Token) (driver.TransferAction, *driver.TransferMetadata, error) { id, err := wallet.GetRecipientIdentity() if err != nil { return nil, nil, errors.WithMessagef(err, "failed getting sender identity") diff --git a/token/core/fabtoken/service.go b/token/core/fabtoken/service.go index de4b96f11..9f367ab1b 100644 --- a/token/core/fabtoken/service.go +++ b/token/core/fabtoken/service.go @@ -22,15 +22,15 @@ type PublicParamsLoader interface { } type QueryEngine interface { - IsMine(id *token2.Id) (bool, error) + IsMine(id *token2.ID) (bool, error) ListUnspentTokens() (*token2.UnspentTokens, error) - ListAuditTokens(ids ...*token2.Id) ([]*token2.Token, error) + ListAuditTokens(ids ...*token2.ID) ([]*token2.Token, error) ListHistoryIssuedTokens() (*token2.IssuedTokens, error) PublicParams() ([]byte, error) } type TokenLoader interface { - GetTokens(ids []*token2.Id) ([]string, []*token2.Token, error) + GetTokens(ids []*token2.ID) ([]string, []*token2.Token, error) } type PublicParametersManager interface { diff --git a/token/core/zkatdlog/nogh/certifier.go b/token/core/zkatdlog/nogh/certifier.go index 6947f5e16..8f141c677 100644 --- a/token/core/zkatdlog/nogh/certifier.go +++ b/token/core/zkatdlog/nogh/certifier.go @@ -10,14 +10,14 @@ import ( token3 "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) -func (s *Service) NewCertificationRequest(ids []*token3.Id) ([]byte, error) { +func (s *Service) NewCertificationRequest(ids []*token3.ID) ([]byte, error) { return nil, nil } -func (s *Service) Certify(wallet api3.CertifierWallet, ids []*token3.Id, tokens [][]byte, request []byte) ([][]byte, error) { +func (s *Service) Certify(wallet api3.CertifierWallet, ids []*token3.ID, tokens [][]byte, request []byte) ([][]byte, error) { return nil, nil } -func (s *Service) VerifyCertifications(ids []*token3.Id, certifications [][]byte) error { +func (s *Service) VerifyCertifications(ids []*token3.ID, certifications [][]byte) error { return nil } diff --git a/token/core/zkatdlog/nogh/loaders.go b/token/core/zkatdlog/nogh/loaders.go index adf766544..610e8a961 100644 --- a/token/core/zkatdlog/nogh/loaders.go +++ b/token/core/zkatdlog/nogh/loaders.go @@ -15,17 +15,17 @@ import ( type TokenVault interface { PublicParams() ([]byte, error) - GetTokenInfos(ids []*token3.Id, callback api2.QueryCallbackFunc) error - GetTokenCommitments(ids []*token3.Id, callback api2.QueryCallbackFunc) error + GetTokenInfos(ids []*token3.ID, callback api2.QueryCallbackFunc) error + GetTokenCommitments(ids []*token3.ID, callback api2.QueryCallbackFunc) error } type VaultTokenCommitmentLoader struct { TokenVault TokenVault } -func (s *VaultTokenCommitmentLoader) GetTokenCommitments(ids []*token3.Id) ([]*token.Token, error) { +func (s *VaultTokenCommitmentLoader) GetTokenCommitments(ids []*token3.ID) ([]*token.Token, error) { var tokens []*token.Token - if err := s.TokenVault.GetTokenCommitments(ids, func(id *token3.Id, bytes []byte) error { + if err := s.TokenVault.GetTokenCommitments(ids, func(id *token3.ID, bytes []byte) error { if len(bytes) == 0 { return errors.Errorf("failed getting state for id [%v], nil value", id) } diff --git a/token/core/zkatdlog/nogh/sender.go b/token/core/zkatdlog/nogh/sender.go index 7a0509ad8..7207d9a5a 100644 --- a/token/core/zkatdlog/nogh/sender.go +++ b/token/core/zkatdlog/nogh/sender.go @@ -8,19 +8,20 @@ package nogh import ( "strconv" - "github.com/IBM/mathlib" + math "github.com/IBM/mathlib" view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view" "github.com/hyperledger-labs/fabric-smart-client/platform/view/services/hash" "github.com/hyperledger-labs/fabric-smart-client/platform/view/view" + "github.com/pkg/errors" + "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/token" "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto/transfer" "github.com/hyperledger-labs/fabric-token-sdk/token/driver" "github.com/hyperledger-labs/fabric-token-sdk/token/services/vault/keys" token3 "github.com/hyperledger-labs/fabric-token-sdk/token/token" - "github.com/pkg/errors" ) -func (s *Service) Transfer(txID string, wallet driver.OwnerWallet, ids []*token3.Id, outputTokens ...*token3.Token) (driver.TransferAction, *driver.TransferMetadata, error) { +func (s *Service) Transfer(txID string, wallet driver.OwnerWallet, ids []*token3.ID, outputTokens ...*token3.Token) (driver.TransferAction, *driver.TransferMetadata, error) { logger.Debugf("Prepare Transfer Action [%s,%v]", txID, ids) var tokens []*token.Token @@ -38,7 +39,7 @@ func (s *Service) Transfer(txID string, wallet driver.OwnerWallet, ids []*token3 pp := s.PublicParams() for _, id := range ids { // Token Info - outputID, err := keys.CreateFabtokenKey(id.TxId, int(id.Index)) + outputID, err := keys.CreateFabtokenKey(id.TxId, id.Index) if err != nil { return nil, nil, errors.Wrapf(err, "error creating output ID: %v", id) } @@ -53,7 +54,7 @@ func (s *Service) Transfer(txID string, wallet driver.OwnerWallet, ids []*token3 } // Token and InputID - outputID, err = keys.CreateTokenKey(id.TxId, int(id.Index)) + outputID, err = keys.CreateTokenKey(id.TxId, id.Index) if err != nil { return nil, nil, errors.Wrapf(err, "error creating output ID: %v", id) } diff --git a/token/core/zkatdlog/nogh/service.go b/token/core/zkatdlog/nogh/service.go index fe85ffd7f..32f784597 100644 --- a/token/core/zkatdlog/nogh/service.go +++ b/token/core/zkatdlog/nogh/service.go @@ -33,13 +33,13 @@ type Channel interface { } type TokenCommitmentLoader interface { - GetTokenCommitments(ids []*token3.Id) ([]*token.Token, error) + GetTokenCommitments(ids []*token3.ID) ([]*token.Token, error) } type QueryEngine interface { - IsMine(id *token3.Id) (bool, error) + IsMine(id *token3.ID) (bool, error) ListUnspentTokens() (*token3.UnspentTokens, error) - ListAuditTokens(ids ...*token3.Id) ([]*token3.Token, error) + ListAuditTokens(ids ...*token3.ID) ([]*token3.Token, error) ListHistoryIssuedTokens() (*token3.IssuedTokens, error) } diff --git a/token/driver/certfication.go b/token/driver/certfication.go index 0e3af4f7f..b249970b6 100644 --- a/token/driver/certfication.go +++ b/token/driver/certfication.go @@ -8,12 +8,12 @@ package driver import token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" type CertificationClient interface { - IsCertified(id *token2.Id) bool - RequestCertification(ids ...*token2.Id) error + IsCertified(id *token2.ID) bool + RequestCertification(ids ...*token2.ID) error } type CertificationService interface { - NewCertificationRequest(ids []*token2.Id) ([]byte, error) - Certify(wallet CertifierWallet, ids []*token2.Id, tokens [][]byte, request []byte) ([][]byte, error) - VerifyCertifications(ids []*token2.Id, certifications [][]byte) error + NewCertificationRequest(ids []*token2.ID) ([]byte, error) + Certify(wallet CertifierWallet, ids []*token2.ID, tokens [][]byte, request []byte) ([][]byte, error) + VerifyCertifications(ids []*token2.ID, certifications [][]byte) error } diff --git a/token/driver/request.go b/token/driver/request.go index 3136f389c..417f05924 100644 --- a/token/driver/request.go +++ b/token/driver/request.go @@ -40,7 +40,7 @@ type IssueMetadata struct { // TransferMetadata contains the following information: // - For each TokenID there is a sender type TransferMetadata struct { - TokenIDs []*token2.Id + TokenIDs []*token2.ID Outputs [][]byte TokenInfo [][]byte Senders []view.Identity @@ -118,8 +118,8 @@ func (m *TokenRequestMetadata) Issuers() [][]byte { return res } -func (m *TokenRequestMetadata) Inputs() []*token2.Id { - var res []*token2.Id +func (m *TokenRequestMetadata) Inputs() []*token2.ID { + var res []*token2.ID for _, transfer := range m.Transfers { res = append(res, transfer.TokenIDs...) } diff --git a/token/driver/transfer.go b/token/driver/transfer.go index 0d939cc66..5450f5669 100644 --- a/token/driver/transfer.go +++ b/token/driver/transfer.go @@ -10,7 +10,7 @@ import ( ) type TransferService interface { - Transfer(txID string, wallet OwnerWallet, ids []*token2.Id, Outputs ...*token2.Token) (TransferAction, *TransferMetadata, error) + Transfer(txID string, wallet OwnerWallet, ids []*token2.ID, Outputs ...*token2.Token) (TransferAction, *TransferMetadata, error) VerifyTransfer(tr TransferAction, tokenInfos [][]byte) error diff --git a/token/driver/vault.go b/token/driver/vault.go index c57dceb09..84a2e5399 100644 --- a/token/driver/vault.go +++ b/token/driver/vault.go @@ -9,34 +9,34 @@ import ( "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) -type QueryCallbackFunc func(*token.Id, []byte) error +type QueryCallbackFunc func(*token.ID, []byte) error type Vault interface { QueryEngine() QueryEngine } type CertificationStorage interface { - Exists(id *token.Id) bool - Store(certifications map[*token.Id][]byte) error + Exists(id *token.ID) bool + Store(certifications map[*token.ID][]byte) error } type QueryEngine interface { // IsMine returns true if the passed id is owned by any known wallet - IsMine(id *token.Id) (bool, error) + IsMine(id *token.ID) (bool, error) // ListUnspentTokens returns the list of unspent tokens ListUnspentTokens() (*token.UnspentTokens, error) // ListAuditTokens returns the audited tokens associated to the passed ids - ListAuditTokens(ids ...*token.Id) ([]*token.Token, error) + ListAuditTokens(ids ...*token.ID) ([]*token.Token, error) // ListHistoryIssuedTokens returns the list of issues tokens ListHistoryIssuedTokens() (*token.IssuedTokens, error) // PublicParams returns the public parameters PublicParams() ([]byte, error) // GetTokenInfos retrieves the token information for the passed ids. // For each id, the callback is invoked to unmarshal the token information - GetTokenInfos(ids []*token.Id, callback QueryCallbackFunc) error + GetTokenInfos(ids []*token.ID, callback QueryCallbackFunc) error // GetTokenCommitments retrieves the token commitments for the passed ids. // For each id, the callback is invoked to unmarshal the token commitment - GetTokenCommitments(ids []*token.Id, callback QueryCallbackFunc) error + GetTokenCommitments(ids []*token.ID, callback QueryCallbackFunc) error // GetTokens returns the list of tokens with their respective vault keys - GetTokens(inputs ...*token.Id) ([]string, []*token.Token, error) + GetTokens(inputs ...*token.ID) ([]string, []*token.Token, error) } diff --git a/token/metadata.go b/token/metadata.go index 54d42ac81..fde2d203a 100644 --- a/token/metadata.go +++ b/token/metadata.go @@ -37,8 +37,8 @@ func (m *Metadata) GetToken(raw []byte) (*token2.Token, view.Identity, []byte, e return tok, id, tokenInfoRaw, nil } -func (m *Metadata) SpentTokenID() []*token2.Id { - var res []*token2.Id +func (m *Metadata) SpentTokenID() []*token2.ID { + var res []*token2.ID for _, transfer := range m.tokenRequestMetadata.Transfers { res = append(res, transfer.TokenIDs...) } diff --git a/token/request.go b/token/request.go index 03cbc58cf..1420635e5 100644 --- a/token/request.go +++ b/token/request.go @@ -50,7 +50,7 @@ type TransferOptions struct { // Selector is the custom token selector to use. If nil, the default will be used. Selector Selector // TokenIDs to transfer. If empty, the tokens will be selected. - TokenIDs []*token.Id + TokenIDs []*token.ID } func compileTransferOptions(opts ...TransferOption) (*TransferOptions, error) { @@ -75,7 +75,7 @@ func WithTokenSelector(selector Selector) TransferOption { } // WithTokenIDs sets the tokens ids to transfer -func WithTokenIDs(ids ...*token.Id) TransferOption { +func WithTokenIDs(ids ...*token.ID) TransferOption { return func(o *TransferOptions) error { o.TokenIDs = ids return nil @@ -610,7 +610,7 @@ func (t *Request) countOutputs() (int, error) { return sum, nil } -func (t *Request) parseInputIDs(inputs []*token.Id) ([]*token.Id, token.Quantity, string, error) { +func (t *Request) parseInputIDs(inputs []*token.ID) ([]*token.ID, token.Quantity, string, error) { inputTokens, err := t.TokenService.Vault().NewQueryEngine().GetTokens(inputs...) if err != nil { return nil, nil, "", errors.WithMessagef(err, "failed querying tokens ids") @@ -634,7 +634,7 @@ func (t *Request) parseInputIDs(inputs []*token.Id) ([]*token.Id, token.Quantity return inputs, sum, typ, nil } -func (t *Request) prepareTransfer(redeem bool, wallet *OwnerWallet, typ string, values []uint64, owners []view.Identity, opts ...TransferOption) ([]*token.Id, []*token.Token, error) { +func (t *Request) prepareTransfer(redeem bool, wallet *OwnerWallet, typ string, values []uint64, owners []view.Identity, opts ...TransferOption) ([]*token.ID, []*token.Token, error) { // compile options transferOpts, err := compileTransferOptions(opts...) if err != nil { @@ -652,7 +652,7 @@ func (t *Request) prepareTransfer(redeem bool, wallet *OwnerWallet, typ string, } } } - var tokenIDs []*token.Id + var tokenIDs []*token.ID var inputSum token.Quantity // if inputs have been passed, parse and certify them, if needed diff --git a/token/selector.go b/token/selector.go index e68950273..44b00c5cb 100644 --- a/token/selector.go +++ b/token/selector.go @@ -42,5 +42,5 @@ type Selector interface { // Quantity is a string in decimal format // Notice that, the quantity selected might exceed the quantity requested due to the amounts // stored in each token. - Select(ownerFilter OwnerFilter, q, tokenType string) ([]*token2.Id, token2.Quantity, error) + Select(ownerFilter OwnerFilter, q, tokenType string) ([]*token2.ID, token2.Quantity, error) } diff --git a/token/services/certifier/client.go b/token/services/certifier/client.go index 35fe6f599..7672d53fc 100644 --- a/token/services/certifier/client.go +++ b/token/services/certifier/client.go @@ -29,10 +29,10 @@ func NewCertificationClient(sp view.ServiceProvider, network, channel, namespace return &CertificationClient{c: c}, nil } -func (c *CertificationClient) IsCertified(id *token2.Id) bool { +func (c *CertificationClient) IsCertified(id *token2.ID) bool { return c.c.IsCertified(id) } -func (c *CertificationClient) RequestCertification(ids ...*token2.Id) error { +func (c *CertificationClient) RequestCertification(ids ...*token2.ID) error { return c.c.RequestCertification(ids...) } diff --git a/token/services/certifier/driver/driver.go b/token/services/certifier/driver/driver.go index b356493fa..3be5764ea 100644 --- a/token/services/certifier/driver/driver.go +++ b/token/services/certifier/driver/driver.go @@ -11,8 +11,8 @@ import ( ) type CertificationClient interface { - IsCertified(id *token2.Id) bool - RequestCertification(ids ...*token2.Id) error + IsCertified(id *token2.ID) bool + RequestCertification(ids ...*token2.ID) error } type CertificationService interface { diff --git a/token/services/certifier/dummy/driver.go b/token/services/certifier/dummy/driver.go index 9a7cca95a..bdea0fbc5 100644 --- a/token/services/certifier/dummy/driver.go +++ b/token/services/certifier/dummy/driver.go @@ -20,11 +20,11 @@ const ( type CertificationClient struct{} -func (c *CertificationClient) IsCertified(id *token2.Id) bool { +func (c *CertificationClient) IsCertified(id *token2.ID) bool { return true } -func (c *CertificationClient) RequestCertification(ids ...*token2.Id) error { +func (c *CertificationClient) RequestCertification(ids ...*token2.ID) error { return nil } diff --git a/token/services/certifier/interactive/client.go b/token/services/certifier/interactive/client.go index b53f42140..b111eed7f 100644 --- a/token/services/certifier/interactive/client.go +++ b/token/services/certifier/interactive/client.go @@ -22,8 +22,8 @@ type QueryEngine interface { } type CertificationStorage interface { - Exists(id *token2.Id) bool - Store(certifications map[*token2.Id][]byte) error + Exists(id *token2.ID) bool + Store(certifications map[*token2.ID][]byte) error } type Vault interface { @@ -75,12 +75,12 @@ func NewCertificationClient( } } -func (d *CertificationClient) IsCertified(id *token2.Id) bool { +func (d *CertificationClient) IsCertified(id *token2.ID) bool { return d.certificationStorage.Exists(id) } -func (d *CertificationClient) RequestCertification(ids ...*token2.Id) error { - var toBeCertified []*token2.Id +func (d *CertificationClient) RequestCertification(ids ...*token2.ID) error { + var toBeCertified []*token2.ID for _, id := range ids { if !d.IsCertified(id) { toBeCertified = append(toBeCertified, id) @@ -95,9 +95,9 @@ func (d *CertificationClient) RequestCertification(ids ...*token2.Id) error { if err != nil { return err } - certifications, ok := resultBoxed.(map[*token2.Id][]byte) + certifications, ok := resultBoxed.(map[*token2.ID][]byte) if !ok { - panic("invalid type, expected map[token.Id][]byte") + panic("invalid type, expected map[token.ID][]byte") } if err := d.certificationStorage.Store(certifications); err != nil { return err @@ -118,7 +118,7 @@ func (d *CertificationClient) Scan() { if err != nil { break } - var toBeCertified []*token2.Id + var toBeCertified []*token2.ID for _, token := range tokens.Tokens { // does token have a certification? if !d.certificationStorage.Exists(token.Id) { diff --git a/token/services/certifier/interactive/service.go b/token/services/certifier/interactive/service.go index 24017adf1..81e5b3bcc 100644 --- a/token/services/certifier/interactive/service.go +++ b/token/services/certifier/interactive/service.go @@ -106,7 +106,7 @@ func (c *CertificationService) Call(context view.Context) (interface{}, error) { type CertificationRequest struct { Network, Channel, Namespace string - IDs []*token.Id + IDs []*token.ID Request []byte } @@ -116,11 +116,11 @@ func (cr *CertificationRequest) String() string { type CertificationRequestView struct { network, channel, ns string - ids []*token.Id + ids []*token.ID certifier view.Identity } -func NewCertificationRequestView(channel, ns string, certifier view.Identity, ids ...*token.Id) *CertificationRequestView { +func NewCertificationRequestView(channel, ns string, certifier view.Identity, ids ...*token.ID) *CertificationRequestView { return &CertificationRequestView{ channel: channel, certifier: certifier, @@ -179,7 +179,7 @@ func (i *CertificationRequestView) Call(context view.Context) (interface{}, erro logger.Debugf("certifications of [%v] from [%s] are valid", i.ids, i.certifier) // 5. return token certifications in the form of a map - result := map[*token.Id][]byte{} + result := map[*token.ID][]byte{} for index, id := range i.ids { result[id] = certifications[index] } diff --git a/token/services/fabric/processor.go b/token/services/fabric/processor.go index 8b440d09c..f8738c6f8 100644 --- a/token/services/fabric/processor.go +++ b/token/services/fabric/processor.go @@ -139,7 +139,7 @@ func (r *RWSetProcessor) tokenRequest(req fabric.Request, tx fabric.ProcessTrans if tms.PublicParametersManager().GraphHiding() { // Delete inputs for _, id := range metadata.SpentTokenID() { - if err := r.deleteFabToken(ns, id.TxId, int(id.Index), rws); err != nil { + if err := r.deleteFabToken(ns, id.TxId, id.Index, rws); err != nil { return err } } @@ -174,7 +174,7 @@ func (r *RWSetProcessor) tokenRequest(req fabric.Request, tx fabric.ProcessTrans continue } - index, err := strconv.Atoi(components[1]) + index, err := strconv.ParseUint(components[1], 10, 64) if err != nil { logger.Errorf("invalid output index for key [%s]", key) return errors.Wrapf(err, "invalid output index for key [%s]", key) diff --git a/token/services/fabric/support.go b/token/services/fabric/support.go index ccb11403e..7d6dafc76 100644 --- a/token/services/fabric/support.go +++ b/token/services/fabric/support.go @@ -17,7 +17,7 @@ import ( token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token" ) -func (r *RWSetProcessor) deleteFabToken(ns string, txID string, index int, rws *fabric.RWSet) error { +func (r *RWSetProcessor) deleteFabToken(ns string, txID string, index uint64, rws *fabric.RWSet) error { outputID, err := keys.CreateFabtokenKey(txID, index) if err != nil { return errors.Wrapf(err, "error creating output ID: %s", err) @@ -34,7 +34,7 @@ func (r *RWSetProcessor) deleteFabToken(ns string, txID string, index int, rws * return nil } -func (r *RWSetProcessor) storeFabToken(ns string, txID string, index int, tok *token2.Token, rws *fabric.RWSet, infoRaw []byte) error { +func (r *RWSetProcessor) storeFabToken(ns string, txID string, index uint64, tok *token2.Token, rws *fabric.RWSet, infoRaw []byte) error { outputID, err := keys.CreateFabtokenKey(txID, index) if err != nil { return errors.Wrapf(err, "error creating output ID: %s", err) @@ -52,15 +52,15 @@ func (r *RWSetProcessor) storeFabToken(ns string, txID string, index int, tok *t return nil } -func (r *RWSetProcessor) storeIssuedHistoryToken(ns string, txID string, index int, tok *token2.Token, rws *fabric.RWSet, infoRaw []byte, issuer view.Identity) error { +func (r *RWSetProcessor) storeIssuedHistoryToken(ns string, txID string, index uint64, tok *token2.Token, rws *fabric.RWSet, infoRaw []byte, issuer view.Identity) error { outputID, err := keys.CreateIssuedHistoryTokenKey(txID, index) if err != nil { return errors.Wrapf(err, "error creating output ID: [%s,%d]", txID, index) } issuedToken := &token2.IssuedToken{ - Id: &token2.Id{ + Id: &token2.ID{ TxId: txID, - Index: uint32(index), + Index: index, }, Owner: tok.Owner, Type: tok.Type, @@ -91,7 +91,7 @@ func (r *RWSetProcessor) storeIssuedHistoryToken(ns string, txID string, index i return nil } -func (r *RWSetProcessor) storeAuditToken(ns string, txID string, index int, tok *token2.Token, rws *fabric.RWSet, infoRaw []byte) error { +func (r *RWSetProcessor) storeAuditToken(ns string, txID string, index uint64, tok *token2.Token, rws *fabric.RWSet, infoRaw []byte) error { outputID, err := keys.CreateAuditTokenKey(txID, index) if err != nil { return errors.Wrapf(err, "error creating output ID: %s", err) diff --git a/token/services/selector/inmemory/locker.go b/token/services/selector/inmemory/locker.go index d247ada80..0a4585662 100644 --- a/token/services/selector/inmemory/locker.go +++ b/token/services/selector/inmemory/locker.go @@ -60,7 +60,7 @@ func NewLocker(vault Vault, timeout time.Duration, validTxEvictionTimeoutMillis return r } -func (d *locker) Lock(id *token2.Id, txID string) (string, error) { +func (d *locker) Lock(id *token2.ID, txID string) (string, error) { d.lock.Lock() defer d.lock.Unlock() @@ -82,7 +82,7 @@ func (d *locker) Lock(id *token2.Id, txID string) (string, error) { return "", nil } -func (d *locker) UnlockIDs(ids ...*token2.Id) { +func (d *locker) UnlockIDs(ids ...*token2.ID) { d.lock.Lock() defer d.lock.Unlock() @@ -113,7 +113,7 @@ func (d *locker) UnlockByTxID(txID string) { } } -func (d *locker) reclaim(id *token2.Id, txID string) (bool, int) { +func (d *locker) reclaim(id *token2.ID, txID string) (bool, int) { status, err := d.vault.Status(txID) if err != nil { return false, status diff --git a/token/services/selector/selector.go b/token/services/selector/selector.go index 0f959347e..55665be35 100644 --- a/token/services/selector/selector.go +++ b/token/services/selector/selector.go @@ -19,22 +19,22 @@ import ( type QueryService interface { ListUnspentTokens() (*token2.UnspentTokens, error) - GetTokens(inputs ...*token2.Id) ([]*token2.Token, error) + GetTokens(inputs ...*token2.ID) ([]*token2.Token, error) } type CertificationClient interface { - IsCertified(id *token2.Id) bool - RequestCertification(ids ...*token2.Id) error + IsCertified(id *token2.ID) bool + RequestCertification(ids ...*token2.ID) error } type CertClient interface { - IsCertified(id *token2.Id) bool - RequestCertification(ids ...*token2.Id) error + IsCertified(id *token2.ID) bool + RequestCertification(ids ...*token2.ID) error } type Locker interface { - Lock(id *token2.Id, txID string) (string, error) - UnlockIDs(id ...*token2.Id) + Lock(id *token2.ID, txID string) (string, error) + UnlockIDs(id ...*token2.ID) UnlockByTxID(txID string) } @@ -64,12 +64,12 @@ func newSelector(txID string, locker Locker, service QueryService, certClient Ce } // Select selects tokens to be spent based on ownership, quantity, and type -func (s *selector) Select(ownerFilter token.OwnerFilter, q, tokenType string) ([]*token2.Id, token2.Quantity, error) { +func (s *selector) Select(ownerFilter token.OwnerFilter, q, tokenType string) ([]*token2.ID, token2.Quantity, error) { if ownerFilter == nil { ownerFilter = &allOwners{} } - var toBeSpent []*token2.Id + var toBeSpent []*token2.ID var sum token2.Quantity var potentialSumWithLocked token2.Quantity var potentialSumWithNonCertified token2.Quantity @@ -92,8 +92,8 @@ func (s *selector) Select(ownerFilter token.OwnerFilter, q, tokenType string) ([ potentialSumWithLocked = token2.NewZeroQuantity(s.precision) potentialSumWithNonCertified = token2.NewZeroQuantity(s.precision) toBeSpent = nil - var toBeCertified []*token2.Id - var locked []*token2.Id + var toBeCertified []*token2.ID + var locked []*token2.ID for _, t := range unspentTokens.Tokens { q, err := token2.ToQuantity(t.Quantity, s.precision) @@ -232,7 +232,7 @@ func (s *selector) Select(ownerFilter token.OwnerFilter, q, tokenType string) ([ } } -func (s *selector) concurrencyCheck(ids []*token2.Id) error { +func (s *selector) concurrencyCheck(ids []*token2.ID) error { _, err := s.queryService.GetTokens(ids...) return err } diff --git a/token/services/tcc/certifier.go b/token/services/tcc/certifier.go index 27c5264d3..085df4db0 100644 --- a/token/services/tcc/certifier.go +++ b/token/services/tcc/certifier.go @@ -72,10 +72,10 @@ type GetTokenView struct { Network string Channel string Namespace string - IDs []*token2.Id + IDs []*token2.ID } -func NewGetTokensView(channel string, namespace string, ids ...*token2.Id) *GetTokenView { +func NewGetTokensView(channel string, namespace string, ids ...*token2.ID) *GetTokenView { if len(ids) == 0 { panic("no ids specified") } diff --git a/token/services/tcc/tcc.go b/token/services/tcc/tcc.go index 9c7d1b044..a67e1bfe3 100644 --- a/token/services/tcc/tcc.go +++ b/token/services/tcc/tcc.go @@ -362,7 +362,7 @@ func (cc *TokenChaincode) addCertifier(certifier []byte, stub shim.ChaincodeStub } func (cc *TokenChaincode) queryTokens(idsRaw []byte, stub shim.ChaincodeStubInterface) pb.Response { - var ids []*token2.Id + 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()) diff --git a/token/services/vault/certification/storage.go b/token/services/vault/certification/storage.go index 3701649d9..aabedb688 100644 --- a/token/services/vault/certification/storage.go +++ b/token/services/vault/certification/storage.go @@ -25,7 +25,7 @@ func NewStorage(sp view.ServiceProvider, channel string, namespace string) *Stor return &Storage{sp: sp, channel: channel, namespace: namespace} } -func (v *Storage) Exists(id *token.Id) bool { +func (v *Storage) Exists(id *token.ID) bool { k := kvs.CreateCompositeKeyOrPanic( "token-sdk.certifier.certification", []string{ @@ -38,7 +38,7 @@ func (v *Storage) Exists(id *token.Id) bool { return kvs.GetService(v.sp).Exists(k) } -func (v *Storage) Store(certifications map[*token.Id][]byte) error { +func (v *Storage) Store(certifications map[*token.ID][]byte) error { for id, certification := range certifications { k := kvs.CreateCompositeKeyOrPanic( "token-sdk.certifier.certification", @@ -56,7 +56,7 @@ func (v *Storage) Store(certifications map[*token.Id][]byte) error { return nil } -func (v *Storage) Get(ids []*token.Id, callback func(*token.Id, []byte) error) error { +func (v *Storage) Get(ids []*token.ID, callback func(*token.ID, []byte) error) error { for _, id := range ids { k := kvs.CreateCompositeKeyOrPanic( "token-sdk.certifier.certification", diff --git a/token/services/vault/keys/keys.go b/token/services/vault/keys/keys.go index 45fc19de3..1a5b48007 100644 --- a/token/services/vault/keys/keys.go +++ b/token/services/vault/keys/keys.go @@ -39,7 +39,7 @@ const ( IssueActionMetadata = "iam" ) -func GetTokenIdFromKey(key string) (*token2.Id, error) { +func GetTokenIdFromKey(key string) (*token2.ID, error) { _, components, err := SplitCompositeKey(key) if err != nil { return nil, errors.New(fmt.Sprintf("error splitting input composite key: '%s'", err)) @@ -52,11 +52,11 @@ func GetTokenIdFromKey(key string) (*token2.Id, error) { // txid and index are the last 2 components txID := components[numComponentsInKey-2] - index, err := strconv.Atoi(components[numComponentsInKey-1]) + index, err := strconv.ParseUint(components[numComponentsInKey-1], 10, 64) if err != nil { return nil, errors.New(fmt.Sprintf("error parsing output index '%s': '%s'", components[numComponentsInKey-1], err)) } - return &token2.Id{TxId: txID, Index: uint32(index)}, nil + return &token2.ID{TxId: txID, Index: index}, nil } func SplitCompositeKey(compositeKey string) (string, []string, error) { @@ -78,8 +78,8 @@ func SplitCompositeKey(compositeKey string) (string, []string, error) { // CreateTokenKey Creates a rwset key for an individual output in a token transaction, as a function of // the token owner, transaction ID, and index of the output // TODO: move index to uint32 of uint64 -func CreateTokenKey(txID string, index int) (string, error) { - return CreateCompositeKey(TokenKeyPrefix, []string{txID, strconv.Itoa(index)}) +func CreateTokenKey(txID string, index uint64) (string, error) { + return CreateCompositeKey(TokenKeyPrefix, []string{txID, strconv.FormatUint(index, 10)}) } func CreateSNKey(sn string) (string, error) { @@ -87,16 +87,16 @@ func CreateSNKey(sn string) (string, error) { } // TODO: move index to uint32 of uint64 -func CreateFabtokenKey(txID string, index int) (string, error) { - return CreateCompositeKey(FabTokenKeyPrefix, []string{txID, strconv.Itoa(index)}) +func CreateFabtokenKey(txID string, index uint64) (string, error) { + return CreateCompositeKey(FabTokenKeyPrefix, []string{txID, strconv.FormatUint(index, 10)}) } -func CreateAuditTokenKey(txID string, index int) (string, error) { - return CreateCompositeKey(AuditTokenKeyPrefix, []string{txID, strconv.Itoa(index)}) +func CreateAuditTokenKey(txID string, index uint64) (string, error) { + return CreateCompositeKey(AuditTokenKeyPrefix, []string{txID, strconv.FormatUint(index, 10)}) } -func CreateTokenMineKey(txID string, index int) (string, error) { - return CreateCompositeKey(TokenKeyPrefix, []string{TokenMineKeyPrefix, txID, strconv.Itoa(index)}) +func CreateTokenMineKey(txID string, index uint64) (string, error) { + return CreateCompositeKey(TokenKeyPrefix, []string{TokenMineKeyPrefix, txID, strconv.FormatUint(index, 10)}) } func CreateSetupKey() (string, error) { @@ -143,8 +143,8 @@ func ValidateCompositeKeyAttribute(str string) error { return nil } -func CreateIssuedHistoryTokenKey(txID string, index int) (string, error) { - return CreateCompositeKey(IssuedHistoryTokenKeyPrefix, []string{txID, strconv.Itoa(index)}) +func CreateIssuedHistoryTokenKey(txID string, index uint64) (string, error) { + return CreateCompositeKey(IssuedHistoryTokenKeyPrefix, []string{txID, strconv.FormatUint(index, 10)}) } /* diff --git a/token/services/vault/query/query.go b/token/services/vault/query/query.go index 09ed1386d..7aad3432a 100644 --- a/token/services/vault/query/query.go +++ b/token/services/vault/query/query.go @@ -32,14 +32,14 @@ func NewEngine(vault driver.Vault, namespace string) *Engine { } } -func (e *Engine) IsMine(id *token.Id) (bool, error) { +func (e *Engine) IsMine(id *token.ID) (bool, error) { qe, err := e.Vault.NewQueryExecutor() if err != nil { return false, err } defer qe.Done() - key, err := keys.CreateTokenMineKey(id.TxId, int(id.Index)) + key, err := keys.CreateTokenMineKey(id.TxId, id.Index) if err != nil { return false, err } @@ -122,7 +122,7 @@ func (e *Engine) ListUnspentTokens() (*token.UnspentTokens, error) { } } -func (e *Engine) ListAuditTokens(ids ...*token.Id) ([]*token.Token, error) { +func (e *Engine) ListAuditTokens(ids ...*token.ID) ([]*token.Token, error) { logger.Debugf("retrieve inputs for auditing...") qe, err := e.Vault.NewQueryExecutor() if err != nil { @@ -132,7 +132,7 @@ func (e *Engine) ListAuditTokens(ids ...*token.Id) ([]*token.Token, error) { var res []*token.Token for _, id := range ids { - idKey, err := keys.CreateAuditTokenKey(id.TxId, int(id.Index)) + idKey, err := keys.CreateAuditTokenKey(id.TxId, id.Index) if err != nil { return nil, errors.Wrapf(err, "failed generating id key [%v]", id) } @@ -243,14 +243,14 @@ func (e *Engine) PublicParams() ([]byte, error) { return raw, nil } -func (e *Engine) GetTokenInfos(ids []*token.Id, callback driver2.QueryCallbackFunc) error { +func (e *Engine) GetTokenInfos(ids []*token.ID, callback driver2.QueryCallbackFunc) error { qe, err := e.Vault.NewQueryExecutor() if err != nil { return err } defer qe.Done() for _, id := range ids { - outputID, err := keys.CreateFabtokenKey(id.TxId, int(id.Index)) + outputID, err := keys.CreateFabtokenKey(id.TxId, id.Index) if err != nil { return errors.Wrapf(err, "error creating output ID: %v", id) } @@ -266,14 +266,14 @@ func (e *Engine) GetTokenInfos(ids []*token.Id, callback driver2.QueryCallbackFu return nil } -func (e *Engine) GetTokenCommitments(ids []*token.Id, callback driver2.QueryCallbackFunc) error { +func (e *Engine) GetTokenCommitments(ids []*token.ID, callback driver2.QueryCallbackFunc) error { qe, err := e.Vault.NewQueryExecutor() if err != nil { return err } defer qe.Done() for _, id := range ids { - outputID, err := keys.CreateTokenKey(id.TxId, int(id.Index)) + outputID, err := keys.CreateTokenKey(id.TxId, id.Index) if err != nil { return errors.Wrapf(err, "error creating output ID: %v", id) } @@ -289,7 +289,7 @@ func (e *Engine) GetTokenCommitments(ids []*token.Id, callback driver2.QueryCall return nil } -func (e *Engine) GetTokens(inputs ...*token.Id) ([]string, []*token.Token, error) { +func (e *Engine) GetTokens(inputs ...*token.ID) ([]string, []*token.Token, error) { logger.Debugf("retrieve tokens from ids...") qe, err := e.Vault.NewQueryExecutor() if err != nil { @@ -300,7 +300,7 @@ func (e *Engine) GetTokens(inputs ...*token.Id) ([]string, []*token.Token, error var res []*token.Token var resKeys []string for _, id := range inputs { - idKey, err := keys.CreateFabtokenKey(id.TxId, int(id.Index)) + idKey, err := keys.CreateFabtokenKey(id.TxId, id.Index) if err != nil { return nil, nil, errors.Wrapf(err, "failed generating id key [%v]", id) } @@ -316,7 +316,7 @@ func (e *Engine) GetTokens(inputs ...*token.Id) ([]string, []*token.Token, error return nil, nil, errors.Wrapf(err, "failed unmarshalling token for key [%v]", idKey) } - idKey, err = keys.CreateTokenKey(id.TxId, int(id.Index)) + idKey, err = keys.CreateTokenKey(id.TxId, id.Index) if err != nil { return nil, nil, errors.Wrapf(err, "failed generating id key [%v]", id) } diff --git a/token/services/vault/translator/translator.go b/token/services/vault/translator/translator.go index fc135598f..dd2a45adb 100644 --- a/token/services/vault/translator/translator.go +++ b/token/services/vault/translator/translator.go @@ -23,7 +23,7 @@ type Translator struct { IssuingValidator IssuingValidator RWSet RWSet TxID string - counter int + counter uint64 namespace string } @@ -120,7 +120,7 @@ func (w *Translator) checkIssue(issue IssueAction) error { // check if the keys of issued tokens aren't already used. // check is assigned owners are valid for i := 0; i < issue.NumOutputs(); i++ { - err = w.checkTokenDoesNotExist(w.counter+i, w.TxID) + err = w.checkTokenDoesNotExist(w.counter+uint64(i), w.TxID) if err != nil { return err } @@ -158,7 +158,7 @@ func (w *Translator) checkTransfer(t TransferAction) error { for i := 0; i < t.NumOutputs(); i++ { if !t.IsRedeemAt(i) { // this is not a redeemed output - err := w.checkTokenDoesNotExist(w.counter+i, w.TxID) + err := w.checkTokenDoesNotExist(w.counter+uint64(i), w.TxID) if err != nil { return err } @@ -168,7 +168,7 @@ func (w *Translator) checkTransfer(t TransferAction) error { return nil } -func (w *Translator) checkTokenDoesNotExist(index int, txID string) error { +func (w *Translator) checkTokenDoesNotExist(index uint64, txID string) error { tokenKey, err := keys.CreateTokenKey(txID, index) if err != nil { return errors.Wrapf(err, "error creating output ID") @@ -237,7 +237,7 @@ func (w *Translator) commitIssueAction(issueAction IssueAction) error { return err } for i, output := range outputs { - outputID, err := keys.CreateTokenKey(w.TxID, base+i) + outputID, err := keys.CreateTokenKey(w.TxID, base+uint64(i)) if err != nil { return errors.Errorf("error creating output ID: %s", err) } @@ -271,7 +271,7 @@ func (w *Translator) commitIssueAction(issueAction IssueAction) error { return err } } - w.counter = w.counter + len(outputs) + w.counter = w.counter + uint64(len(outputs)) return nil } @@ -281,7 +281,7 @@ func (w *Translator) commitTransferAction(transferAction TransferAction) error { base := w.counter for i := 0; i < transferAction.NumOutputs(); i++ { if !transferAction.IsRedeemAt(i) { - outputID, err := keys.CreateTokenKey(w.TxID, base+i) + outputID, err := keys.CreateTokenKey(w.TxID, base+uint64(i)) if err != nil { return errors.Errorf("error creating output ID: %s", err) } @@ -308,7 +308,7 @@ func (w *Translator) commitTransferAction(transferAction TransferAction) error { if err != nil { return err } - w.counter = w.counter + transferAction.NumOutputs() + w.counter = w.counter + uint64(transferAction.NumOutputs()) return nil } @@ -352,11 +352,11 @@ func (w *Translator) ReadSetupParameters() ([]byte, error) { return raw, nil } -func (w *Translator) QueryTokens(ids []*token2.Id) ([][]byte, error) { +func (w *Translator) QueryTokens(ids []*token2.ID) ([][]byte, error) { var res [][]byte var errs []error for _, id := range ids { - outputID, err := keys.CreateTokenKey(id.TxId, int(id.Index)) + outputID, err := keys.CreateTokenKey(id.TxId, id.Index) if err != nil { errs = append(errs, errors.Errorf("error creating output ID: %s", err)) continue diff --git a/token/stream.go b/token/stream.go index c23837ad8..4656f78d2 100644 --- a/token/stream.go +++ b/token/stream.go @@ -23,7 +23,7 @@ type Output struct { type Input struct { ActionIndex int - Id *token2.Id + Id *token2.ID Owner view.Identity EnrollmentID string Type string @@ -31,7 +31,7 @@ type Input struct { } type QueryService interface { - IsMine(id *token2.Id) (bool, error) + IsMine(id *token2.ID) (bool, error) } type OutputStream struct { @@ -180,8 +180,8 @@ func (is *InputStream) At(i int) *Input { return is.inputs[i] } -func (is *InputStream) IDs() []*token2.Id { - var res []*token2.Id +func (is *InputStream) IDs() []*token2.ID { + var res []*token2.ID for _, input := range is.inputs { res = append(res, input.Id) } diff --git a/token/token/token.go b/token/token/token.go index 31b513b6c..28da9b6c7 100644 --- a/token/token/token.go +++ b/token/token/token.go @@ -7,16 +7,16 @@ package token import "fmt" -// A Id identifies a token as a function of the identifier of the transaction (issue, transfer) +// ID identifies a token as a function of the identifier of the transaction (issue, transfer) // that created it and its index in that transaction -type Id struct { +type ID struct { // TxId is the transaction ID of the transaction that created the token TxId string `protobuf:"bytes,1,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // Index is the index of the token in the transaction that created it - Index uint32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` + Index uint64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` } -func (id *Id) String() string { +func (id *ID) String() string { return fmt.Sprintf("[%s:%d]", id.TxId, id.Index) } @@ -39,7 +39,7 @@ type Token struct { type IssuedToken struct { // Id is used to uniquely identify the token in the ledger - Id *Id `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id *ID `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Owner is the token owner Owner *Owner `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` // Type is the type of the token @@ -85,7 +85,7 @@ func (it *IssuedTokens) Count() int { // UnspentToken is used to specify a token returned by ListRequest type UnspentToken struct { // Id is used to uniquely identify the token in the ledger - Id *Id `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id *ID `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Owner is the token owner Owner *Owner `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` // Type is the type of the token diff --git a/token/vault.go b/token/vault.go index af37e5d96..59c312694 100644 --- a/token/vault.go +++ b/token/vault.go @@ -14,7 +14,7 @@ type QueryEngine struct { qe driver.QueryEngine } -func (q *QueryEngine) IsMine(id *token2.Id) (bool, error) { +func (q *QueryEngine) IsMine(id *token2.ID) (bool, error) { return q.qe.IsMine(id) } @@ -22,7 +22,7 @@ func (q *QueryEngine) ListUnspentTokens() (*token2.UnspentTokens, error) { return q.qe.ListUnspentTokens() } -func (q *QueryEngine) ListAuditTokens(ids ...*token2.Id) ([]*token2.Token, error) { +func (q *QueryEngine) ListAuditTokens(ids ...*token2.ID) ([]*token2.Token, error) { return q.qe.ListAuditTokens(ids...) } @@ -34,7 +34,7 @@ func (q *QueryEngine) PublicParams() ([]byte, error) { return q.qe.PublicParams() } -func (q *QueryEngine) GetTokens(inputs ...*token2.Id) ([]*token2.Token, error) { +func (q *QueryEngine) GetTokens(inputs ...*token2.ID) ([]*token2.Token, error) { _, tokens, err := q.qe.GetTokens(inputs...) return tokens, err }