Add Royalties for NFTs

Abierto
#70 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Amxx ya está trabajando en esto.

Desde el 18/7/2022.

  • #151 de @Amxx — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
solidity, typescript

Línea de trabajo

Comienza rastreando cómo se presentan las opciones de ERC721 y ERC1155 y cómo se genera su código de contrato. Añade la configuración de royalties y métodos de royalties generados con control de acceso para ambos estándares, asegurándote de que ERC1155Supply no reciba un import duplicado; se considera terminado cuando las opciones seleccionadas producen contratos válidos con el comportamiento solicitado del constructor.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Add options for users to be able to integrate royalties on their ERC721 and ERC1155 contracts. This is a suggested set of changes:

  • Include it on the options after selecting ERC721 or ERC1155.
    image
    Populating those fields would inherit from the tokenRoyalty contract and call the setDefaultRoyalty from the constructor.

  • Include this parts on the code:

    • An import for the new module: import "@openzeppelin/contracts/token/tokenERC/extensions/tokenERCRoyalty.sol";
    • An inheritance: contract MyToken is ERC721, AccessControl { We'll use Access control to handle the roles of who can set royalties.
    • This calls to the royalties functions:
    function setTokenRoyalty(
        uint256 tokenId,
        address recipient,
        uint96 fraction
    ) public onlyRole(ROYALTY_SETTER_ROLE) {
        _setTokenRoyalty(tokenId, recipient, fraction);
    }

    function setDefaultRoyalty(address recipient, uint96 fraction) public onlyRole(ROYALTY_SETTER_ROLE) {
        _setDefaultRoyalty(recipient, fraction);
    }
- [ ] This constructor: 
bytes32 public constant ROYALTY_SETTER_ROLE= keccak256("ROYALTY_SETTER_ROLE");
constructor() ERC721("MyToken", "MTK") {
        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
        _grantRole(ROYALTY_SETTER_ROLE, msg.sender);
    }

Take into consideration for the ERC1155, if the user specifies royalties and select ERC1155Supply do not import it btwice into the code, since the royalties contract inherits from this module.

Lenguaje dominante
TypeScript
Estrellas
296
Forks
188
Merge medio
3 h 24 min
PR fusionados (30 d)
11

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de OpenZeppelin/contracts-wizard

Todos los issues de OpenZeppelin/contracts-wizard

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.