Skip to content

Commit d1ecd29

Browse files
Rename chainVersion to MainChainVersion to make it more explicit.
1 parent bac23eb commit d1ecd29

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

Sources/web3swift/Web3/Web3+EIP1559.swift

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public extension Web3 {
4444
/// - current: Current block
4545
/// - Returns: True or false if block is EIP-1559 or not
4646
static func isEip1559Block(parent: Block, current: Block) -> Bool {
47-
let parentGasLimit = parent.chainVersion >= .London ? parent.gasLimit : parent.gasLimit * Web3.ElasticityMultiplier
47+
let parentGasLimit = parent.mainChainVersion >= .London ? parent.gasLimit : parent.gasLimit * Web3.ElasticityMultiplier
4848

4949
guard verifyGasLimit(parentGasLimit: parentGasLimit, currentGasLimit: current.gasLimit) else { return false }
5050

@@ -60,39 +60,41 @@ public extension Web3 {
6060
///
6161
/// Calculation for current `Block` based on parents block object only
6262
///
63-
/// If passed block isn't `ChainVersion.London` one will return
63+
/// If passed block isn't `ChainVersion.London` nil will return
6464
///
6565
/// - Parameter parent: Parent `Block`
6666
/// - Returns: Amount of expected base fee for current `Block`
67-
static func calcBaseFee(_ parent: Block) -> BigUInt {
67+
static func calcBaseFee(_ parent: Block) -> BigUInt? {
68+
guard let parentBaseFee = parent.baseFeePerGas else { return nil }
69+
6870
// If given blocks ChainVersion is lower than London — always returns InitialBaseFee
69-
guard parent.chainVersion >= .London else { return Web3.InitialBaseFee }
71+
guard parent.mainChainVersion >= .London else { return Web3.InitialBaseFee }
7072

7173
let parentGasTarget = parent.gasLimit / Web3.ElasticityMultiplier
7274

7375
if parent.gasUsed > parentGasTarget {
7476
// If the parent block used more gas than its target, the baseFee should increase.
7577
let gasUsedDelta = parent.gasUsed - parentGasTarget
76-
let baseFeePerGasDelta = max(parent.baseFeePerGas * gasUsedDelta / parentGasTarget / Web3.BaseFeeChangeDenominator, 1)
77-
let expectedBaseFeePerGas = parent.baseFeePerGas + baseFeePerGasDelta
78+
let baseFeePerGasDelta = max(parentBaseFee * gasUsedDelta / parentGasTarget / Web3.BaseFeeChangeDenominator, 1)
79+
let expectedBaseFeePerGas = parentBaseFee + baseFeePerGasDelta
7880

7981
return expectedBaseFeePerGas
8082
} else if parent.gasUsed < parentGasTarget {
8183
// Otherwise if the parent block used less gas than its target, the baseFee should decrease.
8284
let gasUsedDelta = parentGasTarget - parent.gasUsed
83-
let baseFeePerGasDelta = parent.baseFeePerGas * gasUsedDelta / parentGasTarget / Web3.BaseFeeChangeDenominator
84-
let expectedBaseFeePerGas = parent.baseFeePerGas - baseFeePerGasDelta
85+
let baseFeePerGasDelta = parentBaseFee * gasUsedDelta / parentGasTarget / Web3.BaseFeeChangeDenominator
86+
let expectedBaseFeePerGas = parentBaseFee - baseFeePerGasDelta
8587

8688
return expectedBaseFeePerGas
8789
} else {
8890
// If the parent gasUsed is the same as the target, the baseFee remains unchanged.
89-
return parent.baseFeePerGas
91+
return parentBaseFee
9092
}
9193
}
9294
}
9395

9496
public extension Web3 {
95-
enum ChainVersion: BigUInt {
97+
enum MainChainVersion: BigUInt {
9698
/// Byzantium switch block
9799
///
98100
/// Date: 16.10.2017
@@ -149,29 +151,29 @@ public extension Web3 {
149151
}
150152
}
151153

152-
static func getChainVersion(of block: BigUInt) -> ChainVersion {
154+
static func getChainVersion(of block: BigUInt) -> MainChainVersion {
153155
// Iterate given block number over each ChainVersion block numbers
154156
// to get the block's ChainVersion.
155-
if block < ChainVersion.Constantinople.mainNetFisrtBlockNumber {
157+
if block < MainChainVersion.Constantinople.mainNetFisrtBlockNumber {
156158
return .Byzantium
157159
// ~= means included in a given range
158-
} else if ChainVersion.Constantinople.mainNetFisrtBlockNumber..<ChainVersion.Istanbul.mainNetFisrtBlockNumber ~= block {
160+
} else if MainChainVersion.Constantinople.mainNetFisrtBlockNumber..<MainChainVersion.Istanbul.mainNetFisrtBlockNumber ~= block {
159161
return .Constantinople
160-
} else if ChainVersion.Istanbul.mainNetFisrtBlockNumber..<ChainVersion.MuirGlacier.mainNetFisrtBlockNumber ~= block {
162+
} else if MainChainVersion.Istanbul.mainNetFisrtBlockNumber..<MainChainVersion.MuirGlacier.mainNetFisrtBlockNumber ~= block {
161163
return .Istanbul
162-
} else if ChainVersion.MuirGlacier.mainNetFisrtBlockNumber..<ChainVersion.Berlin.mainNetFisrtBlockNumber ~= block {
164+
} else if MainChainVersion.MuirGlacier.mainNetFisrtBlockNumber..<MainChainVersion.Berlin.mainNetFisrtBlockNumber ~= block {
163165
return .MuirGlacier
164-
} else if ChainVersion.Berlin.mainNetFisrtBlockNumber..<ChainVersion.London.mainNetFisrtBlockNumber ~= block {
166+
} else if MainChainVersion.Berlin.mainNetFisrtBlockNumber..<MainChainVersion.London.mainNetFisrtBlockNumber ~= block {
165167
return .Berlin
166-
} else if ChainVersion.London.mainNetFisrtBlockNumber..<ChainVersion.ArrowGlacier.mainNetFisrtBlockNumber ~= block {
168+
} else if MainChainVersion.London.mainNetFisrtBlockNumber..<MainChainVersion.ArrowGlacier.mainNetFisrtBlockNumber ~= block {
167169
return .London
168-
} else if block >= ChainVersion.ArrowGlacier.mainNetFisrtBlockNumber {
170+
} else if block >= MainChainVersion.ArrowGlacier.mainNetFisrtBlockNumber {
169171
// Pass to the default return.
170172
}
171173
return .ArrowGlacier
172174
}
173175
}
174176

175-
extension Web3.ChainVersion: Comparable {
176-
public static func < (lhs: Web3.ChainVersion, rhs: Web3.ChainVersion) -> Bool { return lhs.mainNetFisrtBlockNumber < rhs.mainNetFisrtBlockNumber }
177+
extension Web3.MainChainVersion: Comparable {
178+
public static func < (lhs: Web3.MainChainVersion, rhs: Web3.MainChainVersion) -> Bool { return lhs.mainNetFisrtBlockNumber < rhs.mainNetFisrtBlockNumber }
177179
}

Sources/web3swift/Web3/Web3+Structures.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ public struct Block: Decodable {
370370
}
371371

372372
/// Returns chain version of mainnet block with such number
373-
var chainVersion: Web3.ChainVersion { Web3.getChainVersion(of: number) }
373+
var mainChainVersion: Web3.MainChainVersion { Web3.getChainVersion(of: number) }
374374
}
375375

376376
extension Block {

0 commit comments

Comments
 (0)