0.2.5 • Published 7 months ago
joyid-evm-test v0.2.5
@joyid/evm
Installation
npm i @joyid/evm
Usage
Config
Config your app name and logo, and the network you want to connect to.
import { initConfig } from '@joyid/evm'
// in your app entry file
initConfig({
// your app name
name: 'EVM demo',
// your app logo,
logo: 'https://fav.farm/🆔',
// optional, config for the network you want to connect to
network: {
chainId: 1,
name: 'Ethereum Mainnet',
},
// optional
rpcURL: 'https://cloudflare-eth.com'
})
connect(config?: Config): Promise<string>
Connect to JoyID wallet and return a address.
import { connect } from '@joyid/evm'
async function connectOnClick() {
const address = await connect()
console.log(`Connected with address ${address}`)
}
signMessage(message: string | Uint8Array, signerAddress: string): Promise<string>
Signers an EIP-191 prefixed personal message. If the message is a string, it is signed as UTF-8 encoded bytes. It is not interpretted as a BytesLike; so the string "0x1234" is signed as six characters, not two bytes.
To sign that example as two bytes, the Uint8Array should be used (i.e. new Uint8Array([ 0x12, 0x34 ])
).
import { signMessage } from '@joyid/evm'
async function signMessageOnClick() {
const signature = await signMessage('Hello, world!', '<your connected address>')
console.log(`Signature: ${signature}`)
}
signTransaction(tx: Transaction, signerAddress?: string): Promise<string>
Signs tx
, returning the fully signed serialized transaction.
import { signTransaction } from '@joyid/evm'
async function signTransactionOnClick(tx) {
const signedTx = await signTransaction(tx, '<your connected address>')
await provider.sendTransaction(signedTx)
}
sendTransaction(tx: Transaction, signerAddress?: string): Promise`
Signs and send tx
, returning tx hash.
import { sendTransaction } from '@joyid/evm'
async function signTransactionOnClick(tx) {
const txhash = await sendTransaction(tx, '<your connected address>')
console.log(txhash)
}
signTypedData(typedData: TypedData, signerAddress: string): Promise<string>
Signs typed data and calculates an Ethereum-specific signature in EIP-712.
import { signTypedData } from '@joyid/evm'
const typedData = {
domain: {
name: 'Ether Mail',
version: '1',
chainId: 1,
verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
},
types: {
Person: [
{ name: 'name', type: 'string' },
{ name: 'wallet', type: 'address' },
],
Mail: [
{ name: 'from', type: 'Person' },
{ name: 'to', type: 'Person' },
{ name: 'contents', type: 'string' },
],
},
primaryType: 'Mail',
message: {
from: {
name: 'Cow',
wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
},
to: {
name: 'Bob',
wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
},
contents: 'Hello, Bob!',
},
}
async function signTypedDataOnClick() {
const signature = await signTypedData(typedData, '<your connected address>')
console.log(`Signature: ${signature}`)
}