Skip to content


Create a Contract Project

Smart contracts can be compiled and promoted to an environment using Kaleido's smart contract management functionality. In the lefthand navigation of the console, expand the Networks section, and access Shared Assets -> Contract Projects.

Contract Projects Home

  • Click Create Contract Project.
  • Choose the protocol for the project. We will use Ethereum for this example.

Contract Protocol

  • Provide a name for the Contract Project (e.g. "Simple Storage").
  • Choose how to provide the source code. Kaleido offers three options:
  • Managed compilation from Github: direct import source code from a public or private Github repository and compile, it will automatically install npm dependencies if package.json is found in the imported project. Truffle projects are supported.
  • Upload source: direct upload of Solidity source file or an archive that includes multiple Solidity source files and their dependencies.
  • Pre-compiled: compile yourself and upload the ABI and Bytecode
  • Refer to the Ethereum Quick Start tutorial for an example of importing a smart contract from a public Kaleido git repository.

Create Contract Projects

  • Choose the preferred type and click Finish.
  • Now a namespace for your Contract Project exists within your business network.

Add a New Compilation to Contract Project

Click New Compilation to add a contract instance to the project.

New Compilation

Based on the type of contract project you will be taken to the following screens.

Managed Compilation from Github

If you chose Managed compilation from Github as the project type, you can import a contract from a public or private Github repository. Simply provide the full URL to the solidity source file. In the case of a private repository, you will need to provide a Github personal access token to authenticate access. If there is more than one contract in the solidity file, you will need to provide the name of the contract that needs to be compiled.

Kaleido will auto detect the compiler version specified in your smart contract file.

Github Contract

Upload Source

If you chose Upload source as the project type, you can upload source file directly using a .sol file upload or through a packaged .zip archive upload. Click Select File and choose the file or zip archive from your local file explorer. After clicking Upload, dropdown boxes will appear to select the contract, the compiler and EVM version. Then click Finish to generate the compilation.

If you use a .zip archive file to upload a large number of Solidity source files, note that the size limit is 10MB. In practical terms, this means if you are using a Truffle project to develop your smart contracts, you can't simply zip up the project and upload. This is because a Truffle project archive will exceed this size limit with dependencies installed. We recommend you choose the Managed Compilation from Github option as the project type for your Truffle based smart contracts. Another option is choosing the Pre-compiled project type and manually specify the ABI and bytecode for your contracts resulted from truffle compile.

Contract Direct

Contract File Upload


If you chose Pre-compiled as the project type, you can compile the contract yourself and paste the compiled bytecode, ABI and devdocs (optional). Then click Finish.

Contract Metadata

Promote Contract to Environment

After uploading or importing your source code, you will be shown the Compilation Details of the contract.

If the compilation fails, you can delete the compilation object and iterate on your source code or raw metadata to attempt a subsequent compilation.

Compilation Details

Upon a successful compilation, you have the ability to "promote" the contract to an environment. The Compilations tab in the Contract Project Details page will list all the compiled contracts (successful and failed). You can click on any successfully compiled contract to promote it to an environment. You can optionally delete any failed compilations.

Contract Compilations

Click on the compilation you would like to promote. In the Compilation Details page, click Promote to Environment or select the specific environment from the right side of the screen. If you do not have an environment within your business network, you will need to create one in order to promote the compilation. Refer to the Ethereum Quick Start tutorial for a quick walkthrough on creating your first environment.

On the Promote the Compilation to an Environment page, give a friendly name for the gateway API endpoint and select the environment to which you would like to promote the contract. Then click Finish.

Promote Screen

Once the contract is promoted to the selected environment, you can see the Gateway API Details page. Here you can deploy the contract to a node using the Deploy Instance or View Gateway API buttons. Both of these buttons will prompt you to select the node that will receive the incoming transaction(s) and they will also open an interactive Swagger Interface for you to interact with the contract. The Deploy Instance screen will only expose the root POST method, while the View Gateway API will show all smart contract methods within your source.

To instantiate a Gateway API (e.g. a specific compilation) make use of the root POST method within your Swagger interface and input any required arguments to the constructor in the body of your REST API call.

  • Use the kld-from parameter to enumerate the account you want to sign the transaction. The populated address is the default Ethereum account on the node you are viewing the APIs through.
  • Use the kld-register parameter to apply a human-friendly naming convention to your smart contract instance. For example, simplestorage123.

Again, you can refer to the Ethereum Quick Start for more details on the REST API Gateway parameters.

Gateway API Details

Once a Gateway API (e.g. a specific compilation) has been deployed, you will have what Kaleido refers to as an "instance" of that compilation. You can generate multiple smart contract instances within a Gateway API. For example, you may want to use the same source code, but compartmentalize the state across different departments or geographies.

SCM Instance

Expand the ellipsis next to your instance to interact with the smart contract.