Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix: Link Balance Calculated Incorrectly #196

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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
4 changes: 2 additions & 2 deletions ethtx/providers/semantic_providers/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
from ethtx.providers.web3_provider import NodeDataProvider
from ethtx.semantics.protocols_router import amend_contract_semantics
from ethtx.semantics.solidity.precompiles import precompiles
from ethtx.semantics.standards.erc20 import ERC20_FUNCTIONS, ERC20_EVENTS
from ethtx.semantics.standards.erc20 import ERC20_FUNCTIONS, ERC20_EVENTS, ERC20_MODIFIED_EVENTS
from ethtx.semantics.standards.erc721 import ERC721_FUNCTIONS, ERC721_EVENTS


Expand Down Expand Up @@ -211,7 +211,7 @@ def _decode_standard_semantics(
if not address:
return standard, standard_semantics

if all(erc20_event in events for erc20_event in ERC20_EVENTS) and all(
if (all(erc20_event in events for erc20_event in ERC20_EVENTS) or all(erc20_event in events for erc20_event in ERC20_MODIFIED_EVENTS)) and all(
erc20_function in functions for erc20_function in ERC20_FUNCTIONS
):
standard = "ERC20"
Expand Down
25 changes: 25 additions & 0 deletions ethtx/semantics/standards/erc20.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,26 @@
],
)

erc20_modified_transfer_event = EventSemantics(
signature="0xe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16",
anonymous=False,
name="Transfer",
parameters=[
ParameterSemantics(
parameter_name="src", parameter_type="address", indexed=True
),
ParameterSemantics(
parameter_name="dst", parameter_type="address", indexed=True
),
ParameterSemantics(
parameter_name="value", parameter_type="uint256", indexed=False
),
ParameterSemantics(
parameter_name="data", parameter_type="bytes", indexed=False,dynamic=True
),
],
)

erc20_transfer_event_transformation = {
"__input2__": TransformationSemantics(
transformation="__input2__ / 10**token_decimals(__contract__)"
Expand Down Expand Up @@ -147,6 +167,11 @@
erc20_approval_event.signature: erc20_approval_event,
}

ERC20_MODIFIED_EVENTS = {
erc20_modified_transfer_event.signature: erc20_modified_transfer_event,
erc20_approval_event.signature: erc20_approval_event,
}

ERC20_FUNCTIONS = {
erc20_transfer_function.signature: erc20_transfer_function,
erc20_transferFrom_function.signature: erc20_transferFrom_function,
Expand Down