This developer update has a fresh dose of news for the Thaler Testnet:

  • Public testnet upgrade and new binaries
  • More details on the incentive mechanism design
  • Initial C bindings

Public Testnet Upgrade and New Binaries

A new version (0.3) of Chain testnet code was released late February on Github. Compared with the previous version (0.2), the latest release fixed some bugs and made improvements. Notably, the deployment was simplified so that transaction validation no longer requires launching a separate process.

As some code changes are backwards incompatible with the previous version (0.2), the public testnet was relaunched from a new genesis. You can find more details about how to connect to the latest testnet on this webpage.

Incentive Mechanism Design Progress

Since the last dev update, we have made progress in the design and implementation of incentive mechanisms. Here are some highlights.

Specifically, the reward rate is represented by an exponential function, which dynamically reacts to actual network conditions, such as the total staking (s) and the length of time (t) since the genesis block.

This is modelled and designed with two goals in mind - one is to attract early adopters to join the network (and stake); the other is to ensure token distribution is sustainable and phased.

Most of the model parameters are configurable, such as:

  • Total amount of tokens reserved as reward for network validators;
  • Maximum reward rate per annum;
  • Frequency of reward distribution;
  • Decay rate of the reward function.

Example: Assume the maximum reward rate(R_0) is 35% per annum and the value of tau is decreasing by 4% per annum. The effective reward rate (%) at the beginning of each year is presented in the following table for different staking scenarios:

The following graph shows how the reward rate (%) decreases over time:

Using the same example, the % change of the total amount of rewards distributed on the network is listed below:

For more details and examples on the reward rate (%), please refer to the updated technical documentation.

Initial C Bindings

Some functionalities, including common wallet functionalities, used to be accessible only via dedicated Chain command line tools only (these tools have been renamed to client-cli and client-rpc).

Most of these functionalities have now been exposed using a C foreign function interface (FFI). As C FFI is de facto a lingua franca among programming languages, this change will allow access from expanding wallet integrations written in any major language (Java, Swift, Ruby etc.) on common operating systems and platforms.

For example, here is information on how these C bindings could be used on Android (via NDK) or on iOS.

Coming Up Next

We expect to share more on these topics in the coming updates:

  • Stabilized wire formats: While the implementation is in alpha phase, we hope to stabilize schemas of binary structures (such as transactions) exchanged over the network.
  • Next generation testnet details: With the revised implementation of incentive mechanisms, we aim to put the testnet “in the wild”, i.e., subject to adversarial conditions. Stay tuned!
  • Wallet support: We are about to release our non-custodial wallet (“ Wallet”), which will be one of the first decentralized wallets to support Chain. We hope this will improve user experience and bring Chain to more users.
  • New website: We are exploring how to improve our website design in order to cater to the needs of different audiences and integrate better with other Chain official resources, such as the technical documentation and the testnet explorer.