Skip to main content

REPL-only functions

The following functions are loaded automatically into the interactive REPL, or within script files with a .repl extension. They are not available for blockchain-based execution.

begin-tx

 string

name string  string

Begin transaction with optional NAME.

pact> (begin-tx "load module")
"Begin Tx 0: load module"
pact> (begin-tx "load module")
"Begin Tx 0: load module"

bench

exprs *  string

Benchmark execution of EXPRS.

(bench (+ 1 2))
(bench (+ 1 2))

commit-tx

 string

Commit transaction.

pact> (begin-tx) (commit-tx)
"Commit Tx 0"
pact> (begin-tx) (commit-tx)
"Commit Tx 0"

continue-pact

step integer  string

step integer rollback bool  string

step integer rollback bool pact-id string  string

step integer rollback bool pact-id string yielded object:<{y}>  string

Continue previously-initiated pact identified STEP, optionally specifying ROLLBACK (default is false), PACT-ID of the pact to be continued (defaults to the pact initiated in the current transaction, if one is present), and YIELDED value to be read with 'resume' (if not specified, uses yield in most recent pact exec, if any).

(continue-pact 1)
(continue-pact 1 true)
(continue-pact 1 false "[pact-id-hash]"))
(continue-pact 2 1 false "[pact-id-hash]" { "rate": 0.9 })
(continue-pact 1)
(continue-pact 1 true)
(continue-pact 1 false "[pact-id-hash]"))
(continue-pact 2 1 false "[pact-id-hash]" { "rate": 0.9 })

env-chain-data

new-data object:~{public-chain-data}  string

Update existing entries of 'chain-data' with NEW-DATA, replacing those items only.

pact> (env-chain-data { "chain-id": "TestNet00/2", "block-height": 20 })
"Updated public metadata"
pact> (env-chain-data { "chain-id": "TestNet00/2", "block-height": 20 })
"Updated public metadata"

env-data

json <a[integer,string,time,decimal,bool,[<l>],object:<{o}>,keyset]>  string

Set transaction JSON data, either as encoded string, or as pact types coerced to JSON.

pact> (env-data { "keyset": { "keys": ["my-key" "admin-key"], "pred": "keys-any" } })
"Setting transaction data"
pact> (env-data { "keyset": { "keys": ["my-key" "admin-key"], "pred": "keys-any" } })
"Setting transaction data"

env-dynref

iface module impl module{}  string

 string

Substitute module IMPL in any dynamic usages of IFACE in typechecking and analysis. With no arguments, remove all substitutions.

(env-dynref fungible-v2 coin)
(env-dynref fungible-v2 coin)

env-enable-repl-natives

enable bool  string

Control whether REPL native functions are allowed in module code. When enabled, fixture functions like 'env-sigs' are allowed in module code.

pact> (env-enable-repl-natives true)
"Repl natives enabled"
pact> (env-enable-repl-natives true)
"Repl natives enabled"

env-entity

 string

entity string  string

Set environment confidential ENTITY id, or unset with no argument.

(env-entity "my-org")
(env-entity)
(env-entity "my-org")
(env-entity)

env-events

clear bool  [object:*]

Retreive any accumulated events and optionally clear event state. Object returned has fields 'name' (fully-qualified event name), 'params' (event parameters), 'module-hash' (hash of emitting module).

(env-events true)
(env-events true)

env-exec-config

flags [string]  [string]

 [string]

Queries, or with arguments, sets execution config flags. Valid flags: ["AllowReadInLocal","DisableHistoryInTransactionalMode","DisableInlineMemCheck","DisableModuleInstall","DisableNewTrans","DisablePact40","DisablePact420","DisablePact43","DisablePact431","DisablePact44","DisablePact45","DisablePact46","DisablePact47","DisablePact48","DisablePactEvents","DisableRuntimeReturnTypeChecking","EnforceKeyFormats","OldReadOnlyBehavior","PreserveModuleIfacesBug","PreserveModuleNameBug","PreserveNsModuleInstallBug","PreserveShowDefs"]

pact> (env-exec-config ['DisableHistoryInTransactionalMode]) (env-exec-config)
["DisableHistoryInTransactionalMode"]
pact> (env-exec-config ['DisableHistoryInTransactionalMode]) (env-exec-config)
["DisableHistoryInTransactionalMode"]

env-gas

 integer

gas integer  string

Query gas state, or set it to GAS. Note that certain plaforms may charge additional gas that is not captured by the interpreter gas model, such as an overall transaction-size cost.

pact> (env-gasmodel "table") (env-gaslimit 10) (env-gas 0) (map (+ 1) [1 2 3]) (env-gas)
7
pact> (env-gasmodel "table") (env-gaslimit 10) (env-gas 0) (map (+ 1) [1 2 3]) (env-gas)
7

env-gaslimit

limit integer  string

Set environment gas limit to LIMIT.

env-gaslog

 string

Enable and obtain gas logging. Bracket around the code whose gas logs you want to inspect.

pact> (env-gasmodel "table") (env-gaslimit 10) (env-gaslog) (map (+ 1) [1 2 3]) (env-gaslog)
["TOTAL: 7" "map:GUnreduced:currTotalGas=4: 4" "+:GUnreduced:currTotalGas=5: 1" ":GIntegerOpCost:(1, ):(1, ):currTotalGas=5: 0" "+:GUnreduced:currTotalGas=6: 1" ":GIntegerOpCost:(1, ):(2, ):currTotalGas=6: 0" "+:GUnreduced:currTotalGas=7: 1" ":GIntegerOpCost:(1, ):(3, ):currTotalGas=7: 0"]
pact> (env-gasmodel "table") (env-gaslimit 10) (env-gaslog) (map (+ 1) [1 2 3]) (env-gaslog)
["TOTAL: 7" "map:GUnreduced:currTotalGas=4: 4" "+:GUnreduced:currTotalGas=5: 1" ":GIntegerOpCost:(1, ):(1, ):currTotalGas=5: 0" "+:GUnreduced:currTotalGas=6: 1" ":GIntegerOpCost:(1, ):(2, ):currTotalGas=6: 0" "+:GUnreduced:currTotalGas=7: 1" ":GIntegerOpCost:(1, ):(3, ):currTotalGas=7: 0"]

env-gasmodel

model string  string

 string

model string rate integer  string

Update or query current gas model. With just MODEL, "table" is supported; with MODEL and RATE, 'fixed' is supported. With no args, output current model.

pact> (env-gasmodel)
"Current gas model is 'fixed 0': constant rate gas model with fixed rate 0"
pact> (env-gasmodel 'table)
"Set gas model to table-based cost model"
pact> (env-gasmodel 'fixed 1)
"Set gas model to constant rate gas model with fixed rate 1"
pact> (env-gasmodel)
"Current gas model is 'fixed 0': constant rate gas model with fixed rate 0"
pact> (env-gasmodel 'table)
"Set gas model to table-based cost model"
pact> (env-gasmodel 'fixed 1)
"Set gas model to constant rate gas model with fixed rate 1"

env-gasprice

price decimal  string

Set environment gas price to PRICE.

env-gasrate

rate integer  string

Update gas model to charge constant RATE.

env-hash

hash string  string

Set current transaction hash. HASH must be an unpadded base64-url encoded BLAKE2b 256-bit hash.

pact> (env-hash (hash "hello"))
"Set tx hash to Mk3PAn3UowqTLEQfNlol6GsXPe-kuOWJSCU0cbgbcs8"
pact> (env-hash (hash "hello"))
"Set tx hash to Mk3PAn3UowqTLEQfNlol6GsXPe-kuOWJSCU0cbgbcs8"

env-keys

keys [string]  string

DEPRECATED in favor of 'env-sigs'. Set transaction signer KEYS. See 'env-sigs' for setting keys with associated capabilities.

pact> (env-keys ["my-key" "admin-key"])
"Setting transaction keys"
pact> (env-keys ["my-key" "admin-key"])
"Setting transaction keys"

env-namespace-policy

allow-root bool ns-policy-fun ns:string ns-admin:guard -> bool  string

Install a managed namespace policy specifying ALLOW-ROOT and NS-POLICY-FUN.

(env-namespace-policy (my-ns-policy-fun))
(env-namespace-policy (my-ns-policy-fun))

env-sigs

sigs [object:*]  string

Set transaction signature keys and capabilities. SIGS is a list of objects with "key" specifying the signer key, and "caps" specifying a list of associated capabilities.

(env-sigs [{'key: "my-key", 'caps: [(accounts.USER_GUARD "my-account")]}, {'key: "admin-key", 'caps: []}
(env-sigs [{'key: "my-key", 'caps: [(accounts.USER_GUARD "my-account")]}, {'key: "admin-key", 'caps: []}

env-simulate-onchain

on-chain bool  string

Set a flag to simulate on-chain behavior that differs from the repl, in particular for observing things like errors and stack traces.

(env-simulate-onchain true)
(env-simulate-onchain true)

expect

doc string expected <a> actual <a>  string

Evaluate ACTUAL and verify that it equals EXPECTED.

pact> (expect "Sanity prevails." 4 (+ 2 2))
"Expect: success: Sanity prevails."
pact> (expect "Sanity prevails." 4 (+ 2 2))
"Expect: success: Sanity prevails."

expect-failure

doc string exp <a>  string

doc string err string exp <a>  string

Evaluate EXP and succeed only if it throws an error.

pact> (expect-failure "Enforce fails on false" (enforce false "Expected error"))
"Expect failure: success: Enforce fails on false"
pact> (expect-failure "Enforce fails with message" "Expected error" (enforce false "Expected error"))
"Expect failure: success: Enforce fails with message"
pact> (expect-failure "Enforce fails on false" (enforce false "Expected error"))
"Expect failure: success: Enforce fails on false"
pact> (expect-failure "Enforce fails with message" "Expected error" (enforce false "Expected error"))
"Expect failure: success: Enforce fails with message"

expect-that

doc string pred value:<a> -> bool exp <a>  string

Evaluate EXP and succeed if value passes predicate PRED.

pact> (expect-that "addition" (< 2) (+ 1 2))
"Expect-that: success: addition"
pact> (expect-that "addition" (> 2) (+ 1 2))
"FAILURE: addition: did not satisfy (> 2) : 3:integer"
pact> (expect-that "addition" (< 2) (+ 1 2))
"Expect-that: success: addition"
pact> (expect-that "addition" (> 2) (+ 1 2))
"FAILURE: addition: did not satisfy (> 2) : 3:integer"

format-address

scheme string public-key string  string

Transform PUBLIC-KEY into an address (i.e. a Pact Runtime Public Key) depending on its SCHEME.

load

file string  string

file string reset bool  string

Load and evaluate FILE, resetting repl state beforehand if optional RESET is true.

(load "accounts.repl")
(load "accounts.repl")

mock-spv

type string payload object:* output object:*  string

Mock a successful call to 'spv-verify' with TYPE and PAYLOAD to return OUTPUT.

(mock-spv "TXOUT" { 'proof: "a54f54de54c54d89e7f" } { 'amount: 10.0, 'account: "Dave", 'chainId: "1" })
(mock-spv "TXOUT" { 'proof: "a54f54de54c54d89e7f" } { 'amount: 10.0, 'account: "Dave", 'chainId: "1" })

pact-state

 object:*

clear bool  object:*

Inspect state from most recent pact execution. Returns object with fields 'pactId': pact ID; 'yield': yield result or 'false' if none; 'step': executed step; 'executed': indicates if step was skipped because entity did not match. With CLEAR argument, erases pact from repl state.

(pact-state)
(pact-state true)
(pact-state)
(pact-state true)

print

value <a>  string

Output VALUE to terminal as unquoted, unescaped text.

rollback-tx

 string

Rollback transaction.

pact> (begin-tx "Third Act") (rollback-tx)
"Rollback Tx 0: Third Act"
pact> (begin-tx "Third Act") (rollback-tx)
"Rollback Tx 0: Third Act"

sig-keyset

 keyset

Convenience function to build a keyset from keys present in message signatures, using 'keys-all' as the predicate.

test-capability

capability  -> bool  string

Acquire (if unmanaged) or install (if managed) CAPABILITY. CAPABILITY and any composed capabilities are in scope for the rest of the transaction.

(test-capability (MY-CAP))
(test-capability (MY-CAP))

typecheck

module string  string

module string debug bool  string

Typecheck MODULE, optionally enabling DEBUG output.

verify

module string debug bool  string

Verify MODULE, checking that all properties hold. Optionally, if DEBUG is set to true, write debug output to "pact-verify-MODULE" directory.

(verify "module")
(verify "module" true)
(verify "module")
(verify "module" true)

with-applied-env

exec <a>  <a>

Evaluate EXEC with any pending environment changes applied. Normally, environment changes must execute at top-level for the change to take effect. This allows scoped application of non-toplevel environment changes.

pact> (let ((a 1)) (env-data { 'b: 1 }) (with-applied-env (+ a (read-integer 'b))))
2
pact> (let ((a 1)) (env-data { 'b: 1 }) (with-applied-env (+ a (read-integer 'b))))
2

Receive important developer updates