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.
Status and Achievements
We are happy to announce in the addition to longtime Factom, Inc. Sponsor Dominic Luxford (88mph, D-Lux), several new Grant sponsors have stepped up to act on behalf of the community to ensure Factom, Inc is prioritizing development benefiting the community in general. The new sponsors include Nolan Bauer from VBIF and the Factomatic team represented by Nikola Nikolov, and Valentin Ganev (Sanchopansa). They have started as sponsors beginning with the Nov 21 meeting. Sponsors emeritus Nic Robinette and Adam Levy also re-joined for the Nov 21 meeting.
The release of code v6.1.0 which implements the Round 2 protocol grants was deployed and activated successfully. There were a total of 37 separate payments that activated with v6.1.0.
We also welcome new Authority Node Operators PrestigeIT & Veterans Blockchain Investment Firm this month.
Additionally, we are experimenting with sharing a number of the developer tickets directly for those who want to have visibility on the details. Check out the initial list starting in September 2018 through the end of November 2018 at this link.
WORK IN PROGRESS
- Ethereum Anchoring (Anchor Grant)
- Testnet is being anchored with an ethereum smart contract. It uses the newly developed Merkle aggregation code to catch up with the historical blockchain.
- The test was successful until ethereum mainnet funds were depleted. After several days the Merkle aggregation code will be tested again which catches up on missed blocks (created by not having eth).
- 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
- 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
- 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
- Simulation tests in factomd_test.go should support timeouts defined in blocks – Adds ability to limit the amount of time a simulation QA test can run before declaring it has failed.
- Move away from gopkg.in – Allows more reliable source of the source code for these packages
- Wallet for simulator to enable more complex tests – Code refactoring to enable more complicated simulation tests involving Wallet features
- Log Holding and write script to check data – Debugging tool to allow investigation of holding queues behavior
- Community Feature Contribution – Show hostname on control panel – Community Contribution: Allow control panel to self identify which node it represents.
- 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.
- Load Balance on Restore – Fixes a stall condition that causes a panic on boot
- Nil 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- Hardens the protocol against error and malicious attack.
- Remove Replay Data From Save state – Corrects why SaveDBStateList and Restore.save() 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.
- Factomd sometimes writes out bad savestate files. – Update the way savestate files are created to reduce consensus failures under certain conditions.
- Election in minute 9 cause the leader who was voted out to only follow by blocks and never accept the updated authority set. – Allow a Federated Server which was faulted out during minute 9 to recognize that after the blockchain progresses.
- Consider blocks loaded from database as valid – Allows leaders to boot to the same height as followers and audit servers
- GetVirtualServers() could be called in minute 10 and panic – Allows panic in uncommon situations
- Smarter limits in unmarshalling functions
- Release 6.1.0 – Implements the Round 2 Protocol Grants
- Development of 21 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 – Demetry Gerodimos, Development Manager. Start Date 11/19/18.
- Blockchain for Finance North America, Nov 14-15th, Boston MA
- Solutions for an Emerging World, Nov 29, Honduras
- Enable the ability to count votes of standing parties
- Ongoing Performance Improvements
- Ongoing Maintenance corrections
- Continue supporting the protocol and issues that arise
- Improvements to Rate Change Log allowing validation against historical data
- Rate change alerts
- Ethereum Anchors
- MISMO Winter Summit, Jan 7 – 11th, Clearwater FL
- 2019 S&T Cybersecurity and Innovation Showcase, Jan 9, Washington, DC
- Blockchainge DC, Jan 13 – 15, Washington, DC
Also published on Medium.