Skip to content

Document multisig FWSS use #714

Description

@rvagg

While this is top of mind for me: if someone wants to use FWSS with a multisig (like Safe), then they have to jump through hoops but it's possible and we should find a place to document this.

FilOzone/dealbot#416 and FilOzone/dealbot#419 is where I bumped against the friction and it has two main forms:

  1. Getting Filecoin Pay set up is not straight forward. Because of the need to do an EIP-2612 signature for permit() you can't call the various methods we have on Filecoin Pay, like depositWithPermitAndApproveOperator() to do the one-step setup. Unless the multisig can handle it. So You have to decompose into three separate transactions (batch in Safe is nice, but still a bit of a drama): USDFC.approve(), FilecoinPay.deposit() and FilecoinPay.setOperatorApproval(). None of these have a separate signature verification so they are easy to push through a multisig.
  2. Using a multisig as the owner wallet in Synapse causes Lotus EOA dramas. This is the problem @nijoe1 has been attempting to solve @ fix(eth): allow eth_call and eth_estimateGas from contract and non-existent addresses filecoin-project/lotus#13470 and it's still not reviewed and landed (we'll get there!), so for now you get SysErrSenderInvalid from eth_calls that Synapse makes because it'll always set the wallet as the from. But you can work around this with a custom transport, which is what I did in fix: work around Lotus eth_call rejection for multisig accounts dealbot#419 which also happens to involve session keys, so it's for the readClient, but same principle applies for the client. Intercept any eth_call or eth_estimateGas and remove from from the request and pass it on, then Lotus doesn't bother you for what we do (although I don't think we run eth_estimateGas in Synapse, mostly, and maybe this trick won't work for that anyway? I haven't checked.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    • Status
      🐱 Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions