Factom Launches Federated Testnet



  • 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.


    Cont.... in next page



  • Cont.. from Prv. page

    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 a4ab1e2ef212208b3513c5f06fcdcfa79b7c2b610526ce


    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