Error: Número no válido de argumentos para la función Solidez

Recibo el error Error: Invalid number of arguments to Solidity functionpara el constructor de mi contrato y no tengo idea de por qué.

Acabo de actualizar Truffle 4.0.0 betay usar el truffle developentorno de prueba en lugar de testrpc. Estas pruebas solían pasar, pero ahora me están dando errores.

constructor del contrato

function MyContract(
        bytes _eventName, 
        bytes32[] _eventResultNames, 
        uint256 _eventBettingEndBlock,
        uint256 _decisionEndBlock,
        uint8 _averageBlockTime,
        uint256 _arbitrationOptionMinutes) 
        public
        payable
    {
        ...
    }

Clase de prueba de moca

const params = {
        _eventName: "test",
        _eventResultNames: ["first", "second", "third"],
        _eventBettingEndBlock: 100,
        _decisionEndBlock: 120,
        _averageBlockTime: 10,
        _arbitrationOptionMinutes: 1440
    };
const baseReward = Utils.getBigNumberWithDecimals(10, nativeDecimals);

let myContract;

beforeEach(async function() {
        myContract = await MyContract.new(...Object.values(params), { from: creator, value: baseReward });
    });

Mensaje de error

1) Contract: MyContract New MyContract inits the MyContract with the correct values:
     Error: Invalid number of arguments to Solidity function
      at Object.InvalidNumberOfSolidityArgs (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:43993:16)
      at SolidityFunction.validateArgs (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:357969:22)
      at SolidityFunction.toPayload (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:357985:10)
      at SolidityFunction.call (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:358026:24)
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:326504:16
      at Promise (<anonymous>)
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:326495:18
      at <anonymous>

¿Cómo soluciono este error?

Respuestas (5)

Elimine su carpeta de compilación, luego ejecute el comando. El comando de reinicio podría funcionar para algunos, no para mí, podría ser una cosa de Mac. npm run truffle migrate --reset --compile-all Creo que funciona mejor cuando se ejecuta truffle localmente en la carpeta en lugar de globalmente, debido a que la versión beta y las diferentes versiones se actualizaron rápidamente recientemente. si prefiere el enfoque global intente truffle migrate --reset --compile-all

Ya me di cuenta de esto eventualmente también. No creo que --compile-allen realidad lo recompile jajaja.

¡Hola desde el futuro y el pasado!

Si está en el proyecto de muestra de Hardhat y ha personalizado su contrato Greeter.sol [tal vez para implementar un contrato ERC-721] y ahora está intentando ejecutar sample-script.js y ahora está fallando con

motivo: 'demasiados argumentos: en el constructor del contrato'

Vaya a /sample-script.js para

  const greeter = await Greeter.deploy("Hello, Hardhat!");

y eliminar el argumento como tal:

  const greeter = await Greeter.deploy();

Ayer experimenté este problema. Parece ser un error en la versión beta de Truffle 4.0.0. Retrocedí a la última versión estable 3.4.11 y solucioné el problema.

npm uninstall -g truffle

npm install -g truffle

EDITAR: El proyecto necesita ser reconstruido/reimplementado:

truffle migrate --reset --compile-all
De hecho, ya he intentado retroceder, pero mis pruebas aún no pasan. ¿Hiciste algo especial además de esos dos comandos?
Simplemente vuelvo a ejecutar la migración con el parámetro restablecer y compilar todo: truffle migrate --reset --compile-all. Creo que el archivo de compilación JSON debe regenerarse.
truffle migrate --reset --compile-all¡trabajó! ¡Gracias! Por alguna razón, llamar truffle compile -allentonces truffle migrate --resetno lo arregló...

Lamentablemente, la respuesta sugerida anteriormente no funcionó. Intente eliminar la carpeta de compilación y luego compile la implementación

truffle migrate --reset

Tuve el mismo problema, el código compilado está dañado. Funciona solo por primera vez y la compilación posterior corrompe la compilación. Espero eso ayude.

Intente eliminar la carpeta de compilación y ejecute

truffle migrate --reset

Tuve el mismo problema, el código compilado estaba dañado. Espero que esto ayude.