Please note, you should use PETERSBURG EVM version when deploying on CIC Chain
Purpose of the API server is to provide high performance GraphQL API for CIC powered blockchain network. Our aim is to offer access to both low level as well as aggregated blockchain data for remote clients. Client developers can concentrate on their app business logic, instead of dealing with complexity of data and entity relationship inside the CIC blockchain blockchain.
The API server is published on enter-api-graphql GitHub repository. Feel free to download and deploy your copy of the application. We are actively developing the project and adding new features so it's worth checking the recent development even if you already checked the repository before.
An example of implementation of a client using this API is our new CIC blockchain Explorer EnterScan. It's source code is also publicly available in our GitHub projects collection. Please check our GitHub repository for more information.
We use several pieces of technology to make the API work. If your intention is to run your own copy of it, please check our setup and make sure you are familiar with using these technologies at least on rudimentary level before you continue.
First, you will need access to CIC full node RPC interface. You can use properly configured remote one, but it would significantly affect performance and potentially also security of your deployment. Please consider security implications of opening HBFT RPC to outside access. Especially if you enable "personal" commands on your node while keeping your account keys in the CIC key store. We recommend using local IPC channel for communication between an CIC blockchain node and the API server. The IPC interface is available by default.
Some aggregated and relationship data are kept off-chain in a mongoDB database. Especially the kind of data not easily accessible through basic node RPC interface. For example references between account and it's transaction history, or transaction position in time. The database is initialized by the API server, populated with historical data and kept in sync with the full node by internal subscriptions. You don't have to deal with extra database management, but you need to prepare well configured and reliable database connection address to the API server.