Skip to content
relayer-rewards.js 1.08 KiB
Newer Older
async function run(nodeName, networkInfo, args) {
    const {wsUri, userDefinedTypes} = networkInfo.nodesByName[nodeName];
    const api = await zombie.connect(wsUri, userDefinedTypes);

    // TODO: could be replaced with https://github.com/polkadot-js/api/issues/4930 (depends on metadata v15) later
    const relayerAccountAddress = args[0];
    const laneId = args[1];
    const bridgedChainId = args[2];
    const relayerFundOwner = args[3];
    const expectedRelayerReward = BigInt(args[4]);
    while (true) {
        const relayerReward = await api.query.bridgeRelayers.relayerRewards(
            relayerAccountAddress,
            { laneId: laneId, bridgedChainId: bridgedChainId, owner: relayerFundOwner }
        );
        if (relayerReward.isSome) {
            const relayerRewardBalance = relayerReward.unwrap().toBigInt();
            if (relayerRewardBalance > expectedRelayerReward) {
                return relayerRewardBalance;
            }
        }

        // else sleep and retry
        await new Promise((resolve) => setTimeout(resolve, 12000));
    }
}

module.exports = { run }