Skip to content

Commit db94197

Browse files
authored
upgradability: add multiplexing driver #1091 (#1100)
Signed-off-by: Angelo De Caro <[email protected]>
1 parent ba63392 commit db94197

File tree

32 files changed

+480
-548
lines changed

32 files changed

+480
-548
lines changed

cmd/tokengen/main_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func validateOutputEquivalent(gt *WithT, tempOutput, auditorsMSPdir, issuersMSPd
219219
ppRaw, err := os.ReadFile(filepath.Join(tempOutput, "zkatdlog_pp.json"))
220220
gt.Expect(err).NotTo(HaveOccurred())
221221

222-
pp, err := v1.NewPublicParamsFromBytes(ppRaw, v1.DLogPublicParameters)
222+
pp, err := v1.NewPublicParamsFromBytes(ppRaw, v1.DLogIdentifier)
223223
gt.Expect(err).NotTo(HaveOccurred())
224224
gt.Expect(pp.Validate()).NotTo(HaveOccurred())
225225

cmd/tokengen/testdata/zkatdlog_pp.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

integration/token/fungible/fabtoken/fabtoken_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ func UpdatePublicParams(network *integration.Infrastructure, selector *token2.Re
4444
auditorId := fungible.GetAuditorIdentity(tms, "newAuditor")
4545
issuerId := fungible.GetIssuerIdentity(tms, "newIssuer")
4646
publicParam := fabtokenv1.PublicParams{
47-
Label: "fabtoken",
47+
DriverName: "fabtoken",
48+
DriverVersion: 1,
4849
QuantityPrecision: uint64(64),
4950
Auditor: auditorId,
5051
IssuerIDs: []driver.Identity{issuerId},

integration/token/fungible/support.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
common2 "github.com/hyperledger-labs/fabric-token-sdk/integration/token/common"
3030
"github.com/hyperledger-labs/fabric-token-sdk/integration/token/fungible/views"
3131
token2 "github.com/hyperledger-labs/fabric-token-sdk/token"
32+
"github.com/hyperledger-labs/fabric-token-sdk/token/core"
3233
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common/encoding/pp"
3334
fabtokenv1 "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1/setup"
3435
dlognoghv1 "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/nogh/v1/setup"
@@ -1438,11 +1439,11 @@ func PrepareUpdatedPublicParams(network *integration.Infrastructure, auditor str
14381439
}
14391440
var pp PP
14401441
switch genericPP.Identifier {
1441-
case dlognoghv1.DLogPublicParameters:
1442-
pp, err = dlognoghv1.NewPublicParamsFromBytes(ppBytes, dlognoghv1.DLogPublicParameters)
1442+
case string(core.DriverIdentifier(dlognoghv1.DLogIdentifier, dlognoghv1.ProtocolV1)):
1443+
pp, err = dlognoghv1.NewPublicParamsFromBytes(ppBytes, dlognoghv1.DLogIdentifier)
14431444
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1444-
case fabtokenv1.PublicParameters:
1445-
pp, err = fabtokenv1.NewPublicParamsFromBytes(ppBytes, fabtokenv1.PublicParameters)
1445+
case string(core.DriverIdentifier(fabtokenv1.FabTokenDriverName, fabtokenv1.ProtocolV1)):
1446+
pp, err = fabtokenv1.NewPublicParamsFromBytes(ppBytes, fabtokenv1.FabTokenDriverName)
14461447
gomega.Expect(err).NotTo(gomega.HaveOccurred())
14471448
default:
14481449
gomega.Expect(false).To(gomega.BeTrue(), "unknown pp identifier [%s]", genericPP.Identifier)
@@ -1490,11 +1491,11 @@ func PreparePublicParamsWithNewIssuer(network *integration.Infrastructure, issue
14901491
}
14911492
var pp PP
14921493
switch genericPP.Identifier {
1493-
case dlognoghv1.DLogPublicParameters:
1494-
pp, err = dlognoghv1.NewPublicParamsFromBytes(ppBytes, dlognoghv1.DLogPublicParameters)
1494+
case string(core.DriverIdentifier(dlognoghv1.DLogIdentifier, dlognoghv1.ProtocolV1)):
1495+
pp, err = dlognoghv1.NewPublicParamsFromBytes(ppBytes, dlognoghv1.DLogIdentifier)
14951496
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1496-
case fabtokenv1.PublicParameters:
1497-
pp, err = fabtokenv1.NewPublicParamsFromBytes(ppBytes, fabtokenv1.PublicParameters)
1497+
case string(core.DriverIdentifier(fabtokenv1.FabTokenDriverName, fabtokenv1.ProtocolV1)):
1498+
pp, err = fabtokenv1.NewPublicParamsFromBytes(ppBytes, fabtokenv1.FabTokenDriverName)
14981499
gomega.Expect(err).NotTo(gomega.HaveOccurred())
14991500
default:
15001501
gomega.Expect(false).To(gomega.BeTrue(), "unknown pp identitfier [%s]", genericPP.Identifier)

integration/token/fungible/tests.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1386,15 +1386,15 @@ func TestIdemixIssuerPublicKeyRotation(network *integration.Infrastructure, audi
13861386
CheckBalanceAndHolding(network, bob, "", "EUR", 110, auditor)
13871387

13881388
// rotate issuer public key, bob should be able to spend his token
1389-
pp, err := dlognoghv1.NewPublicParamsFromBytes(ppBytes, dlognoghv1.DLogPublicParameters)
1389+
pp, err := dlognoghv1.NewPublicParamsFromBytes(ppBytes, dlognoghv1.DLogIdentifier)
13901390
gomega.Expect(err).NotTo(gomega.HaveOccurred())
13911391
gomega.Expect(pp.Validate()).NotTo(gomega.HaveOccurred())
13921392

13931393
tmsBis := GetTMSByAlias(network, "dlog-32bits-bis")
13941394
ppBytesBis, err := os.ReadFile(tokenPlatform.PublicParametersFile(tmsBis))
13951395
gomega.Expect(err).NotTo(gomega.HaveOccurred())
13961396
gomega.Expect(ppBytesBis).NotTo(gomega.BeNil())
1397-
ppBis, err := dlognoghv1.NewPublicParamsFromBytes(ppBytesBis, dlognoghv1.DLogPublicParameters)
1397+
ppBis, err := dlognoghv1.NewPublicParamsFromBytes(ppBytesBis, dlognoghv1.DLogIdentifier)
13981398
gomega.Expect(err).NotTo(gomega.HaveOccurred())
13991399
gomega.Expect(ppBis.Validate()).NotTo(gomega.HaveOccurred())
14001400

token/core/common/ppm.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,28 @@ import (
1515
)
1616

1717
type PublicParamsDeserializer[T driver.PublicParameters] interface {
18-
DeserializePublicParams(raw []byte, label string) (T, error)
18+
DeserializePublicParams(raw []byte, name driver.TokenDriverName) (T, error)
1919
}
2020

2121
type PublicParamsManager[T driver.PublicParameters] struct {
2222
publicParameters T
2323
// label of the public params
24-
PPLabel string
25-
ppHash driver.PPHash
24+
DriverName driver.TokenDriverName
25+
ppHash driver.PPHash
2626
}
2727

2828
func NewPublicParamsManager[T driver.PublicParameters](
2929
PublicParamsDeserializer PublicParamsDeserializer[T],
30-
PPLabel string,
30+
driverName driver.TokenDriverName,
3131
ppRaw []byte,
3232
) (*PublicParamsManager[T], error) {
3333
ppm := &PublicParamsManager[T]{
34-
PPLabel: PPLabel,
34+
DriverName: driverName,
3535
}
3636
if len(ppRaw) == 0 {
3737
return nil, errors.Errorf("empty public parameters")
3838
}
39-
pp, err := PublicParamsDeserializer.DeserializePublicParams(ppRaw, PPLabel)
39+
pp, err := PublicParamsDeserializer.DeserializePublicParams(ppRaw, driverName)
4040
if err != nil {
4141
return nil, err
4242
}

token/core/fabtoken/protos-go/pp/ftpp.pb.go

Lines changed: 44 additions & 89 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/fabtoken/protos/ftpp.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ message Identity {
1616

1717
// PublicParameters describes typed public parameters
1818
message PublicParameters {
19-
string identifier = 1; // the identifier of the public parameters
20-
uint64 version = 2; // the version of these public params
19+
string token_driver_name = 1; // the name of the token driver
20+
uint64 token_driver_version = 2; // the version of token driver
2121
Identity auditor = 7; // is the public key of the auditor.
2222
repeated Identity issuers = 8; // is a list of public keys of the entities that can issue tokens.
2323
uint64 max_token = 9; // is the maximum quantity a token can hold

token/core/fabtoken/v1/driver/base.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ import (
2626
type base struct{}
2727

2828
func (d *base) PublicParametersFromBytes(params []byte) (driver.PublicParameters, error) {
29-
pp, err := core2.NewPublicParamsFromBytes(params, core2.PublicParameters)
29+
pp, err := core2.NewPublicParamsFromBytes(params, core2.FabTokenDriverName)
3030
if err != nil {
3131
return nil, errors.Wrap(err, "failed to unmarshal public parameters")
3232
}
3333
return pp, nil
3434
}
3535

3636
func (d *base) DefaultValidator(pp driver.PublicParameters) (driver.Validator, error) {
37-
logger := logging.DriverLoggerFromPP("token-sdk.driver.fabtoken", pp.Identifier())
37+
logger := logging.DriverLoggerFromPP("token-sdk.driver.fabtoken", string(core.DriverIdentifierFromPP(pp)))
3838
deserializer := NewDeserializer()
3939
return validator.NewValidator(logger, pp.(*core2.PublicParams), deserializer), nil
4040
}

token/core/fabtoken/v1/driver/deserializer.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package driver
99
import (
1010
"github.com/hyperledger-labs/fabric-token-sdk/token/core/common"
1111
v1 "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1/setup"
12+
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
1213
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/deserializer"
1314
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/interop/htlc"
1415
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/multisig"
@@ -33,8 +34,8 @@ func NewDeserializer() *Deserializer {
3334

3435
type PublicParamsDeserializer struct{}
3536

36-
func (p *PublicParamsDeserializer) DeserializePublicParams(raw []byte, label string) (*v1.PublicParams, error) {
37-
return v1.NewPublicParamsFromBytes(raw, label)
37+
func (p *PublicParamsDeserializer) DeserializePublicParams(raw []byte, name driver.TokenDriverName) (*v1.PublicParams, error) {
38+
return v1.NewPublicParamsFromBytes(raw, name)
3839
}
3940

4041
// EIDRHDeserializer returns enrollment ID and revocation handle behind the owners of token

0 commit comments

Comments
 (0)