Hey! I have a few non-Editoral comments that I’d like to raise before you go into last call:
First, in the IAgentRole
interface, who do you expect to call the addAgent
and removeAgent
functions? I would, perhaps naively, assume that these would only be called by the owner of the various contracts implementing this interface. We recommend standardizing only those functions which need to be called from different independent systems. For example, ERC-20 doesn’t standardize mint
/burn
because those functions are generally only called by the contract’s owner, who knows what specific API to expect.
I could imagine a scenario where addAgent
and removeAgent
are called by some regulatory contract that needs to interact with many different ERC-3643 implementations, but I want to be extra sure that’s what you intend.
Similarly, standardizing mint
and burn
here restricts you to use cases where the tokens are minted manually.
At the very least, I’d like to see the reasoning for including these functions in your Rationale section. Could be as simple as something like “mutation functions like mint
/burn
are included so that standard admin interfaces can be built to work across all T-REX implementations”.