Whitepaper / Technical Documentation
Executive Summary
FIV LATAM COIN (FLC) is a BEP-20 digital token developed by Renzo Montero and deployed on the Binance Smart Chain (BSC). It aims to revolutionize investment accessibility and digital payments in Latin America. This document outlines the architecture, key functionalities, and real-world applications of the FLC token, highlighting its role in financial inclusion and digital innovation.
Introduction
FIV LATAM COIN was designed to provide a secure, efficient, and decentralized solution for digital transactions and investments in Latin America. By leveraging blockchain technology, FLC ensures transparency, immutability, and fast processing of all operations, enabling a new ecosystem for digital finance and e-commerce.
Team
- Renzo Montero: Founder, CEO & Software Developer
- Brayán Montero: Operations Director
- Vianni Torrealba: Marketing Director
Technical Specifications
- Blockchain: Binance Smart Chain (BSC)
- Token Standard: BEP-20
- Algorithm: Keccak-256 (SHA-3)
- Total Supply: 100,000,000 FLC
- Decimals: 18
- Smart Contract: View on BscScan
Tokenomics
- 30% - Public Sale
- 25% - Development & Ecosystem
- 20% - Marketing & Partnerships
- 15% - Team & Advisors (locked for 12 months)
- 10% - Reserve Fund
Token Utility
- Investments: Users can invest in the official FIV LATAM investment fund using FLC tokens, gaining access to diversified growth opportunities.
- Digital Payments: FLC can be used for fast and secure purchases in partner e-commerce platforms.
- Trading: FLC can be listed and exchanged on various decentralized and centralized exchanges.
Smart Contract Overview
The FLC smart contract is written in Solidity and follows the BEP-20 standard. It has been deployed and verified on the BSC network. Key functionalities include secure transfers, balance queries, and wallet compatibility. Ownership of the contract will be renounced post-audit to ensure decentralization and security.
Launch Strategy
- Q2 2025: Token deployment, website & wallet integration
- Q3 2025: FIV LATAM Fund launch and e-commerce partnerships
- Q4 2025: Token listing on DEXs and community expansion
- Q1 2026: Strategic partnerships with regional financial platforms
Marketing and Adoption
- Education: Webinars, live AMAs, and training sessions to educate users and investors
- Referral Programs: Earn rewards for inviting new users and merchants
- Promotions: Limited-time airdrops and early adopter bonuses
Use Cases
- Peer-to-Peer Transfers: Fast and low-fee transfers between users in Latin America
- Store Payments: Use FLC to pay at partnered online and physical retailers
- Access to Investment Products: Use FLC to access tokenized assets and portfolios
Conclusion
FIV LATAM COIN (FLC) is not just a cryptocurrency — it's a movement towards financial autonomy and technological empowerment in Latin America. Backed by a committed team, a strong use case, and a growing ecosystem, FLC is ready to shape the future of decentralized finance and digital commerce in the region.
📄 View Full Smart Contract Code
// SPDX-License: MIT
pragma solidity ^0.8.18;
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
contract FIVLATAMCOIN is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, OwnableUpgradeable, ReentrancyGuardUpgradeable {
// ================= VARIABLES PRINCIPALES =================
uint256 public constant INITIAL_SUPPLY = 100_000_000 * 10**18;
uint256 public constant MAX_SUPPLY = 200_000_000 * 10**18;
uint256 public constant MAX_BURN_RATE = 5; // 5%
uint256 public constant MAX_REWARD_RATE = 20; // 20%
uint256 public constant REWARD_SUPPLY_LIMIT = 10_000_000 * 10**18; // 10 millones para recompensas
uint256 public burnRate; // % por transacción
uint256 public stakingRewardRate; // % de recompensa por staking
uint256 public totalStaked;
mapping(address => uint256) public stakingBalance;
mapping(address => uint256) public stakingTimestamp;
// ================= GOVERNANCE =================
struct Proposal {
string description;
uint256 votesFor;
uint256 votesAgainst;
uint256 deadline;
bool executed;
bool vetoed;
mapping(address => bool) hasVoted;
}
Proposal[] public proposals;
mapping(address => bool) public multiSigApprovers;
mapping(uint256 => mapping(address => bool)) public hasVetoed;
mapping(uint256 => uint256) public vetoVotes;
uint256 public requiredSignatures;
// ================= EXCLUSIÓN DE QUEMA =================
mapping(address => bool) public exemptFromBurn;
// ================= INICIALIZADOR =================
function initialize(address[] memory _approvers, uint256 _requiredSignatures) public initializer {
__ERC20_init("FIVLATAMCOIN", "FIV");
__ERC20Burnable_init();
__Ownable_init();
__ReentrancyGuard_init();
require(_requiredSignatures > 0 && _requiredSignatures <= _approvers.length, "Invalid signatures");
for (uint256 i = 0; i < _approvers.length; i++) {
multiSigApprovers[_approvers[i]] = true;
}
requiredSignatures = _requiredSignatures;
_mint(msg.sender, INITIAL_SUPPLY);
burnRate = 2; // 2% por defecto
stakingRewardRate = 10; // 10% por defecto
}
// ================= TRANSFERENCIA CON QUEMA =================
function setExemptFromBurn(address account, bool status) external onlyOwner {
exemptFromBurn[account] = status;
}
function _transfer(address sender, address recipient, uint256 amount) internal override {
uint256 burnAmount = 0;
if (!exemptFromBurn[sender]) {
burnAmount = (amount * burnRate) / 100;
}
require(amount > burnAmount, "Burn amount exceeds transfer amount");
super._burn(sender, burnAmount);
super._transfer(sender, recipient, amount - burnAmount);
}
// ================= STAKING =================
function stake(uint256 amount) external nonReentrant {
require(amount > 0, "Cannot stake zero");
_transfer(msg.sender, address(this), amount);
stakingBalance[msg.sender] += amount;
stakingTimestamp[msg.sender] = block.timestamp;
totalStaked += amount;
emit Staked(msg.sender, amount);
}
function unstake() external nonReentrant {
uint256 staked = stakingBalance[msg.sender];
require(staked > 0, "Nothing to unstake");
uint256 duration = block.timestamp - stakingTimestamp[msg.sender];
uint256 reward = (staked * stakingRewardRate * duration) / (365 days * 100);
uint256 totalReward = totalSupply() + reward;
require(totalReward <= MAX_SUPPLY + REWARD_SUPPLY_LIMIT, "Reward exceeds reward supply limit");
stakingBalance[msg.sender] = 0;
totalStaked -= staked;
_mint(msg.sender, reward);
_transfer(address(this), msg.sender, staked);
emit Unstaked(msg.sender, staked);
emit RewardClaimed(msg.sender, reward);
}
// ================= GOVERNANCE =================
function createProposal(string calldata _description, uint256 _duration) external onlyOwner {
Proposal storage p = proposals.push();
p.description = _description;
p.deadline = block.timestamp + _duration;
emit ProposalCreated(proposals.length - 1, _description, p.deadline);
}
function vote(uint256 _proposalId, bool support) external {
Proposal storage p = proposals[_proposalId];
require(!p.hasVoted[msg.sender], "Already voted");
require(block.timestamp < p.deadline, "Voting ended");
p.hasVoted[msg.sender] = true;
if (support) p.votesFor++;
else p.votesAgainst++;
}
function executeProposal(uint256 _proposalId) external {
Proposal storage p = proposals[_proposalId];
require(block.timestamp >= p.deadline, "Voting not ended");
require(!p.executed && !p.vetoed, "Already handled");
require(p.votesFor > p.votesAgainst, "Not approved");
p.executed = true;
emit ProposalExecuted(_proposalId, true);
}
function vetoProposal(uint256 _proposalId) external {
require(multiSigApprovers[msg.sender], "Not authorized");
require(!hasVetoed[_proposalId][msg.sender], "Already vetoed");
vetoVotes[_proposalId]++;
hasVetoed[_proposalId][msg.sender] = true;
if (vetoVotes[_proposalId] >= requiredSignatures) {
proposals[_proposalId].vetoed = true;
}
}
// ================= OWNER SETTERS =================
function setBurnRate(uint256 _rate) external onlyOwner {
require(_rate <= MAX_BURN_RATE, "Too high");
burnRate = _rate;
}
function setStakingRewardRate(uint256 _rate) external onlyOwner {
require(_rate <= MAX_REWARD_RATE, "Too high");
stakingRewardRate = _rate;
}
function mint(address to, uint256 amount) external onlyOwner {
require(totalSupply() + amount <= MAX_SUPPLY, "Exceeds max supply");
_mint(to, amount);
}
// ================= EVENTS =================
event ProposalCreated(uint256 proposalId, string description, uint256 deadline);
event ProposalExecuted(uint256 proposalId, bool success);
event Staked(address indexed user, uint256 amount);
event Unstaked(address indexed user, uint256 amount);
event RewardClaimed(address indexed user, uint256 amount);
}