Merge branch 'master' into update_node_matrix
This commit is contained in:
		
						commit
						38162e1af2
					
				@ -14,11 +14,11 @@ describe('Mempool Difficulty Adjustment', () => {
 | 
				
			|||||||
          750134,                         // Current block height
 | 
					          750134,                         // Current block height
 | 
				
			||||||
          0.6280047707459726,             // Previous retarget % (Passed through)
 | 
					          0.6280047707459726,             // Previous retarget % (Passed through)
 | 
				
			||||||
          'mainnet',                      // Network (if testnet, next value is non-zero)
 | 
					          'mainnet',                      // Network (if testnet, next value is non-zero)
 | 
				
			||||||
          0,                              // If not testnet, not used
 | 
					          0,                              // Latest block timestamp in seconds (only used if difficulty already locked in)
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        { // Expected Result
 | 
					        { // Expected Result
 | 
				
			||||||
          progressPercent: 9.027777777777777,
 | 
					          progressPercent: 9.027777777777777,
 | 
				
			||||||
          difficultyChange: 12.562233927411782,
 | 
					          difficultyChange: 13.180707740199772,
 | 
				
			||||||
          estimatedRetargetDate: 1661895424692,
 | 
					          estimatedRetargetDate: 1661895424692,
 | 
				
			||||||
          remainingBlocks: 1834,
 | 
					          remainingBlocks: 1834,
 | 
				
			||||||
          remainingTime: 977591692,
 | 
					          remainingTime: 977591692,
 | 
				
			||||||
@ -41,7 +41,7 @@ describe('Mempool Difficulty Adjustment', () => {
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        { // Expected Result is same other than timeOffset
 | 
					        { // Expected Result is same other than timeOffset
 | 
				
			||||||
          progressPercent: 9.027777777777777,
 | 
					          progressPercent: 9.027777777777777,
 | 
				
			||||||
          difficultyChange: 12.562233927411782,
 | 
					          difficultyChange: 13.180707740199772,
 | 
				
			||||||
          estimatedRetargetDate: 1661895424692,
 | 
					          estimatedRetargetDate: 1661895424692,
 | 
				
			||||||
          remainingBlocks: 1834,
 | 
					          remainingBlocks: 1834,
 | 
				
			||||||
          remainingTime: 977591692,
 | 
					          remainingTime: 977591692,
 | 
				
			||||||
@ -54,6 +54,29 @@ describe('Mempool Difficulty Adjustment', () => {
 | 
				
			|||||||
          expectedBlocks: 161.68833333333333,
 | 
					          expectedBlocks: 161.68833333333333,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
 | 
					      [ // Vector 3 (mainnet lock-in (epoch ending 788255))
 | 
				
			||||||
 | 
					        [ // Inputs
 | 
				
			||||||
 | 
					          dt('2023-04-20T09:57:33.000Z'), // Last DA time (in seconds)
 | 
				
			||||||
 | 
					          dt('2023-05-04T14:54:09.000Z'), // Current time (now) (in seconds)
 | 
				
			||||||
 | 
					          788255,                         // Current block height
 | 
				
			||||||
 | 
					          1.7220298879531821,             // Previous retarget % (Passed through)
 | 
				
			||||||
 | 
					          'mainnet',                      // Network (if testnet, next value is non-zero)
 | 
				
			||||||
 | 
					          dt('2023-05-04T14:54:26.000Z'), // Latest block timestamp in seconds
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        { // Expected Result
 | 
				
			||||||
 | 
					          progressPercent: 99.95039682539682,
 | 
				
			||||||
 | 
					          difficultyChange: -1.4512637555574193,
 | 
				
			||||||
 | 
					          estimatedRetargetDate: 1683212658129,
 | 
				
			||||||
 | 
					          remainingBlocks: 1,
 | 
				
			||||||
 | 
					          remainingTime: 609129,
 | 
				
			||||||
 | 
					          previousRetarget: 1.7220298879531821,
 | 
				
			||||||
 | 
					          previousTime: 1681984653,
 | 
				
			||||||
 | 
					          nextRetargetHeight: 788256,
 | 
				
			||||||
 | 
					          timeAvg: 609129,
 | 
				
			||||||
 | 
					          timeOffset: 0,
 | 
				
			||||||
 | 
					          expectedBlocks: 2045.66,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
    ] as [[number, number, number, number, string, number], DifficultyAdjustment][];
 | 
					    ] as [[number, number, number, number, string, number], DifficultyAdjustment][];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (const vector of vectors) {
 | 
					    for (const vector of vectors) {
 | 
				
			||||||
 | 
				
			|||||||
@ -34,11 +34,12 @@ export function calcDifficultyAdjustment(
 | 
				
			|||||||
  const remainingBlocks = EPOCH_BLOCK_LENGTH - blocksInEpoch;
 | 
					  const remainingBlocks = EPOCH_BLOCK_LENGTH - blocksInEpoch;
 | 
				
			||||||
  const nextRetargetHeight = (blockHeight >= 0) ? blockHeight + remainingBlocks : 0;
 | 
					  const nextRetargetHeight = (blockHeight >= 0) ? blockHeight + remainingBlocks : 0;
 | 
				
			||||||
  const expectedBlocks = diffSeconds / BLOCK_SECONDS_TARGET;
 | 
					  const expectedBlocks = diffSeconds / BLOCK_SECONDS_TARGET;
 | 
				
			||||||
 | 
					  const actualTimespan = (blocksInEpoch === 2015 ? latestBlockTimestamp : nowSeconds) - DATime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let difficultyChange = 0;
 | 
					  let difficultyChange = 0;
 | 
				
			||||||
  let timeAvgSecs = blocksInEpoch ? diffSeconds / blocksInEpoch : BLOCK_SECONDS_TARGET;
 | 
					  let timeAvgSecs = blocksInEpoch ? diffSeconds / blocksInEpoch : BLOCK_SECONDS_TARGET;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  difficultyChange = (BLOCK_SECONDS_TARGET / timeAvgSecs - 1) * 100;
 | 
					  difficultyChange = (BLOCK_SECONDS_TARGET / (actualTimespan / (blocksInEpoch + 1)) - 1) * 100;
 | 
				
			||||||
  // Max increase is x4 (+300%)
 | 
					  // Max increase is x4 (+300%)
 | 
				
			||||||
  if (difficultyChange > 300) {
 | 
					  if (difficultyChange > 300) {
 | 
				
			||||||
    difficultyChange = 300;
 | 
					    difficultyChange = 300;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user