Add agent balance fetch from proxy

This commit is contained in:
2025-08-15 20:52:37 +07:00
parent b178f15beb
commit 289fd25dc3
9 changed files with 1622 additions and 43 deletions

View File

@@ -325,15 +325,59 @@ public class EvmManager : IEvmManager
public async Task<List<EvmBalance>> GetAllBalancesOnAllChain(string publicAddress)
{
var chainBalances = new List<EvmBalance>();
var chains = ChainService.GetChains();
foreach (var chain in chains)
try
{
chainBalances.AddRange(await GetAllBalances(chain, publicAddress));
}
// Define the assets and chains we want to query
var assets = new[] { Ticker.USDC, Ticker.ETH };
var chains = new[] { "arbitrum", "ethereum" };
return chainBalances;
// Get balances from Web3Proxy service
var balances = await _web3ProxyService.GetWalletBalanceAsync(publicAddress, assets, chains);
// Convert Balance objects to EvmBalance objects
var evmBalances = new List<EvmBalance>();
foreach (var balance in balances)
{
if (balance.Amount > 0)
{
var evmBalance = new EvmBalance
{
Balance = balance.Amount,
TokenName = balance.TokenName ?? "Unknown",
TokenAddress = balance.TokenAdress ?? "",
TokenImage = balance.TokenImage ?? "",
Price = balance.Price,
Value = balance.Value,
Chain = new Chain
{
Id = balance.Chain?.Id ?? "",
Name = balance.Chain?.Name ?? "Unknown",
ChainId = balance.Chain?.ChainId ?? 0,
RpcUrl = balance.Chain?.RpcUrl ?? ""
}
};
evmBalances.Add(evmBalance);
}
}
return evmBalances;
}
catch (Exception ex)
{
// Log the exception and fallback to original implementation if Web3Proxy fails
Console.WriteLine($"Web3Proxy balance retrieval failed: {ex.Message}");
var chainBalances = new List<EvmBalance>();
var chains = ChainService.GetChains();
foreach (var chain in chains)
{
chainBalances.AddRange(await GetAllBalances(chain, publicAddress));
}
return chainBalances;
}
}
public async Task<List<Candle>> GetCandles(Ticker ticker, DateTime startDate, Timeframe timeframe,