@@ -2,12 +2,14 @@ import { expect } from 'chai'
2
2
import { constants , BigNumber } from 'ethers'
3
3
import { BigNumber as BN } from 'bignumber.js'
4
4
5
+ import { deployContract } from '../lib/deployment'
5
6
import { NetworkFixture } from '../lib/fixtures'
6
7
7
8
import { Curation } from '../../build/typechain/contracts/Curation'
8
9
import { EpochManager } from '../../build/typechain/contracts/EpochManager'
9
10
import { GraphToken } from '../../build/typechain/contracts/GraphToken'
10
11
import { RewardsManager } from '../../build/typechain/contracts/RewardsManager'
12
+ import { RewardsManagerMock } from '../../build/typechain/contracts/RewardsManagerMock'
11
13
import { Staking } from '../../build/typechain/contracts/Staking'
12
14
13
15
import {
@@ -45,6 +47,7 @@ describe('Rewards', () => {
45
47
let epochManager : EpochManager
46
48
let staking : Staking
47
49
let rewardsManager : RewardsManager
50
+ let rewardsManagerMock : RewardsManagerMock
48
51
49
52
const subgraphDeploymentID1 = randomHexBytes ( )
50
53
const subgraphDeploymentID2 = randomHexBytes ( )
@@ -128,6 +131,11 @@ describe('Rewards', () => {
128
131
governor . signer ,
129
132
) )
130
133
134
+ rewardsManagerMock = ( ( await deployContract (
135
+ 'RewardsManagerMock' ,
136
+ governor . signer ,
137
+ ) ) as unknown ) as RewardsManagerMock
138
+
131
139
// 5% minute rate (4 blocks)
132
140
await rewardsManager . connect ( governor . signer ) . setIssuanceRate ( ISSUANCE_RATE_PER_BLOCK )
133
141
@@ -606,4 +614,16 @@ describe('Rewards', () => {
606
614
. withArgs ( indexer1 . address , allocationID , await epochManager . currentEpoch ( ) )
607
615
} )
608
616
} )
617
+
618
+ describe ( 'pow' , function ( ) {
619
+ it ( 'exponentiation works under normal boundaries (annual rate from 1% to 700%, 90 days period)' , async function ( ) {
620
+ const baseRatio = toGRT ( '0.000000004641377923' ) // 1% annual rate
621
+ const timePeriods = ( 60 * 60 * 24 * 10 ) / 15 // 90 days in blocks
622
+ for ( let i = 0 ; i < 50 ; i = i + 4 ) {
623
+ const r = baseRatio . mul ( i * 4 ) . add ( toGRT ( '1' ) )
624
+ const h = await rewardsManagerMock . pow ( r , timePeriods , toGRT ( '1' ) )
625
+ console . log ( '\tr:' , formatGRT ( r ) , '=> c:' , formatGRT ( h ) )
626
+ }
627
+ } )
628
+ } )
609
629
} )
0 commit comments