Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -138,7 +138,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -139,7 +139,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -135,7 +135,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -136,7 +136,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -138,7 +138,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -139,7 +139,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -138,7 +138,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -139,7 +139,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -138,7 +138,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -139,7 +139,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -138,7 +138,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -139,7 +139,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def bls12_g1_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1ADD)

# OPERATION
p1 = bytes_to_g1(buffer_read(data, U256(0), U256(128)))
Expand Down Expand Up @@ -138,7 +138,7 @@ def bls12_map_fp_to_g1(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G1MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G1MAP)

# OPERATION
fp = int.from_bytes(data, "big")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def bls12_g2_add(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2ADD))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2ADD)

# OPERATION
p1 = bytes_to_g2(buffer_read(data, U256(0), U256(256)))
Expand Down Expand Up @@ -139,7 +139,7 @@ def bls12_map_fp2_to_g2(evm: Evm) -> None:
raise InvalidParameter("Invalid Input Length")

# GAS
charge_gas(evm, Uint(GasCosts.PRECOMPILE_BLS_G2MAP))
charge_gas(evm, GasCosts.PRECOMPILE_BLS_G2MAP)

# OPERATION
field_element = bytes_to_fq2(data)
Expand Down
57 changes: 54 additions & 3 deletions src/ethereum_spec_tools/lint/lints/glacier_forks_hygiene.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ def __init__(self) -> None:
"gray_glacier": 11400000,
}

@staticmethod
def _needs_lint(fork_name: str) -> bool:
return (
fork_name == "dao_fork"
or fork_name.endswith("_glacier")
or fork_name.startswith("bpo")
)

def lint(
self, forks: List[Hardfork], position: int
) -> Sequence[Diagnostic]:
Expand All @@ -66,7 +74,7 @@ def lint(
# Nothing to compare against!
return []

if fork_name != "dao_fork" and not fork_name.endswith("_glacier"):
if not self._needs_lint(fork_name):
# Nothing to compare against or non-glacier fork!
return []

Expand Down Expand Up @@ -139,9 +147,13 @@ def compare(
)
continue

if item == "BOMB_DELAY_BLOCKS":
if fork_name.endswith("_glacier") and item == "BOMB_DELAY_BLOCKS":
previous_item.value.value = self.delay_blocks[fork_name]

if fork_name.startswith("bpo"):
if item.startswith("GasCosts.BLOB_"):
continue

if not compare_ast(previous_item, current_item):
add_diagnostic(
diagnostics,
Expand Down Expand Up @@ -237,7 +249,46 @@ def visit_ClassDef(self, klass: ast.ClassDef) -> None:
"""
Visit a class.
"""
self._insert(klass.name, klass)
self.path.append(klass.name)
super().generic_visit(klass)
popped = self.path.pop()
assert popped == klass.name

def visit_Name(self, node: ast.Name) -> None:
"""
Visit a name.
"""
self._insert(node.id, node)

def visit_Attribute(self, node: ast.Attribute) -> None:
"""
Visit an attribute.
"""
self._insert(node.attr, node)

def visit_Subscript(self, node: ast.Subscript) -> None:
"""
Visit a subscript.
"""
self.visit(node.value)
self.visit(node.slice)

def visit_Pass(self, node: ast.Pass) -> None:
"""
Visit a pass.
"""
pass

def visit_Tuple(self, node: ast.Tuple) -> None:
"""
Visit a tuple.
"""
for idx, child in enumerate(node.elts):
name = f"[{idx}]"
self.path.append(name)
self.visit(child)
popped = self.path.pop()
assert name == popped

def visit_Assign(self, assign: ast.Assign) -> None:
"""
Expand Down
1 change: 1 addition & 0 deletions vulture_whitelist.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@
# src/ethereum_spec_tools/lint/lints/glacier_forks_hygiene.py
GlacierForksHygiene
GlacierForksHygiene.visit_AnnAssign
GlacierForksHygiene.visit_Pass

# src/ethereum_spec_tools/lint/lints/glacier_forks_hygiene.py
ImportHygiene
Expand Down
Loading