0

I'm looking for a way to implement Can'tBeEvil License in my project, so that the users can select a particular license whatever they prefer. Can it be done in one contract? or i have to create multiple contract? Can i do it with initiators, if so, how?

1 Answer 1

0

The current implementation requires your base contract to implement the CantBeEvil contract, which means it's not really possible using the contract MyContract is CantBeEvil(LicenseVersion.PUBLIC) syntax recommended on the README. But that said, there are other options for associating your contract with the CantBeEvil licenses.

The simplest solution might be to make your ERC721 contract implement an some interface like this:

 function getLicenseURI(uint256 tokenId) external view returns (string memory); function getLicenseName(uint256 tokenId) external view returns (string memory); 

This is similar to the ICantBeEvil interface (https://github.com/a16z/a16z-contracts/blob/master/contracts/licenses/ICantBeEvil.sol), but instead of being per-contract, the license returned is per-token. You can clearly explain this system in your contract Natspec.

Basically, I think as long as you make it very clear to your buyers and users which license applies to each token, you are probably ok. How you do that is up to you.

That said, this is definitely not legal advice. Good luck!

1
  • Thanks a lot, at that time i proceeded with another approach. But your explanation helped me for improvement of the flow, thanks again. Still a16z should've created a standard where it can be done easily as they were coming up with a new standard. Commented Mar 22, 2023 at 1:56

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.