Step 3: Initializing and Depositing onto the OneBalance Smart Account

At this step, the application will display the Smart Contract Account (SCA) address for the user. This address is used for deposits on the supported chains in the application; for more details, see this section.

Currently, only EVM chains are supported, so the address remains the same across all chains. The SCA address is determined in advance using counterfactual address calculation, meaning it can be known before deployment.

To retrieve the SCA address, you can use this API endpoint. Here’s an example API call:

 fetch('https://be.onebalance.io/api/account/predict-address', {
    method: "post",
    body: JSON.stringify({
      sessionAddress: "<USER SIGNING ROLE KEY ADDRESS HERE>",
      adminAddress: "<ADMIN-ROLE KEY ADDRESS HERE>",
    }),
    headers: {
      "x-api-key": '<YOUR ONEBALANCE API KEY HERE>',
      "Content-Type": "application/json",
    },
  })

Depending on your application requirements, you may want to request an admin address from the user as a backup, or set it to 0x000...0 if not needed.

Note: At this point, the application must provide both the initial user signing key and the admin key every time to retrieve the deposit address.

For a full implementation, see our sample client-side application.

Automatic Deployment: The SCA deployment will occur automatically via the 4337 UserOp initCode field, together with the first spending transaction, so app developers do not need to handle it manually.

Last updated