Overview
This is the v1.5.1 release for the Gateway. API docs are on Redocly here: https://radix-babylon-gateway-api.redoc.ly/
License
The Babylon Gateway code is released under the Radix License. Binaries/Executable components are licensed under the Radix Software EULA.
Notes for Gateway runners
Caution
This release MUST NOT be upgraded onto your existing Network Gateway installation as it has an incompatible database schema. There’s no database migration available. What it means is that this release MUST be deployed with an empty (wiped out) database. This will result in a lengthy (approx. 4 - 16 hours depending on your infrastructure) process of resynchronization. During the resynchronization majority of the GW API endpoints will not be available.
Warning
There will be one more upcoming release (probably v1.6.0
). It will be required to update Gateway to that version before bottlenose protocol version will be enacted on network.
What’s new?
Caution
Breaking Changes:
- Changed ordering of the collection returned by the
/state/key-value-store/keys
endpoint. Entries are no longer ordered by their last modification state version but rather by their first appearance on the network, descending. - Property
total_count
of the/state/key-value-store/keys
endpoint is no longer provided. - Renamed
state.recovery_role_recovery_attempt
property fromtimed_recovery_allowed_after
toallow_timed_recovery_after
returned from/state/entity/details
when querying for access controller.
- Fixed broken ledger state lookup (
at_ledger_state
) when using epoch-only constraint and given epoch did not result in any transactions at round1
. - Fixed broken (missing) package blueprint & code, and schema pagination in the
/state/entity/details
endpoint. - Fixed unstable package blueprint and code aggregation where changes could overwrite each other if they applied to the same blueprint/package within the same ingestion batch.
- Fixed validator public key and active set aggregation where unnecessary copy of the key was stored on each epoch change.
- Fixed pagination of the
/state/validators/list
endpoint where incorrectcursor
was generated previously. - Fixed invalid date-time format for some entity state properties (most notably access controllers and their
recovery_role_recovery_attempt.allow_timed_recovery_after.date_time
property) that was dependent on OS-level locale setup. - Added
ng_workers_global_loop_duration_seconds
andng_workers_node_loop_duration_seconds
histogram metrics measuring the time it took to process a single iteration of a given worker. - Changed MVC controller and action names. It has no effect on the API itself, but alters prometheus
controler
andaction
labels.StateKeyValueStoreController.Items
renamed toStateKeyValueStoreController.KeysPage
,StateNonFungibleController.Ids
renamed toStateNonFungibleController.IdsPage
,StatisticsController.Uptime
renamed toStatisticsController.ValidatorsUptime
,StateController
renamed toStateEntityController
,ValidatorStateController
renamed toStateValidatorsComponent
.
- Upgraded to .NET 8:
- Upgraded runtime and libraries
- Dockerfiles no longer specify custom
app
user as it comes built-in with official base images. - Removed now-obsolete or no-longer-needed code.
- Prometheus integration exposes new built-in metric
httpclient_request_duration_seconds_bucket
for all registered HTTP clients.
- Reworked internal data aggregation mechanism to ease up maintenance burden.
- Reworked KVStores storage and changed API surface of this area to improve overall performance.
API Changes
- Changed the
MetadataInstantValue
type and its array counterpartMetadataInstantArrayValue
to clamp thevalue
property within the RFC-3339 compatible date-time year range1583
to9999
. Added aunix_timestamp_seconds
property to these types to give the exact unclamped numerical timestamp value. - Added
role_assignments
property to theStateEntityDetailsResponsePackageDetails
. All global component details returned by the/state/entity/details
endpoint contain role assignments now. - Added
owning_vault_parent_ancestor_address
andowning_vault_global_ancestor_address
properties to the response of the/state/non-fungible/location
endpoint. - Added new filter
manifest_badges_presented_filter
to the/stream/transactions
endpoint which allows filtering transactions by badges presented. - Added new opt-in
component_royalty_config
to the/state/entity/details
endpoint. When enabledroyalty_config
will be returned for each component. - Use strong type definition for the
royalty_config
property of package blueprint and general components details. This is a change to OAS definition only and does not impact returned data format. - Introduced upper limit to the overall number of the filters used in the
/stream/transactions
endpoint, defaults to 10. - Added new endpoint
/state/account/page/resource-preferences
which allows to read resource preferences for given account. - Added new endpoint
/state/account/page/authorized-depositors
which allows to read authorized depositors for given account. - Added new endpoint
/state/package/page/blueprints
returning paginable iterator over package blueprints. - Added new endpoint
/state/package/page/codes
returning paginable iterator over package codes. - Added new endpoint
/state/entity/page/schemas
returning paginable iterator over entity schemas. - Added new endpoint
/transaction/account-deposit-pre-validation
which allows to pre-validate if deposits can succeed based on account deposit settings and badges presented, before submitting the transaction. - Fixed wrong request validation logic for maximum number of items in
/state/non-fungible/data
,/state/non-fungible/data
and/state/non-fungible/data
endpoints. limit_per_page
request parameter is no longer validated against*MaxPageSize
API configuration parameters. In case requested limit exceeds API configuration maximum value is used. This change is meant to reduce clients need to understand and honor API configuration.
Database changes
- Added new
BadgePresented
toLedgerTransactionMarkerOperationType
enum and started collecting transaction markers for badges presented in transactions. - Column
royalty_amount
ofcomponent_method_royalty_entry_history
table contains now the JSON payload representing the royalty amount without wrapping object. - Changed schema area:
- renamed
schema_history
table toschema_entry_definition
, - introduced
schema_entry_aggregate_history
table that contains aggregate history of schema entries under given entity.
- renamed
- Changed KVStore area:
- dropped
key_value_store_aggregate_history
table altogether as we no longer keep track of aggregated KVStores, - introduced
key_value_store_entry_definition
table that defines each and every KVStore entry, - table
key_value_store_entry_history
references rows fromkey_value_store_entry_definition
ratherkey
s themselves.
- dropped
Note to Integrators
Please note that the Babylon Core API on the Node is more powerful than on Olympia.
Integrators looking to prepare for the Radix Babylon launch should start by considering if running their own node and using the Core API would work instead of running a Gateway and using the Gateway API.
Please see the guide for integrators here.
Running just a node is simpler than running a node and Gateway, and the Core API has a "long term support" section of the API, designed for tracking fungible balances and accounts, which is guaranteed to be compatible with mainnet launch - enabling integrators to prepare for mainnet launch immediately.
Docker Images
This release is available as tag v1.5.1
on dockerhub, for the following images: