Heraldor

Immutable official notices for tokenized assets.

Built for Ethereum-compatible digital assets

The communication layer for tokenized assets.

Heraldor gives issuers a direct way to publish immutable official notices and gives holders a trusted place to find updates tied to the assets they follow.

Real World AssetsStablecoinsSecurity TokensGovernance TokensRegulated financial instrumentsInstitutional tokenized assets

For issuers

Set up once, then keep every holder in the loop

  • Make your asset smart contract Heraldor compatible.
  • Sign up to the Heraldor publisher app.
  • Register your Heraldor assets.
  • Publish official notices to all of your holders.

For holders

Stay informed without searching across channels

  • Choose the assets you want to follow.
  • See every official notice tied to those assets.
  • Keep important updates in one place.
  • Stay on top of what matters to your holdings.

Why Heraldor

Built for official communication, not casual messages.

Heraldor exists for tokenized assets where transparency, traceability, and permanent access to official notices matter more than noise or broad broadcast tools.

  • Not a messaging app, chat app, or email replacement.
  • Every notice stays linked to the asset it belongs to.
  • Official communications remain available long term.

Developer guide

Make a token Heraldor compatible.

Heraldor-compatible tokens keep publish rights inside the token contract itself. That makes authorization explicit, auditable, and easy to reason about for issuers and infrastructure.

  • Implement `IHeraldorToken` on your token contract.
  • Return `true` from `canPublish(address publisher)` only for the authorized issuer.
  • Register the token in the Heraldor publisher app so it can be used for notices.

ERC20 example

Implements `IHeraldorToken`

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {IHeraldorToken} from "../IHeraldorToken.sol";

contract HeraldorERC20 is ERC20, IHeraldorToken {
    address public immutable heraldorPublisher;

    constructor(
        string memory name_,
        string memory symbol_,
        address heraldorPublisher_
    ) ERC20(name_, symbol_) {
        heraldorPublisher = heraldorPublisher_;
        _mint(msg.sender, 1_000_000 ether);
    }

    function canPublish(address publisher) external view returns (bool) {
        return publisher == heraldorPublisher;
    }
}