Learn how to build an app on Bloom

Bloom is an end-to-end protocol for decentralized identity and credit scoring. The protocol's core functionality is handled with Ethereum smart contracts and uses L2 scaling solutions such as state channels to ensure fast and cheap operations on the blockchain.

This documentation will teach you how to be an attester on the Bloom network, build solutions that require BloomIDs, and even make your own Bloom client for handling customer operations. If you need any support, please join us on our Telegram group as we would be happy to assist you.



Bloom is committed to the community and has open-sourced various projects to help build on top of Bloom.

  • core: Bloom Protocol smart contracts.
  • attestation-kit: Easily attest to and read attestations on the Bloom protocol.
  • attestations-lib: Attestation specific types and logic.
  • share-kit: Easily allow your users to share their verified personal information directly with your application by scanning a QR code.
  • receive-kit: Easily receive and validate data from share-kit.

Contract Overview


  • Accounts: AccountRegistry associates Ethereum addresses with BloomIDs. Users authorize transactions within the Bloom protocol using addresses they associate with their BloomID.
  • Signing Logic: Bloom relies on the signTypedData standard described in EIP712 for many protocol interactions including allowing users to delegate transactions to Bloom to pay transaction costs. The SigningLogic contract contains all the logic to recover addresses from signTypedData signatures.
  • Attestations: One of the core components of Bloom protocol is Identity Attestations. The attestations contracts enable users to securely associate verified identity information with their BloomID in order to strengthen their profile.
  • Token Escrow: Users can lock up BLT in the Token Escrow contract. Once locked up users can send micropayment to other users by signing payment authorizations with an address associated with their BloomID.
  • Voting: Bloom’s protocol heavily relies on community voting to make important protocol decisions. Anyone can create a Poll in the Bloom network by interacting with the VotingCenter contract.