<p>Depending on the level of control you need for your application, I'd suggest to look at one of the followings:</p>
<ul>
<li><a href="https://github.com/Emurgo/cardano-serialization-lib" rel="noreferrer">https://github.com/Emurgo/cardano-serialization-lib</a></li>
<li><a href="https://github.com/blockfrost/blockfrost-js" rel="noreferrer">https://github.com/blockfrost/blockfrost-js</a></li>
<li><a href="https://ogmios.dev/typescript-client" rel="noreferrer">https://ogmios.dev/typescript-client</a></li>
</ul>
<p>Should you happen to write Haskell code:</p>
<ul>
<li><a href="https://input-output-hk.github.io/cardano-node/cardano-api/lib/Cardano-Api.html" rel="noreferrer">https://input-output-hk.github.io/cardano-node/cardano-api/lib/Cardano-Api.html</a></li>
</ul>
<p>Note that at this stage, there's no strict equivalent to something like Web3.js and any interaction with the Cardano blockchain will require either a local node or, some remote service ensuring the connection on your behalf.</p>

CC BY-SA 4.0
2021-08-23T16:49:10.627Z
2021-08-23T16:49:10.627Z
KtorZ
<p>I think the most obvious solution is <a href="https://github.com/input-output-hk/cardano-graphql" rel="noreferrer">Cardano-GraphQL</a>. For example, <a href="https://github.com/input-output-hk/cardano-graphql/blob/master/packages/api-cardano-db-hasura/src/example_queries/utxos/utxoSetForAddress.graphql" rel="noreferrer">this GraphQL query</a> can be used to call an address with a contract at the UTXO.</p>
<p>Unless you are looking for higher level yet, I believe you should track <a href="https://cardano.ideascale.com/a/dtd/Cardano-JS-API/350707-48088" rel="noreferrer">this proposal</a> or that was successfully funded in Fund5, which I myself happily voted for. Also, since you asked for Rust SDKs specifically, <a href="https://cardano.ideascale.com/a/dtd/352480-48088" rel="noreferrer">this proposal</a> was funded to update the <a href="https://github.com/Emurgo/cardano-serialization-lib" rel="noreferrer">Rust Serialization Library</a> from the guys at Emurgo to be compatible with the upcoming Alonzo hardfork.</p>
<p>Better yet, a quick glimpse of the <a href="https://drive.google.com/file/d/1h3-nZYZ0G66UXVd-JdIq_dpXSJAaVOZk/view" rel="noreferrer">successfully funded Fund5 proposals</a> shows pretty decisively that developer tooling (SDKs, APIs) absolutely dominated this funding round, which is exactly what we need right now to grow our ecosystem.</p>
<p>This should be enough to point you in the right direction.</p>

CC BY-SA 4.0
2021-08-14T05:55:15.463Z
2021-08-14T05:55:15.463Z
intrinsic-values
<p>(First post - sorry for the noob question!)</p>
<p>What are the best / standard high-level libraries for programmatically interacting with Cardano?
E.g., what would I use if I wanted to write a program to send ADA or call contracts?
Bonus points for Rust or Haskell libraries.</p>
<p>I see <a href="https://github.com/input-output-hk/adrestia" rel="noreferrer">Adrestia</a>, but none of the libraries listed there seem to be both reasonably high-level and full-featured.</p>
<p>Thanks!</p>

<wallet><sdk>
What are the best high-level libraries for interacting with Cardano programmatically?
# What are the best high-level libraries for interacting with Cardano programmatically?

(Asked by: username_0 on 2021-08-13)

(First post - sorry for the noob question!)

What are the best / standard high-level libraries for programmatically interacting with Cardano?
E.g., what would I use if I wanted to write a program to send ADA or call contracts?
Bonus points for Rust or Haskell libraries.

I see [Adrestia](https://github.com/input-output-hk/adrestia), but none of the libraries listed there seem to be both reasonably high-level and full-featured.

Thanks!

**Tags:** wallet, sdk

---

## 2 answers

### Answer by username_1 on 2021-08-23. Score: 5

Depending on the level of control you need for your application, I'd suggest to look at one of the followings:

* <https://github.com/Emurgo/cardano-serialization-lib>
* <https://github.com/blockfrost/blockfrost-js>
* <https://ogmios.dev/typescript-client>

Should you happen to write Haskell code:

* <https://input-output-hk.github.io/cardano-node/cardano-api/lib/Cardano-Api.html>

Note that at this stage, there's no strict equivalent to something like Web3.js and any interaction with the Cardano blockchain will require either a local node or, some remote service ensuring the connection on your behalf.


---

### Answer by username_2 on 2021-08-14. Score: 5

I think the most obvious solution is [Cardano-GraphQL](https://github.com/input-output-hk/cardano-graphql). For example, [this GraphQL query](https://github.com/input-output-hk/cardano-graphql/blob/master/packages/api-cardano-db-hasura/src/example_queries/utxos/utxoSetForAddress.graphql) can be used to call an address with a contract at the UTXO.

Unless you are looking for higher level yet, I believe you should track [this proposal](https://cardano.ideascale.com/a/dtd/Cardano-JS-API/350707-48088) or that was successfully funded in Fund5, which I myself happily voted for. Also, since you asked for Rust SDKs specifically, [this proposal](https://cardano.ideascale.com/a/dtd/352480-48088) was funded to update the [Rust Serialization Library](https://github.com/Emurgo/cardano-serialization-lib) from the guys at Emurgo to be compatible with the upcoming Alonzo hardfork.

Better yet, a quick glimpse of the [successfully funded Fund5 proposals](https://drive.google.com/file/d/1h3-nZYZ0G66UXVd-JdIq_dpXSJAaVOZk/view) shows pretty decisively that developer tooling (SDKs, APIs) absolutely dominated this funding round, which is exactly what we need right now to grow our ecosystem.

This should be enough to point you in the right direction.


---

