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;
}
}
Updated about 1 month ago