Skip to content

Account.declareAndDeploy returns uninformative error on invalid constructor calldata #830

Open
@FabijanC

Description

@FabijanC

Describe the bug
I was experimenting with some contracts that require constructor arguments and some which don't. So I was trying to declare and deploy one which does, but forgot to provide them. I ended up getting this error:

TypeError: Cannot convert undefined to a BigInt
    at BigInt (<anonymous>)
    at toBigInt (/home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/utils/num.ts:15:10)
    at /home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/utils/transaction.ts:18:11
    at Array.forEach (<anonymous>)
    at transformCallsToMulticallArrays (/home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/utils/transaction.ts:15:9)
    at fromCallsToExecuteCalldata (/home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/utils/transaction.ts:38:35)
    at getExecuteCalldata (/home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/utils/transaction.ts:89:10)
    at Account.buildInvocation (/home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/account/default.ts:249:22)
    at Account.estimateInvokeFee (/home/fabijanc/shardlabs/starknet-js-example/node_modules/starknet/src/account/default.ts:124:35)

To Reproduce

After spawning starknet-devnet-rs with prefunded accounts, I tried running this script (omitted imports and constant definitions):

  const provider = new Provider({ rpc: { nodeUrl: "http://localhost:5050" } });
  const account = new Account(provider, accountAddress, accountPrivateKey);
  console.log(`Loaded account with address ${account.address}`);

  const compiledContract = await json.parse(
    fs.readFileSync(sierraPath).toString("ascii")
  );
  const compiledSierraCasm = await json.parse(
    fs.readFileSync(casmPath).toString("ascii")
  );

  console.log("Loaded artifacts");

  const declareDeployResponse = await account.declareAndDeploy(
    {
      contract: compiledContract,
      casm: compiledSierraCasm,
      // here one would specify the constructorCalldata - I forgot to
    },
    { maxFee: BigInt(1e18) }
  );

Expected behavior

  • A more informative error

Screenshots
N/A

Desktop (please complete the following information):

  • Node version: 16.14.0
  • Starknet.js version: 5.19.5
  • Network: starknet-devnet-rs

Metadata

Metadata

Assignees

Labels

Type: bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions