Dynamic Js Execution

This Dynamic Oracle implementation allows your smart contract to execute a predefined JavaScript function on the Truebit network, providing off-chain computation with on-chain guarantees.

1. Inherit From BaseTBContract

Import BaseTBContract.sol contract and extend from it.

2. Constructor

When deploying the contract, ensure you set the correct values for watchTowerAddress, sourceCode within your contract:

  • watchTowerAddress: 0xEcd0EeD24Ed6a54d05a07125c4ccb809b3A09868

  • Ethereum Mainnet Address: 0x48C101d60F6f8a9589fa74e10da62460219B53e6

  • sourceCode: "Place your JS code here inside quotes"

3. Submitting a Request

In your contract, to execute JS code on Truebit, call the _requestExecution function. This will trigger the task execution on the Truebit platform.

To call the _requestExecution , you must:

  1. Define the method signature string

  2. Encode all parameters using abi.encode

  3. Specify the execution type as: DOTypes.ExecutionType.EMBEDDED_FUNCTION

Method Signature

The method signature must follow a strict format. It begins with the method name (in this case, "function"), followed by parentheses containing the parameter definitions, separated by commas.

Example:

Filling The Payload

Once the method signature is defined, you must fill the payload with the values for the parameter defined on the signature, and encode it using abi.encode(...).

Call _requestExecution

Finally, you call _requestExecution() with:

  • The method signature (string)

  • The encoded payload (bytes)

  • The execution type: DOTypes.ExecutionType.EMBEDDED_FUNCTION

4. Handling The Callback

When the execution is finished, your will receive the result within the callbackTask.

  • resultData: The encoded result data from the execution

  • transcripts: Array of execution transcripts for verification

  • wtExecutionId: The execution identifier

  • status: Execution status (0 = success, >0 = error)

  • callbackMessageDetails: Additional details about the execution

Last updated

Was this helpful?