Allow multisigs to be set as miner owner address #5342
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #5287
Motivation
Miners want to be able to set multisigs as their miner owner address. This currently fails if you use the
set-owner
command, because it assumes both the old and new owner address are accounts whose keys are in the Lotus wallet.Changes
set-owner
command toChangeOwnerAddress
message as a paramChangeOwnerAddress
messages within a single execution.chain encode
command as a util to encode params (does this not already exist somewhere? I couldn't find it?)lotus msig approve
that makes it unusable when all optional params are provided.Usage
lotus-miner actor set-owner --really-do-it <newOwner> <oldOwner>
lotus-miner actor set-owner --really-do-it <newOwner> <newOwner>
. This command can be run from a different node or with a hardware wallet plugged in as needed.lotus-miner actor set-owner --really-do-it <newOwner> <oldOwner>
(assuming the old owner is an account)lotus chain encode params --encoding=hex <minerAddress> 23 \"<newOwnerIdAddress>\"
, where23
is the method number forChangeOwnerAddress
.lotus msig propose --from=<newOwnerSigner> <newOwner> <minerAddress> 0 23 <params>
, whereparams
is the encoding outputted in the previous step.lotus msig approve --from=<newOwnerSigner> <newOwner> <transactionId> <proposingSigner> <minerAddress> 0 23 <params>
.