Skip to content

Commit

Permalink
Merge branch 'MX-15218-bridge-sender-service-refactor' into MX-15283-…
Browse files Browse the repository at this point in the history
…data-formatting-unconfirmed-operation

# Conflicts:
#	server/txSender/dataFormatter.go
#	server/txSender/factory.go
  • Loading branch information
mariusmihaic committed Mar 20, 2024
2 parents 8f5f916 + b44c2d5 commit 1c579a7
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 38 deletions.
6 changes: 3 additions & 3 deletions server/cmd/server/.env
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ WALLET_PATH="wallet.pem"
WALLET_PASSWORD=""
# MultiversX proxy (e.g.: https://testnet-gateway.multiversx.com)
MULTIVERSX_PROXY="https://testnet-gateway.multiversx.com"
# Multisig address on MultiversX to send transactions to
MULTISIG_SC_ADDRESS="erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx"
# ESDT Safe address on MultiversX
# Multi Sig address on MultiversX to register the transactions
MULTI_SIG_SC_ADDRESS="erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx"
# ESDT Safe address on MultiversX to execute the transactions
ESDT_SAFE_SC_ADDRESS="erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx"
# Max retries to wait in seconds for account nonce update after sending bridge txs
MAX_RETRIES_SECONDS_WAIT_NONCE=60
Expand Down
17 changes: 9 additions & 8 deletions server/cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,18 @@ import (
"syscall"
"time"

"github.com/multiversx/mx-chain-sovereign-bridge-go/cert"
"github.com/multiversx/mx-chain-sovereign-bridge-go/server"
"github.com/multiversx/mx-chain-sovereign-bridge-go/server/cmd/config"
"github.com/multiversx/mx-chain-sovereign-bridge-go/server/txSender"

"github.com/joho/godotenv"
"github.com/multiversx/mx-chain-core-go/core/check"
"github.com/multiversx/mx-chain-core-go/core/closing"
"github.com/multiversx/mx-chain-core-go/data/sovereign"
"github.com/multiversx/mx-chain-core-go/marshal"
logger "github.com/multiversx/mx-chain-logger-go"
"github.com/multiversx/mx-chain-logger-go/file"
"github.com/multiversx/mx-chain-sovereign-bridge-go/cert"
"github.com/multiversx/mx-chain-sovereign-bridge-go/server"
"github.com/multiversx/mx-chain-sovereign-bridge-go/server/cmd/config"
"github.com/multiversx/mx-chain-sovereign-bridge-go/server/txSender"
"github.com/urfave/cli"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
Expand All @@ -39,7 +40,7 @@ const (
envGRPCPort = "GRPC_PORT"
envWallet = "WALLET_PATH"
envPassword = "WALLET_PASSWORD"
envMultisigSCAddr = "MULTISIG_SC_ADDRESS"
envMultiSigSCAddr = "MULTI_SIG_SC_ADDRESS"
envEsdtSafeSCAddr = "ESDT_SAFE_SC_ADDRESS"
envMultiversXProxy = "MULTIVERSX_PROXY"
envMaxRetriesWaitNonce = "MAX_RETRIES_SECONDS_WAIT_NONCE"
Expand Down Expand Up @@ -141,7 +142,7 @@ func loadConfig() (*config.ServerConfig, error) {
grpcPort := os.Getenv(envGRPCPort)
walletPath := os.Getenv(envWallet)
walletPassword := os.Getenv(envPassword)
multisigSCAddress := os.Getenv(envMultisigSCAddr)
multiSigSCAddress := os.Getenv(envMultiSigSCAddr)
esdtSafeSCAddress := os.Getenv(envEsdtSafeSCAddr)
proxy := os.Getenv(envMultiversXProxy)
maxRetriesWaitNonceStr := os.Getenv(envMaxRetriesWaitNonce)
Expand All @@ -155,7 +156,7 @@ func loadConfig() (*config.ServerConfig, error) {
}

log.Info("loaded config", "grpc port", grpcPort)
log.Info("loaded config", "multisigSCAddress", multisigSCAddress)
log.Info("loaded config", "multiSigSCAddress", multiSigSCAddress)
log.Info("loaded config", "esdtSafeSCAddress", esdtSafeSCAddress)
log.Info("loaded config", "proxy", proxy)
log.Info("loaded config", "maxRetriesWaitNonce", maxRetriesWaitNonce)
Expand All @@ -171,7 +172,7 @@ func loadConfig() (*config.ServerConfig, error) {
Password: walletPassword,
},
TxSenderConfig: txSender.TxSenderConfig{
MultisigSCAddress: multisigSCAddress,
MultisigSCAddress: multiSigSCAddress,
EsdtSafeSCAddress: esdtSafeSCAddress,
Proxy: proxy,
MaxRetriesSecondsWaitNonce: maxRetriesWaitNonce,
Expand Down
4 changes: 2 additions & 2 deletions server/txSender/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ var errNilDataFormatter = errors.New("nil data formatter provided")

var errNilNonceHandler = errors.New("nil nonce handler provided")

var errNoSCMultisigAddress = errors.New("no sc multisig address provided")
var errNoMultiSigSCAddress = errors.New("no multi sig sc address provided")

var errNoSCEsdtSafeAddress = errors.New("no sc esdt safe address provided")
var errNoEsdtSafeSCAddress = errors.New("no esdt safe sc address provided")
2 changes: 1 addition & 1 deletion server/txSender/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func CreateTxSender(wallet core.CryptoComponentsHolder, cfg TxSenderConfig) (*tx
TxInteractor: ti,
TxNonceHandler: nonceHandler,
DataFormatter: dtaFormatter,
SCMultisigAddress: cfg.MultisigSCAddress,
SCMultiSigAddress: cfg.MultisigSCAddress,
SCEsdtSafeAddress: cfg.EsdtSafeSCAddress,
})
}
14 changes: 6 additions & 8 deletions server/txSender/txSender.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type TxSenderArgs struct {
TxInteractor TxInteractor
TxNonceHandler TxNonceSenderHandler
DataFormatter DataFormatter
SCMultisigAddress string
SCMultiSigAddress string
SCEsdtSafeAddress string
}

Expand Down Expand Up @@ -50,7 +50,7 @@ func NewTxSender(args TxSenderArgs) (*txSender, error) {
txInteractor: args.TxInteractor,
txNonceHandler: args.TxNonceHandler,
dataFormatter: args.DataFormatter,
scMultisigAddress: args.SCMultisigAddress,
scMultisigAddress: args.SCMultiSigAddress,
scEsdtSafeAddress: args.SCEsdtSafeAddress,
}, nil
}
Expand All @@ -71,11 +71,11 @@ func checkArgs(args TxSenderArgs) error {
if check.IfNil(args.TxNonceHandler) {
return errNilNonceHandler
}
if len(args.SCMultisigAddress) == 0 {
return errNoSCMultisigAddress
if len(args.SCMultiSigAddress) == 0 {
return errNoMultiSigSCAddress
}
if len(args.SCEsdtSafeAddress) == 0 {
return errNoSCEsdtSafeAddress
return errNoEsdtSafeSCAddress
}

return nil
Expand Down Expand Up @@ -121,12 +121,10 @@ func (ts *txSender) createAndSendTxs(ctx context.Context, data *sovereign.Bridge
Version: ts.netConfigs.MinTransactionVersion,
}
default:
log.Error("invalid tx data received",
"data", string(tx.Data))
log.Error("invalid tx data received", "data", string(tx.Data))
}

err := ts.txNonceHandler.ApplyNonceAndGasPrice(ctx, ts.wallet.GetAddressHandler(), tx)
log.Debug("transaction", "nonce", tx.Nonce)
if err != nil {
return nil, err
}
Expand Down
37 changes: 21 additions & 16 deletions server/txSender/txSender_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,36 @@ import (
"sync"
"testing"

"github.com/multiversx/mx-chain-sovereign-bridge-go/testscommon"

"github.com/multiversx/mx-chain-core-go/data/sovereign"
"github.com/multiversx/mx-chain-core-go/data/transaction"
"github.com/multiversx/mx-chain-sovereign-bridge-go/testscommon"
"github.com/multiversx/mx-sdk-go/core"
"github.com/multiversx/mx-sdk-go/data"
"github.com/stretchr/testify/require"
)

const (
scMultiSigAddress = "erd1qqq"
scEsdtSafeAddress = "erd1qqqe"
)

func createArgs() TxSenderArgs {
return TxSenderArgs{
Wallet: &testscommon.CryptoComponentsHolderMock{},
Proxy: &testscommon.ProxyMock{},
TxInteractor: &testscommon.TxInteractorMock{},
DataFormatter: &testscommon.DataFormatterMock{},
TxNonceHandler: &testscommon.TxNonceSenderHandlerMock{},
SCMultisigAddress: "erd1qqq",
SCEsdtSafeAddress: "erd1qqqe",
SCMultiSigAddress: scMultiSigAddress,
SCEsdtSafeAddress: scEsdtSafeAddress,
}
}

func TestNewTxSender(t *testing.T) {
t.Parallel()

t.Run("nil wallet", func(t *testing.T) {
t.Parallel()

args := createArgs()
args.Wallet = nil

Expand All @@ -40,8 +44,6 @@ func TestNewTxSender(t *testing.T) {
require.Equal(t, errNilWallet, err)
})
t.Run("nil proxy", func(t *testing.T) {
t.Parallel()

args := createArgs()
args.Proxy = nil

Expand All @@ -50,8 +52,6 @@ func TestNewTxSender(t *testing.T) {
require.Equal(t, errNilProxy, err)
})
t.Run("nil tx interactor", func(t *testing.T) {
t.Parallel()

args := createArgs()
args.TxInteractor = nil

Expand All @@ -60,8 +60,6 @@ func TestNewTxSender(t *testing.T) {
require.Equal(t, errNilTxInteractor, err)
})
t.Run("nil data formatter", func(t *testing.T) {
t.Parallel()

args := createArgs()
args.DataFormatter = nil

Expand All @@ -70,8 +68,6 @@ func TestNewTxSender(t *testing.T) {
require.Equal(t, errNilDataFormatter, err)
})
t.Run("should work", func(t *testing.T) {
t.Parallel()

args := createArgs()

ts, err := NewTxSender(args)
Expand All @@ -87,7 +83,16 @@ func TestTxSender_SendTxs(t *testing.T) {
expectedNonce := 0
expectedDataIdx := 0
expectedTxHashes := []string{"txHash1", "txHash2", "txHash3"}
expectedTxsData := [][]byte{[]byte(registerBridgeOpsPrefix + "txData1"), []byte(executeBridgeOpsPrefix + "txData2"), []byte(executeBridgeOpsPrefix + "txData3")}
expectedTxsData := [][]byte{
[]byte(registerBridgeOpsPrefix + "txData1"),
[]byte(executeBridgeOpsPrefix + "txData2"),
[]byte(executeBridgeOpsPrefix + "txData3"),
}
expectedTxsReceiver := []string{
scMultiSigAddress,
scEsdtSafeAddress,
scEsdtSafeAddress,
}
expectedSigs := []string{"sig1", "sig2", "sig3"}
expectedBridgeData := &sovereign.BridgeOperations{
Data: []*sovereign.BridgeOutGoingData{
Expand Down Expand Up @@ -126,7 +131,7 @@ func TestTxSender_SendTxs(t *testing.T) {
require.Equal(t, &transaction.FrontendTransaction{
Nonce: 0,
Value: "0",
Receiver: tx.Receiver,
Receiver: expectedTxsReceiver[expectedDataIdx],
Sender: args.Wallet.GetBech32(),
GasPrice: expectedNetworkConfig.MinGasPrice,
GasLimit: 50_000_000,
Expand All @@ -148,7 +153,7 @@ func TestTxSender_SendTxs(t *testing.T) {
require.Equal(t, &transaction.FrontendTransaction{
Nonce: uint64(expectedNonce),
Value: "0",
Receiver: tx.Receiver,
Receiver: expectedTxsReceiver[expectedDataIdx],
Sender: args.Wallet.GetBech32(),
GasPrice: expectedNetworkConfig.MinGasPrice,
GasLimit: 50_000_000,
Expand Down

0 comments on commit 1c579a7

Please sign in to comment.