Full Node API - CIP?

Cardano aims to reach a global community of delevopers and companies, who all have their own preferences of a development stack. JavaScript, Python and Java being among the most popular programming languages [1]. A language-neutral and well documented interface to the Cardano blockchain is vital for achieving this goal.

While there is some talk about implementing a full node in Rust [2], the only full node implementation at the moment of writing is cardano-node by IOG. All interfaces to the cardano-node and hence, the Cardano blockchain, are set in stone by engineering choices of IOG. In case of the cardano-node, a low-level, language-dependent IPC is provided over a socket (please correct me, if misconception). The current choice is introducing a tight-coupling between the full node and applications building upon it in my opinion. Moreover, it introduces a high barrier of entry for developers that want to build software outside of the IOG ecosystem. Blockchain as a Service (BaaS) solutions such as Infura [3] are also hard to realize without a consensus on what protocols and methods to use for accessing the Cardano blockchain. However, BaaS solutions would allow for rapid prototyping, which is important for getting community developers involved.

A question frequently asked in the developer channel on Telegram is how to interact with the cardano-node in Python (especially how can I build and send a payment transaction). At the moment of writing, a developer would be forced to call thecardano-cli executable to communicate with the cardano-node or use the heavy-weight db-sync + rest application from IOG (please correct me, if misconception).

Bitcoin Core as well as Ethereum 1.0 specified a JSON-RPC API [4][5] for their nodes. Changes to the specification such as β€œnew method xyz needs to be added to API” are discussed over improvement proposals. As long as different node implementations of Bitcoin and Ethereum 1.0 are adhering to the specification of the corresponding API, they can interchangeably be used in wallets, smart contract suites, etc.

I would like to discuss this topic in this forum, what do you think about the construction of a well-defined, language-neutral API for full nodes of the Cardano blockchain?

A specification needs collaborative input from the community and IOG. Additionally, the API needs to be clearly communicated and documented for the developer community (see Ethereum [5]).

– Kevin


I fully agree that we need better tools for developers. Thank you for raising this topic, Kevin. :handshake: