Use message composition to extend contracts #94
Closed
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.
This is an alternative approach to #42 and #91 on how to extend the CW-721 contract.
There are three approaches on how a custom NFT contract can inherit/extend the base cw721 contract:
Comparison
In this section, we use an example to compare the three approaches.
Terminology: Let's say the contract being extended is the "parent" contract, while the contract extending it is the "child" contract.
For this example, we use
cw721-base
as the parent, andcw2981-royalties
as the child.cw2981
wants to extendcw721-base
's query message by adding a custom method,royalty_info
.#42
cw721-base/src/msg.rs
cw2981-royalties/src/msg.rs
cw2981-royalties/src/contract.rs
#90
cw721-base/src/msg.rs
cw2981-royalties/src/msg.rs
cw2981-royalties/src/contract.rs
This PR
The parent does not provide any special arrangement for the child.
cw721-base/src/msg.rs
cw2981-royalties/src/contract.rs
Overall, I feel this PR is the best solution