KyberNetwork / smart-contracts

Main smart contracts for Kyber Network, including the main platform contract, reserve contracts etc.
https://kyber.network
MIT License
378 stars 341 forks source link

Update and rename contracts/sol5/mock/Token.sol to contratos/sol5/zom… #1083

Closed ccarreiro closed 3 years ago

ccarreiro commented 3 years ago

…bar/Token.sol

237 linhas (198 sloc) 9,09 KB solidez do pragma ^ 0.4,18;

// “// Contrato de token 'CoinCoin' CROWDSALE” ---------------------------- Contrato de token // 'CoinCoin' CROWDSALE // // Implantado para: 0xD0FDf2ECd4CadE671a7EE1063393eC0eB90816FD // Símbolo: CNC // Nome: Token CoinCoin // Oferta total: Gazillion // Decimais: 18 // // Apreciar. // // (c) por Moritz Neto & Daniel Bar com BokkyPooBah / Bok Consulting Pty Ltd Au 2017. A licença MIT. // ------------------------------------------------ ----------------------------

// ------------------------------------------------ ---------------------------- // Matemática segura // ------------------------------------------------ ---------------------------- contrato SafeMath { function safeAdd (uint a, uint b) retornos puros internos (uint c) { c = a + b; requer (c> = a); } function safeSub (uint a, uint b) retornos puros internos (uint c) { requer (b <= a); c = a - b; } função safeMul (uint a, uint b) retornos puros internos (uint c) { c = a * b; requer (a == 0 || c / a == b); } function safeDiv (uint a, uint b) retornos puros internos (uint c) { requer (b> 0); c = a / b; } }

// ------------------------------------------------ ---------------------------- // Interface do ERC Token Standard # 20 // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ------------------------------------------------ ---------------------------- contrato ERC20Interface { função totalSupply () retornos constantes públicos (uint); função balanceOf (endereço tokenOwner) retornos constantes públicos (saldo uint); subsídio de função (endereço token proprietário, endereço gastador) retornos constantes públicos (uint restantes); transferência de função (endereço para, tokens uint) retornos públicos (sucesso bool); função de aprovação (endereço spender, token de uint) retornos públicos (sucesso bool); função transferFrom (endereço de, endereço para, tokens uint) retornos públicos (bool sucesso);

transferência de eventos (endereço indexado, endereço indexado, tokens uint);
aprovação do evento (endereço indexado tokenOwner, endereço remetente indexado, uint tokens);

}

// ------------------------------------------------ ---------------------------- // Contrata a função para aprovação e execução de função em chamada // // emprestado do MiniMeToken // ------------------------------------------------ ---------------------------- contrato ApproveAndCallFallBack { função receiveApproval (endereço de, tokens uint256, token de endereço, dados de bytes) public; }

// ------------------------------------------------ ---------------------------- // Contrato de propriedade // ------------------------------------------------ ---------------------------- contrato de propriedade { endereço público proprietário; endereço público newOwner;

propriedade OwnershipTransferred (endereço indexado _de, endereço indexado para);

função Owned () public {
    proprietário = msg.sender;
}

modificador onlyOwner {
    requer (msg.sender == proprietário);
    _;
}

função transferOwnership (endereço _newOwner) public onlyOwner {
    newOwner = _newOwner;
}
function acceptOwnership () public {
    requer (msg.sender == newOwner);
    PropriedadeTransferida (proprietária, newOwner);
    proprietário = novo proprietário;
    novoProprietário = endereço (0);
}

}

// ------------------------------------------------ ---------------------------- // Token ERC20, com a adição de símbolo, nome e casas decimais e assistido // transferências de tokens // CoinCoin contrato é ERC20Interface, Owned, SafeMath { símbolo público de string; nome público da string; uint8 decimais públicos; uint public _totalSupply; uint public startDate; bônus públicos totais; uint public endDate;

mapeamento (endereço => uint) saldos;
mapeamento (endereço => mapeamento (endereço => uint)) permitido;

// ------------------------------------------------ ------------------------
// Construtor
// ------------------------------------------------ ------------------------
função CoinCoin () public {
    símbolo = "CNC";
    nome = "Token CoinCoin";
    decimais = 18;
    bonusEnds = agora + 1 semanas;
    endDate = agora + 7 semanas;

}

// ------------------------------------------------ ------------------------
// Oferta total
// ------------------------------------------------ ------------------------
function totalSupply () public retornos constantes (uint) {
    return _totalSupply - saldos [endereço (0)];
}

// ------------------------------------------------ ------------------------
// Obtém o saldo do token para a conta `tokenOwner`
// ------------------------------------------------ ------------------------
function balanceOf (address tokenOwner) retornos constantes públicos (saldo uint) {
    saldos de retorno [tokenOwner];
}

// ------------------------------------------------ ------------------------
// Transfere o saldo da conta do proprietário do token para a conta `to`
// - A conta do proprietário deve ter saldo suficiente para transferir
// - são permitidas transferências de valor 0
// ------------------------------------------------ ------------------------
transferência de função (endereço para, tokens uint) retornos públicos (sucesso bool) {
    saldos [msg.sender] = safeSub (saldos [msg.sender], tokens);
    saldos [para] = safeAdd (saldos [para], tokens);
    Transferir (msg.sender, para, tokens);
    retorno verdadeiro;
}

// ------------------------------------------------ ------------------------
// O proprietário do token pode aprovar para o `spender` transferir os tokens (...)`
// da conta do proprietário do token
//
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// recomenda que não haja verificações para o ataque de gasto duplo de aprovação
// como isso deve ser implementado em interfaces de usuário
// ------------------------------------------------ ------------------------
função de aprovação (endereço spender, token de uint) retornos públicos (sucesso bool) {
    permitido [msg.sender] [spender] = tokens;
    Aprovação (msg.sender, spender, tokens);
    retorno verdadeiro;
}

// ------------------------------------------------ ------------------------
// Transferir `tokens` da conta` de` para a conta` para`
//
// A conta de chamada já deve ter tokens suficientes para aprovação (...) - d
// para gastar da conta `from` e
// - Da conta deve ter saldo suficiente para transferir
// - O Spender deve ter permissão suficiente para transferir
// - são permitidas transferências de valor 0
// ------------------------------------------------ ------------------------
função transferFrom (endereço de endereço para, tokens uint) retornos públicos (bool sucesso) {
    saldos [de] = SafeSub (saldos [de], tokens);
    permitido [de] [msg.sender] = safeSub (permitido [de] [msg.sender], tokens);
    saldos [para] = safeAdd (saldos [para], tokens);
    Transferência (de, para, tokens);
    retorno verdadeiro;
}

// ------------------------------------------------ ------------------------
// Retorna a quantidade de tokens arquitetos pelo proprietário que podem ser
// transferido para a conta do gastador
// ------------------------------------------------ ------------------------
subsídio de função (endereço token proprietário, endereço gasta) retornos públicos constantes (uint restante) {
    retorno permitido [tokenOwner] [spender];
}

// ------------------------------------------------ ------------------------
// O proprietário do token pode aprovar para o `spender` transferir os tokens (...)`
// da conta do proprietário do token. A função de contrato `` gastador`
// `receiveApproval (...)` é então correta
// ------------------------------------------------ ------------------------
função approveAndCall (endereço spender, token de uint, bytes de dados) retornos públicos (bool sucesso) {
    permitido [msg.sender] [spender] = tokens;
    Aprovação (msg.sender, spender, tokens);
    ApproveAndCallFallBack (spender) .receiveApproval (msg.sender, tokens, this, data);
    retorno verdadeiro;
}

// ------------------------------------------------ ------------------------
// 1.000 fichas de CNC por 1 ETH
// ------------------------------------------------ ------------------------
function () public payable {
    require (agora> = startDate && now <= endDate);
    tokens de uint;
    if (agora <= bonusEnds) {
        tokens = msg.value * 1200;
    } outro {
        tokens = msg.value * 1000;
    }
    saldos [msg.sender] = safeAdd (saldos [msg.sender], tokens);
    _totalSupply = safeAdd (_totalSupply, tokens);
    Transferência (endereço (0), msg.sender, tokens);
    owner.transfer (msg.value);
}

// ------------------------------------------------ ------------------------
// O proprietário pode transferir quaisquer tokens ERC20 enviados acidentalmente
// ------------------------------------------------ ------------------------
função transferAnyERC20Token (endereço tokenAddress, uint tokens) public onlyOwner retorna (bool sucesso) {
    return ERC20Interface (tokenAddress) .transfer (proprietário, tokens);
}

}

ayobuenavista commented 3 years ago

Spam