Many of the fields in the usdc contract are public, which is normally ok for most types, but composite types, arrays, and dictionaries should be some form of private (access(contract) or access(self)) so that their fields cannot be assigned to.
For example, the blocklist in the main contract would be able to be modified by anyone, since it is a public dictionary.
You should define getters and setters that explicitly define the access that you want different scopes to have. There are many more examples of this in the contracts.
Many of the fields in the usdc contract are public, which is normally ok for most types, but composite types, arrays, and dictionaries should be some form of private (
access(contract)
oraccess(self)
) so that their fields cannot be assigned to.For example, the blocklist in the main contract would be able to be modified by anyone, since it is a public dictionary.
You should define getters and setters that explicitly define the access that you want different scopes to have. There are many more examples of this in the contracts.
See the Flow Docs for more context