We’re excited to present a bunch of useful updates that the Remme tech team had been working on throughout March. This is a must-read for everyone who uses our JSON RPC API and plans to try the testnet.

We received feedback during our latest hackathon about the difficulties in transaction search, so we implemented a simple filter that will help you sort these by transaction family names. Also, the BlockInfo transaction family provides reliable timestamps. Finally, we have implemented an RPC method that helps to verify that the block was issued by a sufficient number of allowed signers.

All of the recent updates are to do with the features that you as a user will experience following the testnet launch. So, without further ado, here’s what’s new.

‍

Finalized WebSocket implementation



WebSocket is a communications protocol between clients and the server. The server is a node, the client can be your browser, another node, or some application. WebSocket is a bi-directional communications protocol.

What is the difference between WebSocket and PRC API? To get a list of blocks by API, you need to send a request and get data that reflects the current state. As an alternative, you can subscribe to the blocks via WebSockets and when a new block is released, it will let you know. In the first example, you open the connection, request the blocks and close the connection, and in the second, you open the connection and it remains open indefinitely and sends you the data to which you have subscribed (new blocks, batches, transaction statuses, transfers, and atomic swap events). For example, the charts that are generated on financial websites use WebSockets to display this information in real time. More information about WebSockets can be found in Remme’s documentation.

‍

Block timestamp with ID in WebSocket events

Timestamps are important for keeping records of when information is being exchanged, created or deleted online. We have implemented a secure timestamp feature in all Remme components.

Atomic swaps no longer use user-provided timestamps. Instead, they utilize the data provided by the BlockInfo transaction family. Timestamps make block verification of errors simpler, unlike dates, which can lead to code crashes.

‍

Filter transactions enabled by JSON RPC

We have several types of transactions: money transfer between different accounts inside REMChain, atomic swap for ERC20 token exchange, public key storing and revocation, initialization and closing of masternodes.

Now you can filter transactions by family names codes, which are the first six numbers in addresses.

Block signer verification

The RPC get_blocks method now shows the cert-votes that form the certificate of a block. The certificate shows all signers of the block so we can verify that the block was issued by a sufficient number of permitted signers.





Speeding up atomic swap transaction process

We have simplified the logic of accounting and token transfer with the atomic swap. Now there is no need to send a token to a special account before signing a smart contract and to the account of the bot that deals with the exchange of tokens. The only transaction occurs at the very end of the process. This data is now contained only in atomic swap state entries. Such an approach gives us less state read and writes and thus improves the speed of the overall atomic swap transaction process and makes it easier to maintain.

Work on the protocol continues, and soon we will present the next release, whereupon we’ll tell you what we have improved and fixed so that the technical community can use the testnet to the fullest.

If you have difficulties in working with the protocol or its SDKs, or have ideas on how to develop or improve it, please do not hesitate to submit a request on Github. Stay tuned and follow the discussions on Gitter .