The content hash registry hardcoded into go-ethereum — maps key hashes (contract code hashes, domain name hashes) to content hashes. Part of the three-contract...
Key Facts
Description
Deployed on September 24, 2015 (block 282,885), just 5 blocks after the GlobalRegistrar, HashReg is the content hash registry that maps key hashes to content hashes on Ethereum mainnet. It was deployed by the same go-ethereum core developer who set up the entire Frontier registrar infrastructure in a rapid multi-contract deployment session.
HashReg served a specific role in go-ethereum's NatSpec documentation system: when a developer compiled and deployed a Solidity contract, the compiler could generate a JSON document containing human-readable descriptions of each function. The hash of this documentation was then registered in HashReg, linked to the contract's code hash. This allowed any geth user running a transaction against a verified contract to receive a plain-English explanation of what the transaction would do — before signing it.
The contract's address was hardcoded into go-ethereum as HashRegAddr = "0x23bf622b5a65f6060d855fca401133ded3520620" // frontier in common/registrar/registrar.go. It works in conjunction with GlobalRegistrar (which maps the name "HashReg" to this address so go-ethereum can find it on-chain) and UrlHint (which maps content hashes to URLs where the actual documentation files can be retrieved).
The contract exposes two core functions called via ABI signatures: setowner() (establishing ownership before registration) and register(uint256,uint256) (mapping a key hash to a content hash). No source code was verified on Etherscan, but the contract's bytecode was compiled from Solidity source embedded in the go-ethereum codebase.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.