This commit is contained in:
Giulio 2024-10-10 22:35:43 +02:00
parent 16bf471151
commit f2ecd7a833
2 changed files with 45 additions and 0 deletions

View file

@ -0,0 +1,21 @@
package eip7783
import "math/big"
/*
Implementation of EIP-7783:
def compute_gas_limit(blockNum: int, blockNumStart: int, initialGasLimit: int, r: int, gasLimitCap: int) -> int:
if blockNum < blockNumStart:
return initialGasLimit
else:
return min(gasLimitCap, initialGasLimit + r * (blockNum - blockNumStart))
*/
func CalcGasLimitEIP7783(blockNum, startBlockNum *big.Int, initialGasLimit, gasIncreaseRate, gasLimitCap uint64) uint64 {
if blockNum.Cmp(startBlockNum) < 0 {
return initialGasLimit
} else {
return min(gasLimitCap, initialGasLimit+gasIncreaseRate*(blockNum.Uint64()-startBlockNum.Uint64()))
}
}

View file

@ -0,0 +1,24 @@
package eip7783
import (
"math/big"
"testing"
)
func TestCalcGasLimitEIP7783Test(t *testing.T) {
// Do multiple tests here
tests := []struct {
blockNum, startBlockNum *big.Int
initialGasLimit, gasIncreaseRate, gasLimitCap, expectedGasLimit uint64
}{
{big.NewInt(100), big.NewInt(50), 100000, 10, 200000, 100500},
{big.NewInt(100), big.NewInt(100), 100000, 10, 200000, 100000},
{big.NewInt(99), big.NewInt(100), 100000, 10, 200000, 100000},
}
for i, test := range tests {
if have, want := CalcGasLimitEIP7783(test.blockNum, test.startBlockNum, test.initialGasLimit, test.gasIncreaseRate, test.gasLimitCap), test.expectedGasLimit; have != want {
t.Errorf("test %d: have %d want %d, ", i, have, want)
}
}
}