Skip to content

v0.24.0: Updated block signature scheme, registry persistences, block include pre-images

Compare
Choose a tag to compare
@Geod24 Geod24 released this 07 Oct 14:20
· 942 commits to v0.x.x since this release

Major improvements since v0.23.1:

Validator can now configure their registration interval

Validators periodically register their address to the name registry.
The period was previously fixed at two minutes.
It can now be configured, and the default has been kept at two minutes.

API methods accepting a Set will now format as a JSON array

Previously, Set in parameters or return value were formatted following Agora's internal representation.
This made it hard and brittle for external tools to interact with those specific endpoints.
Set now always format as a JSON array.

Fixed a registry crash when a query didn't contain a dot

An oversight in the registry led to an OutOfBoundError when a DNS query for a name
such as "foo" (instead of "foo.bar") was performed.
The registry will no longer crash and will correctly reject those.

BlockHeader: Fields missing_validators and random_seed have been replaced with preimages

Previously, the block header included those two fields that were derived from the pre-image.
However, certain consensus rules required the pre-images to be available,
leading to complex situation where some blocks could be fetched but not their corresponding pre-images.
The pre-images are now directly included in the block header.
To save disk space, they can later be compressed by omitting all but the last pre-images
for long-living validators.

Transaction pool will now reject double spend with different unlock_age

Previously, the transaction pool would not detect a double spend that
came with a different unlock_age value.

Name registry now have persistence

The name registry will now persist its state to the cache database,
leading to faster resume time and easier maintainance.

Fixed a bug where duplicated addresses would be returned in GET /node_info

Under some configurations, some addresses could be returned with and without a trailing slash.
This has now been fixed and addresses will always be returned without a trailing slash.

Block signature scheme has been changed

The block signature scheme has been changed to remove a vulnerability which could allow
an attacker to derive a node private's key.
The r value is now longer offset, instead s is set to be the pre-image's value,
and a valid signature requires that R be revealed.