0% encontró este documento útil (0 votos)
3 vistas1 página

Token ERC20 de Créditos de Carbono

El contrato 'CarbonCreditToken' es un token ERC20 que permite la creación y destrucción de tokens de crédito de carbono. Solo el administrador puede minar nuevos tokens, mientras que cualquier usuario puede quemar sus propios tokens. Además, el contrato incluye funciones para transferir y aprobar el gasto de tokens por parte de terceros.

Cargado por

Jose Martinez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas1 página

Token ERC20 de Créditos de Carbono

El contrato 'CarbonCreditToken' es un token ERC20 que permite la creación y destrucción de tokens de crédito de carbono. Solo el administrador puede minar nuevos tokens, mientras que cualquier usuario puede quemar sus propios tokens. Además, el contrato incluye funciones para transferir y aprobar el gasto de tokens por parte de terceros.

Cargado por

Jose Martinez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/[Link]";

contract CarbonCreditToken is ERC20 {


address public admin;

// Evento para registrar la creación de nuevos tokens


event TokensMinted(address indexed to, uint256 amount);

modifier onlyAdmin() {
require([Link] == admin, "Only the admin can execute this function.");
_;
}

constructor() ERC20("CarbonCreditToken", "CCT") {


admin = [Link]; // El que despliega el contrato es el admin
}

// Función para minar (crear) nuevos tokens


function mint(address to, uint256 amount) public onlyAdmin {
_mint(to, amount); // Crea nuevos tokens y los asigna a la dirección `to`
emit TokensMinted(to, amount);
}

// Función para quemar (destruir) tokens


function burn(uint256 amount) public {
_burn([Link], amount); // Quema tokens de la dirección que llama la
función
}

// Función para transferir tokens


function transfer(address recipient, uint256 amount) public override returns
(bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}

// Función para aprobar que otra dirección gaste tokens en nombre del
propietario
function approve(address spender, uint256 amount) public override returns
(bool) {
_approve(_msgSender(), spender, amount);
return true;
}

// Función para transferir tokens en nombre del propietario


function transferFrom(address sender, address recipient, uint256 amount) public
override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), allowance(sender, _msgSender()) - amount);
return true;
}
}

También podría gustarte