Added new tron networks

This commit is contained in:
Stephan D
2025-12-23 17:21:58 +01:00
parent 93bd0bf002
commit 034eb943e2
15 changed files with 87 additions and 50 deletions

View File

@@ -22,8 +22,9 @@ type Deps struct {
}
func (d Deps) WithLogger(name string) Deps {
if d.Logger != nil {
d.Logger = d.Logger.Named(name)
if d.Logger == nil {
panic("wallet deps: logger is required")
}
d.Logger = d.Logger.Named(name)
return d
}

View File

@@ -34,34 +34,24 @@ func onChainWalletBalance(ctx context.Context, deps Deps, wallet *model.ManagedW
}
if rpcURL == "" {
if logger != nil {
logger.Warn("network rpc url is not configured", logFields...)
}
logger.Warn("network rpc url is not configured", logFields...)
return nil, merrors.Internal("network rpc url is not configured")
}
contract := strings.TrimSpace(wallet.ContractAddress)
if contract == "" || !common.IsHexAddress(contract) {
if logger != nil {
logger.Warn("invalid contract address for balance fetch", logFields...)
}
logger.Warn("invalid contract address for balance fetch", logFields...)
return nil, merrors.InvalidArgument("invalid contract address")
}
if wallet.DepositAddress == "" || !common.IsHexAddress(wallet.DepositAddress) {
if logger != nil {
logger.Warn("invalid wallet address for balance fetch", logFields...)
}
logger.Warn("invalid wallet address for balance fetch", logFields...)
return nil, merrors.InvalidArgument("invalid wallet address")
}
if logger != nil {
logger.Info("fetching on-chain wallet balance", logFields...)
}
logger.Info("fetching on-chain wallet balance", logFields...)
client, err := ethclient.DialContext(ctx, rpcURL)
if err != nil {
if logger != nil {
logger.Warn("failed to connect rpc", append(logFields, zap.Error(err))...)
}
logger.Warn("failed to connect rpc", append(logFields, zap.Error(err))...)
return nil, merrors.Internal("failed to connect rpc: " + err.Error())
}
defer client.Close()
@@ -71,46 +61,34 @@ func onChainWalletBalance(ctx context.Context, deps Deps, wallet *model.ManagedW
tokenABI, err := abi.JSON(strings.NewReader(erc20ABIJSON))
if err != nil {
if logger != nil {
logger.Warn("failed to parse erc20 abi", append(logFields, zap.Error(err))...)
}
logger.Warn("failed to parse erc20 abi", append(logFields, zap.Error(err))...)
return nil, merrors.Internal("failed to parse erc20 abi: " + err.Error())
}
tokenAddr := common.HexToAddress(contract)
walletAddr := common.HexToAddress(wallet.DepositAddress)
if logger != nil {
logger.Debug("calling token decimals", logFields...)
}
logger.Debug("calling token decimals", logFields...)
decimals, err := readDecimals(timeoutCtx, client, tokenABI, tokenAddr)
if err != nil {
if logger != nil {
logger.Warn("token decimals call failed", append(logFields, zap.Error(err))...)
}
logger.Warn("token decimals call failed", append(logFields, zap.Error(err))...)
return nil, err
}
if logger != nil {
logger.Debug("calling token balanceOf", append(logFields, zap.Uint8("decimals", decimals))...)
}
logger.Debug("calling token balanceOf", append(logFields, zap.Uint8("decimals", decimals))...)
bal, err := readBalanceOf(timeoutCtx, client, tokenABI, tokenAddr, walletAddr)
if err != nil {
if logger != nil {
logger.Warn("token balanceOf call failed", append(logFields, zap.Uint8("decimals", decimals), zap.Error(err))...)
}
logger.Warn("token balanceOf call failed", append(logFields, zap.Uint8("decimals", decimals), zap.Error(err))...)
return nil, err
}
dec := decimal.NewFromBigInt(bal, 0).Shift(-int32(decimals))
if logger != nil {
logger.Info("on-chain wallet balance fetched",
append(logFields,
zap.Uint8("decimals", decimals),
zap.String("balance_raw", bal.String()),
zap.String("balance", dec.String()),
)...,
)
}
logger.Info("on-chain wallet balance fetched",
append(logFields,
zap.Uint8("decimals", decimals),
zap.String("balance_raw", bal.String()),
zap.String("balance", dec.String()),
)...,
)
return &moneyv1.Money{Currency: wallet.TokenSymbol, Amount: dec.String()}, nil
}