Welcome to the fifth edition of the REMME bi-weekly update, in which we get to geek out on what are devs have been up to behind the scenes. It’s a chance to prove that we’ve not been resting on our laurels and, more importantly, to keep you in the loop. Work on the REMME protocol and supporting infrastructure has been proceeding at a dizzying rate, as you’re about to find out…

1. Try REMME WebAuth demo!

We’ve developed and rolled out a basic demo version of our WebAuth app which allows users to:

• Register on the system together with Google Authenticator (GA 2FA)

• Download and store the certificate

• Log in with this client certificate together with GA 2FA

• Revoke the certificate

• Log out from the session

In the event of multiple certificates, the user can choose a particular one from the system popup and login to the system. Once the user revokes the certificate, they will not be able to login with this certificate.

The REMME team are going to present this demo at the CUBE Tech Fair Conference and Consensus 2018.

You can test the demo with certificate revocation process included and Google Authenticator, here.

How to use the WebAuth demo:

Registration

Navigate to https://webauth.remme.io

Open REGISTER page and fill in the required fields. (Email, First Name, Last Name).

!!! Note: passphrase is optional, but MAC users should enter that to import certificate to KeyChain.

Press OK button

Scan QR with Google Authenticator (2FA) and enter 6-digit code to confirm Google secret saving

Press OK

Save and install .p12 certificate file to the certificate storage of your OS.

Log in

Navigate to LOGIN page

Click ‘Login with certificate’ button

Chose certificate form the list in your browser

Enter code from Google Authenticator

You’ve now logged in successfully

Log out

Click ‘Logout’ button.

You’ll be redirected to the default page and the session deleted

Revocation

Click ‘Revoke’ button

You’ll be show a message about successful certificate revocation

You’ll next be taken to default page and the session deleted

The certificate is no longer valid and you cannot use it for login

2. REMChain

We’ve finished the first stage of our research on choosing a consensus algorithm for REMChain. As we took the decision to limit the number of masternodes in the future public network, we are able to build our network on top of a BFT (Byzantine fault tolerant) algorithm in either public or private case. This family of consensus algorithms was chosen because they are strictly proven to be fault tolerant within the scope of given parameters like preferred timings, the size of the network and the number of faulty nodes we want our algorithm to be resistant to.

The next stage of our research will be focused on choosing the right BFT algorithm and implementing consensus for the public network which can then be expanded to our public network. Moreover, we tested switching between different consensus algorithms in the Sawtooth framework and got a deeper insight into consensus implementation details with the help of the Sawtooth team. Finally, we have got a bunch of scripts on top of Ansible for easier deployment of test networks. Those scripts can then be modified to run different algorithms (changes in launch scripts will be required).

3. REMGate

An Atomic Swap feature will be implemented into REMGate providing a mechanism of interchange for REM tokens (in REMChain) and REM ERC 20 tokens (in Ethereum) with a 1 to 1 exchange rate. A major part (~70%) of the atomic swap core has been implemented and tested. Its internal part comprises REMChain handlers and Ethereum smart contracts, as well as an exchange bot. We still have some carryover tasks in progress, namely a GUI for the Atomic Swap which we plan to implement during the next Sprint.

4. REST-API

Our dev team has finished implementing a websockets subscription mechanism that will allow external clients/libs to get real-time updates about new blocks and transactions which were executed in REMChain by getting broadcast events from REMME nodes. This will allow us to build a block explorer and integration libraries for potential clients and web services.

More updates: