From b4cf61d5e50cd4e03d158bb9f9c9f1c27966b999 Mon Sep 17 00:00:00 2001 From: Dzianis Andreyenka Date: Wed, 11 Oct 2023 12:57:38 +0200 Subject: [PATCH 1/6] DA-515 Remove unused code Signed-off-by: Dzianis Andreyenka --- internal/blockchain/ethereum/ethsigner/ethsigner.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/internal/blockchain/ethereum/ethsigner/ethsigner.go b/internal/blockchain/ethereum/ethsigner/ethsigner.go index 114f4c97..8dcdc722 100644 --- a/internal/blockchain/ethereum/ethsigner/ethsigner.go +++ b/internal/blockchain/ethereum/ethsigner/ethsigner.go @@ -129,15 +129,6 @@ func (p *EthSignerProvider) getCommand(rpcURL string) string { } func (p *EthSignerProvider) GetDockerServiceDefinition(rpcURL string) *docker.ServiceDefinition { - addresses := "" - for i, member := range p.stack.Members { - account := member.Account.(*ethereum.Account) - addresses = addresses + account.Address - if i+1 < len(p.stack.Members) { - addresses = addresses + "," - } - } - return &docker.ServiceDefinition{ ServiceName: "ethsigner", Service: &docker.Service{ From 8281c8ecd755ecc4f81bac845c3fad5ef637f53b Mon Sep 17 00:00:00 2001 From: Dzianis Andreyenka Date: Wed, 11 Oct 2023 12:59:17 +0200 Subject: [PATCH 2/6] DA-515 Add tezos signer config Signed-off-by: Dzianis Andreyenka --- .../tezos/remoterpc/remoterpc_provider.go | 30 ++-- .../blockchain/tezos/tezossigner/config.go | 106 +++++++++++ .../tezos/tezossigner/tezossigner.go | 166 ++++++++++++++++++ pkg/types/manifest.go | 2 + 4 files changed, 289 insertions(+), 15 deletions(-) create mode 100644 internal/blockchain/tezos/tezossigner/config.go create mode 100644 internal/blockchain/tezos/tezossigner/tezossigner.go diff --git a/internal/blockchain/tezos/remoterpc/remoterpc_provider.go b/internal/blockchain/tezos/remoterpc/remoterpc_provider.go index d7f62597..ce6cde77 100644 --- a/internal/blockchain/tezos/remoterpc/remoterpc_provider.go +++ b/internal/blockchain/tezos/remoterpc/remoterpc_provider.go @@ -25,6 +25,7 @@ import ( "github.com/hyperledger/firefly-cli/internal/blockchain/tezos" "github.com/hyperledger/firefly-cli/internal/blockchain/tezos/connector" "github.com/hyperledger/firefly-cli/internal/blockchain/tezos/connector/tezosconnect" + "github.com/hyperledger/firefly-cli/internal/blockchain/tezos/tezossigner" "github.com/hyperledger/firefly-cli/internal/constants" "github.com/hyperledger/firefly-cli/internal/docker" @@ -35,6 +36,7 @@ type RemoteRPCProvider struct { ctx context.Context stack *types.Stack connector connector.Connector + signer *tezossigner.TezosSignerProvider } func NewRemoteRPCProvider(ctx context.Context, stack *types.Stack) *RemoteRPCProvider { @@ -42,6 +44,7 @@ func NewRemoteRPCProvider(ctx context.Context, stack *types.Stack) *RemoteRPCPro ctx: ctx, stack: stack, connector: tezosconnect.NewTezosconnect(ctx), + signer: tezossigner.NewTezosSignerProvider(ctx, stack), } } @@ -50,15 +53,19 @@ func (p *RemoteRPCProvider) WriteConfig(options *types.InitOptions) error { for i, member := range p.stack.Members { // Generate the connector config for each member connectorConfigPath := filepath.Join(initDir, "config", fmt.Sprintf("%s_%v.yaml", p.connector.Name(), i)) - if err := p.connector.GenerateConfig(p.stack, member).WriteConfig(connectorConfigPath, options.ExtraConnectorConfigPath); err != nil { + if err := p.connector.GenerateConfig(p.stack, member, "tezossigner", options.RemoteNodeURL).WriteConfig(connectorConfigPath, options.ExtraConnectorConfigPath); err != nil { return err } } - return nil + return p.signer.WriteConfig(options) } func (p *RemoteRPCProvider) FirstTimeSetup() error { + if err := p.signer.FirstTimeSetup(); err != nil { + return err + } + for i := range p.stack.Members { // Copy connector config to each member's volume connectorConfigPath := filepath.Join(p.stack.StackDir, "runtime", "config", fmt.Sprintf("%s_%v.yaml", p.connector.Name(), i)) @@ -82,7 +89,11 @@ func (p *RemoteRPCProvider) DeployFireFlyContract() (*types.ContractDeploymentRe } func (p *RemoteRPCProvider) GetDockerServiceDefinitions() []*docker.ServiceDefinition { - defs := p.connector.GetServiceDefinitions(p.stack, map[string]string{}) + defs := []*docker.ServiceDefinition{ + p.signer.GetDockerServiceDefinition(p.stack.RemoteNodeURL), + } + defs = append(defs, p.connector.GetServiceDefinitions(p.stack, map[string]string{"tezossigner": "service_healthy"})...) + return defs } @@ -130,18 +141,7 @@ func (p *RemoteRPCProvider) DeployContract(filename, contractName, instanceName } func (p *RemoteRPCProvider) CreateAccount(args []string) (interface{}, error) { - // Currently, accounts (private/public keys) created by FireFly are not involved in the tx signing process. - // Accounts should be created in any key management system supported by the signatory service https://signatory.io/ - // And then account address (derivative of the public key) must be provided during each transaction sending via FireFly - address, pk, err := tezos.GenerateAddressAndPrivateKey() - if err != nil { - return nil, err - } - - return &tezos.Account{ - Address: address, - PrivateKey: pk, - }, nil + return p.signer.CreateAccount(args) } func (p *RemoteRPCProvider) GetConnectorName() string { diff --git a/internal/blockchain/tezos/tezossigner/config.go b/internal/blockchain/tezos/tezossigner/config.go new file mode 100644 index 00000000..a3f3bcc5 --- /dev/null +++ b/internal/blockchain/tezos/tezossigner/config.go @@ -0,0 +1,106 @@ +// Copyright © 2021 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package tezossigner + +import ( + "os" + "path/filepath" + + "gopkg.in/yaml.v2" +) + +type Config struct { + Server ServerConfig `yaml:"server"` + Vaults VaultsConfig `yaml:"vaults"` + Tezos map[string]AccountConfig `yaml:"tezos"` +} + +type ServerConfig struct { + Address string `yaml:"address,omitempty"` + UtilityAddress string `yaml:"utility_address,omitempty"` +} + +type VaultsConfig struct { + LocalSecret LocalSecretConfig `yaml:"local_secret,omitempty"` +} + +type LocalSecretConfig struct { + Driver string `yaml:"driver,omitempty"` + File FileConfig `yaml:"config,omitempty"` +} + +type FileConfig struct { + SecretPath string `yaml:"file,omitempty"` +} + +type AccountConfig struct { + LogPayloads bool `yaml:"log_payloads"` + Allow AllowedTransactionsConfig `yaml:"allow"` +} + +type AllowedTransactionsConfig struct { + Block []string `yaml:"block"` + Endorsement []string `yaml:"endorsement"` + Preendorsement []string `yaml:"preendorsement"` + Generic []string `yaml:"generic"` +} + +func (c *Config) WriteConfig(filename string) error { + configYamlBytes, _ := yaml.Marshal(c) + return os.WriteFile(filepath.Join(filename), configYamlBytes, 0755) +} + +func GenerateSignerConfig(accountsAddresses []string) *Config { + config := &Config{ + Server: ServerConfig{ + Address: ":6732", + UtilityAddress: ":9583", + }, + Vaults: VaultsConfig{ + LocalSecret: LocalSecretConfig{ + Driver: "file", + File: FileConfig{ + SecretPath: "/etc/secret.json", + }, + }, + }, + } + + addresses := map[string]AccountConfig{} + // Give accounts the rights to sign certain types of transactions + for _, address := range accountsAddresses { + addresses[address] = AccountConfig{ + LogPayloads: true, + Allow: AllowedTransactionsConfig{ + /* List of [activate_account, ballot, delegation, double_baking_evidence, double_endorsement_evidence, + double_preendorsement_evidence, endorsement, failing_noop, origination, preendorsement, proposals, + register_global_constant, reveal, sc_rollup_add_messages, sc_rollup_cement, sc_rollup_originate, + sc_rollup_publish, seed_nonce_revelation, set_deposits_limit, transaction, transfer_ticket, + tx_rollup_commit, tx_rollup_dispatch_tickets, tx_rollup_finalize_commitment, tx_rollup_origination, + tx_rollup_rejection, tx_rollup_remove_commitment, tx_rollup_return_bond, tx_rollup_submit_batch]*/ + Generic: []string{ + "transaction", + "endorsement", + "reveal", + }, + }, + } + } + config.Tezos = addresses + + return config +} diff --git a/internal/blockchain/tezos/tezossigner/tezossigner.go b/internal/blockchain/tezos/tezossigner/tezossigner.go new file mode 100644 index 00000000..58a62df4 --- /dev/null +++ b/internal/blockchain/tezos/tezossigner/tezossigner.go @@ -0,0 +1,166 @@ +// Copyright © 2022 Kaleido, Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package tezossigner + +import ( + "context" + "fmt" + "os" + "path/filepath" + + "github.com/hyperledger/firefly-cli/internal/blockchain/tezos" + "github.com/hyperledger/firefly-cli/internal/constants" + "github.com/hyperledger/firefly-cli/internal/docker" + "github.com/hyperledger/firefly-cli/pkg/types" +) + +type TezosSignerProvider struct { + ctx context.Context + stack *types.Stack +} + +func NewTezosSignerProvider(ctx context.Context, stack *types.Stack) *TezosSignerProvider { + return &TezosSignerProvider{ + ctx: ctx, + stack: stack, + } +} + +func (p *TezosSignerProvider) WriteConfig(_ *types.InitOptions) error { + initDir := filepath.Join(constants.StacksDir, p.stack.Name, "init") + signerConfigPath := filepath.Join(initDir, "config", "tezossigner.yaml") + + memberAccounts := p.getMembersAccounts() + if err := GenerateSignerConfig(memberAccounts).WriteConfig(signerConfigPath); err != nil { + return nil + } + + return nil +} + +func (p *TezosSignerProvider) getMembersAccounts() []string { + accounts := make([]string, 0, len(p.stack.Members)) + for _, member := range p.stack.Members { + if member.Account != nil { + account := member.Account.(*tezos.Account) + accounts = append(accounts, account.Address) + } + } + return accounts +} + +func (p *TezosSignerProvider) FirstTimeSetup() error { + tezossignerVolumeName := fmt.Sprintf("%s_tezossigner", p.stack.Name) + blockchainDir := filepath.Join(p.stack.RuntimeDir, "blockchain") + + if err := docker.CreateVolume(p.ctx, tezossignerVolumeName); err != nil { + return err + } + + // Copy the signer config to the volume + signerConfigPath := filepath.Join(p.stack.StackDir, "runtime", "config", "tezossigner.yaml") + signerConfigVolumeName := fmt.Sprintf("%s_tezossigner_config", p.stack.Name) + docker.CopyFileToVolume(p.ctx, signerConfigVolumeName, signerConfigPath, "signatory.yaml") + + // Copy the members wallets to the volume + docker.CopyFileToVolume(p.ctx, signerConfigVolumeName, filepath.Join(blockchainDir, "keystore", "secret.json"), "secret.json") + + return nil +} + +func (p *TezosSignerProvider) GetDockerServiceDefinition(rpcURL string) *docker.ServiceDefinition { + return &docker.ServiceDefinition{ + ServiceName: "tezossigner", + Service: &docker.Service{ + Image: p.stack.VersionManifest.TezosSigner.GetDockerImageString(), + ContainerName: fmt.Sprintf("%s_tezossigner", p.stack.Name), + User: "root", + Command: "-c /etc/signatory.yaml --base-dir /data", + Volumes: []string{ + "tezossigner:/data", + "tezossigner_config:/etc", + }, + Logging: docker.StandardLogOptions, + HealthCheck: &docker.HealthCheck{ + Test: []string{ + "CMD", + "curl", + "--fail", + "http://localhost:9583/healthz", + }, + Interval: "15s", // 6000 requests in a day + Retries: 30, + }, + Ports: []string{ + fmt.Sprintf("%d:6732", p.stack.ExposedBlockchainPort), + "9583:9583", + }, + }, + VolumeNames: []string{ + "tezossigner", + "tezossigner_config", + }, + } +} + +func (p *TezosSignerProvider) CreateAccount(args []string) (interface{}, error) { + tezossignerConfigVolumeName := fmt.Sprintf("%s_tezossigner_config", p.stack.Name) + var directory string + stackHasRunBefore, err := p.stack.HasRunBefore() + if err != nil { + return nil, err + } + if stackHasRunBefore { + directory = p.stack.RuntimeDir + } else { + directory = p.stack.InitDir + } + + outputDirectory := filepath.Join(directory, "blockchain", "keystore") + if err := os.MkdirAll(outputDirectory, 0755); err != nil { + return nil, err + } + + address, pk, err := tezos.GenerateAddressAndPrivateKey() + if err != nil { + return nil, err + } + + // TODO: add support for several accounts at the same time + json := fmt.Sprintf(`[ + { + "name": "%s", + "value": "unencrypted:%s" + } +]`, address, pk) + + filename := filepath.Join(outputDirectory, "secret.json") + os.WriteFile(filename, []byte(json), 0755) + + if stackHasRunBefore { + // Copy the signer secret to the volume + signerSecretPath := filepath.Join(outputDirectory, "secret.json") + if err := docker.CopyFileToVolume(p.ctx, tezossignerConfigVolumeName, signerSecretPath, "secret.json"); err != nil { + return nil, err + } + } + + return &tezos.Account{ + Address: address, + PrivateKey: pk, + }, nil +} diff --git a/pkg/types/manifest.go b/pkg/types/manifest.go index 039b1188..1b332706 100644 --- a/pkg/types/manifest.go +++ b/pkg/types/manifest.go @@ -32,6 +32,7 @@ type VersionManifest struct { TokensERC1155 *ManifestEntry `json:"tokens-erc1155"` TokensERC20ERC721 *ManifestEntry `json:"tokens-erc20-erc721"` Signer *ManifestEntry `json:"signer"` + TezosSigner *ManifestEntry `json:"tezossigner"` } func (m *VersionManifest) Entries() []*ManifestEntry { @@ -48,6 +49,7 @@ func (m *VersionManifest) Entries() []*ManifestEntry { m.TokensERC1155, m.TokensERC20ERC721, m.Signer, + m.TezosSigner, } } From 56248c1f2a1cfd9c329e25f0607d35079e58a965 Mon Sep 17 00:00:00 2001 From: Dzianis Andreyenka Date: Wed, 11 Oct 2023 12:59:53 +0200 Subject: [PATCH 3/6] DA-515 Update tezosconnect config Signed-off-by: Dzianis Andreyenka --- .../tezos/connector/connector_interface.go | 2 +- .../tezos/connector/tezosconnect/config.go | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/internal/blockchain/tezos/connector/connector_interface.go b/internal/blockchain/tezos/connector/connector_interface.go index 95b18675..158322a5 100644 --- a/internal/blockchain/tezos/connector/connector_interface.go +++ b/internal/blockchain/tezos/connector/connector_interface.go @@ -23,7 +23,7 @@ import ( type Connector interface { GetServiceDefinitions(s *types.Stack, dependentServices map[string]string) []*docker.ServiceDefinition - GenerateConfig(stack *types.Stack, member *types.Organization) Config + GenerateConfig(stack *types.Stack, member *types.Organization, blockchainServiceName, rpcURL string) Config Name() string Port() int } diff --git a/internal/blockchain/tezos/connector/tezosconnect/config.go b/internal/blockchain/tezos/connector/tezosconnect/config.go index 4794ef98..3203d1d5 100644 --- a/internal/blockchain/tezos/connector/tezosconnect/config.go +++ b/internal/blockchain/tezos/connector/tezosconnect/config.go @@ -20,6 +20,7 @@ import ( "fmt" "os" "path/filepath" + "strings" "github.com/hyperledger/firefly-cli/internal/blockchain/tezos/connector" "github.com/hyperledger/firefly-cli/pkg/types" @@ -44,7 +45,13 @@ type APIConfig struct { } type ConnectorConfig struct { - URL string `yaml:"url,omitempty"` + Blockchain *BlockchainConfig `yaml:"blockchain,omitempty"` +} + +type BlockchainConfig struct { + Network string `yaml:"network,omitempty"` + RPC string `yaml:"rpc,omitempty"` + Signatory string `yaml:"signatory,omitempty"` } type PersistenceConfig struct { @@ -85,7 +92,7 @@ func (c *Config) WriteConfig(filename string, extraTezosconnectConfigPath string return nil } -func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organization) connector.Config { +func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organization, blockchainServiceName, rpcURL string) connector.Config { confirmations := new(int) *confirmations = 0 var metrics *types.MetricsServerConfig @@ -104,6 +111,11 @@ func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organizatio metrics = nil } + network := "mainnet" + if strings.Contains(rpcURL, "ghost") { + network = "ghostnet" + } + return &Config{ Log: &types.LogConfig{ Level: "debug", @@ -113,6 +125,13 @@ func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organizatio Address: "0.0.0.0", PublicURL: fmt.Sprintf("http://127.0.0.1:%v", org.ExposedConnectorPort), }, + Connector: &ConnectorConfig{ + Blockchain: &BlockchainConfig{ + Network: network, + RPC: rpcURL, + Signatory: fmt.Sprintf("http://%s:6732", blockchainServiceName), + }, + }, Persistence: &PersistenceConfig{ LevelDB: &LevelDBConfig{ Path: "/tezosconnect/leveldb", From c1c550cf1e05bc58106880d32c02d6e0ae08af6e Mon Sep 17 00:00:00 2001 From: Dzianis Andreyenka Date: Wed, 11 Oct 2023 13:11:20 +0200 Subject: [PATCH 4/6] DA-515 Add a flag validator Signed-off-by: Dzianis Andreyenka --- cmd/init_tezos.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/init_tezos.go b/cmd/init_tezos.go index e55f4db7..e606d6ed 100644 --- a/cmd/init_tezos.go +++ b/cmd/init_tezos.go @@ -43,6 +43,9 @@ var initTezosCmd = &cobra.Command{ // By default we turn off multiparty mode while it's not supported yet initOptions.MultipartyEnabled = false initOptions.TokenProviders = []string{} + if err := validateTezosFlags(); err != nil { + return err + } if err := initCommon(args); err != nil { return err } @@ -56,6 +59,13 @@ var initTezosCmd = &cobra.Command{ }, } +func validateTezosFlags() error { + if initOptions.RemoteNodeURL == "" { + return fmt.Errorf("you must provide 'remote-node-url' flag as local node mode is not supported") + } + return nil +} + func init() { initTezosCmd.Flags().IntVar(&initOptions.BlockPeriod, "block-period", -1, "Block period in seconds. Default is variable based on selected blockchain provider.") initTezosCmd.Flags().StringVar(&initOptions.ContractAddress, "contract-address", "", "Do not automatically deploy a contract, instead use a pre-configured address") From 58f681acf9d2644b501178075fdfa0b736c3241d Mon Sep 17 00:00:00 2001 From: Dzianis Andreyenka Date: Mon, 23 Oct 2023 18:59:23 +0200 Subject: [PATCH 5/6] Update signer hostname Signed-off-by: Dzianis Andreyenka --- internal/blockchain/tezos/connector/connector_interface.go | 2 +- internal/blockchain/tezos/connector/tezosconnect/config.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/blockchain/tezos/connector/connector_interface.go b/internal/blockchain/tezos/connector/connector_interface.go index 158322a5..6af1f297 100644 --- a/internal/blockchain/tezos/connector/connector_interface.go +++ b/internal/blockchain/tezos/connector/connector_interface.go @@ -23,7 +23,7 @@ import ( type Connector interface { GetServiceDefinitions(s *types.Stack, dependentServices map[string]string) []*docker.ServiceDefinition - GenerateConfig(stack *types.Stack, member *types.Organization, blockchainServiceName, rpcURL string) Config + GenerateConfig(stack *types.Stack, member *types.Organization, signerHostname, rpcURL string) Config Name() string Port() int } diff --git a/internal/blockchain/tezos/connector/tezosconnect/config.go b/internal/blockchain/tezos/connector/tezosconnect/config.go index 3203d1d5..e1ae7762 100644 --- a/internal/blockchain/tezos/connector/tezosconnect/config.go +++ b/internal/blockchain/tezos/connector/tezosconnect/config.go @@ -92,7 +92,7 @@ func (c *Config) WriteConfig(filename string, extraTezosconnectConfigPath string return nil } -func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organization, blockchainServiceName, rpcURL string) connector.Config { +func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organization, signerHostname, rpcURL string) connector.Config { confirmations := new(int) *confirmations = 0 var metrics *types.MetricsServerConfig @@ -129,7 +129,7 @@ func (t *Tezosconnect) GenerateConfig(stack *types.Stack, org *types.Organizatio Blockchain: &BlockchainConfig{ Network: network, RPC: rpcURL, - Signatory: fmt.Sprintf("http://%s:6732", blockchainServiceName), + Signatory: fmt.Sprintf("http://%s:6732", signerHostname), }, }, Persistence: &PersistenceConfig{ From 5e99b8fd44a5ed51b28981cc1eded7e84764280d Mon Sep 17 00:00:00 2001 From: Dzianis Andreyenka Date: Wed, 25 Oct 2023 09:50:04 +0200 Subject: [PATCH 6/6] DA-515 Explicit signer image instead of using FF manifest Signed-off-by: Dzianis Andreyenka --- internal/blockchain/tezos/tezossigner/tezossigner.go | 2 +- pkg/types/manifest.go | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/internal/blockchain/tezos/tezossigner/tezossigner.go b/internal/blockchain/tezos/tezossigner/tezossigner.go index 58a62df4..02f79a7c 100644 --- a/internal/blockchain/tezos/tezossigner/tezossigner.go +++ b/internal/blockchain/tezos/tezossigner/tezossigner.go @@ -86,7 +86,7 @@ func (p *TezosSignerProvider) GetDockerServiceDefinition(rpcURL string) *docker. return &docker.ServiceDefinition{ ServiceName: "tezossigner", Service: &docker.Service{ - Image: p.stack.VersionManifest.TezosSigner.GetDockerImageString(), + Image: "ecadlabs/signatory", ContainerName: fmt.Sprintf("%s_tezossigner", p.stack.Name), User: "root", Command: "-c /etc/signatory.yaml --base-dir /data", diff --git a/pkg/types/manifest.go b/pkg/types/manifest.go index 1b332706..039b1188 100644 --- a/pkg/types/manifest.go +++ b/pkg/types/manifest.go @@ -32,7 +32,6 @@ type VersionManifest struct { TokensERC1155 *ManifestEntry `json:"tokens-erc1155"` TokensERC20ERC721 *ManifestEntry `json:"tokens-erc20-erc721"` Signer *ManifestEntry `json:"signer"` - TezosSigner *ManifestEntry `json:"tezossigner"` } func (m *VersionManifest) Entries() []*ManifestEntry { @@ -49,7 +48,6 @@ func (m *VersionManifest) Entries() []*ManifestEntry { m.TokensERC1155, m.TokensERC20ERC721, m.Signer, - m.TezosSigner, } }