Ich stoße auf das gleiche Problem wie diese Frage: Übergeben eines Arrays als Parameter von javascrpt (web3) an eine Solidity-Funktion
Wenn ich meine Funktion im Browser-solidity mit dem Parameter [122,44] aufrufe, funktioniert es gut. Aber wenn ich es in meiner eigenen Web-Benutzeroberfläche verwende, wird "Error: new BigNumber() not a number" ausgegeben. Die Art, wie ich es nenne, ist wie:
myContract.myFunction([122,44],{from:accounts[0]},function(err,res){...})
oder
myContract.myFunction(["122","44"],{from:accounts[0]},function(err,res){...})
Ich weiß nicht warum. Es sollte das gleiche Ergebnis wie in der Browser-Festigkeit sein.
Welche Typen erwartet Ihre Soliditätsfunktion? Wenn es uint oder int ist, müssen Sie Ihre Parameter in BigNumber konvertieren, bevor Sie sie übergeben. Z.B:
import BigNumber from 'bignumber.js';
let myParams = [122,44];
let convertedParams = myParams.map( item => { return new BigNumber(item)});
myContract.myFunction(convertedParams,{from:accounts[0]},function(err,res){...})