What are the goals of
Treat historical data as a first-class feature: This means having historical data functionality well-integrated into each part of the of the API. It also means optimizing the codebase with historical data workloads in mind.
Protocol-specific functionality: This means having built-in support for popular on-chain protocols.
Terminal-based block explorer: This means supporting as many block explorer tasks as possible from the terminal. And doing so in a way that is faster than can be done with a web browser.
Clean API emphasizing UX: With
ctcmost data queries can be obtained with a single function call. No need to instantiate objects. RPC inputs/outputs are automatically encoded/decoded by default.
Maximize data accessibility: Blockchains contain vast amounts of data, but accessing this data can require large amounts of time, effort, and expertise.
ctcaims to lower the barrier to entry on all fronts.
async is a natural fit for efficiently querying large amounts of data from an archive node. All
ctc functions that fetch external data use
async. For tips on using
async see this section in the docs. Future versions of
ctc will include some wrappers for synchronous code.
Do I need an archive node?
If you want to query historical data, you will need an archive node. You can either run one yourself or use a third-party provider such as Alchemy, Quicknode, or Moralis. You can also use
ctc to query current (non-historical) data using a non-archive node.
ctc useful for recent, non-historical data?
ctc has lots of functionality for querying the current state of the chain.