JoinColony / colonyCDapp

An iteration of the Colony Dapp sporting both a fully decentralized operating mode, as well as a mode enhanced by a metadata caching layer
5 stars 14 forks source link

Manage tokens unexpected outcome with a motion #2713

Open arrenv opened 1 month ago

arrenv commented 1 month ago

Steps to reproduce

Part 1:

  1. Create a Manage tokens action using permissions decision method.
  2. Add and remove some tokens, I ADDED "USDT for Local Development" and "DAI for Local Development", and I REMOVED "Gotham Guilder". image
  3. Execute the action.

Part 2:

  1. Create a new Manage tokens action using Reputation decision method.
  2. Add and remove some tokens, I ADDED "USDC for Local Development" and "Gotham Guilder", and I REMOVED "DAI for Local Development". image
  3. Execute the action. But don't finalize the motion.

Part 3:

  1. Create a new Manage tokens action using permissions decision method.
  2. Remove some tokens, I REMOVED "DAI for Local Development" and "USDT for Local Development". image
  3. Execute the action.

Part 4:

  1. Return to the motion from part 2 and finalize it.
  2. The state of the managed tokens does not match the expected state.

So, while "USDT for Local Development" was removed in the 3rd action using permissions before the motion was finalized, and the motion did not explicitly add "USDT for Local Development", it was still added by the motion.

Expected behaviour

Actual behaviour

iamsamgibbs commented 1 month ago

Thanks for raising this @arrenv - I have a suspicion a similar issue will exist with verified members as it works in a similar way.

rdig commented 1 month ago

Correct. This was always known to be a problem. And it's not just here.

Pretty much everywhere we can update metadata via contract calls, and more specifically motions. So even colony details / objective, etc is affected

And it will only get worse with multicall