aiken/examples/hello_world/common.ts

55 lines
1.3 KiB
TypeScript

import fs from "node:fs";
import {
BlockfrostProvider,
MeshTxBuilder,
MeshWallet,
serializePlutusScript,
UTxO,
} from "@meshsdk/core";
import { applyParamsToScript } from "@meshsdk/core-csl";
import blueprint from "./plutus.json";
const blockchainProvider = new BlockfrostProvider(process.env.BLOCKFROST_PROJECT_ID!);
// wallet for signing transactions
export const wallet = new MeshWallet({
networkId: 0,
fetcher: blockchainProvider,
submitter: blockchainProvider,
key: {
type: "root",
bech32: fs.readFileSync("me.sk").toString(),
},
});
export function getScript() {
const scriptCbor = applyParamsToScript(
blueprint.validators[0].compiledCode,
[]
);
const scriptAddr = serializePlutusScript(
{ code: scriptCbor, version: "V3" },
).address;
return { scriptCbor, scriptAddr };
}
// reusable function to get a transaction builder
export function getTxBuilder() {
return new MeshTxBuilder({
fetcher: blockchainProvider,
submitter: blockchainProvider,
});
}
// reusable function to get a UTxO by transaction hash
export async function getUtxoByTxHash(txHash: string): Promise<UTxO> {
const utxos = await blockchainProvider.fetchUTxOs(txHash);
if (utxos.length === 0) {
throw new Error("UTxO not found");
}
return utxos[0];
}