Lucid is a library, which allows you to create Cardano transactions and off-chain code for your Plutus contracts in JavaScript, Deno and Node.js.
npm install lucid-cardano
For JavaScript and TypeScript
import { Lucid } from "https://deno.land/x/lucid@0.7.0/mod.ts";
<script type="module">
import { Lucid } from "https://unpkg.com/lucid-cardano@0.7.0/web/mod.js"
// ...
</script>
Build NPM and Web target
deno task build
Outputs a dist
folder
// import { Blockfrost, Lucid } from "https://deno.land/x/lucid@0.7.0/mod.ts"; Deno
import { Blockfrost, Lucid } from "lucid-cardano"; // NPM
const lucid = await Lucid.new(
new Blockfrost("https://cardano-testnet.blockfrost.io/api/v0", "<projectId>"),
"Testnet",
);
// Assumes you are in a browser environment
const api = await window.cardano.nami.enable();
lucid.selectWallet(api);
const tx = await lucid.newTx()
.payToAddress("addr...", { lovelace: 5000000n })
.complete();
const signedTx = await tx.sign().complete();
const txHash = await signedTx.submit();
console.log(txHash);
deno task test
You can generate documentation with:
deno doc
Lucid is an ES Module, so to run it in the browser any bundler which allows for
top level await and WebAssembly is recommended. If you use Webpack 5 enable in
the webpack.config.js
:
experiments: {
asyncWebAssembly: true,
topLevelAwait: true,
layers: true // optional, with some bundlers/frameworks it doesn't work without
}
To run the library in Node.js you need to set {"type" : "module"}
in your
project's package.json
. Otherwise you will get import issues.
This library is built on top of a customized version of the serialization-lib (cardano-multiplatform-lib) and on top of the message-signing library.
Link: https://github.com/Berry-Pool/cardano-multiplatform-lib/tree/vasil
Branch: vasil
Commit hash: 5f0654fba9d984fc391e53feae5628f7a9d3cc10
Link: https://github.com/Emurgo/message-signing
Branch: master
Commit hash: 16dcadc69557dd7c20e62a966aaded1e051c287e
Contributions and PRs are welcome!
The contribution instructions.
Join us on Discord!