LibChain Docs Lib Testnet

Concepts

lib1 addresses

Every LibChain account can be written as a lib1 address (Bech32) or as its usual 0x address. Both are the same 20 bytes.

LibChain accounts are ordinary Ethereum accounts: a 20-byte address derived from a secp256k1 key. Lib Wallet, LibChain Hub and Lib Explorer can also show each address in Bech32 form with the prefix lib, the way Cosmos chains use cosmos1….

0x form0x87052f1f17b2b4054b014e93e53d6ce6dc912bda
lib1 formlib1suzj78chk26q2jcpf6f720tvumwfz276ynschv

Those two lines are the same account (the WtLIB contract). Nothing on chain changes: transactions, contracts, logs and the RPC always use 0x. lib1 is a way of writing the address for people.

#Format

PartValue
Human-readable prefixlib
Separator1
DataThe 20 address bytes as 32 characters of 5 bits each
Checksum6 characters (BIP-173 Bech32, not Bech32m)
LengthAlways 42 characters, lowercase
Alphabetqpzry9x8gf2tvdw0s3jn54khce6mua7l (no 1 b i o)

The checksum detects any mistake in up to four characters, so a mistyped lib1 address is rejected instead of pointing at someone else's account. Mixed-case lib1 strings are invalid by definition.

#Where you'll see it

  • Lib Wallet shows lib1 by default on Lib Testnet, with the 0x form underneath, and accepts either when you send.
  • Lib Explorer shows lib1 on address pages and accepts a lib1 address in search and in URLs.
  • LibChain Hub shows both forms and accepts either.
  • The faucet API, the RPC and contracts take 0x only.

#Should my app use it?

Show lib1 where people read or paste addresses, and keep 0x everywhere else. Accept both in input fields and convert to 0x before you call a wallet or a contract. lib1 in your app has drop-in code for TypeScript, Python and Go.

Exchanges and other chains won't recognise lib1. When you share an address outside the Lib ecosystem, use the 0x form.

Updated 5 November 2026LibChain Docs · Lib Testnet