WEB3.PHP合同调用

xtupzzrd  于 2023-01-24  发布在  PHP
关注(0)|答案(1)|浏览(348)

我使用这个PHP库https://github.com/web3p/web3.php向BSC上的智能合约发出请求。

$web3 = new Web3('https://bsc-dataseed.binance.org');
$contract = new Contract($web3->provider, $abi);

$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call('WETH', function($err, $result) {
    print_r($result);
});

可以完美地工作,但问题是当我试图调用同时具有uint256和address[]参数的函数时。

代码如下:

$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call('quote', [
    '25000000000000000000',
    '[0x8C851d1a123Ff703BD1f9dabe631b69902Df5f97, 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56]',
], function($err, $result) {
    print_r($result);
});

我得到了以下错误。试图发送参数作为字典与param名称。无法弄清楚应该如何做。

InvalidArgumentException
Please make sure you have put all function params and callback.
5ssjco0h

5ssjco0h1#

1.代码段尝试将第二个参数编码为数组,但传递的是字符串。

  1. $params的个数在PHP代码中是动态的,不要将它们 Package 在数组中。
$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call(
    // function name
    'getAmountsOut',

    // note the removed array wrapper

    // first param
    '25000000000000000000',

    // second param
    [
        '0x8C851d1a123Ff703BD1f9dabe631b69902Df5f97',
        '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'
    ],

    // callback
    function($err, $result) {
        print_r($result);
    }
);

相关问题