Is there a guide or article explaining the differences between using TimelockController and using the built-in support for scheduled operations in the AccessManager contract (OZ 5.x)?
The documentation in https://docs.openzeppelin.com/contracts/5.x/access-control#using_accessmanager doesn't explain much about scheduling features.
So far, these are the differences I have found (please confirm I'm right):
- Batches: AccessManager contract doesn't have
scheduleBatch
orexecuteBatch
methods, instead you can use themulticall
method. - Execution: The operations need to be executed by the same caller that scheduled the proposal, because the caller is part of the operationId hash. Why did you do that???
- Permissionless execution: it's not possible to have permissionless execution with the AccessManager.
- Multiple proposals: with the TimelockController it was possible to schedule the same operation (e.g. send $ 10 to A) twice, by using a different
salt
parameter to differentiate the two pending operations. With the AccessManager, it's impossible to have the same operation twice concurrently.
Something else I'm missing?
It would be good to have some article or documentation explaining when to use AccessManager vs TimelockController and migrating governance workflows from TimelockController to AccessManager.