-
Notifications
You must be signed in to change notification settings - Fork 71
feat: add ERC-6909 Token and Supply extension #777
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
base: main
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for contracts-stylus canceled.
|
}; | ||
|
||
use super::*; | ||
use crate::token::erc6909::{ERC6909InvalidReceiver, ERC6909InvalidSender}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unused import: ERC6909InvalidReceiver
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of removing the error, could you add a test case covering the flow where this error is returned?
assert!(supports_interface_erc165); | ||
|
||
Ok(()) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing Antora docs (see docs/modules/ROOT)
}; | ||
|
||
use super::*; | ||
use crate::token::erc6909::{ERC6909InvalidReceiver, ERC6909InvalidSender}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of removing the error, could you add a test case covering the flow where this error is returned?
@@ -0,0 +1,10 @@ | |||
= ERC-6909 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you update this docs file to include a wider description of what the contract is, with an example implementation?
You probably used erc1155.adoc as inspiration for this, but it's also missing these things.
You can use erc20.adoc or erc721.adoc as inspiration.
For the example implementation, it would be sufficient to just copy/paste the code from examples/erc6909/src/lib.rs (we will have a more maintainable solution at some point).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated, could you check it now?
CHANGELOG.md
Outdated
- Add ERC-6909 Token. #778 | ||
- Add ERC-6909 Supply Extension. # 779 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Add ERC-6909 Token. #778 | |
- Add ERC-6909 Supply Extension. # 779 | |
- Add `Erc6909` contract and `Erc6909TokenSupply` extension. #777 |
The linked PR ID should be of the PR where this was implemented (in your case, the ID of this PR).
Hey, any update on this PR @0xNeshi ? |
PR Checklist
ERC6909 Implementation in rust-contracts-stylus
Summary
This PR implements the ERC-6909 token and Supply extension in Rust for Arbitrum Stylus.
The following implementation is provided in this PR:
Comments
Integration tests and the benchmarks inside rust-contracts-stylus, which use nitro-testnode, didn't work with the M3 Pro Chip (would be an issue related to Docker). To solve the problem, firstly, [nitro-devnode] is tried to use. However, I observed that it is not suitable for the
e2e::test
workflow. So, an LTS Ubuntu machine is rented on AWS to run the integration tests and the benchmark.For the Supply Extension implementation,
Deref
traits are implemented. UsingDeref
allows direct access to Erc6909 methods, improving readability and maintainability. However, deferencing operations might increase the gas. Designing Supply Token Extension in this way increases the abstraction and makes it easy to use for users who would like to use the Supply Extension with ERC-6909 Token Contract.Future Improvements
Currently, this PR does not include other ERC-6909 Extensions, specifically ContentURI and Metadata. Their example usage and the benchmarks should be added to the repository.
The unit tests that differentiate the
id
should be added.Benchmark
Benchmarks for ERC-6909 can be seen as follows: