Skip to main content
import * as ContractSignature from 'voltaire-effect/ContractSignature'
import { Effect } from 'effect'

// EIP-1271 magic value for valid signatures
console.log(ContractSignature.ERC1271_MAGIC_VALUE) // 0x1626ba7e

// Verify signature from contract call result
const isValid = Effect.runSync(
  ContractSignature.isValidSignature(hash, signature, signer, returnData)
)
// true if returnData starts with 0x1626ba7e

Schema

import * as Schema from 'effect/Schema'

const input = Schema.decodeSync(ContractSignature.ContractSignatureInputSchema)({
  hash: messageHash,           // Uint8Array - 32 bytes
  signature: sigBytes,         // Uint8Array - signature
  expectedSigner: contractAddr, // Uint8Array - 20 bytes
  returnData: callResult       // Uint8Array - from isValidSignature call
})

API

ConstantValue
ERC1271_MAGIC_VALUE0x1626ba7e
MAGIC_VALUEalias
FunctionType
isValidSignature(hash, sig, signer, returnData) => Effect<boolean>