@bronlabs/bron-ethers-signer
v1.0.13
Published
Ethers.js compatible signer for Bron Wallet platform
Readme
@bronlabs/bron-ethers-signer
Ethers.js compatible signer for Bron Wallet platform.
Installation
npm install @bronlabs/bron-ethers-signer ethersUsage
import { BronSigner } from '@bronlabs/bron-ethers-signer';
import { ethers } from 'ethers';
// Create provider
const provider = new ethers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_KEY');
// Create BronSigner
const signer = new BronSigner({
provider,
apiKey: process.env.BRON_API_KEY!,
workspaceId: process.env.BRON_WORKSPACE_ID!,
accountId: process.env.BRON_ACCOUNT_ID!,
});
// Get signer address
const address = await signer.getAddress();
console.log('Address:', address);
// Sign a message (EIP-191)
const signature = await signer.signMessage('Hello World');
console.log('Signature:', signature);
// Verify signature
const recovered = ethers.verifyMessage('Hello World', signature);
console.log('Recovered:', recovered);
// Sign typed data (EIP-712)
const domain = {
name: 'MyApp',
version: '1',
chainId: 1,
verifyingContract: '0x...',
};
const types = {
Message: [
{ name: 'content', type: 'string' },
{ name: 'value', type: 'uint256' },
],
};
const value = {
content: 'Hello',
value: 42,
};
const typedSignature = await signer.signTypedData(domain, types, value);
console.log('Typed Signature:', typedSignature);
// Send a transaction
const tx = await signer.sendTransaction({
to: '0x...',
value: ethers.parseEther('0.1'),
data: '0x',
});
console.log('Transaction hash:', tx.hash);
await tx.wait();Supported Networks
| Network | Chain ID | |-----------|----------| | Ethereum | 1 | | Arbitrum | 42161 | | Base | 8453 | | Optimism | 10 | | BNB Chain | 56 | | Sepolia | 11155111 |
API Reference
BronSigner
Constructor
new BronSigner({
provider,
apiKey,
workspaceId,
accountId,
});Options:
provider- Ethers.js provider instanceapiKey- Bron API keyworkspaceId- Bron workspace IDaccountId- Bron account ID
Methods
getAddress(): Promise<string>- Get the signer's addresssignMessage(message: string | Uint8Array): Promise<string>- Sign a message (EIP-191)signTypedData(domain, types, value): Promise<string>- Sign typed data (EIP-712)sendTransaction(tx): Promise<TransactionResponse>- Send a transactionconnect(provider): BronSigner- Connect to a different provider
Utility Functions
import {
getNetworkId,
getGasTokenId,
isChainSupported,
getSupportedChainIds
} from '@bronlabs/bron-ethers-signer';
// Get Bron network ID from chain ID
const networkId = getNetworkId(1); // 'ETH'
// Check if chain is supported
const supported = isChainSupported(42161); // true
// Get all supported chain IDs
const chainIds = getSupportedChainIds(); // [1, 42161, 8453, ...]Hardhat Integration
Simple one-liner to override ethers.getSigners() and ethers.getSigner():
// hardhat.config.js
require("dotenv").config();
const { extendHardhatWithBronSigner } = require("@bronlabs/bron-ethers-signer/hardhat");
extendHardhatWithBronSigner({
apiKey: process.env.BRON_API_KEY,
workspaceId: process.env.BRON_WORKSPACE_ID,
accountId: process.env.BRON_ACCOUNT_ID,
});
module.exports = {
// ... your config
};Now all hardhat scripts using ethers.getSigners() will automatically use BronSigner for non-local networks.
Options
extendHardhatWithBronSigner({
apiKey: process.env.BRON_API_KEY,
workspaceId: process.env.BRON_WORKSPACE_ID,
accountId: process.env.BRON_ACCOUNT_ID,
excludeNetworks: ['hardhat', 'localhost'], // optional, these are defaults
});License
MIT
