Skip to main content

Troubleshooting (FAQ)

This guide groups the most common questions and issues developers encounter when working with smart contracts on ISBE, organized by the project lifecycle phase.

Before Deployment

When should I use a template vs. develop a custom contract?

If your business logic is limited to issuing a token (fungible or non-fungible), tracing states, or time-stamping, use a template. Only develop a custom contract if you have validation rules or multi-actor processes that the templates cannot cover. See which template I need.

Which deployment modality is right for me?

It depends on the level of control and compliance you need. Modality 1 is recommended for most cases due to its ease of use and preferred pricing. If you have extremely specific business logic, opt for Modality 2. Modality 3 is reserved for testing or non-regulated environments. See modality comparison.

How long does the compliance process take?

The technical review time depends on the required Compliance Level:

  • Level C (Basic): 2-4 weeks.
  • Level B (Advanced): 4-8 weeks.
  • Level A (Critical/Regulated): 4-12 weeks. Delivering incomplete documentation or failing tests will restart these timelines. See level details.

Can I use external libraries like OpenZeppelin?

Yes, in fact, it is recommended to use audited versions of OpenZeppelin for common standards. However, you must include the source code of the exact dependencies you used in your delivery to ensure that the build is reproducible during ISBE's security analysis.

Do I need prior blockchain knowledge to use the templates?

It is not strictly necessary to know Solidity to use the templates, as they only require parameter configuration. However, basic knowledge of how transactions and addresses work on an Ethereum-compatible network is recommended.

During Development

Do I have to implement the Diamond Pattern (EIP-2535) myself?

No. You deliver a standard Solidity contract. ISBE's deployment infrastructure takes care of packaging your logic within the network's Diamond pattern. You only need to worry about your business logic and using the correct storage pattern.

How do I manage my contract's roles?

The initial roles you want to assign are indicated in the deployment request. Once deployed, you can manage roles (grant or revoke) using standard AccessControl functions if your contract includes them or if you are using a template.

What is Unstructured Storage and why is it mandatory?

It is a storage pattern that avoids memory collisions when a contract is updated. It is mandatory in ISBE to ensure that logic updates do not corrupt existing data in the contract's state.

Can I assign roles to a DID instead of individual addresses?

Yes. The ISBE system is designed so that roles can be held by Decentralized Identities (DIDs), facilitating institutional-level permission management instead of relying on individual private keys.

How do I get the DID of an address in my contract logic?

If you use ISBE's Core components, you can query the central identity registry to obtain the DID associated with msg.sender or any other Ethereum address. See Technical Reference on DID.

In Production

What happens if I find a bug after deployment?

You must initiate a change management process. Once the fix is homologated by ISBE, an update will be made to the corresponding "facet" in the Diamond to patch the vulnerability without changing the contract address or losing data.

How do I request an update to my deployed contract?

Updates are requested through the ISBE portal, attaching the new code and justificatory change documentation. The process follows a compliance flow similar to the initial deployment but focused on the changes made.

Under what circumstances can ISBE pause my contract?

ISBE can pause contracts in response to serious security incidents, critical integrity failures, or legal/judicial mandates. The specific details and governance of this process are detailed in the Network Security and Governance section.

What does it mean for my address to be filtered on the network?

It is a last-resort measure where network nodes reject transactions to a specific address. It is only applied when technical pausing mechanisms do not exist or have been ineffective against a critical threat. See Address Filtering.

Where can I verify my contract publicly?

You can query any deployed contract, its transactions, and events through Blockscout, the official ISBE block explorer. Go to Blockscout.


Can't find the answer you're looking for? Contact the support team via your assigned Service Provider Channel.