Skip to content

Commit 22a0e4b

Browse files
author
Francisco de Borja Aranda Castillejo
authored
Merge branch 'develop' into refactor-vote
2 parents 1a12af3 + a076710 commit 22a0e4b

File tree

140 files changed

+4593
-2969
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+4593
-2969
lines changed

.github/actions/install-dependencies/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ runs:
3333
- uses: actions/setup-go@v5
3434
if: ${{ inputs.skip_go == 'false' }}
3535
with:
36-
go-version: '1.20'
36+
go-version: '1.22'
3737
cache: false
3838

3939
- uses: actions/setup-python@v4

.github/workflows/publish-release.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
if: ${{ github.event.inputs.skip_checks != 'true' }}
4949
uses: actions/setup-go@v5
5050
with:
51-
go-version: '1.20'
51+
go-version: '1.22'
5252

5353
- name: Run Gosec Security Scanner
5454
if: ${{ github.event.inputs.skip_checks != 'true' }}
@@ -79,7 +79,7 @@ jobs:
7979
if: ${{ github.event.inputs.skip_checks != 'true' }}
8080
uses: actions/setup-go@v5
8181
with:
82-
go-version: '1.20'
82+
go-version: '1.22'
8383

8484
- name: Run Cosmos Gosec Security Scanner
8585
if: ${{ github.event.inputs.skip_checks != 'true' }}
@@ -109,7 +109,7 @@ jobs:
109109
if: ${{ github.event.inputs.skip_checks != 'true' }}
110110
uses: actions/setup-go@v5
111111
with:
112-
go-version: '1.20'
112+
go-version: '1.22'
113113

114114
- name: Run golangci-lint
115115
if: ${{ github.event.inputs.skip_checks != 'true' }}

.github/workflows/sast-linters.yml

+3-26
Original file line numberDiff line numberDiff line change
@@ -25,33 +25,10 @@ jobs:
2525
with:
2626
fetch-depth: 0
2727

28-
- name: Set up Go
29-
uses: actions/setup-go@v5
30-
with:
31-
go-version: '1.20'
32-
3328
- name: Run Gosec Security Scanner
34-
uses: securego/[email protected]
35-
with:
36-
args: ./...
37-
38-
gosec-cosmos:
39-
runs-on: ubuntu-22.04
40-
env:
41-
GO111MODULE: on
42-
steps:
43-
- name: Checkout Source
44-
uses: actions/checkout@v4
29+
uses: zeta-chain/[email protected]
4530
with:
46-
fetch-depth: 0
47-
48-
- name: Set up Go
49-
uses: actions/setup-go@v5
50-
with:
51-
go-version: '1.20'
52-
53-
- name: Run Cosmos Gosec Security Scanner
54-
run: make lint-cosmos-gosec
31+
args: -exclude-generated -exclude-dir testutil ./...
5532

5633
lint:
5734
runs-on: ubuntu-22.04
@@ -67,7 +44,7 @@ jobs:
6744
- name: Set up Go
6845
uses: actions/setup-go@v5
6946
with:
70-
go-version: '1.20'
47+
go-version: '1.22'
7148

7249
- name: Run golangci-lint
7350
uses: golangci/golangci-lint-action@v6

Dockerfile-localnet

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# syntax=docker/dockerfile:1.7-labs
2-
FROM golang:1.20.14-bookworm AS base-build
2+
FROM golang:1.22.5-bookworm AS base-build
33

44
ENV GOPATH /go
55
ENV GOOS=linux
@@ -22,10 +22,10 @@ COPY --exclude=*.sh --exclude=*.md --exclude=*.yml . .
2222
RUN --mount=type=cache,target="/root/.cache/go-build" make install
2323
RUN --mount=type=cache,target="/root/.cache/go-build" make install-zetae2e
2424

25-
FROM golang:1.20.14-bookworm AS cosmovisor-build
25+
FROM golang:1.22.5-bookworm AS cosmovisor-build
2626
RUN go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]
2727

28-
FROM golang:1.20.14-bookworm AS base-runtime
28+
FROM golang:1.22.5-bookworm AS base-runtime
2929

3030
RUN apt update && \
3131
apt install -yq jq yq curl tmux python3 openssh-server iputils-ping iproute2 bind9-host && \

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ lint-pre:
139139
lint: lint-pre
140140
@golangci-lint run
141141

142-
lint-cosmos-gosec:
143-
@bash ./scripts/cosmos-gosec.sh
142+
lint-gosec:
143+
@bash ./scripts/gosec.sh
144144

145145
gosec:
146146
gosec -exclude-dir=localnet ./...

changelog.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### Breaking Changes
66

7-
* [List of the breaking changes can be found in this document](docs/releases/v17_breaking_changes.md)
7+
* [2460](https://github.com/zeta-chain/node/pull/2460) - Upgrade to go 1.22. This required us to temporarily remove the QUIC backend from [go-libp2p](https://github.com/libp2p/go-libp2p). If you are a zetaclient operator and have configured quic peers, you need to switch to tcp peers.
88

99
### Features
1010

@@ -58,6 +58,7 @@
5858
* [2375](https://github.com/zeta-chain/node/pull/2375) - improve & speedup code formatting
5959
* [2380](https://github.com/zeta-chain/node/pull/2380) - use `ChainInfo` in `authority` to allow dynamically support new chains
6060
* [2395](https://github.com/zeta-chain/node/pull/2395) - converge AppContext with ZetaCoreContext in zetaclient
61+
* [2428](https://github.com/zeta-chain/node/pull/2428) - propagate context across codebase & refactor zetacore client
6162
* [2464](https://github.com/zeta-chain/node/pull/2464) - move common voting logic to voting.go and add new function VoteOnBallot
6263

6364
### Tests

cmd/zetaclientd/debug.go

+12-10
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
btcobserver "github.com/zeta-chain/zetacore/zetaclient/chains/bitcoin/observer"
2222
evmobserver "github.com/zeta-chain/zetacore/zetaclient/chains/evm/observer"
2323
"github.com/zeta-chain/zetacore/zetaclient/config"
24-
clientcontext "github.com/zeta-chain/zetacore/zetaclient/context"
24+
zctx "github.com/zeta-chain/zetacore/zetaclient/context"
2525
"github.com/zeta-chain/zetacore/zetaclient/keys"
2626
"github.com/zeta-chain/zetacore/zetaclient/zetacore"
2727
)
@@ -57,7 +57,8 @@ func debugCmd(_ *cobra.Command, args []string) error {
5757
return err
5858
}
5959

60-
appContext := clientcontext.New(cfg, zerolog.Nop())
60+
appContext := zctx.New(cfg, zerolog.Nop())
61+
ctx := zctx.WithAppContext(context.Background(), appContext)
6162

6263
chainID, err := strconv.ParseInt(args[1], 10, 64)
6364
if err != nil {
@@ -74,15 +75,16 @@ func debugCmd(_ *cobra.Command, args []string) error {
7475
"",
7576
debugArgs.zetaChainID,
7677
false,
77-
nil)
78+
zerolog.Nop(),
79+
)
7880
if err != nil {
7981
return err
8082
}
81-
chainParams, err := client.GetChainParams()
83+
chainParams, err := client.GetChainParams(ctx)
8284
if err != nil {
8385
return err
8486
}
85-
tssEthAddress, err := client.GetEthTssAddress()
87+
tssEthAddress, err := client.GetEVMTSSAddress(ctx)
8688
if err != nil {
8789
return err
8890
}
@@ -148,19 +150,19 @@ func debugCmd(_ *cobra.Command, args []string) error {
148150

149151
switch coinType {
150152
case coin.CoinType_Zeta:
151-
ballotIdentifier, err = evmObserver.CheckAndVoteInboundTokenZeta(tx, receipt, false)
153+
ballotIdentifier, err = evmObserver.CheckAndVoteInboundTokenZeta(ctx, tx, receipt, false)
152154
if err != nil {
153155
return err
154156
}
155157

156158
case coin.CoinType_ERC20:
157-
ballotIdentifier, err = evmObserver.CheckAndVoteInboundTokenERC20(tx, receipt, false)
159+
ballotIdentifier, err = evmObserver.CheckAndVoteInboundTokenERC20(ctx, tx, receipt, false)
158160
if err != nil {
159161
return err
160162
}
161163

162164
case coin.CoinType_Gas:
163-
ballotIdentifier, err = evmObserver.CheckAndVoteInboundTokenGas(tx, receipt, false)
165+
ballotIdentifier, err = evmObserver.CheckAndVoteInboundTokenGas(ctx, tx, receipt, false)
164166
if err != nil {
165167
return err
166168
}
@@ -186,15 +188,15 @@ func debugCmd(_ *cobra.Command, args []string) error {
186188
return err
187189
}
188190
btcObserver.WithBtcClient(btcClient)
189-
ballotIdentifier, err = btcObserver.CheckReceiptForBtcTxHash(inboundHash, false)
191+
ballotIdentifier, err = btcObserver.CheckReceiptForBtcTxHash(ctx, inboundHash, false)
190192
if err != nil {
191193
return err
192194
}
193195
}
194196
fmt.Println("BallotIdentifier : ", ballotIdentifier)
195197

196198
// query ballot
197-
ballot, err := client.GetBallot(ballotIdentifier)
199+
ballot, err := client.GetBallot(ctx, ballotIdentifier)
198200
if err != nil {
199201
return err
200202
}

cmd/zetaclientd/init.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func Initialize(_ *cobra.Command, _ []string) error {
7878
}
7979

8080
//Create new config struct
81-
configData := config.New()
81+
configData := config.New(true)
8282

8383
//Validate Peer eg. /ip4/172.0.2.1/tcp/6668/p2p/16Uiu2HAmACG5DtqmQsHtXg4G2sLS65ttv84e7MrL4kapkjfmhxAp
8484
if len(initArgs.peer) != 0 {

cmd/zetaclientd/keygen_tss.go

+32-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"context"
45
"encoding/hex"
56
"encoding/json"
67
"errors"
@@ -16,35 +17,42 @@ import (
1617

1718
"github.com/zeta-chain/zetacore/pkg/chains"
1819
observertypes "github.com/zeta-chain/zetacore/x/observer/types"
19-
"github.com/zeta-chain/zetacore/zetaclient/context"
20+
zctx "github.com/zeta-chain/zetacore/zetaclient/context"
2021
"github.com/zeta-chain/zetacore/zetaclient/metrics"
2122
mc "github.com/zeta-chain/zetacore/zetaclient/tss"
2223
"github.com/zeta-chain/zetacore/zetaclient/zetacore"
2324
)
2425

2526
func GenerateTss(
26-
appContext *context.AppContext,
27+
ctx context.Context,
2728
logger zerolog.Logger,
2829
client *zetacore.Client,
2930
peers p2p.AddrList,
3031
priKey secp256k1.PrivKey,
3132
ts *metrics.TelemetryServer,
3233
tssHistoricalList []observertypes.TSS,
3334
tssPassword string,
34-
hotkeyPassword string) (*mc.TSS, error) {
35+
hotkeyPassword string,
36+
) (*mc.TSS, error) {
37+
app, err := zctx.FromContext(ctx)
38+
if err != nil {
39+
return nil, err
40+
}
41+
3542
keygenLogger := logger.With().Str("module", "keygen").Logger()
3643

3744
// Bitcoin chain ID is currently used for using the correct signature format
3845
// TODO: remove this once we have a better way to determine the signature format
3946
// https://github.com/zeta-chain/node/issues/1397
4047
bitcoinChainID := chains.BitcoinRegtest.ChainId
41-
btcChain, _, btcEnabled := appContext.GetBTCChainAndConfig()
48+
btcChain, _, btcEnabled := app.GetBTCChainAndConfig()
4249
if btcEnabled {
4350
bitcoinChainID = btcChain.ChainId
4451
}
4552

4653
tss, err := mc.NewTSS(
47-
appContext,
54+
ctx,
55+
app,
4856
peers,
4957
priKey,
5058
preParams,
@@ -74,7 +82,7 @@ func GenerateTss(
7482
// This loop will try keygen at the keygen block and then wait for keygen to be successfully reported by all nodes before breaking out of the loop.
7583
// If keygen is unsuccessful, it will reset the triedKeygenAtBlock flag and try again at a new keygen block.
7684

77-
keyGen := appContext.GetKeygen()
85+
keyGen := app.GetKeygen()
7886
if keyGen.Status == observertypes.KeygenStatus_KeyGenSuccess {
7987
return tss, nil
8088
}
@@ -86,7 +94,7 @@ func GenerateTss(
8694
// Try generating TSS at keygen block , only when status is pending keygen and generation has not been tried at the block
8795
if keyGen.Status == observertypes.KeygenStatus_PendingKeygen {
8896
// Return error if RPC is not working
89-
currentBlock, err := client.GetBlockHeight()
97+
currentBlock, err := client.GetBlockHeight(ctx)
9098
if err != nil {
9199
keygenLogger.Error().Err(err).Msg("GetBlockHeight RPC error")
92100
continue
@@ -101,16 +109,21 @@ func GenerateTss(
101109
if currentBlock > lastBlock {
102110
lastBlock = currentBlock
103111
keygenLogger.Info().
104-
Msgf("Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : %d Current Block : %d ChainID %s ", keyGen.BlockNumber, currentBlock, appContext.Config().ChainID)
112+
Msgf("Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : %d Current Block : %d ChainID %s ", keyGen.BlockNumber, currentBlock, app.Config().ChainID)
105113
}
106114
continue
107115
}
108116
// Try keygen only once at a particular block, irrespective of whether it is successful or failure
109117
triedKeygenAtBlock = true
110-
err = keygenTss(keyGen, tss, keygenLogger)
118+
err = keygenTss(ctx, keyGen, tss, keygenLogger)
111119
if err != nil {
112120
keygenLogger.Error().Err(err).Msg("keygenTss error")
113-
tssFailedVoteHash, err := client.SetTSS("", keyGen.BlockNumber, chains.ReceiveStatus_failed)
121+
tssFailedVoteHash, err := client.PostVoteTSS(
122+
ctx,
123+
"",
124+
keyGen.BlockNumber,
125+
chains.ReceiveStatus_failed,
126+
)
114127
if err != nil {
115128
keygenLogger.Error().Err(err).Msg("Failed to broadcast Failed TSS Vote to zetacore")
116129
return nil, err
@@ -128,7 +141,8 @@ func GenerateTss(
128141
}
129142

130143
// If TSS is successful , broadcast the vote to zetacore and set Pubkey
131-
tssSuccessVoteHash, err := client.SetTSS(
144+
tssSuccessVoteHash, err := client.PostVoteTSS(
145+
ctx,
132146
newTss.CurrentPubkey,
133147
keyGen.BlockNumber,
134148
chains.ReceiveStatus_success,
@@ -155,7 +169,7 @@ func GenerateTss(
155169
return nil, errors.New("unexpected state for TSS generation")
156170
}
157171

158-
func keygenTss(keyGen observertypes.Keygen, tss *mc.TSS, keygenLogger zerolog.Logger) error {
172+
func keygenTss(ctx context.Context, keyGen observertypes.Keygen, tss *mc.TSS, keygenLogger zerolog.Logger) error {
159173
keygenLogger.Info().Msgf("Keygen at blocknum %d , TSS signers %s ", keyGen.BlockNumber, keyGen.GranteePubkeys)
160174
var req keygen.Request
161175
req = keygen.NewRequest(keyGen.GranteePubkeys, keyGen.BlockNumber, "0.14.0")
@@ -168,7 +182,12 @@ func keygenTss(keyGen observertypes.Keygen, tss *mc.TSS, keygenLogger zerolog.Lo
168182
return err
169183
}
170184
index := fmt.Sprintf("keygen-%s-%d", digest, keyGen.BlockNumber)
171-
zetaHash, err := tss.ZetacoreClient.PostBlameData(&res.Blame, tss.ZetacoreClient.Chain().ChainId, index)
185+
zetaHash, err := tss.ZetacoreClient.PostVoteBlameData(
186+
ctx,
187+
&res.Blame,
188+
tss.ZetacoreClient.Chain().ChainId,
189+
index,
190+
)
172191
if err != nil {
173192
keygenLogger.Error().Err(err).Msg("error sending blame data to core")
174193
return err

0 commit comments

Comments
 (0)