ErgoScript Compiler#
The ErgoScript Compiler is a Command Line Interface (CLI) tool designed to compile ErgoScript code into an Ergo address.
User Guide#
Setup and Compilation#
-
If you're starting from source, compile the ErgoScript compiler using these steps: - Clone the repository by executing
git clone https://github.com/scalahub/ErgoScriptCompiler.git. - Make sure SBT is installed and correctly set up in your path. - Use the commandsbt assemblyin the project root folder to compile the JAR file.Upon successful compilation, a JAR file is generated in the following path: `target/scala-2.12/ErgoScriptCompiler-assembly-0.1.jar`. In the steps below, `<jarFile>` refers to this JAR. If you're using the precompiled JAR, proceed directly to the next step. -
Compiling ErgoScript code involves the following steps: - Save your ErgoScript code in a text file, for example,
myScript.es. You can choose any file extension. - If your code references any symbols (constants), save them in a separate file, for instance,mySymbols.json. Refer to the section below on how to write this file. - This symbols file is optional and is only required if your code references any symbols. - Use the commandjava -cp <jarFile> Compile <ergoScriptFile> <optionalSymbolsFile>to compile the file. For example: -java -cp ErgoScriptCompiler.jar Compile myScript.es mySymbols.json-java -cp ErgoScriptCompiler.jar Compile myScript.es
Refer to the example below for a sample output.
Integration in Your Project#
To use ErgoScript Compiler in your project, add the following to your build.sbt:
libraryDependencies += "io.github.ergoplatform" %% "ergoscriptcompiler" % "1.0"
Then call: util.Compiler.compile(ergoScriptFile: String, symbolsFile: Option[String])
Examples and Outputs#
The src/test/resources directory contains sample ErgoScript and symbol files. Here's an example execution:
java -cp \
target/scala-2.12/ErgoScriptCompiler-assembly-0.1.jar \
Compile \
src/test/resources/AgeUSD.es \
src/test/resources/AgeUSD_symbols.json
The output includes:
- The ErgoTree corresponding to the Script, serialized and hex-encoded.
- The Blake2b256 hash of the ErgoTree, hex-encoded.
- The address corresponding to the ErgoTree.
Symbol File Format#
If your ErgoScript code references token IDs or script hashes, encode such values in a "symbols" file as follows (any file extension is permissible):
{
"symbols":[
{
"name":"poolTokenId",
"type":"CollByte",
"value":"0fb1eca4646950743bc5a8c341c16871a0ad9b4077e3b276bf93855d51a042d1"
},
{
"name":"epochPrepScriptHash",
"type":"CollByte",
"value":"d998e06e0c093b0990fa3da4f3bea4364546803551ea9cac02623e9675ba4522"
},
{
"name":"buffer",
"type":"Int",
"value":"4"
}
]
}
Generating Payment Requests#
Apart from compiling ErgoScript, this tool can generate a "payment request". It replaces register values from human-understandable forms to serialized-hex needed by the Ergo client's REST API. For instance, to store the integer 1, you would provide the register value as 0402.
The command to generate payment requests is: java -cp <jarFile> Payment <humanRequest.json> <symbolsFile.json>