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