Factom Protocol Docs
  • Welcome Developers
  • Protocol Overview
  • Getting Started
    • Installing Factom
    • Developer Sandbox
    • Hello-World Examples
      • Golang
      • JavaScript
      • Python
    • API Reference
      • Factomd
      • Factom-walletd
      • Debug
    • CLI Reference
      • Run Factom Federation
      • Common Tasks
      • Factom CLI Commands
    • Data Structures
      • Building blocks
      • User elements
      • Block types
    • SDKs
      • Open Source SDKs
      • Commercial SDKs
    • Testnet
      • Installation
      • Node monitoring
      • Maintenance
      • Interacting with Factom blockchain
      • Faucet
      • Frequently Asked Questions (FAQ)
      • Useful links
  • Infrastructure
    • Control Panel
    • Explorer
      • Overview
      • Block types
      • Usage
    • Open Node
  • Technologies
    • FAT Tokenization
    • Voting Protocols
  • Protocol development
    • Factom Improvement Proposals
    • Hacking Factom
  • Wallets
    • Ledger Nano S Wallet
    • Enterprise Wallet
      • Install
      • Create FCT Address
      • Send and Receive FCT
      • Backup Wallet
      • Restore From a Backup Seed
      • Importing/Exporting your private key(s)
      • Select Your Factomd Node
      • Upgrade to a Secure Wallet
    • FAT Wallet
    • MyFactomWallet
    • Paper Wallet
  • Authority Node Operators
    • ANO Guides & Tutorials
      • Getting started
      • Generating your server identity
      • Setting the coinbase address and node efficiency
      • Joining the docker swarm
      • Securing your node with SSH and iptables
      • Updating and brainswapping your node
    • ANO Tools and Resources
Powered by GitBook
On this page
  • Directory Block
  • Admin Block
  • Entry Credit Block
  • Factoid Block
  • Entry Block

Was this helpful?

  1. Infrastructure
  2. Explorer

Block types

This page describes what the block types Factom is constructed of.

PreviousOverviewNextUsage

Last updated 6 years ago

Was this helpful?

Directory Block

Factom is constructed of a hierarchical set of blocks, with the highest being Directory Blocks, each of which consists of a header and a body. Each Directory Block has a header for unique identification and contains hashes of the Entry Blocks and their respective ChainIDs for entries made during the time period. To link this data together, each Directory Block contains the serial hash of the previous Directory Block. The body of the Directory Block is a series of pairs of ChainIDs and Entry Block Merkle Roots.

In the example below shows that factomd has anchored the block on the Bitcoin blockchain.

Factom explorer directory block

Note about timestamps: Unlike Bitcoin, timestamps in Factom record the opening of a block rather than the closing. The lower level blocks (not Directory Blocks) have minute markers to indicate the number of minutes after opening that each Entry was seen.

Within each Directory Block is an:

  • Admin Block

  • Entry Credit Block

  • A Factoid Block

  • Several Entry Blocks

These Factom data structures include different information and are described below.

Admin Block

The Admin Block contains the signatures and organizational data needed to validate previous and future Directory Blocks. It has a LookupHash, in this case:

This is a SHA256 of the entire block. Clicking it displays the Admin Block itself which contains:

  • Full Hash represent the “BackReferenceHash” or LookupHash.

  • KEYMR of the directory block

  • This particular example includes five entries

  • The JSON Data

The JSON Data includes the references to the previous block such as:

  • The Previous Block Back Reference Hash: \“PrevBackRefHash\”:\“53ae4325e045d48f4f786ef9be6065da68c7aa8f149b781d57c2c3ea52fc8c5f\”

  • The current Directory Block Height: \“DBHeight\”:75416

  • And more info about the current block such as size, entries, messages, etc

The LookupHash for the current Admin Block, 75416, will be included in the next created Admin Block as the Previous Block Back Reference (PrevBackRefHash) shortly (in about 10 minutes) where it gets referenced. The next Admin Block will also include the same type of data; this creates the Factom Blockchain composed of consecutive blocks with references to previous blocks.

You can reference each Admin Block in two ways: 1. By the Directory Block 2. By the next Admin Block Keeping the Admin Blocks secure is critical to the integrity of the Factom Blockchain. However, since there aren’t any Key Merkle Roots and the blocks use straight hashing rather than a slower function that would make brute force attacks more difficult, we had to get creative. We decided to have two hashes of each Admin Block, both with 256 bits.

  • Hash 1: A SHA256 hash of the block.

  • Hash 2: A SHA512 hash of the previous Admin Block in which we only take the top 256 Bits.

This way, if someone wanted to fake an Admin Block while having the hashes match, they would need to break both a SHA256 and a SHA512 at the same time for the same fake data. Eat that, hackers!

An Entry is a single data submission made by a user. A collection of entries makes up a Factom Chain. There are certain bookkeeping entries required, but there are no restrictions on the content of an Entry. An Entry is restricted to no more than 10K in size and requires an Entry Credit for every 1K of data. Entry size is so restricted to ensure reasonably fast propagation of Entries through the network, as required by the consensus algorithm. The user can string together multiple entries for larger content.

Entry Credit Block

An Entry Credit (EC) Block is a data structure which packages Chain Commits, Entry Commits, and EC balance increases over a ten-minute period. The Entries are ordered in the Entry Block in the order that they were received by each Federated server. All the Federated servers contribute to the building of the EC Block.

This particular block contains 47 Entries.

Factoid Block

In the list of transactions shown in the image above, FCT transactions may be identified by looking at the inputs and outouts.

Entry Block

After each ten-minute period, the Merkle Roots for each Entry Block are stored in the Directory Block. Entry Blocks contain Entry Hashes with ten one-minute markers.

Click on the “” and the “” to get further information.

The five entries included in this present more information.

Clicking on shows further data such as the Hash, ChainID, Timestamp, Entry Data and JSON Data.

Explorer 8

The consists of a header and a body. The body is composed of primarily commits and balance increases with minute markers and server markers distributed throughout the body.

package Factoid transactions that take place each minute over a ten-minute period. Factoid transactions and their minute markers are arranged in the order in which they were received by the Federated server. Factoid transactions begin with a version number above zero, differentiating them from other types of transactions, and minute markers are included in the ledger Merkle roots.

Selecting the , more information is displayed about the FCT transaction such as the transaction ID, Timestamp, the Block Height, as well as its FCT Inputs and Outputs.

package Entry Hashes of all entries for a particular Factom Chain received over a ten-minute period, arranged in the order in which they were received by the Federated server.

Entry Data can be viewed by selecting in this Entry Block.

Selecting the Chain ID redirects to the , showing the Chain that the entry was made to and a series of user-populated External Ids.

In this example, a Chain was created to track the , data provided by Intrinio.

Selecting the shows the Entry Data.

Selecting the shows more data and info about its source such as the website, the stock quote date and the quote itself.

BTC Transaction
Anchor entry
69f4bebe76d94054f4bdb0cf56a47cafacae60ce6be76885ecd60252463a6e8e
Admin Block
any of the entries
Entry Credit Block
Factoid Blocks
second entry
Entry Blocks
an entry
First Entry display
DOW 30 stock price for McDonald’s
first entry
second entry
Directory Block ID 70405
Factom explorer admin block
Factom explorer admin block entries
Factom explorer Entry Credit block
Factom explorer Factoid block
Factom explorer Factoin transaction
Factom explorer Entry block
Factom explorer entry chain
Factom explorer entry data
Factom explorer entry data