Define uma estrutura chamada Bot que armazena informações sobre um bot, incluindo seu nome, endereço da carteira, endereços de contratos relevantes, e outros.
Permite ao proprietário obter a lista de bots adicionados à plataforma.
solidityCopy code function getBots() public view onlyOwner returns (Bot[] memory) {
return bots;
}
}
Essas são as principais características e funcionalidades do contrato. Ele serve como uma fábrica para criar bots, mantendo uma lista de bots existentes e seus detalhes.
Register: Uma estrutura para armazenar detalhes de registro, incluindo a carteira do usuário e o gerente associado.
Display: Uma estrutura representando detalhes do usuário para fins de exibição, incluindo carteira, gerente, status, expiração do passe, status de teste gratuito e tempo de expiração.
Transaction event: Registra transações com detalhes como remetente, método, carimbo de data/hora, destinatário e valor.
Constructor: Inicializa o contrato com os detalhes do bot, incluindo seu nome, token, carteira e vendedor, bem como a interface do contrato WEbdEXPassV3.
solidityCopy code modifier onlyWebDexStrategiesOrOwner() {
require(
msg.sender == webDexStrategiesV3 ||
(msg.sender == owner() && webDexStrategiesV3 != address(0)),
"You must own the contract or the WebDexStrategies"
);
_;
}
Modificador:
onlyWebDexStrategiesOrOwner: Um modificador restringindo o acesso a certas funções ao proprietário ou ao contrato WebDexStrategies.
solidityCopy code function changeWEbdEXStrategiesV3(
address newWebDexStrategiesV3
) public onlyOwner {
webDexStrategiesV3 = newWebDexStrategiesV3;
}
Função:
changeWEbdEXStrategiesV3: Permite que o proprietário altere o endereço do contrato WebDexStrategies.
solidityCopy code function registerInBot(address manager) public {
// Function implementation...
}
Função:
registerInBot: Permite que os usuários se registrem no bot, associando-se a um gerente e emitindo um NFT.
solidityCopy code function getUserInfo() public view returns (Display memory) {
return _getUser(msg.sender);
}
Função:
getUserInfo: Recupera as informações do usuário para o chamador.
solidityCopy code function getUserInfoByWallet(address to) public view onlyWebDexStrategiesOrOwner returns (Display memory) {
return _getUser(to);
}
Função:
getUserInfoByWallet: Recupera informações do usuário com base no endereço da carteira fornecido, restrito ao proprietário ou ao contrato WebDexStrategies.
solidityCopy code function getBot() public view returns (Bot memory) {
return bot;
}
Função:
getBot: Recupera informações sobre o bot.
solidityCopy code function getRegisters() public view returns (Register[] memory) {
return registers;
}
Função:
getRegisters: Recupera uma matriz de detalhes de registro.
solidityCopy code function _getUser(address to) internal view returns (Display memory) {
// Function implementation...
}
}
Função Interna:
_getUser: Função interna para recuperar informações do usuário com base no endereço fornecido.
Essa análise fornece uma visão detalhada do contrato WEbdEXManagerV3, incluindo suas variáveis de estado, funções e modificadores.
Contrato WEbdEXPassV3
solidityCopy code// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
interface IWEbdEXStrategiesV3 {
function lpMint(address to, address coin, uint256 amount) external returns (address);
}
interface IWEbdEXNetworkPoolV3 {
function addBalance(address to, address coin, uint256 amount, address lpToken, address user, string memory method) external;
}
contract WEbdEXPassV3 is Ownable {
ERC20 public erc20;
uint256 public monthlyPassValue;
uint256 public quarterlyPassValue;
uint256 public semesterPassValue;
uint256 public annualPassValue;
uint256 internal constant monthlyExpirationTime = 30 days;
uint256 internal constant quarterlyExpirationTime = 90 days;
uint256 internal constant semesterExpirationTime = 180 days;
uint256 internal constant annualExpirationTime = 365 days;
uint256 public freeTrialExpirationTime;
mapping(address => uint256) internal expirationTimes;
mapping(address => uint256) internal freeTrials;
enum PassType {
MONTHLY,
QUARTERLY,
SEMESTER,
ANNUAL
}
struct User {
bool passExpired;
bool haveFreeTrial;
uint256 expirationTime;
}
Diretivas de Licença e Pragma:
SPDX-License-Identifier especifica a licença sob a qual o contrato é lançado.
Pragma solidity ^0.8.18 define a versão mínima do compilador Solidity.
Declarações de Importação:
O contrato importa o contrato ERC20 da biblioteca OpenZeppelin e o contrato Ownable para controle de acesso.
NetworkData: Representa dados sobre uma rede, incluindo carteira e quantia.
PayFeesAmount: Representa quantias para várias taxas, incluindo taxas de rede, taxa de vendedor, taxa de bot, taxa de gerente, token, usuário e tipo de transação.
PayComissions: Representa a estrutura de comissões com uma lista de taxas e endereços para vendedor, bot, gerente, webDexStrategiesV3 e webDexNetworkPoolV3.
listPayments: Um mapeamento para controlar se um pagamento foi feito.
privilegedWallets: Um mapeamento para gerenciar carteiras privilegiadas.
Constructor: Inicializa o contrato com detalhes do token ERC20, valores do passe e tempo de expiração do teste gratuito.
solidityCopy code modifier onlyWalletPrivileged() {
require(msg.sender == owner() || privilegedWallets[msg.sender], "You must be the owner or privilegedWallets");
_;
}
modifier onlyHaveFreeTrial() {
require(_haveFreeTrial(msg.sender), "Have you already used your free trial");
_;
}
Modificadores:
onlyWalletPrivileged: Um modificador para restringir o acesso apenas ao proprietário ou a carteiras privilegiadas.
onlyHaveFreeTrial: Um modificador para verificar se o usuário possui um teste gratuito.
solidityCopy code function comissionPass(PayComissions memory payments) public onlyOwner {
// Function implementation...
}
Função:
comissionPass: Permite que o proprietário pague várias comissões. Utiliza uma estrutura complexa com diferentes taxas e destinos.
solidityCopy code function _payFee(
address coin,
uint256 amount,
address to,
address user,
IWEbdEXStrategiesV3 webDexStrategiesV3,
IWEbdEXNetworkPoolV3 webDexNetworkPoolV3
) internal {
// Function implementation...
}
Função interna:
_payFee: Função interna para facilitar o pagamento de taxas, envolvendo a emissão de LP e a adição de saldos ao pool de rede.
solidityCopy code function changeFreeTrialExpirationTime(uint256 newExpirationTime) public onlyWalletPrivileged {
// Function implementation...
}
Função:
changeFreeTrialExpirationTime: Permite que o proprietário ou carteiras privilegiadas alterem o tempo de expiração do teste gratuito.
solidityCopy code function changePassValue(PassType passType, uint256 value) public onlyWalletPrivileged {
// Function implementation...
}
Função:
changePassValue: Permite que o proprietário ou carteiras privilegiadas alterem os valores do passe com base no tipo de passe.
solidityCopy code function payPass(PassType passType) public {
// Function implementation...
}
Função:
payPass: Permite que os usuários paguem por um passe com base no tipo de passe.
solidityCopy code function getFreeTrial() public onlyHaveFreeTrial {
// Function implementation...
}
Função:
getFreeTrial: Permite que os usuários obtenham um teste gratuito.
solidityCopy code function sendPass(PassType passType, address to) public onlyWalletPrivileged {
// Function implementation...
}
Função:
sendPass: Permite que o proprietário ou carteiras privilegiadas enviem um passe para um endereço especificado.
solidityCopy code function addWalletPrivilege(address wallet) public onlyOwner {
privilegedWallets[wallet] = true;
}
function revokeWalletPrivilege(address wallet) public onlyOwner {
privilegedWallets[wallet] = false;
}
Funções:
addWalletPrivilege: Permite que o proprietário adicione privilégios a uma carteira.
revokeWalletPrivilege: Permite que o proprietário revogue os privilégios de uma carteira.
solidityCopy code function getUserInfo() public view returns (User memory) {
return _getUserInfo(msg.sender);
}
function getUserInfoByWallet(address to) public view returns (User memory) {
return _getUserInfo(to);
}
Funções:
getUserInfo: Recupera informações do usuário para o chamador.
getUserInfoByWallet: Recupera informações do usuário com base no endereço da carteira fornecido.
_getUserInfo: Função interna para recuperar informações do usuário com base no endereço fornecido.
_passExpired: Função interna para verificar se o passe para o endereço fornecido expirou.
_haveFreeTrial: Função interna para verificar se o usuário no endereço fornecido possui um período de teste gratuito.
Esta análise fornece uma visão detalhada do contrato WEbdEXPassV3, incluindo suas variáveis de estado, eventos, modificadores, funções e funções internas.