Skip to content

Commit 43a2468

Browse files
authored
refactor(authority): adjust permissions to be more restrictive (#2542)
* change authorization * changelogs * fix permissions * fix test permissions * refactor addresses * add query to check authorization * format * fix lint
1 parent 949f124 commit 43a2468

File tree

10 files changed

+189
-91
lines changed

10 files changed

+189
-91
lines changed

changelog.md

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
* [2428](https://github.com/zeta-chain/node/pull/2428) - propagate context across codebase & refactor zetacore client
6666
* [2464](https://github.com/zeta-chain/node/pull/2464) - move common voting logic to voting.go and add new function VoteOnBallot
6767
* [2515](https://github.com/zeta-chain/node/pull/2515) - replace chainName by chainID for ChainNonces indexing
68+
* [2542](https://github.com/zeta-chain/node/pull/2542) - adjust permissions to be more restrictive
6869

6970
### Tests
7071

cmd/zetae2e/config/clients.go

+45-27
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"google.golang.org/grpc"
1414

1515
"github.com/zeta-chain/zetacore/e2e/config"
16+
authoritytypes "github.com/zeta-chain/zetacore/x/authority/types"
1617
crosschaintypes "github.com/zeta-chain/zetacore/x/crosschain/types"
1718
fungibletypes "github.com/zeta-chain/zetacore/x/fungible/types"
1819
lightclienttypes "github.com/zeta-chain/zetacore/x/lightclient/types"
@@ -28,18 +29,30 @@ type E2EClients struct {
2829
EvmAuth *bind.TransactOpts
2930

3031
// the gRPC clients for ZetaChain
31-
CctxClient crosschaintypes.QueryClient
32-
FungibleClient fungibletypes.QueryClient
33-
AuthClient authtypes.QueryClient
34-
BankClient banktypes.QueryClient
35-
ObserverClient observertypes.QueryClient
36-
LightClient lightclienttypes.QueryClient
32+
AuthorityClient authoritytypes.QueryClient
33+
CctxClient crosschaintypes.QueryClient
34+
FungibleClient fungibletypes.QueryClient
35+
AuthClient authtypes.QueryClient
36+
BankClient banktypes.QueryClient
37+
ObserverClient observertypes.QueryClient
38+
LightClient lightclienttypes.QueryClient
3739

3840
// the RPC clients for ZetaChain
3941
ZevmClient *ethclient.Client
4042
ZevmAuth *bind.TransactOpts
4143
}
4244

45+
// zetaChainClients contains all the RPC clients and gRPC clients for ZetaChain
46+
type zetaChainClients struct {
47+
AuthorityClient authoritytypes.QueryClient
48+
CctxClient crosschaintypes.QueryClient
49+
FungibleClient fungibletypes.QueryClient
50+
AuthClient authtypes.QueryClient
51+
BankClient banktypes.QueryClient
52+
ObserverClient observertypes.QueryClient
53+
LightClient lightclienttypes.QueryClient
54+
}
55+
4356
// getClientsFromConfig get clients from config
4457
func getClientsFromConfig(ctx context.Context, conf config.Config, account config.Account) (
4558
E2EClients,
@@ -60,7 +73,7 @@ func getClientsFromConfig(ctx context.Context, conf config.Config, account confi
6073
if err != nil {
6174
return E2EClients{}, fmt.Errorf("failed to get evm client: %w", err)
6275
}
63-
cctxClient, fungibleClient, authClient, bankClient, observerClient, lightclientClient, err := getZetaClients(
76+
zetaChainClients, err := getZetaClients(
6477
conf.RPCs.ZetaCoreGRPC,
6578
)
6679
if err != nil {
@@ -72,18 +85,19 @@ func getClientsFromConfig(ctx context.Context, conf config.Config, account confi
7285
}
7386

7487
return E2EClients{
75-
BtcRPCClient: btcRPCClient,
76-
SolanaClient: solanaClient,
77-
EvmClient: evmClient,
78-
EvmAuth: evmAuth,
79-
CctxClient: cctxClient,
80-
FungibleClient: fungibleClient,
81-
AuthClient: authClient,
82-
BankClient: bankClient,
83-
ObserverClient: observerClient,
84-
LightClient: lightclientClient,
85-
ZevmClient: zevmClient,
86-
ZevmAuth: zevmAuth,
88+
BtcRPCClient: btcRPCClient,
89+
SolanaClient: solanaClient,
90+
EvmClient: evmClient,
91+
EvmAuth: evmAuth,
92+
AuthorityClient: zetaChainClients.AuthorityClient,
93+
CctxClient: zetaChainClients.CctxClient,
94+
FungibleClient: zetaChainClients.FungibleClient,
95+
AuthClient: zetaChainClients.AuthClient,
96+
BankClient: zetaChainClients.BankClient,
97+
ObserverClient: zetaChainClients.ObserverClient,
98+
LightClient: zetaChainClients.LightClient,
99+
ZevmClient: zevmClient,
100+
ZevmAuth: zevmAuth,
87101
}, nil
88102
}
89103

@@ -140,25 +154,29 @@ func getEVMClient(
140154

141155
// getZetaClients get zeta clients
142156
func getZetaClients(rpc string) (
143-
crosschaintypes.QueryClient,
144-
fungibletypes.QueryClient,
145-
authtypes.QueryClient,
146-
banktypes.QueryClient,
147-
observertypes.QueryClient,
148-
lightclienttypes.QueryClient,
157+
zetaChainClients,
149158
error,
150159
) {
151160
grpcConn, err := grpc.Dial(rpc, grpc.WithInsecure())
152161
if err != nil {
153-
return nil, nil, nil, nil, nil, nil, err
162+
return zetaChainClients{}, err
154163
}
155164

165+
authorityClient := authoritytypes.NewQueryClient(grpcConn)
156166
cctxClient := crosschaintypes.NewQueryClient(grpcConn)
157167
fungibleClient := fungibletypes.NewQueryClient(grpcConn)
158168
authClient := authtypes.NewQueryClient(grpcConn)
159169
bankClient := banktypes.NewQueryClient(grpcConn)
160170
observerClient := observertypes.NewQueryClient(grpcConn)
161171
lightclientClient := lightclienttypes.NewQueryClient(grpcConn)
162172

163-
return cctxClient, fungibleClient, authClient, bankClient, observerClient, lightclientClient, nil
173+
return zetaChainClients{
174+
AuthorityClient: authorityClient,
175+
CctxClient: cctxClient,
176+
FungibleClient: fungibleClient,
177+
AuthClient: authClient,
178+
BankClient: bankClient,
179+
ObserverClient: observerClient,
180+
LightClient: lightclientClient,
181+
}, nil
164182
}

cmd/zetae2e/config/config.go

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ func RunnerFromConfig(
3232
account,
3333
e2eClients.EvmClient,
3434
e2eClients.ZevmClient,
35+
e2eClients.AuthorityClient,
3536
e2eClients.CctxClient,
3637
e2eClients.FungibleClient,
3738
e2eClients.AuthClient,

cmd/zetae2e/local/local.go

+3
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ func localE2ETest(cmd *cobra.Command, _ []string) {
157157
)
158158
noError(err)
159159

160+
// set the authority client to the zeta tx server to be able to query message permissions
161+
deployerRunner.ZetaTxServer.SetAuthorityClient(deployerRunner.AutorithyClient)
162+
160163
// wait for keygen to be completed
161164
// if setup is skipped, we assume that the keygen is already completed
162165
if !skipSetup {

e2e/e2etests/test_migrate_chain_support.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ func TestMigrateChainSupport(r *runner.E2ERunner, _ []string) {
6868
// setup the gas token
6969
require.NoError(r, err)
7070
_, err = newRunner.ZetaTxServer.BroadcastTx(
71-
utils.OperationalPolicyName,
71+
utils.AdminPolicyName,
7272
fungibletypes.NewMsgDeployFungibleCoinZRC20(
73-
r.ZetaTxServer.MustGetAccountAddressFromName(utils.OperationalPolicyName),
73+
r.ZetaTxServer.MustGetAccountAddressFromName(utils.AdminPolicyName),
7474
"",
7575
chainParams.ChainId,
7676
18,
@@ -156,8 +156,8 @@ func TestMigrateChainSupport(r *runner.E2ERunner, _ []string) {
156156

157157
// whitelist erc20 zrc20
158158
newRunner.Logger.Info("whitelisting ERC20 on new network")
159-
res, err := newRunner.ZetaTxServer.BroadcastTx(utils.OperationalPolicyName, crosschaintypes.NewMsgWhitelistERC20(
160-
r.ZetaTxServer.MustGetAccountAddressFromName(utils.OperationalPolicyName),
159+
res, err := newRunner.ZetaTxServer.BroadcastTx(utils.AdminPolicyName, crosschaintypes.NewMsgWhitelistERC20(
160+
r.ZetaTxServer.MustGetAccountAddressFromName(utils.AdminPolicyName),
161161
newRunner.ERC20Addr.Hex(),
162162
chains.Sepolia.ChainId,
163163
"USDT",
@@ -203,6 +203,7 @@ func configureEVM2(r *runner.E2ERunner) (*runner.E2ERunner, error) {
203203
r.Account,
204204
r.EVMClient,
205205
r.ZEVMClient,
206+
r.AutorithyClient,
206207
r.CctxClient,
207208
r.FungibleClient,
208209
r.AuthClient,

e2e/runner/runner.go

+4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/zeta-chain/zetacore/e2e/contracts/zevmswap"
3434
"github.com/zeta-chain/zetacore/e2e/txserver"
3535
"github.com/zeta-chain/zetacore/e2e/utils"
36+
authoritytypes "github.com/zeta-chain/zetacore/x/authority/types"
3637
crosschaintypes "github.com/zeta-chain/zetacore/x/crosschain/types"
3738
fungibletypes "github.com/zeta-chain/zetacore/x/fungible/types"
3839
lightclienttypes "github.com/zeta-chain/zetacore/x/lightclient/types"
@@ -65,6 +66,7 @@ type E2ERunner struct {
6566
SolanaClient *rpc.Client
6667

6768
// grpc clients
69+
AutorithyClient authoritytypes.QueryClient
6870
CctxClient crosschaintypes.QueryClient
6971
FungibleClient fungibletypes.QueryClient
7072
AuthClient authtypes.QueryClient
@@ -140,6 +142,7 @@ func NewE2ERunner(
140142
account config.Account,
141143
evmClient *ethclient.Client,
142144
zevmClient *ethclient.Client,
145+
authorityClient authoritytypes.QueryClient,
143146
cctxClient crosschaintypes.QueryClient,
144147
fungibleClient fungibletypes.QueryClient,
145148
authClient authtypes.QueryClient,
@@ -161,6 +164,7 @@ func NewE2ERunner(
161164

162165
ZEVMClient: zevmClient,
163166
EVMClient: evmClient,
167+
AutorithyClient: authorityClient,
164168
CctxClient: cctxClient,
165169
FungibleClient: fungibleClient,
166170
AuthClient: authClient,

e2e/runner/setup_zeta.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -74,34 +74,35 @@ func (r *E2ERunner) SetZEVMContracts() {
7474
}()
7575

7676
// deploy system contracts and ZRC20 contracts on ZetaChain
77-
uniswapV2FactoryAddr, uniswapV2RouterAddr, zevmConnectorAddr, wzetaAddr, erc20zrc20Addr, err := r.ZetaTxServer.DeploySystemContractsAndZRC20(
77+
addresses, err := r.ZetaTxServer.DeploySystemContractsAndZRC20(
7878
e2eutils.OperationalPolicyName,
79+
e2eutils.AdminPolicyName,
7980
r.ERC20Addr.Hex(),
8081
)
8182
require.NoError(r, err)
8283

8384
// Set ERC20ZRC20Addr
84-
r.ERC20ZRC20Addr = ethcommon.HexToAddress(erc20zrc20Addr)
85+
r.ERC20ZRC20Addr = ethcommon.HexToAddress(addresses.ERC20zrc20Addr)
8586
r.ERC20ZRC20, err = zrc20.NewZRC20(r.ERC20ZRC20Addr, r.ZEVMClient)
8687
require.NoError(r, err)
8788

8889
// UniswapV2FactoryAddr
89-
r.UniswapV2FactoryAddr = ethcommon.HexToAddress(uniswapV2FactoryAddr)
90+
r.UniswapV2FactoryAddr = ethcommon.HexToAddress(addresses.UniswapV2FactoryAddr)
9091
r.UniswapV2Factory, err = uniswapv2factory.NewUniswapV2Factory(r.UniswapV2FactoryAddr, r.ZEVMClient)
9192
require.NoError(r, err)
9293

9394
// UniswapV2RouterAddr
94-
r.UniswapV2RouterAddr = ethcommon.HexToAddress(uniswapV2RouterAddr)
95+
r.UniswapV2RouterAddr = ethcommon.HexToAddress(addresses.UniswapV2RouterAddr)
9596
r.UniswapV2Router, err = uniswapv2router.NewUniswapV2Router02(r.UniswapV2RouterAddr, r.ZEVMClient)
9697
require.NoError(r, err)
9798

9899
// ZevmConnectorAddr
99-
r.ConnectorZEVMAddr = ethcommon.HexToAddress(zevmConnectorAddr)
100+
r.ConnectorZEVMAddr = ethcommon.HexToAddress(addresses.ZEVMConnectorAddr)
100101
r.ConnectorZEVM, err = connectorzevm.NewZetaConnectorZEVM(r.ConnectorZEVMAddr, r.ZEVMClient)
101102
require.NoError(r, err)
102103

103104
// WZetaAddr
104-
r.WZetaAddr = ethcommon.HexToAddress(wzetaAddr)
105+
r.WZetaAddr = ethcommon.HexToAddress(addresses.WZETAAddr)
105106
r.WZeta, err = wzeta.NewWETH9(r.WZetaAddr, r.ZEVMClient)
106107
require.NoError(r, err)
107108

@@ -229,7 +230,7 @@ func (r *E2ERunner) SetupSOLZRC20() {
229230
func (r *E2ERunner) EnableHeaderVerification(chainIDList []int64) error {
230231
r.Logger.Print("⚙️ enabling verification flags for block headers")
231232

232-
return r.ZetaTxServer.EnableHeaderVerification(e2eutils.OperationalPolicyName, chainIDList)
233+
return r.ZetaTxServer.EnableHeaderVerification(e2eutils.AdminPolicyName, chainIDList)
233234
}
234235

235236
// FundEmissionsPool funds the emissions pool on ZetaChain with the same value as used originally on mainnet (20M ZETA)

0 commit comments

Comments
 (0)