-
Notifications
You must be signed in to change notification settings - Fork 11.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for native-meta transaction in contract3.X standard #2242
Comments
Thank you for reaching out @sanchaymittal. I wasn't able to understand the problem that you point out.
Unfortunately in Solidity 0.6 inheriting from function _msgSender() internal view override(Context, GSNRecipient) returns (address payable) {
return super._msgSender();
}
function _msgData() internal view override(Context, GSNRecipient) returns (bytes memory) {
return super._msgData();
} By using We definitely should have specifically this bit of code in the docs, but I couldn't find it. cc @nventuro |
We have notes on the required overrides for GSN in the release notes for v3: https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v3.0.0 |
Thanks a lot guys!!! @frangio @abcoathup.
|
Awesome! |
🧐 Motivation
Contracts3.X doesn't support Native Meta-Transaction support. It's not compatible with any of the meta-transaction out there in the market.
📝 Details
As contract 3.X uses v0.6.6 standard of solidity, And function _msgSender in Context contract is virtual so it can only be overridden in parent contract which inherits the ERC20 standard. That means, the existing solutions for meta transaction are not compatible anymore. To give some context, Meta-Transaction relayers uses _msgSender, For instance Gas station network uses this implementation.
I propose that we should include this change in Context contract itself or make changes so _msgSender() can be overridden by the other contracts too.
The text was updated successfully, but these errors were encountered: