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

7 Likes

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

1 Like

hey, more than a year later, has there been any improvements regarding this? are there any node APIs we can use?

Marginally.

Currently their are a few third party tools which partially address the development cycle. The most popular of these is blockfrost.io which hosts a centralized solution to cardano network communication as well as some SDK language bindings to be able to integrate with your preferred development stack.

Some community projects such as the Nami wallet use the block frost API under the covers to provide convenience for project development with the goal of providing a dapp connector interface like you can find on more developer friendly blockchains. They currently do this by wrapping the blockfrost API with JavaScript based web extension that injects an object into the browser context.

The only functional dapp mainnet that I know of is arguably the SundaeSwap dex which integrates with Nami and ccvault wallets currently for the user experience offered by the above.

This is a far cry from Blockchain as a Service solution pined for in the OP but this space is very much prototyping and experimentation still. Keep in mind it took over 40 years before the internet got to where it is today. We are not even halfway to global adoption of actually useful blockchain technology yet.

If history is repeating then:

BTC = usenet era (AOL)
ETH = internet era (.COM)
ADA, DOT, SOL, etc = R&D era (Yahoo → Google, MySpace → Facebook, eBay → Amazon, etc)
??? = global adoption era (Mobile, Cloud, etc)

Ive sensed a vitality in having a UI in Daedalus making non programmatic cues viable, all kinds of convoluted ‘value’-managament can be done there visually, besides dropping some load from hte comms with cardano cli, isnt so,
could - not be sso hard, may be convoluted I see. option stacks and such.

Where’s program development standing and can I monitor wallets privately yet, for example doing community analyses for a community on the secured infochain ; a’way