Los ERC20 son el estándar de tokens en todos los blockahins compatibles con la Ethereum Virtual Machine. En este video creamos nuestro propio Token y realizamos operaciones mediante un segundo Smart Contract operador.
Contrato de Token ERC20
// SPDX-License-Identifier: MIT
pragma solidity 0.8.5;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0/contracts/token/ERC20/ERC20.sol";
contract MyERC20 is ERC20 {
uint256 public token_transfer_count = 0;
constructor () ERC20("Token", "TKN") {
_mint(msg.sender, 1000 ether);
}
function mint(address account, uint256 amount) public {
_mint(account, amount);
}
function burn(address account, uint256 amount) public {
_burn(account, amount);
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal override
{
token_transfer_count += 1;
}
}
Contrato Operador
// SPDX-License-Identifier: MIT
pragma solidity 0.8.5;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0/contracts/token/ERC20/ERC20.sol";
contract MyERC20Operator {
mapping (address=>uint) public balances;
ERC20 my_erc20;
constructor (address my_erc20_address)
{
my_erc20 = ERC20(my_erc20_address);
}
function deposit(uint amount) public
{
my_erc20.transferFrom(address(msg.sender), address(this), amount);
balances[msg.sender] += amount;
}
function retrieveTokens() public
{
my_erc20.transfer(address(msg.sender), balances[msg.sender]);
balances[msg.sender] = 0;
}
}
Gracias por ver este tutorial!
Sígueme en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.
Top comments (0)