# Ithaca reward calculation by indexers
We are showing discrepancies between reward calculations, based on ithacanet baker `tz1foXHgRzdYdaLgX6XhpZGxbBv42LZ6ubvE`, during cycle 75.
### tzstats
The command to query tzstats rewards api directly is:
```
curl --silent 'https://api.ithaca.tzstats.com/tables/income.csv?address=tz1foXHgRzdYdaLgX6XhpZGxbBv42LZ6ubvE&cycle=75'| csvlook | less -S
```
Running this query, we get the following values:
| | |
| -------- | -------- |
| total income | 2222.273 |
| baking income | 658.248 |
| endorsing income| 1204.912|
| accusation income | 320 |
| fees income | 39.112|
Baking income + fee income = 658.248+39.112 = 697.36
### tzkt
Query the rewards with
```
curl --silent https://api.ithacanet.tzkt.io/v1/rewards/split/tz1foXHgRzdYdaLgX6XhpZGxbBv42LZ6ubvE/75 | jq
```
| | |
| -- | -- |
| blockRewards | 1084.634688 |
| endorsementRewards | 1204.912128 |
| blockFees | 39.112428 |
| doubleBakingRewards | 320 |
Block rewards + block fees = 1084.634688+39.112428 = 1123.747116
### RPC
We run TRD on the ithaca branch:
`python src/main.py --dry_run -b ithaca2_actual/ -M 3 -R -3 -P rpc -N ITHACANET`
The RPC scans the blocks and outputs the given results:
| | |
| -- | -- |
| endorsementRewards | 1204.912128 |
| payload production reward and fees | 700.216458 |
| block producer bonus | 426.386281 |
| double baking rewards | **unimplemented yet**
Payload production reward and fees + block producer bonus = 700.216458 + 426.386281 = 1126.602739
## Conclusion
tzkt, tzstats and my method all disagree with the block rewards:
| | TZKT | Tzstats | TRD RPC scan |
| --| -- | -- | -- |
| Block reward + bonus + fee | 1123.747116 | 697.36 | 1126.602739 |
### Appendix: TRD RPC methodology
I query all blocks for which we have a baking right at round <= 2.
I scan all these blocks.
For blocks where we are the author, I add the block producer reward and fees from the metadata.
For blocks where we are the producer, I add the block bonus from the metadata.
The log output lists the stolen blocks, and for each of them, prints out a line if we are the block producer but not payload producer:
```
2022-03-30 11:43:14,071 - producer - INFO - Scanning blocks (0/356).
2022-03-30 11:43:17,157 - producer - INFO - Found stolen baking slot at level 307285, round 1.
2022-03-30 11:43:17,499 - producer - INFO - Scanning blocks (10/356).
2022-03-30 11:43:18,186 - producer - INFO - Found stolen baking slot at level 307321, round 2.
2022-03-30 11:43:20,242 - producer - INFO - Found stolen baking slot at level 307380, round 1.
2022-03-30 11:43:20,936 - producer - INFO - Scanning blocks (20/356).
2022-03-30 11:43:22,989 - producer - INFO - Found stolen baking slot at level 307511, round 1.
2022-03-30 11:43:24,019 - producer - INFO - Found stolen baking slot at level 307544, round 1.
2022-03-30 11:43:24,364 - producer - INFO - Scanning blocks (30/356).
2022-03-30 11:43:27,808 - producer - INFO - Found stolen baking slot at level 307630, round 1.
2022-03-30 11:43:27,808 - producer - INFO - Scanning blocks (40/356).
2022-03-30 11:43:29,178 - producer - INFO - Found stolen baking slot at level 307654, round 2.
2022-03-30 11:43:31,236 - producer - INFO - Scanning blocks (50/356).
2022-03-30 11:43:34,818 - producer - INFO - Scanning blocks (60/356).
2022-03-30 11:43:37,224 - producer - INFO - Found stolen baking slot at level 308032, round 1.
2022-03-30 11:43:38,423 - producer - INFO - Scanning blocks (70/356).
2022-03-30 11:43:38,958 - producer - INFO - Found stolen baking slot at level 308056, round 2.
2022-03-30 11:43:42,333 - producer - INFO - Found stolen baking slot at level 308157, round 1.
2022-03-30 11:43:42,333 - producer - INFO - Scanning blocks (80/356).
2022-03-30 11:43:46,130 - producer - INFO - Scanning blocks (90/356).
2022-03-30 11:43:48,869 - producer - INFO - Found stolen baking slot at level 308341, round 1.
2022-03-30 11:43:49,557 - producer - INFO - Scanning blocks (100/356).
2022-03-30 11:43:50,928 - producer - INFO - Found stolen baking slot at level 308395, round 1.
2022-03-30 11:43:53,092 - producer - INFO - Scanning blocks (110/356).
2022-03-30 11:43:56,811 - producer - INFO - Scanning blocks (120/356).
2022-03-30 11:44:00,259 - producer - INFO - Scanning blocks (130/356).
2022-03-30 11:44:03,704 - producer - INFO - Found stolen baking slot at level 308737, round 1.
2022-03-30 11:44:03,704 - producer - WARNING - We are block proposer (tz1foXHgRzdYdaLgX6XhpZGxbBv42LZ6ubvE) but not payload proposer (tz1RMtwyUqVYUEMKgMi49Zu6UfjGCxsHiiU6) for block level 308737, round 1.
2022-03-30 11:44:03,705 - producer - INFO - Scanning blocks (140/356).
2022-03-30 11:44:07,194 - producer - INFO - Scanning blocks (150/356).
2022-03-30 11:44:10,673 - producer - INFO - Scanning blocks (160/356).
2022-03-30 11:44:14,505 - producer - INFO - Scanning blocks (170/356).
2022-03-30 11:44:18,015 - producer - INFO - Scanning blocks (180/356).
2022-03-30 11:44:20,435 - producer - INFO - Found stolen baking slot at level 309160, round 1.
2022-03-30 11:44:21,462 - producer - INFO - Scanning blocks (190/356).
2022-03-30 11:44:24,902 - producer - INFO - Scanning blocks (200/356).
2022-03-30 11:44:28,342 - producer - INFO - Scanning blocks (210/356).
2022-03-30 11:44:29,027 - producer - INFO - Found stolen baking slot at level 309368, round 1.
2022-03-30 11:44:31,821 - producer - INFO - Scanning blocks (220/356).
2022-03-30 11:44:35,654 - producer - INFO - Scanning blocks (230/356).
2022-03-30 11:44:39,107 - producer - INFO - Scanning blocks (240/356).
2022-03-30 11:44:42,572 - producer - INFO - Scanning blocks (250/356).
2022-03-30 11:44:44,312 - producer - INFO - Found stolen baking slot at level 309927, round 1.
2022-03-30 11:44:46,028 - producer - INFO - Scanning blocks (260/356).
2022-03-30 11:44:49,482 - producer - INFO - Scanning blocks (270/356).
2022-03-30 11:44:53,030 - producer - INFO - Scanning blocks (280/356).
2022-03-30 11:44:54,748 - producer - INFO - Found stolen baking slot at level 310239, round 1.
2022-03-30 11:44:56,780 - producer - INFO - Scanning blocks (290/356).
2022-03-30 11:44:59,879 - producer - INFO - Found stolen baking slot at level 310421, round 1.
2022-03-30 11:44:59,880 - producer - WARNING - We are block proposer (tz1foXHgRzdYdaLgX6XhpZGxbBv42LZ6ubvE) but not payload proposer (tz1dqPQn5HXNJ7yjcqBx2w6sozjPXTV1kpfh) for block level 310421, round 1.
2022-03-30 11:45:00,220 - producer - INFO - Scanning blocks (300/356).
2022-03-30 11:45:03,646 - producer - INFO - Scanning blocks (310/356).
2022-03-30 11:45:07,067 - producer - INFO - Scanning blocks (320/356).
2022-03-30 11:45:10,515 - producer - INFO - Scanning blocks (330/356).
2022-03-30 11:45:14,157 - producer - INFO - Scanning blocks (340/356).
2022-03-30 11:45:17,576 - producer - INFO - Scanning blocks (350/356).
2022-03-30 11:45:19,650 - producer - INFO - Total block production reward and fees: 700216458.
2022-03-30 11:45:19,650 - producer - INFO - Total block bonus: 426386281.
```