v0.24.0: Updated block signature scheme, registry persistences, block include pre-images
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.