You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axelar跨链转账失败:调用sendToMany触发算术溢出错误

Axelar跨链aUSDC转账执行失败排查(算术溢出/下溢错误)

我尝试通过Axelar将aUSDC从Optimism Goerli跨链转账至Base Goerli,已分别在两条测试链部署OPSender.sol和BaseReceiver.sol合约。调用OPSender的sendToMany函数时,出现「Transaction mined but execution failed」错误,经Tenderly调试提示算术溢出/下溢,但合约未涉及复杂运算。

调用参数

{
    "string _destChain": "Base",
    "string _destContractAddr": "0x291b1B6EB9DE79f0cb181bCF68Ae1ea70d9B8760",
    "address[] _destinationAddrs": [
        "0xD1872508B5A49eD6Ea5EefD93e643623c0F83a78"
    ],
    "string _symbol": "aUSDC",
    "uint256 _amount": "100"
}

附加原生代币金额:10000000000000000 wei

OPSender.sol 合约代码

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import { IERC20 } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IERC20.sol';
import { IAxelarGateway } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarExecutable.sol';
import { IAxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGasService.sol';

contract OPSender {
    IAxelarGasService gasReceiver;
    IAxelarGateway gateway;

    constructor (
        address _gateway,
        address _gasReceiver
    ) {
        gateway = IAxelarGateway(_gateway);
        gasReceiver = IAxelarGasService(_gasReceiver);
    }

    function sendToMany(
        string memory _destChain,
        string memory _destContractAddr,
        address[] calldata _destinationAddrs,
        string memory _symbol,
        uint256 _amount
    ) external payable {
        require(msg.value > 0, "Gas payment required");

        // get token address from symbol
        address tokenAddress = gateway.tokenAddresses(_symbol);

        // send funds to this contract
        IERC20(tokenAddress).transferFrom(msg.sender, address(this), _amount);

        // approve gateway to spend funds
        IERC20(tokenAddress).approve(address(gateway), _amount);

        // encode recipient addresses tx on destination chain
        bytes memory _payload = abi.encode(_destinationAddrs);
        
        //pay gas from source chain
        gasReceiver.payNativeGasForContractCallWithToken{value: msg.value} (
            address(this),
            _destChain,
            _destContractAddr,
            _payload,
            _symbol,
            _amount,
            msg.sender
        );

        // send token and execute call
        gateway.callContractWithToken(
            _destChain,
            _destContractAddr,
            _payload,
            _symbol,
            _amount
        );
    }
}

BaseReceiver.sol 合约代码

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import { IERC20 } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IERC20.sol';
import { IAxelarExecutable } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarExecutable.sol';
import { IAxelarGasService } from '@axelar-network/axelar-cgp-solidity/contracts/interfaces/IAxelarGasService.sol';

contract BaseReceiver is IAxelarExecutable {
    IAxelarGasService public immutable gasService;

    constructor (address _gateway, address _gasService) 
        IAxelarExecutable(_gateway) 
    {
        gasService = IAxelarGasService(_gasService);
    }

    event Executed();

    function _executeWithToken(
        string memory,
        string memory,
        bytes calldata _payload,
        string memory _tokenSymbol,
        uint256 _amount
    ) internal override {
        // decode recipients
        address[] memory recipients = abi.decode(_payload, (address[]));

        // get token addr
        address tokenAddress = gateway.tokenAddresses(_tokenSymbol);

        // get first address
        address recipient = recipients[0];

        // transfer to recipient  
        IERC20(tokenAddress).transfer(recipient, _amount);

        emit Executed();
    }
}

问题核心

调用sendToMany函数触发交易执行失败,Tenderly提示算术溢出/下溢错误,但合约代码中未包含复杂算术运算,不清楚错误触发原因。

内容的提问来源于stack exchange,提问作者benjamin852

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:07:54