Grant Update October 2018

Technical Updates | November 12, 2018
Home » Company » Blog » Grant Update October 2018

Outputs and Outcomes

Our focus is to:

  • Improve the performance and reliability of the Protocol
  • Provide ability to monitor the exchange rate and make adjustments as needed
  • Make improvements to the Anchor Master allowing Factom to remain competitive and relevant in the marketplace.

Grants: Protocol Grant   |   Oracle Grant   | Anchor Grant  (Previous Grants from June 8 – Sept 8)

**Note: Next Status will be updated with new grants if they are approved.  

Status and Achievements

A critical security bug was patched and adopted by the network during this period.  It would have allowed any FCT wallet with a misconfigured clock user to halt the blockchain.

This patch was the major update that was released, but The bulk of the work that has occured in October is pending release in v6.0.2.  There are dozens of bug fixes pending in the upcoming release.  Many of the ones developed in October are listed in this report.

A process for including non-Factom Inc. source code was cleared by the lawyers and has welcomed multiple contributions so far.  These contributions are scheduled for the upcoming 6.0.2 release.


New capabilities

  • Ethereum Anchoring (Anchor Grant)
  • Standing Parties (Protocol Grant)
    • Ensures no other standing party can lay claim to the same standing
    • Cannot be intercepted by an attacker before secured in the Standing Chain
    • Can be easily tallied to calculate the standing behind a decision in the Factom protocol
  • FactomD Recognizes Voting (Protocol Grant)  
    • The tracking of identities which can be used to track the standing parties and delegate votes to provide support for ANOs, Grants, etc.
    • Provide APIs to expose information about staked FCT to allow the 3rd parties to do calculations based on this data.
    • Provide APIs to expose information about staked ECs to allow the 3rd parties to do calculations based on this data.
  • New Network Diagnostic API (Protocol Grant) – Gives visibility into aspects of nodes to better understand their performance and what could have caused a stall.
  • Rate Change Alerts (Oracle Grant) – Keeps the exchange rate current with the market to ensure they stay near the intended constant rate.
  • Sept 17th Release Feature development complete but was pulled from MainNet due to issue. Will release once issues identified and QA is complete.  
    • Performance Graphing Tools – Collecting data is complete for required for new internal graphing tools that allow QA a better understanding of how changes affect performance
    • Timeouts Defined Merged – Improvement to simulation tests so when they fail they exit
    • Calculate System Status Always – Populated Control Panel Summary\Syncing by default
    • Upgrade Golang to 1.11 – Keep up with Golang development
    • Test Net Coin Base payout Delay change – Allows outside developers to test Coinbase cancels (Protocol Grant)
  • Coinbase delay for Testnet – Extend delay between a coinbase to all more time to coordinate a test of the coinbase cancel on the testnet.  
  • Diagnostic Graphs – Detailed view of the internal system performance
  • Add Simulation Tests – Increased the amount of features tested during development unit testing
  • Message Logging Clean up – Allows the clean up of messages to better diagnose issues
  • GoLand Build Tags – GoLand does not support dynamically setting build parameters so this added a prebuild script that overwrites the engine/version.go file to accomplish what is done in production using build tags.
  • Modify factomd API call ‘current-minute’ to also return ‘current-block-height’ – Allows you to make a single API call and returns the minute and block height together to make testing more reliable
  • Upgrade to golang 1.11 – Continue standards of staying current version
  • Community Contribution for Integration of Cors code into FactomD – Allows Javascript browsers to use the data that is provided by FactomD
  • Investigate new theory of database head reversal – This fixed a problem observed in the great stall where the last DBState in the database was not loaded when restarting after a stall which in turn caused nodes to boot to different heights which blocked the network from making forward progress without a lot of elections
  • Encrypting the Factom-walletd Database – Exchange Requests that requires password security when using wallet


  • Continue to reduce number of missing messages – Allow the ANO nodes to communicate more effectively, have less bandwidth overhead and less risk of failure due to peer to peer network deficiencies. (Protocol Grant)
  • Sept 17th Release Development complete but was pulled from MainNet due to issue. Will release once issues identified and QA is complete.  
    • Duplicate Message reduction – Performance Improvement by no longer sending messages that were previously received.
    • MMR Improvements
      • reduced the amount of messages asked for that are not needed
      • do not ask for same message multiple times without specific time lag
      • reduce RAM consumption for process lists during reboot
    • SimCtrl EC purchase method – Improvement that allows simulation to more accurate match observed purchase behavior
    • Election Failures – Improvement to the number of false fails from simulation tests when follower/audit nodes are not keeping up
  • Out of order execution of dbstates – Corrects a bug that could cause nodes to panic.
  • Exception for a factoid transaction timing – Allow nodes downloading the blockchain to progress past block 160180.
  • Force chain head to block 160184 if the head is stuck at 160183 – Compensate for database corruption during multiple restarts
  • Consider blocks loaded from database as valid – allows leaders to boot to the same height as followers and audit servers
  • Drop messages older than boot time – Makes network more resilient during restarts
  • Exclude out of Bounds transactions – Stop invalid blocks from being created with Factoid transactions out of bounds.
  • Load Balance on Restore – Fixes a stall condition that causes a panic on boot
  • NilI Hash Tracking – Added code to avoid crashing in some cases with pokemon bug
  • Confile File Name Path Issue – Fixes issue where on Windows in some configurations the config files were not found.
  • Invalid DBSig Handling – allows old dbsigs to be removed from process list
  • Make system Status Changes available to the control panel – This change makes the sync status of the node be available in the Control Panel for the node even if logging is off which helps diagnose stalls and other sync related issues. The changes also makes faulting and bad messages logging be on by default which helps diagnose failures of a variate of crashes by recording data about bad messages and elections.
  • Need better EC purchase method because the current one doesn’t handle high loads – This is a simulator change to make the load generated during testing behave more like the pattern observed in the real network which improves the likelihood of revealing bugs during testing.
  • WSAPI Tests were dependent on prior WSAPI test having run – Allows execution of individual test instead of just the entire suite.
  • Logging for API level transactions – Assist in debugging interactions with applications
  • ProcessBlocks failure on long-running servers after 5.4.4 release – i.e. Stop panicking when X happens. Solve for X
  • Lost controlpanelsettings flag – Enables logging on nodes that are having issues
  • Coinbase Canceling only takes Majority of Fed nodes, but also counts audits in tally – Allows it to require half of the Authority Set to cancel a payment.
  • Cleanup attack/bug vector in unmarshaling – Hardens the protocol against error and malicious attack.
  • Drop messages older than boot time – Makes network more resilient during restarts
  • Remove Replay Data From Save state – Corrects why SaveDBStateList and cause an increase in memory allocation.
  • Misc logging fixes – This improved the quality and level of detail in some log files and add millisecond time resolution to logged times to facilitate debugging.
  • Community Contribution Bug Fix to correct wallet-balances call in factom-walletd – Allows passwords to be used.  Needed by an exchange.

Work Completed

New capabilities

  • Development of 10 number of new capabilities completed and move into testing for next release listed above


  • Development of a number of maintenance corrections completed and move into testing for next release


  • New Hire – Kevin Casper, Community Manager


Lessons Learned

Organizational learnings:

  • Attended the ANO Retreat and Bitcoin Conference where we felt we built some relationships for better communication, got to see what other people were working on and hear them talk about it.

Future Plans

Protocol Grant

  • Enable the ability to count votes of standing parties
  • Ongoing Performance Improvements
  • Ongoing Maintenance corrections
  • Continue supporting the protocol and issues that arise

Oracle Grant

  • Improvements to Rate Change Log allowing validation against historical data
  • Rate change alerts

Anchor Grant

  • Ethereum Anchors


POSTED: November 12, 2018 BY Crystal Wiese IN Technical Updates

Crystal Wiese is the Director of Marketing at Factom. Working within the startup tech scene for the past 10 years she has become passionate about taking great ideas and building a strong comprehensive narrative. Graduating from the Art Institute of Portland with a degree in Design Management, Crystal has always seen the value in creating strong ties between the technical, creative and business.