Skip to content

Commit 05b3d97

Browse files
committed
Resolve conflicts, converge codebase between PRs
1 parent 975c78e commit 05b3d97

File tree

6 files changed

+297
-228
lines changed

6 files changed

+297
-228
lines changed

zetaclient/chains/evm/signer/outbound_data.go

+2
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ func NewOutboundData(
157157
return nil, true, errors.Wrap(err, "unable to setup gas")
158158
}
159159

160+
nonce := cctx.GetCurrentOutboundParam().TssNonce
161+
160162
// Get sendHash
161163
logger.Info().
162164
Msgf("chain %d minting %d to %s, nonce %d, finalized zeta bn %d", toChain.ID(), cctx.InboundParams.Amount, txData.to.Hex(), nonce, cctx.InboundParams.FinalizedZetaHeight)

zetaclient/chains/evm/signer/signer.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,12 @@ func (signer *Signer) TryProcessOutbound(
362362
zetacoreClient interfaces.ZetacoreClient,
363363
height uint64,
364364
) {
365+
app, err := zctx.FromContext(ctx)
366+
if err != nil {
367+
signer.Logger().Std.Error().Err(err).Msg("error getting app context")
368+
return
369+
}
370+
365371
// end outbound process on panic
366372
defer func() {
367373
outboundProc.EndTryProcess(outboundID)
@@ -410,8 +416,6 @@ func (signer *Signer) TryProcessOutbound(
410416
return
411417
}
412418

413-
// Get cross-chain flags
414-
crossChainflags := app.GetCrossChainFlags()
415419
// https://github.com/zeta-chain/node/issues/2050
416420
var tx *ethtypes.Transaction
417421
// compliance check goes first

zetaclient/chains/solana/observer/outbound.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (ob *Observer) WatchOutbound(ctx context.Context) error {
4747
for {
4848
select {
4949
case <-ticker.C():
50-
if !app.IsOutboundObservationEnabled(ob.GetChainParams()) {
50+
if !app.IsOutboundObservationEnabled() {
5151
sampledLogger.Info().Msgf("WatchOutbound: outbound observation is disabled for chain %d", chainID)
5252
continue
5353
}

zetaclient/orchestrator/bootstrap.go

+34-57
Original file line numberDiff line numberDiff line change
@@ -144,69 +144,46 @@ func syncSignerMap(
144144
continue
145145
}
146146

147+
addSigner(chainID, signer)
148+
case chain.IsSolana():
149+
cfg, found := app.Config().GetSolanaConfig()
150+
if !found {
151+
logger.Std.Warn().Msgf("Unable to find SOL config for chain %d", chainID)
152+
continue
153+
}
154+
155+
// create Solana client
156+
rpcClient := solrpc.New(cfg.Endpoint)
157+
if rpcClient == nil {
158+
// should never happen
159+
logger.Std.Error().Msgf("Unable to create SOL client from endpoint %s", cfg.Endpoint)
160+
continue
161+
}
162+
163+
// load the Solana private key
164+
solanaKey, err := app.Config().LoadSolanaPrivateKey()
165+
if err != nil {
166+
logger.Std.Error().Err(err).Msg("Unable to get Solana private key")
167+
}
168+
169+
var (
170+
chainRaw = chain.RawChain()
171+
paramsRaw = chain.Params()
172+
)
173+
174+
// create Solana signer
175+
signer, err := solanasigner.NewSigner(*chainRaw, *paramsRaw, rpcClient, tss, solanaKey, ts, logger)
176+
if err != nil {
177+
logger.Std.Error().Err(err).Msgf("Unable to construct signer for SOL chain %d", chainID)
178+
continue
179+
}
180+
147181
addSigner(chainID, signer)
148182
default:
149183
logger.Std.Warn().
150184
Int64("signer.chain_id", chain.ID()).
151185
Str("signer.chain_name", chain.RawChain().Name).
152186
Msgf("Unable to create a signer")
153-
154-
/*
155-
TODO FIX AFTER MERGE
156-
157-
// Solana signer
158-
// Emulate same loop semantics as for EVM chains
159-
for i := 0; i < 1; i++ {
160-
solChain, solChainParams, solChainParamsFound := app.GetSolanaChainParams()
161-
switch {
162-
case !solChainParamsFound:
163-
logger.Std.Warn().Msgf("Unable to find chain params for Solana chain")
164-
continue
165-
case !solChainParams.IsSupported:
166-
logger.Std.Warn().Msgf("Solana chain is not supported")
167-
continue
168-
}
169-
170-
chainID := solChainParams.ChainId
171-
presentChainIDs = append(presentChainIDs, chainID)
172-
173-
// noop
174-
if mapHas(signers, chainID) {
175-
continue
176-
}
177-
178-
// get Solana config
179-
cfg, found := app.Config().GetSolanaConfig()
180-
if !found {
181-
logger.Std.Error().Msgf("Unable to find Solana config for chain %d", chainID)
182-
continue
183-
}
184-
185-
// create Solana client
186-
rpcClient := solrpc.New(cfg.Endpoint)
187-
if rpcClient == nil {
188-
// should never happen
189-
logger.Std.Error().Msgf("Unable to create Solana client from endpoint %s", cfg.Endpoint)
190-
continue
191-
}
192-
193-
// load the Solana private key
194-
solanaKey, err := app.Config().LoadSolanaPrivateKey()
195-
if err != nil {
196-
logger.Std.Error().Err(err).Msg("Unable to get Solana private key")
197-
}
198-
199-
// create Solana signer
200-
signer, err := solanasigner.NewSigner(solChain, *solChainParams, rpcClient, tss, solanaKey, ts, logger)
201-
if err != nil {
202-
logger.Std.Error().Err(err).Msgf("Unable to construct signer for Solana chain %d", chainID)
203-
continue
204-
}
205-
206-
addSigner(chainID, signer)
207-
}
208-
209-
*/
210187
}
211188
}
212189

zetaclient/orchestrator/orchestrator.go

+29-18
Original file line numberDiff line numberDiff line change
@@ -158,29 +158,38 @@ func (oc *Orchestrator) resolveSigner(app *zctx.AppContext, chainID int64) (inte
158158
switch {
159159
case err != nil:
160160
return nil, err
161-
case !chain.IsEVM():
162-
// noop for non-EVM chains
163-
return signer, nil
164161
case chain.IsZeta():
165162
// should not happen
166163
return nil, fmt.Errorf("unable to resolve signer for zeta chain %d", chainID)
167-
}
164+
case chain.IsEVM():
165+
params := chain.Params()
168166

169-
// update zeta connector and ERC20 custody addresses
170-
zetaConnectorAddress := ethcommon.HexToAddress(chain.Params().GetConnectorContractAddress())
171-
if zetaConnectorAddress != signer.GetZetaConnectorAddress() {
172-
signer.SetZetaConnectorAddress(zetaConnectorAddress)
173-
oc.logger.Info().
174-
Str("signer.connector_address", zetaConnectorAddress.String()).
175-
Msgf("updated zeta connector address for chain %d", chainID)
176-
}
167+
// update zeta connector and ERC20 custody addresses
168+
zetaConnectorAddress := ethcommon.HexToAddress(params.GetConnectorContractAddress())
169+
if zetaConnectorAddress != signer.GetZetaConnectorAddress() {
170+
signer.SetZetaConnectorAddress(zetaConnectorAddress)
171+
oc.logger.Info().
172+
Str("signer.connector_address", zetaConnectorAddress.String()).
173+
Msgf("updated zeta connector address for chain %d", chainID)
174+
}
177175

178-
erc20CustodyAddress := ethcommon.HexToAddress(chain.Params().GetErc20CustodyContractAddress())
179-
if erc20CustodyAddress != signer.GetERC20CustodyAddress() {
180-
signer.SetERC20CustodyAddress(erc20CustodyAddress)
181-
oc.logger.Info().
182-
Str("signer.erc20_custody", erc20CustodyAddress.String()).
183-
Msgf("updated zeta connector address for chain %d", chainID)
176+
erc20CustodyAddress := ethcommon.HexToAddress(params.GetErc20CustodyContractAddress())
177+
if erc20CustodyAddress != signer.GetERC20CustodyAddress() {
178+
signer.SetERC20CustodyAddress(erc20CustodyAddress)
179+
oc.logger.Info().
180+
Str("signer.erc20_custody", erc20CustodyAddress.String()).
181+
Msgf("updated zeta connector address for chain %d", chainID)
182+
}
183+
case chain.IsSolana():
184+
params := chain.Params()
185+
186+
// update solana gateway address
187+
if params.GatewayAddress != signer.GetGatewayAddress() {
188+
signer.SetGatewayAddress(params.GatewayAddress)
189+
oc.logger.Info().
190+
Str("signer.gateway_address", params.GatewayAddress).
191+
Msgf("updated gateway address for chain %d", chainID)
192+
}
184193
}
185194

186195
return signer, nil
@@ -401,6 +410,8 @@ func (oc *Orchestrator) runScheduler(ctx context.Context) error {
401410
oc.ScheduleCctxEVM(ctx, zetaHeight, chainID, cctxList, ob, signer)
402411
case chain.IsUTXO():
403412
oc.ScheduleCctxBTC(ctx, zetaHeight, chainID, cctxList, ob, signer)
413+
case chain.IsSolana():
414+
oc.ScheduleCctxSolana(ctx, zetaHeight, chainID, cctxList, ob, signer)
404415
default:
405416
oc.logger.Error().Msgf("runScheduler: no scheduler found chain %d", chainID)
406417
continue

0 commit comments

Comments
 (0)