Compiling Helios sources
The recommended way to compile Helios sources is to use the library directly. This approach makes it easier to maintain a single-source-of-truth version of your contract in client-side dApps.
First step is to write your contract as a js literal string. For example:
const src = `
spending always_succeeds
func main(_, _, _) -> Bool {
true
}`
Then you can create a Helios Program
instance:
// at top of js file
import * as helios from "helios"
...
const program = helios.Program.new(src)
The Program
instantiation will perform syntax and type checking, but won't actually do the compilation into the on-chain format. For that you need to call the compile
method first:
const simplify = true
const myUplcProgram = program.compile(simplify)
Note: If
simplify
istrue
the resulting program is optimized for production. Ifsimplify
isfalse
no optimizations are performed and
Here myUplcProgram
is an instance of UplcProgram
(uplc stands for Untyped PLutus Core). A UplcProgram
instance has methods for running, profiling, hashing, and serializing the contained Plutus-Core program.
Now you can serialize the UplcProgram
into a JSON string that can be used by cardano-cli:
console.log(myUplcProgram.serialize())
// prints '{"type": PlutusScriptV2, "description": "", "cborHex": ...}'
When building transactions with Helios the UplcProgram
instance is used directly when attaching scripts.