unver
v0.0.2
Published
Universal Signature Verification for Ethers
Downloads
16
Readme
unver
Universal Signature Verification for ethers.js, with support for:
- Externally Owned Accounts
- Contract Accounts via ERC-1271
- Predeployed Contract Accounts via ERC-6492
- Predelegated Contract Accounts via ERC-8010
Table of Contents
Usage
import * as ethers from 'ethers'
import { UnverProvider } from 'unver'
const provider = UnverProvider.wrap(
new ethers.JsonRpcProvider('https://eth.merkle.io')
)
const address = '0x...'
const digest = '0x...'
const signature = '0x...'
const valid = await provider.verifyHash(address, digest, signature)API Reference
UnverProvider.wrap
Wraps an ethers.AbstractProvider with the UnverProvider interface.
const provider = UnverProvider.wrap(
new ethers.JsonRpcProvider('https://eth.merkle.io')
)Interface
declare function wrap(provider: ethers.AbstractProvider):
Provider<ethers.AbstractProvider & UnverProvider> Signature.verifyHash
Verifies a signature for a given address and digest.
const address = '0x...'
const digest = '0x...'
const signature = '0x...'
// Provider usage
const valid = await provider.verifyHash(address, digest, signature)
// Function usage
import { Signature } from 'unver'
const valid = await Signature.verifyHash(provider, address, digest, signature)Interface
declare function verifyHash(
provider: ethers.AbstractProvider,
address: string,
digest: Uint8Array | string,
signature: ethers.SignatureLike,
): Promise<boolean>Signature.verifyMessage
Verifies a signature for a given address and message.
const address = '0x...'
const message = 'hello world'
const signature = '0x...'
// Provider usage
const valid = await provider.verifyMessage(address, message, signature)
// Function usage
import { Signature } from 'unver'
const valid = await Signature.verifyMessage(provider, address, message, signature)Interface
declare function verifyMessage(
provider: ethers.AbstractProvider,
address: string,
message: Uint8Array | string,
signature: ethers.SignatureLike,
): Promise<boolean>Signature.verifyTypedData
Verifies a signature for a given address and typedData.
const address = '0x...'
const domain = {
name: 'My App',
version: '1.0.0',
chainId: 1,
verifyingContract: '0x...'
}
const types = {
Person: [
{ name: 'name', type: 'string' },
{ name: 'age', type: 'uint256' },
],
}
const value = {
name: 'John Doe',
age: 20,
}
const signature = '0x...'
// Provider usage
const valid = await provider.verifyTypedData(address, domain, types, value, signature)
// Function usage
import { Signature } from 'unver'
const valid = await Signature.verifyTypedData(provider, address, domain, types, value, signature)Interface
declare function verifyTypedData(
provider: ethers.AbstractProvider,
address: string,
domain: ethers.TypedDataDomain,
types: Record<string, Array<ethers.TypedDataField>>,
value: Record<string, unknown>,
signature: ethers.SignatureLike,
): Promise<boolean>Development
bun install # Install dependencies
bun test # Run testsCommunity
Check out the following places for more content:
