Код контракта не выполняется из web3, работает из Mist

Кажется, у меня проблема с кодом контракта, который не выполняется при вызове из web3 (работает при вызове из тумана). Eth идет на контракт, так что я знаю, что он, по крайней мере, делает колл. Я называю контракт как таковой:

```

    var fromAddr = sender;
    if(typeof fromAddr == "undefined" || !fromAddr )
        return false;

    var contractAddr = this.addr;
    var abi = this.abi;
    var contract = web3.eth.contract(abi).at(contractAddr);

    ...(some vars)...

    args.push({from: fromAddr, value: parseInt(value), gasPrice: gasPrice, gas: gas});
    var callback = function(err, txhash) {
        console.log('error: ' + err);
        console.log('txhash: ' + txhash);
    }
    args.push(callback);

    web3.personal.unlockAccount(fromAddr, pw);

    contract[functionName].apply(this,args);

```

и, как уже упоминалось, он работает с Mist, но не с web3. У меня есть несколько общедоступных счетчиков, которые правильно увеличиваются при использовании первого. Любые идеи по этому поводу? У меня был модификатор на контракт солидности, но я удалил его без разницы. Я также пытался вызвать контракт, например:

contract[functionName](args[0],args[1],..., { gas: ... } );

без разницы. Я запускаю узел RPC на экземпляре AWS Linux.

Я запускаю geth как таковой:

geth --testnet --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --rpcapi="db,eth,net,web3,personal,web3"

РЕДАКТИРОВАТЬ: Вот рабочий и нерабочий vmtrace

рабочий: http://testnet.etherscan.io/vmtrace?txhash=0xfb022ae9cbf0b39f9ee1890e794226ab02737bc0ccd9ae95d87a646ecbc91744

не работает (постоянно останавливается на шаге 65): http://testnet.etherscan.io/vmtrace?txhash=0x0c8447d26c90189d4fcb6cfac3a2143d7132db9b6b6b55854401b4a9be99cb28

Ответы (1)

Если вы посмотрите на первые четыре байта данных транзакции, один из них будет , 0x9cd61592а другой — 0x1e2564fb. Это указывает на то, что вы не вызываете одну и ту же функцию в обеих транзакциях. Краткость выполнения транзакции web3 заставляет меня подозревать, что сигнатура функции не соответствует какой-либо функции в контракте, а это означает, что ваше определение ABI, вероятно, неверно.

Вы уверены, что правильно определили ABI в web3?

Вы знаете, у меня было подозрение, но я думал, что я ошибаюсь. Проверю и отпишусь, а пока спать. У меня ощущение, что это правильно.