Behind the scenes of RadixScan
OUTDATED, will be corrected ASAP
In this section we would like to describe the setup, and structure of RadixScan for those who are interested.
Web and Data
Hosting / Server location:
The site is hosted at
, as a Cloudflare page.
Our main validator is located in an AWS data center in South America, while the backup node is located at
RadixScan can be reached via the following domains: RadixScan.io
. The .com domain was kindly given to us by Wylie from Radnode.io (see
In collaboration with RadixCharts, we have developed an API for data collection. This API is integral to accessing various data points efficiently. For detailed specifications and functionalities of the API, please refer to the documentation available at
In addition to utilizing the API, we employ Gateway Nodes for conducting queries, provided they support the required requests. Gateway Nodes act as access points that facilitate communication between different networks, improving the efficiency of data transmission.
Per epoch there are 10,000 views on the ledger, the percentage progress is calculated as View / 100.
For each new epoch, the top 100 validators by stake are selected for consensus and receive distributions corresponding to the participation in the consensus (Proposals). The possible participation in the consensus is proportional to the stake of the validator. During the distribution missed proposals are deducted. The payout is reduced in the range from 100% of the possible proposals up to 98%. The maximum payout occurs when all possible proposals have been made, at a value of 98% or less no payout occurs. The StakeTop100 value shows how many of the staked XRD are involved in the consensus via the Top100 validators.
Per year about 300MXRD are distributed to the validators. To estimate the possible APY, the 300MXRD are put in relation to the XRD accumulated in the Top100. The actual number depends on the duration of each epoch. If the epoch duration is shorter than the theoretical value, more XRD are distributed per year, which increases the APY. If the epoch duration is longer, this results in a reduction of the distribution.
In the last 500 epochs the average epoch duration was: ####
Theoretical epoch duration: 1890.36 s
((365.25 * 24 * 3600) / 16.694 epochs per Year (13k before 'olympia-rpf-001' fork).
This results in a correction factor of: 0.91
for the APY calculation
Not included in the value are deductions for missed proposals and validator fees. The APY value fluctuates over time, if more XRD are staked the value decreases, if XRD are unstaked it increases.
The nominal fee indicates which share of the staking rewards will go to the validator.
Example: With an APY of 10% and a validator fee of 1%, the APY of the staker is 9.9% (NOT
The effective fees indicate how high the fees are for the staker when staking with this validator. They are calculated as the product of the nominal fees and the APY last 30 days.
Effective fee = Nominal fee * APY last 30 days
If the value "NA" is displayed, the effective fee cannot be calculated, e.g. because the validator does not allow external stakes or has not been active for more than 30 days.
APY last 30 days:
As soon as a validator has allowed stake, we have staked 100XRD. We record the value of this stake once at the beginning of a new epoch in the database.
From the ratio value 30 days ago to current value we calculate the APY.
APY = 100* ((ValueNow - ValueOld)/ValueOld * 365.25 * 24 * 3600) / (TimestampNow - TimestampOld)
ValueOld is the value 30 days ago, ValueNow the current value and analogously the timestamps
In the value calculated in this way, all penalties due to missed epochs etc. are taken into account since the values are read directly from the ledger.
If the value "NA" is displayed, the APY cannot be calculated, e.g. because the validator does not allow external stakes or has not been active for more than 30 days.
Currently (before the Xi'an network update) the proposals are only created by the top 100 validators by stake.
The network determines the uptime as the ratio between made and assigned proposals.
If no proposals were assigned to the validator because it did not make it into the top 100 by stake,
the value 0 is displayed (the calculation is done over 150 epochs).
A value of 0 does not
mean that this validator is not reliable!
Please also include this validators in your staking decision to achieve an as equal as possible stake distribution.
For the Initial stake value, all stake transactions are added and the unstake transactions are subtracted for each validator in ascending order.
A negative intermediate value is set to 0 (Stake 100 ; Unstake 104 (Stake + Reward) -> =0 ; Stake 50 ; results in a value of 50).
The interpretation is like an account: Deposit, interest is paid and after everything is withdrawn the balance is zero.
A negative balance would mean that something is owed to the bank.
Transaction size on Ledger:
The size of the transactions on the ledger is calculated based on the fee for the transaction.
The fee consists of the base fee and an amount per byte.
The following table shows the base fees on the ledger for the different transactions
(sending tokens has no base fee):
|| Fee amount|
|Overall transaction size (including messages)
|| 0.0002 XRD per byte|
|Stake tokens to a validator
|| 0.5 XRD per stake action|
|Unstake tokens from a validator
|| 0.5 XRD per unstake action|
|Register a validator node to the network
|| 5 XRD per registration action|
|Update a validator node’s metadata
|| 5 XRD per item of metadata updated|
|Create a new token type with its own symbol
, name, and supply
| 100 XRD per token type creation|
The size of the transaction is calculated by subtracting the base fee from the transaction
fee and dividing the remainder by the fee per byte. For complex transactions, the type of each action is taken into account.
When the page is called, the current price is requested via the API provided by the Exchanges.
US dollars are used as the common basis whenever possible. If this value cannot be provided by an exchange, the price basis is given in brackets.