NEXUS

Signature

Supports message signing, EIP712 signature, and provider-level requests.

Sign Message

Function to generate a signature for a plain message.

// React Example
import { useAppKitAccount, ConnectionController } from '@to-nexus/sdk/react'

function signMessage() {
  const account = useAppKitAccount()
  if (!account?.isConnected) return

  ConnectionController.signMessage({ 
    message: `Hello, world! ${Date.now()}`
  })
}
// Vanilla JS Example
import { ConnectionController } from '@to-nexus/sdk';

const signedMessage = await ConnectionController.signMessage({
  message: `Hello, world! ${Date.now()}`,
  customData: {
    metadata: 'This is metadata for signed message'
  }
});

Sign EIP712

Function to generate a signature following the EIP-712 standard.

// React Example
import { useAppKitAccount, ConnectionController, AccountController } from '@to-nexus/sdk/react'

function signEIP712() {
  const account = useAppKitAccount()
  if (!account?.isConnected) return

  const PERMIT_CONTRACT_ADDRESS = '0xC95DEdAD3950A81B8AEF6fa4D28211bA37B4Ae21'
  const FROM_ADDRESS = AccountController.state.address as `0x${string}`
  const PERMIT_SPENDER_ADDRESS = '0x920A31f0E48739C3FbB790D992b0690f7F5C42ea'
  const PERMIT_VALUE = 1000000000000000000n

  ConnectionController.signEIP712({
    contractAddress: PERMIT_CONTRACT_ADDRESS,
    fromAddress: FROM_ADDRESS,
    spenderAddress: PERMIT_SPENDER_ADDRESS,
    value: PERMIT_VALUE,
    abi: PERMIT_ABI
  })
}
// Vanilla JS Example
import { ConnectionController } from '@to-nexus/sdk';

const PERMIT_CONTRACT_ADDRESS = '0x7aa0c7864455cf7a967409c158ae4cd41a2c5585';
const PERMIT_SPENDER_ADDRESS = '0xC87D72172cd8839DdB26a7478025883af783571e';
const PERMIT_VALUE = 1000000000000000000n;
const FROM_ADDRESS = /* your address */;
const sampleEIP712 = /* ... ABI ... */;

const resSignedEIP712 = await ConnectionController.signEIP712({
  contractAddress: PERMIT_CONTRACT_ADDRESS,
  fromAddress: FROM_ADDRESS,
  spenderAddress: PERMIT_SPENDER_ADDRESS,
  value: PERMIT_VALUE,
  abi: sampleEIP712,
  customData: {
    metadata: 'This is metadata for signed EIP712'
  }
});

Verify Signature

Functionality to verify a signed message.

// React Example
import { ConnectionController } from '@to-nexus/sdk/react'

function verifyMessage(message: string, signature: string, address: string) {
  return ConnectionController.verifyMessage({
    message,
    signature,
    address
  })
}
// Vanilla JS Example
import { ConnectionController } from '@to-nexus/sdk';

const isValid = await ConnectionController.verifyMessage({
  message,
  signature,
  address
});

Provider Request

Function to send direct requests to the wallet provider.

// React Example
import { useAppKitAccount, useAppKitProvider } from '@to-nexus/sdk/react'

function providerRequest() {
  const account = useAppKitAccount()
  const { walletProvider } = useAppKitProvider<UniversalProvider>('eip155')
  
  async function requestNetworkInfo() {
    if (!account?.isConnected) return

    const [chainId, blockNumber, gasPrice] = await Promise.all([
      walletProvider?.request({ method: 'eth_chainId' }),
      walletProvider?.request({ method: 'eth_blockNumber' }),
      walletProvider?.request({ method: 'eth_gasPrice' })
    ])

    return {
      chainId,
      blockNumber,
      gasPrice
    }
  }

  return requestNetworkInfo()
}
// Vanilla JS Example
// Assume eip155Provider is set up via crossSdk.subscribeProviders
const accountState = /* AccountController.state or similar */;
const eip155Provider = /* from crossSdk.subscribeProviders */;

if (accountState.isConnected && eip155Provider) {
  const [chainId, blockNumber, gasPrice] = await Promise.all([
    eip155Provider.request({ method: 'eth_chainId' }),
    eip155Provider.request({ method: 'eth_blockNumber' }),
    eip155Provider.request({ method: 'eth_gasPrice' })
  ]);
  console.log({ chainId, blockNumber, gasPrice });
}

Cancel Signature

Functionality to cancel a pending signature request.

// React Example
import { ConnectionController } from '@to-nexus/sdk/react'

function cancelSignature() {
  let signatureRequest: any = null
  
  async function sign() {
    signatureRequest = await ConnectionController.signMessage({
      message: 'Hello, world!'
    })
  }

  async function cancel() {
    if (signatureRequest) {
      await signatureRequest.cancel()
      signatureRequest = null
    }
  }

  return {
    sign,
    cancel
  }
}
// Vanilla JS Example
import { ConnectionController } from '@to-nexus/sdk';

let signatureRequest = null;

async function sign() {
  signatureRequest = await ConnectionController.signMessage({
    message: 'Hello, world!'
  });
}

async function cancel() {
  if (signatureRequest) {
    await signatureRequest.cancel();
    signatureRequest = null;
  }
}

© 2025 NEXUS Co., Ltd. All Rights Reserved.