State Change Tracking#
Example of tracking complex state changes in a contract.
class StateTracker:
claimed: int
total_reward: int
balances: dict[Address, int]
def track_claim(self, user: Address, amount: int):
self.claimed += amount
self.balances[user] += amount
class StateTrackingTest(FuzzTest):
tracker: StateTracker
@flow()
def flow_claim(self):
user = random_account()
before = self.token.balanceOf(user)
self.contract.claim(from_=user)
after = self.token.balanceOf(user)
claimed = after - before
self.tracker.track_claim(user, claimed)