我无法通过 cardano-submit-api 发送交易,它显示“WithdrawalsNotInRewardsDELEGS”,暗示错误的奖励,或试图提取并非所有奖励。 我检查了所有部分,可能出了问题。 之后,我比较了从 db-sync 和 yoroi api 获得的随机地址的奖励。 这些是一些不匹配的(在lovelaces中):
每行代表来自该 SQL 的 db-sync 奖励:
SELECT
(SELECT COALESCE(SUM(rewards.amount), 0) FROM
(
SELECT amount FROM reward WHERE addr_id=$1
UNION ALL
SELECT amount FROM reserve WHERE addr_id=$1
) rewards
) - (
SELECT COALESCE(SUM(amount), 0) FROM withdrawal WHERE addr_id=$1
)
AS "remainingRewards"
减去来自 yoroi api 的奖励。
@erikd发生了什么?
编辑:yoroi 也从 db-sync 中获取它,所以这些可能是两个错误值的差异。 无论哪种方式,错误都源于 db-sync
我们在 Yoroi 也注意到了这一点
以下是 7 个不同的 cardano-db-sync 实例的结果,其中实际值为 30428426
backend#1 30428424
backend#2 30428424
backend#3 30428424
backend#4 30428423
backend#5 30428430
backend#6 30428424
backend#7 30428426
如您所见,只有 1/7 的后端得到了正确的结果
我们已经仔细检查了这些不正确的值是否存储在 SQL 数据库中,所以我们知道这个问题不在我们的堆栈中
@SebastienGllmt什么? 不同的db-sync
实例给出不同的结果??? 他们都运行相同的版本吗?
@xdzurman你能简化那个 SQL 查询吗? 最好有三栏,奖励,储备和差异。
我怀疑查询实际上是错误的。 奖励表如下所示(我的实例当前未同步):
cexplorer=# select * from reward ;
id | addr_id | amount | epoch_no | pool_id | block_id
----+---------+--------+----------+---------+----------
(0 rows)
因此,对于每个epoch都有一个奖励金额(即该 epoch 奖励的快照),如果没有正确探索它,我什至不确定reserve
表中有什么。
@erikd这是我们在 7 个不同的后端运行的查询,它们给出了不同的结果。 它们都是相同版本的 cardano-db-sync 和相同的节点版本
select stake_address.hash_raw as "stakeAddress"
, "totalReward".*
from stake_address
left outer join (
SELECT addr_id, amount
FROM reward
) as "totalReward" on stake_address.id = "totalReward".addr_id
where encode(stake_address.hash_raw, 'hex') = 'e1567298bc998d188d936f105f9e9e616f1980adacc06fc5732a57f9cc'
此 SQL 查询中指定的地址只获得过一次奖励,因此更易于使用。
我怀疑查询实际上是错误的。 奖励表如下所示(我的实例当前未同步):
cexplorer=# select * from reward ; id | addr_id | amount | epoch_no | pool_id | block_id ----+---------+--------+----------+---------+---------- (0 rows)
因此,对于每个epoch都有一个奖励金额(即该 epoch 奖励的快照),如果没有正确探索它,我什至不确定
reserve
表中有什么。
我假设 - 储备金持有 ITN 奖励。 奖励表指定在该时期开始时收到的奖励。 所以剩余的奖励是所有奖励的总和,它的奖励减去提款。
我们发现了类似的问题。 137 名代表已经撤回了 500 个 ADA。 显示在db-sync里面的db表中退出。 在那之后,他们中的一些人得到了负余额。 要么这与这个问题有关,要么我们做错了什么。
例如:
一个已经提取了 500 ADA,但根据 db-sync 仅获得了 200 ADA。 我的示例适用于 214 或之后的时代
@mmahut我不确定。 #413 上修复的错误也很容易导致此问题。 或者可能存在不止一个问题。 @xdzurman ?
@mmahut这是跨不同的实例? 我需要一种简单的方法来生成它,并且拥有多个实例并不是一个简单的复制案例。
对不起,我确实提前打电话了。 看起来问题已解决,我正在监控它,并会在几天后报告。
它看起来对我来说也是固定的,现在关闭。 如果出现任何问题,请随时重新打开。
最有用的评论
对不起,我确实提前打电话了。 看起来问题已解决,我正在监控它,并会在几天后报告。