Web3 SDK Reference

Status: WIP — Early Draft

This document provides a comprehensive reference for interacting with Cortensor smart contracts using the ethers.js library. It covers session and task management, along with contract event listening for dApp integrations.


Setup

Required Dependencies

npm install ethers

Configuration

const SESSION_V2_ADDRESS = "0x...";        // SessionV2 contract address
const SESSION_QUEUE_V2_ADDRESS = "0x...";  // SessionQueueV2 contract address
const PUBLIC_RPC_URL = "https://...";      // RPC URL for the network

Required ABIs

  • SessionV2.json - ABI for the Session V2 contract

  • SessionQueueV2.json - ABI for the Session Queue V2 contract


Session Management

create

Creates a new session.


getSessions

Returns all sessions owned by a user address.


getSession

Returns details for a session by ID.


getSessionMiners

Returns ephemeral miners assigned to a session.


updateSession

Updates session configuration.


Task Management

submit

Submits a task to the session.


getTasksBySessionId

Returns all tasks for a session.


getTaskResults

Returns the results submitted by miners for a specific task.


Events

SessionV2 Contract Events

  • SessionCreated(uint256 sessionId, bytes32 sid, address owner, address[] miners)

  • SessionUpdated(uint256 indexed sessionId, address indexed updater, uint256 minNumOfNodes, uint256 maxNumOfNodes, uint256 redundant)

  • SessionDeactivated(uint256 indexed sessionId, address indexed deactivator)


SessionQueueV2 Contract Events

  • TaskQueued(uint256 sessionId, uint256 taskId, uint256 globalId, string taskData)

  • TaskAssigned(uint256 sessionId, uint256 taskId, address[] miners)

  • TaskEnded(uint256 sessionId, uint256 taskId, address[] miners)


Listening to Events


Notes

  • Use a secure provider (e.g. Alchemy, Infura)

  • Wrap contract calls in try/catch

  • Monitor for transaction failures

  • For production, use hardware wallets for signing


Error Handling


Session Modes

  • 0: Ephemeral — shared miner pool

  • 1: Hybrid — dedicated + ephemeral

  • 2: Dedicated — exclusively dedicated miners

Last updated