Support Ethereum Legacy Transactions #962
Replies: 16 comments 22 replies
-
I’m supportive of adding this feature as it blocks builders & limits tooling comparability |
Beta Was this translation helpful? Give feedback.
-
Solution 3 makes sense. I largely regarded the signature of Delegated transaction types as opaque to the protocol, in the sense that in the future we expect them to be validated by abstract accounts actors, and not by client logic. So, from that perspective, f410 account support (understood as the loose collection of components that enable f410 accounts) should be free to structure the signature as it sees fit, and there is no reason it should match byte-per-byte the Ethereum form. |
Beta Was this translation helpful? Give feedback.
-
Would love to get this implemented because it will result in more generic wallet support for Filecoin. At glif we get a lot of users complaining about this: |
Beta Was this translation helpful? Give feedback.
-
Of the 4 options, my vote would be for the one that fixes the interop issues with least lifting required by the external parties currently hurt by this. @Schwartz10 Do you have any opinions on the 4 options? |
Beta Was this translation helpful? Give feedback.
-
Running into a similar issue while attempting to deploy https://github.com/allo-protocol/allo-v2/ onto filecoin ![]() |
Beta Was this translation helpful? Give feedback.
-
Digging into this and taking ownership for shipping this. |
Beta Was this translation helpful? Give feedback.
-
@Stebalien @Schwartz10 I am assuming that when we say "legacy" transactions here, we mean not just non-EIP-1599 transactions but also non-EIP-155 transactions i.e. transactions without a chainID. |
Beta Was this translation helpful? Give feedback.
-
Is there a reason users can't just convert legacy txns -> eip-1599 on the front-end and submit those signed txns to Filecoin ? |
Beta Was this translation helpful? Give feedback.
-
FWIW the only reliance contracts have on msg replay capability in order to deploy to the same address on different chains is one of convenience. You do not need to use the same exact message to deploy to the same address on another chain. Using CREATE you need the deployer account address and nonce to be the same. With CREATE2 instead of deriving from the deployer's account nonce it takes some salt that can reused (e.g. for the purpose of deployment across multiple chains without having to align nonces). In either case, the same exact signed message does not need to be reused. |
Beta Was this translation helpful? Give feedback.
-
Raised FIP for this at #995. |
Beta Was this translation helpful? Give feedback.
-
Based on an offline Slack chat with Dmitri, looks like Fluence would also like to have this feature ! :) |
Beta Was this translation helpful? Give feedback.
-
Is there more context for this? Somewhere these plans are documented? |
Beta Was this translation helpful? Give feedback.
-
TLDR: I think we might have to update the FIP and implementation to enable support for EIP-155 legacy transactions as well if we want better inter-op with existing wallets
|
Beta Was this translation helpful? Give feedback.
-
From the FIP:
A learning from IPC/Fendermint is that Blockscout is somewhat particular about the combination of fields returned for each type of transaction. This isn't a matter for the FIP, just something to consider in the API changes and in the ongoing work with Blockscout to add support for Filecoin. |
Beta Was this translation helpful? Give feedback.
-
@arajasek follow-up on filecoin-project/lotus#11969 (review) - given fip is still in last call, I’d encourage you to raise your opinions here before it’s accepted, especially if you feel strongly about it’s not a 👍🏻thing for the network |
Beta Was this translation helpful? Give feedback.
-
Hey! Dmitrii from Fluence here As for one of our cases, for example we need to have Safe contract on their usual address on Filecoin. But for now I can do it only with original legacy transaction, which doesn't work for Filecoin ![]() Does this FIP include this original type of legacy tx? |
Beta Was this translation helpful? Give feedback.
-
Filecoin currently supports EIP1559 transactions (transactions that include EIP115 Chain IDs), but doesn't support "legacy" transactions. Unfortunately, it turns out that some contracts rely on legacy transactions so that they can be deployed at the same address no matter what chain they're deployed to. Specifically, they rely on the fact that the transaction is not scoped to a specific chain so that the same message can be re-used to deploy the same contract across multiple chains.
For context, Filecoin supports EIP1559 transactions by converting them to standard Filecoin messages with a special signature type of "delegated" (where the Ethereum transaction signature is stored). Clients validate these messages by:
f410f...
).Eventually, any signature marked "delegated" will be validated by the sender's account itself (think account abstraction). That is, "delegated" means that signature validation is delegated to the sender's account. But for now, the client does this explicitly.
Unfortunately, supporting legacy transactions throws a wrench into step 3. We can easily translate legacy transactions into Filecoin messages, but translating them back into legacy transactions means we need some way to detect the transaction type.
Solutions include:
Personally, I'd propose option 3 as it's the cleanest, falling back on option 4 if we feel that option 3 is likely to cause issues.
Beta Was this translation helpful? Give feedback.
All reactions