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@vasil
For JavaScript and TypeScript
import { Lucid } from "https://deno.land/x/lucid@0.5.0/mod.ts";
<script type="module">
import { Lucid } from "https://unpkg.com/lucid-cardano@0.5.0/web/mod.js"
// ...
</script>
Build NPM and Web target
deno task build
Outputs a dist
folder
See sample-ada-transfer for end-to-end browser integration usage.
import { Blockfrost, Lucid } from "lucid-cardano"; // NPM
// import { Blockfrost, Lucid } from "https://deno.land/x/lucid@0.5.0/mod.ts"; Deno
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).
Link: https://github.com/Berry-Pool/cardano-multiplatform-lib/tree/vasil
Branch: vasil
Commit hash: 9891966de6cbd82ff509c80e6440586af64a2278