FAQ

How do I send uint256 or bytes arguments over HTTP API?

Please read the guide here to understand how to send solidity types over HTTP.

Can I send source code instead of bytecode to create a new Lambda?

🚧

Coming soon :)

We are working on this. Let us know if you need this feature urgently. We will prioritize it.

How do overloaded functions work?

Solidity allows you to create functions that have the same name but different arguments and/or a different type.

Lambda infrastructure supports overloaded functions, but in some rare cases, there might be ambiguity around which function the user wants to invoke. For an example

// The lambda has 2 overloaded functions
// - greet(uint256 num)
// - greet(string greeting)


// The user wants to invoke the second one: greet(string greeting)
{
   "function":{
      "name":"greet",
      "args":[
         // greeting
         "424242"
      ]
   }
}

Since the argument has been sent as a string, both functions greet(uint256 num) and greet(string greeting) are valid candidates. In this case, Lambda will invoke the first matching function greet(uint256 num).

To avoid ambiguity, we recommend:

  • To not create functions with the same name. In the case above, you can rename the functions to greetInt(uint256 num) and greetString(string greeting).
  • To not have the same number of arguments in the overloaded functions.

Does lambda support external wallets?

🚧

Coming soon!!

Let us know if you need this feature urgently. We will prioritize it.

Currently, we only support MetaKeep developer (your) wallets. We are working on adding support for external wallets. This will allow you to manage your keys using any third-party wallet. External wallets will also support zero-friction and gasless transactions.

However, we recommend using MetaKeep developer wallets. MetaKeep developer wallets are non-custodial wallets that are exclusively owned by you. There is no risk of losing your keys or worrying about your wallet being hacked. MetaKeep takes care of all the security and maintenance for you.

Note that external wallets are not supported for end-users at the moment.

I am getting BYTECODE_EXCEEDS_MAX_SIZE error?

This error is thrown when the bytecode size of the contract is larger than 23 KB. Note that the EVM contract size limit is 24.576 KB. Our limit is slightly lower to prevent users from experiencing random errors for large contracts.

There are multiple ways to fix this error:

  1. Enable the optimizer in your contract compilation settings. This will reduce the bytecode size of your contract. For example, you can enable the optimizer by adding the following line to your hardhat.config.js file:
solidity: {
    version: "0.8.9",
    settings: {
      optimizer:{
        enabled: true,
        runs: 200,
      }
    }
  }
  1. Split the contract into multiple contracts.

Are upgradeable/proxy contracts supported?

Yes! Check out the detailed guide here to deploy your custom upgradeable contract.

Lambda read is not returning an array or mapping inside the struct

Solidity default getters don't return structs with arrays or mappings correctly. To work around this, you can create your getter function that returns the struct. See here for more details https://github.com/ethereum/solidity/issues/12792.

© Copyright 2024, Passbird Research Inc.