What is hethers?

Hethers is a complete and compact library for interacting with the Hedera Hashgraph and more specifically the Smart Contract Service. It is a fork of The Ethers Project and implements the same program interface as ethers.js with some minor changes.


  • Keep your private keys in your client, safe and sound
  • Import and export JSON wallets
  • Import and export BIP 39 mnemonic phrases (12-word backup phrases) and HD Wallets (English as well as Czech, French, Italian, Japanese, Korean, Simplified Chinese, Spanish, Traditional Chinese)
  • Meta-classes create JavaScript objects from any contract ABI, including ABIv2 and Human-Readable ABI
  • Connect to the Hedera Network over both Consensus and Mirror nodes.
  • Modular packages; include only what you need
  • Extensive documentation
  • Large collection of test cases which are maintained and added to
  • Fully TypeScript ready, with definition files and full TypeScript source
  • MIT License (including ALL dependencies); completely open-source to do with as you please

Migration from other EVM based chains

This document covers the features present in the ethers library, which has changed in some important way in the hethers library.
General / Conceptual changes
  • Two endpoints (APIs) are utilised by the provider instance -> Hedera Consensus Nodes & Hedera Mirror Nodes.
  • Gas estimates are not supported as of now. You must provide the gas limit manually. More information on gas limits can be found here.
  • Gas Price is not specified by clients. The Hedera network computes the necessary gasPrice during transaction execution. More info here.
  • Static calls are executed against Hedera Consensus Nodes and are paid, thus must be signed by an already existing Account. static calls create ContractLocalCall transactions.
  • Account creation happens on-chain. You cannot create a random hedera account by generating a pub key. Accounts must be explicitly created or implicitly using HIP-32.
  • All address properties are replaced with accountLike properties to support both Hedera like accounts (shard.realm.num) and native EVM addresses.
  • The transaction identifier is not transactionHash but transactionId, thus every function using transactionHash is replaced with transactionId
  • There is no concept of blocks, thus block related queries for filters/events or provider polling is replaced with timestamp based.

Developer Documentation

Last modified 1yr ago