Skip to content

Wallet Extension

The Ashen Wallet extension is a browser wallet for account management, signing, and dApp connections. It injects an EIP-1193 compatible provider into pages and uses EIP-6963 for wallet discovery.

Provider entry points:

  • window.ashenWallet
  • window.ethereum (legacy compatibility)

Build from source:

Terminal window
cd wallet-extension
npm install
npm run build

Load as a temporary add-on:

  1. Open about:debugging#/runtime/this-firefox.
  2. Click Load Temporary Add-on.
  3. Select wallet-extension/dist/manifest.json.

Package as a zip:

Terminal window
cd wallet-extension
npm run pack:firefox

The zip is written to wallet-extension/dist-packages/ashen-wallet-firefox.zip.

Request accounts (triggers a connect approval):

const provider = window.ashenWallet ?? window.ethereum;
const accounts = await provider.request({ method: 'eth_requestAccounts' });

Notes:

  • eth_accounts returns [] if the wallet is locked or the site is not connected.
  • Connections are scoped by origin. Only https:// origins and localhost are allowed; other protocols are blocked.

Connection and permissions:

  • eth_requestAccounts
  • eth_accounts
  • eth_chainId
  • wallet_requestPermissions
  • wallet_getPermissions
  • wallet_revokePermissions

Signing:

  • eth_sendTransaction (sign + submit)
  • eth_sign
  • personal_sign
  • eth_signTypedData_v4

Notes:

  • wallet_addEthereumChain / wallet_switchEthereumChain are not supported.
  • eth_signTypedData_v4 is currently handled as message signing (no EIP-712 domain separation).

The extension forwards a small allowlist of RPC calls to the node:

eth_blockNumber
eth_getBlockByNumber
eth_getBlockByHash
eth_getTransactionByHash
eth_getTransactionReceipt
eth_call
eth_estimateGas
eth_gasPrice
eth_getBalance
eth_getCode
eth_getStorageAt
eth_getTransactionCount
eth_getLogs
eth_chainId
net_version
web3_clientVersion
chain_id
chain_accounts
chain_getBalance
chain_call
NodeRpcV1.account
NodeRpcV1.tx_build_simulate
NodeRpcV1.chain_status
NodeRpcV1.block

Other RPC methods are blocked at the content-script bridge.

The wallet exposes a configurable RPC endpoint in Settings. You can switch between the default endpoints or provide a custom HTTP(S) URL.

Read-only RPC methods are metered per-origin. The wallet tracks read usage and can block responses once a session budget is exceeded. View call and query results may return an error if the read budget is exhausted.

  • The extension only injects in the top frame (not cross-origin iframes).
  • Each signing request requires explicit user approval.
  • Auto-lock and password reset are configurable in Settings.
  • /guides/using-the-cli/ for transaction building helpers
  • /guides/tx-simulation/ for preflight simulation workflow
  • wallet-extension/README.md for build notes