Factom Launches Federated Testnet

By Brian Deery – Chief Scientist

Factom is pleased to announce that we have released our Factom Federation Testnet (FF) Release Candidate 1 (RC1). Formerly referred to as M2. FF is a preliminary version of our software that we would like the community to test with us. 

We have spent the last several months testing it ourselves and believe it is now robust enough to debut to the world. However, we encourage our community to hammer on it till it breaks.

If you would like to participate, you will need some command line skills and be familiar with the Go programming language. Also, you will need to compile the Factom binaries on your local machine and an installation of Go.

Description

RC1 will demonstrate multi-leader consensus. We have redesigned our system so multiple federated servers will be cooperating. In the case a federated server goes down, an audit server will take its place.

Factom Federation (FF) adds several new features.

  • Distributed servers

  • A peer to peer network

  • Higher throughput

  • More user feedback via the Graphic Control Panel

  • Confirmations in milliseconds

Please keep in mind that this is a testnet, real Factoids are still running on Factom Genesis. In the future the blockchain from Factom Genesis will be ported over to run with the Factom Federation software.

How to Get Started  

We will be rapidly updating FF so please see our Community Tester Directions M2 Guide for the most up-to-date install directions. These directions are optimized for Linux, but may work with some modifications for Mac or Windows.

First, you must have golang installed and the ability to compile source code. Factom has been tested on the latest version: 1.7.3. If you do not have golang installed, the Prepare Operating System section of this guide may help.

Check your version of golang in a terminal by running this:

> go version
go version go1.7.3 linux/amd64


Warning
If you are running Factom Genesis, testing out Factom Federation (FF) will disrupt your existing installation. We suggest running it in a virtual machine in this case.

If you have difficulties or the factoid address is empty please email us or contact us on Github

Note
The testnet factoids and entry credits have no value outside the FF testnet.


Step 1 - Install factomd, and the support programs

Run these commands from a terminal window:

> go get -v github.com/FactomProject/factomd
> go get -v github.com/FactomProject/factom-cli
> go get -v github.com/FactomProject/factom-walletd
> go get -v github.com/FactomProject/netki-go-partner-client
> go get -v github.com/FactomProject/go-bip44


The above commands will give an error messages. Don't worry this is expected.

In a terminal navigate to $GOPATH/src/github.com/FactomProject/factomd run the all.sh script.  

This goes into each repository and tries to checkout the m2-rc1 git branch if it exists and pulls the latest commits.  If on windows, this can be done manually if needed.

> cd $GOPATH/src/github.com/FactomProject/factomd
> ./all.sh m2-rc1
*********************************************************
*       Checking out the m2-rc1 branch
*       ./all.sh <branch> <default>
*
*       Will try to check out <branch>, will default
*       to <default>, and if neither exists, or are
*       missing, will checkout the master branch.
*
*********************************************************
        factomd now on m2-rc1
         factom now on m2-rc1
            web now on m2-rc1
        go-spew defaulting to master
       go-bip39 now on m2-rc1
       go-bip32 defaulting to master
       go-bip44 defaulting to master
           bolt defaulting to master
        Testing not found
        btcutil now on m2-rc1
      goleveldb defaulting to master
     FactomDocs not found
       gocoding defaulting to master
         btclog not found
        dynrsrc defaulting to master
        ed25519 defaulting to master
     fastsha256 not found
       go-flags not found
       go-socks not found
         seelog not found
      snappy-go defaulting to master
      websocket not found
     factom-cli now on m2-rc1
 factom-walletd now on m2-rc1
 serveridentity defaulting to master
********************************************************
*     Compiling fctwallet, the cli, and factomd
********************************************************
Compiling:  factomd
Compiling:  factom-cli
Compiling:  factom-walletd


At this point you now have factomd, factom-walletd, and factom-cli binaries. You can stop the test section of the script when it says it is safe to Ctrl+C.

Note 
Mac users can navigate to each of the folders that show "now on m2-rc1" above and run "git checkout m2-rc1; git pull" in each.  After that run “go install” in the folders:

  • $GOPATH/src/github.com/FactomProject/factomd
  • $GOPATH/src/github.com/FactomProject/factom-cli
  • $GOPATH/src/github.com/FactomProject/factom-walletd


Step 2 - Run factomd

In a terminal window, run

> factomd


Next, factomd needs to be restarted a minute or so after it finishes downloading the blockchain. Use Ctrl+C to close factomd. Use the control panel to see the block downloading progress.

Browse to http://localhost:8090 to see the Node Visualizer for your local Factom node.

In the terminal where factomd is running, type s then <enter> to get even more detailed information on your node’s status.

Step 3 - Move Factoids

In a new terminal run the new API wallet.

> factom-walletd


In a 3rd terminal run factom-cli with the below command:

> factom-cli importaddress Fs1KWJrpLdfucvmYwN2nWrwepLn8ercpMbzXshd1g8zyhKXLVLWj


This should import the below address to your local wallet.

FA1zT4aFpEvcnPqPCigB3fvGu4Q4mTXY22iiuV69DqE1pNhdF2MC

Then generate your own local Factoid Address.

> factom-cli newfctaddress
FA28PitepUziaDrLeVAcioNfzHdBc7mvyJJHvag2vyhWm7JR3t8S

The new factoid address will be custom to your wallet and different from the above.

Then run the below to list the addresses in your wallet:

> factom-cli listaddresses
FA1zT4aFpEvcnPqPCigB3fvGu4Q4mTXY22iiuV69DqE1pNhdF2MC 1000
FA28PitepUziaDrLeVAcioNfzHdBc7mvyJJHvag2vyhWm7JR3t8S 0


Then send some testnet FCT to your own FCT address to get some Entry Credits at a later step.

> factom-cli sendfct FA1zT4aFpEvcnPqPCigB3fvGu4Q4mTXY22iiuV69DqE1pNhdF2MC FA28PitepUziaDrLeVAcioNfzHdBc7mvyJJHvag2vyhWm7JR3t8S 1.234
TxID: 0de09676c65ad18179c5a27cfbfae4f0392a42773b4024aed71eca937f7ce7a6


The sendfct command moved the factoids from the first address to the second. This example moved 1.234 factoids. Please do not take all the testing factoids, as they are a shared resource and with 1 FCT you get plenty of ECs to test with.

Finally check your balance with the below command.

> factom-cli listaddresses
FA1zT4aFpEvcnPqPCigB3fvGu4Q4mTXY22iiuV69DqE1pNhdF2MC 998.686008
FA28PitepUziaDrLeVAcioNfzHdBc7mvyJJHvag2vyhWm7JR3t8S 1.234


Here we see that the factoids are now in a new address.

The movement also shows up in the control panel.

Step 4 - Make Entries

Generate a new Entry Credit address.

> factom-cli newecaddress
EC27kDNpFcJQwvdpFXaXjPqhtDSf6VK8kRN8Fv7EkhvS9tVkuAfX


Get some Entry Credits to be able to make entries.

> factom-cli buyec FA28PitepUziaDrLeVAcioNfzHdBc7mvyJJHvag2vyhWm7JR3t8S EC27kDNpFcJQwvdpFXaXjPqhtDSf6VK8kRN8Fv7EkhvS9tVkuAfX 30
TxID: f378ef393897d5cc5ef910eb3c9aeea5988dfdbb8b94a6cc6a31c5876f629b6a

 

Create a chain to make entries into.

> echo "first testnet chain" | factom-cli addchain -e chainName EC27kDNpFcJQwvdpFXaXjPqhtDSf6VK8kRN8Fv7EkhvS9tVkuAfX
Commiting Chain Transaction ID: c1a2861d14b788c13d6c48f1e5603f5c53afc599d07d338deeb4c3d5012e24da
ChainID: a4ab1e2ef212208b3513c5f06fcdcfa79b7c2b610526ce2dc374bb789700a791
Entryhash: 232d1e54ecdfc369cc66e35dda73ce4beb7dffd3e75af94192034e79beaf6c8f


Make an entry in the newly created chain.

> echo "second entry in the first chain" | factom-cli addentry -c a4ab1e2ef212208b3513c5f06fcdcfa79b7c2b610526ce2dc374bb789700a791 EC27kDNpFcJQwvdpFXaXjPqhtDSf6VK8kRN8Fv7EkhvS9tVkuAfX
Commiting Entry Transaction ID: 1d6b9d7159a27b91cd389738eb2b3b01143aaaf39ef46388f47abb8b32698811
ChainID: a4ab1e2ef212208b3513c5f06fcdcfa79b7c2b610526ce2dc374bb789700a791
Entryhash: 2460e676d4f4c89ccf0608b2e3134421b9075fb956af76c02af78991e6faafdc

 

Step 5 - Read Entries

Read entries with the get allentries command.

> factom-cli get allentries a4ab1e2ef212208b3513c5f06fcdcfa79b7c2b610526ce2dc374bb789700a791

 

This guide is intended for people who wants to get involved early and feedback is welcome. You are invited to submit issues directly to our devs on Github issues or email us directly. Further documentation will be made available as we progress with testnet and release updates.

Thank you all for your support and interest in Factom and open source software. Stay tuned for the latest updates by subscribing to our newsletter or follow us on twitter!


Have a great day,
The Factom Team

About the Author

Brian Deery

Brian Deery

Chief Scientist

Brian is an early innovator in technology. He built a self-driving Lotus Elise which competed in the 2007 DARPA Urban Grand Challenge. The race competition included a precursor to Google’s driverless car. Previously, he served as an R&D Engineer at Pentair, Ltd where he designed and brought to market an underwater energy harvesting device. Earlier, he managed the quality control robots certifying ~$30M of yearly production at MTS Systems Corporation.

Connect with Brian:

Recent Posts

Factom Harmony

Factom Harmony

Posted: March 2, 2017 In Press Releases

Factom Harmony is a commercial product for the mortgage industry. It is built on the Factom Apollo data management solution and allows users to store and create permanent mortgage records.

The Great Migration

The Great Migration

Posted: December 30, 2016

Factom Genesis is migrating to the new Factom Federation network. We will be deploying eight federated servers and eight audit servers to the Federation network. This migration will usher in an era of censorship-resistant and global distribution.

Factom Releases Next Version of Software

Factom Releases Next Version of Software

Posted: December 20, 2016

Factom Federation is the second major release of the core Factom software. It includes several protocol changes and a networking change that gives us the ability to further upgrade the following: