Skip to content
This repository has been archived by the owner on Jun 6, 2023. It is now read-only.

When proposing internal method calls on multisigs, ID address must be used #1168

Closed
whyrusleeping opened this issue Sep 17, 2020 · 2 comments

Comments

@whyrusleeping
Copy link
Member

I attempted to use a stable address in a call to an internal multisig method (via propose). When it executed, i got an exit code 8, which implies the caller check failed. I think this is because it checked the ID address against the actor address and failed out.

If this is true, we should probably normalize these down at runtime.

@anorth
Copy link
Member

anorth commented Sep 18, 2020

To clarify: you proposed a transaction with To being the stable address of the multisig actor itself? Which method was it?

The multisig does normalize all externally-provided addresses (I think even on the v0.9 branch). It does not attempt to normalize rt.Receiver() or rt.Caller() though because the VM is supposed to only provide already-normalized addresses (otherwise actors would have to do a lot more normalization calls).

// Can only be called by the multisig wallet itself.
rt.ValidateImmediateCallerIs(rt.Receiver())

It sounds like you ran into filecoin-project/lotus#3589, which I desperately hope will be fixed with the next upgrade.

@anorth
Copy link
Member

anorth commented Oct 18, 2020

filecoin-project/lotus#3589 has landed, please lmk if you have trouble even after that.

@anorth anorth closed this as completed Oct 18, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants