Smart Contract Management Introduction
With Kaleido's smart contract management, organizations in a business network can collaboratively develop and manage smart contracts as shared assets. The management capability supports flexible ways to compile Solidity source code from a github repository or uploaded archives. It also allows pre-compiled ABIs (Application Binary Interface) and bytecode to be provided directly.
As shared assets, the managed smart contracts are visible to every member of the business network to inspect for collaborative governance.
Managed smart contracts can be easily promoted to any Kaleido environment created under the business network, to be put into action on the blockchain network. Once promoted, they can be deployed to the blockchain network via the REST API Gateway from any of the nodes in the Kaleido environment. After deploy, Kaleido automatically generates REST APIs for all the public functions in the contract, so that transactions can be submitted via a REST API using JSON payloads, making it much easier to interact with smart contracts compared to using heavy Web3 SDKs.
Benefits of using Smart Contract Management
Compared to compiling and deploying smart contracts yourselves, using the smart contract management in Kaleido provides these benefits:
- Business network-wide visibility of the contract ABI and bytecode: this allows each member organization to independently validate the deployed contracts to ensure it matches the ones their IT team have expected to use
- REST API Gateway integration: smart contracts deployed by the management workflow are automatically supported by REST API Gateway, such that an easy-to-use REST API are available for the client applications to interact with the smart contracts for submitting transactions, querying the latest states and subscribing to events
- Rich transaction explorer view: transactions captured by Kaleido's block explorer will display richer information with transaction input parameters, because ABI information is available to decode the input RLP string