greenweb.util.sexp#
fromHex#
Converts a hex string (bytes) to a SExp object.
console.log(greenweb.util.sexp.fromHex('ff8080'));
// Object { Dt: null, "$t": (2) […] }
toHex#
Converts a SExp object to a hex string.
const {SExp, OPERATOR_LOOKUP, KEYWORD_TO_ATOM, h, t, run_program} = greenweb.clvm;
const plus = h(KEYWORD_TO_ATOM["+"]);
const q = h(KEYWORD_TO_ATOM["q"]);
const program = SExp.to([plus, 1, t(q, 175)]);
console.log(greenweb.util.sexp.toHex(program));
// ff10ff01ffff018200af80
run#
Runs a program (puzzle) with the given solution. Third argument is optional and represents the maximum cost - if this cost is exceeded, the function will throw an error. Returns the output (SExp).
const {SExp, OPERATOR_LOOKUP, KEYWORD_TO_ATOM, h, t, run_program} = greenweb.clvm;
const plus = h(KEYWORD_TO_ATOM["+"]);
const q = h(KEYWORD_TO_ATOM["q"]);
const program = SExp.to([plus, 1, t(q, 175)]);
const solution = SExp.to(25);
console.log(greenweb.util.sexp.run(program, solution).as_int());
// 200
runWithCost#
Runs a program (puzzle) with the given solution. Third argument is optional and represents the maximum cost - if this cost is exceeded, the function will throw an error. Returns a tuple that contains the output (SExp) and the cost of running the program (number).
const {SExp, OPERATOR_LOOKUP, KEYWORD_TO_ATOM, h, t, run_program} = greenweb.clvm;
const plus = h(KEYWORD_TO_ATOM["+"]);
const q = h(KEYWORD_TO_ATOM["q"]);
const program = SExp.to([plus, 1, t(q, 175)]);
const solution = SExp.to(25);
const [output, cost] = greenweb.util.sexp.runWithCost(program, solution);
console.log(output.as_int());
// 200
console.log(cost);
// 833
sha256tree#
Returns the SHA256 treehash of a given puzzle.
const {SExp, OPERATOR_LOOKUP, KEYWORD_TO_ATOM, h, t, run_program} = greenweb.clvm;
const plus = h(KEYWORD_TO_ATOM["+"]);
const q = h(KEYWORD_TO_ATOM["q"]);
const program = SExp.to([plus, 1, t(q, 175)]);
console.log(greenweb.util.sexp.sha256tree(program));
conditionsDictForSolution#
TypeScript/JavaScript port of this function.
conditionsForSolution#
TypeScript/JavaScript port of this function.
parseSExpToConditions#
TypeScript/JavaScript port of this function.
parseSExpToCondition#
TypeScript/JavaScript port of this function.
asAtomList#
TypeScript/JavaScript port of this function.
conditionsByOpcode#
TypeScript/JavaScript port of this function.
pkmPairsForConditionsDict#
TypeScript/JavaScript port of this function.
curry#
Curries a list of parameters into a given program.
public curry(program: SExp, args: SExp[]): SExp {
uncurry#
Given a curried program, returns the original module and the arguments that were curried in. If the input is invalid, returns null.
public uncurry(program: SExp): [SExp, SExp[]] | null {
calculateSyntheticPublicKey#
A wrapper for CALCULATE_SYNTHETIC_PUBLIC_KEY_PROGRAM.
public calculateSyntheticPublicKey(publicKey: any, hiddenPuzzleHash = this.DEFAULT_HIDDEN_PUZZLE_HASH): any {
standardCoinPuzzle#
A wrapper for P2_DELEGATED_PUZZLE_OR_HIDDEN_PUZZLE_PROGRAM_MOD.
public standardCoinPuzzle(key: any, isSyntheticKey: boolean = false): SExp {
standardCoinSolution#
Returns a valid standard coin solution (SExp) derived from the given list of conditions.
public standardCoinSolution(conditions: SExp[]): SExp {
CATPuzzle#
A wrapper for CAT_PROGRAM_MOD.
public CATPuzzle(TAILProgramHash: bytes, innerPuzzle: SExp): SExp {
CATSolution#
Returns a valid solution (SExp) for the CAT puzzle.
public CATSolution(
innerPuzzleSolution: SExp,
lineageProof: SExp | null,
prevCoinId: bytes,
thisCoinInfo: Coin,
nextCoinProof: Coin,
prevSubtotal: BigNumberish,
extraDelta: BigNumberish
): SExp {
genesisByCoinIdTAIL#
A wrapper for GENESIS_BY_COIN_ID_TAIL_MOD.
public genesisByCoinIdTAIL(genesisId: bytes): SExp {
genesisByPuzzleHashTAIL#
A wrapper for GENESIS_BY_PUZZLE_HASH_TAIL_MOD.
public genesisByPuzzleHashTAIL(puzzleHash: bytes): SExp {
everythingWithSignatureTAIL#
A wrapper for EVERYTHING_WITH_SIGNATURE_TAIL_MOD.
public everythingWithSignatureTAIL(pubKey: bytes): SExp {
delegatedTAIL#
A wrapper for DELEGATED_TAIL_MOD.
public delegatedTAIL(pubKey: bytes): SExp {
Programs#
This class also exposes the following 'standard' programs as SExp objects:
SHA256TREE_MODULE_PROGRAMCURRY_PROGRAMP2_DELEGATED_PUZZLE_OR_HIDDEN_PUZZLE_PROGRAM_MODP2_CONDITIONS_PROGRAMDEFAULT_HIDDEN_PUZZLE_PROGRAMCALCULATE_SYNTHETIC_PUBLIC_KEY_PROGRAMCAT_PROGRAM_MODCAT_PROGRAM_MOD_HASHGENESIS_BY_COIN_ID_TAIL_MODGENESIS_BY_PUZZLE_HASH_TAIL_MODEVERYTHING_WITH_SIGNATURE_TAIL_MODDELEGATED_TAIL_MOD