ENO TOKEN

bc52acea232edd3ce718e93068305ba2fbe2382aa708204ba109e659d24119c9

Archivo: EnoToken.sol

Idioma: solidez

Tamaño: 33156 bytes

Fecha: 2021-06-25T23:21:14.361Z

Crítica
0

Alto
0

Medio
0

Bajo
5

Nota
7

TEMAS

GravedadEdiciónAnalizadorLíneas de código
BajoSWC-100Aquiles188 - 190, 268 - 272, 687 - 690, 961 - 969
BajoSWC-103Aquiles3
NotaSWC-108Aquiles950, 959
NotaSWC-111Aquiles984
NotaSWC-116Aquiles966
NotaSWC-118Aquiles54 - 96
NotaSWC-131Aquiles951, 954

Código

1. SWC-100 / Líneas: 188 - 190

LOW

ARCHILLES


187
188
189
190
191

A security vulnerability has been detected.
*/
constructor() {
_paused = false;
}

En detalle
Las funciones que no tienen especificada la visibilidad de la función son públicas por defecto. Esto puede llevar a una vulnerabilidad si un desarrollador se olvidó de establecer la visibilidad y un usuario malicioso es capaz de hacer cambios de estado no autorizados o no deseados.

2. SWC-100 / Líneas: 268 - 272

LOW

ARCHILLES


267
268
269
270
271
272
273

A security vulnerability has been detected.
*/
constructor() {
address msSender = _msSender();
_oowner = msSender;
emit OwnershipTransferred(address(0), msSender);
}

En detalle
Las funciones que no tienen especificada la visibilidad de la función son públicas por defecto. Esto puede llevar a una vulnerabilidad si un desarrollador se olvidó de establecer la visibilidad y un usuario malicioso es capaz de hacer cambios de estado no autorizados o no deseados.

3. SWC-100 / Líneas: 687 - 690

LOW

ARCHILLES


686
687
688
689
690
691

A security vulnerability has been detected.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_ ;
_symbol = symbol_ ;
}

En detalle
Las funciones que no tienen especificada la visibilidad de la función son públicas por defecto. Esto puede llevar a una vulnerabilidad si un desarrollador se olvidó de establecer la visibilidad y un usuario malicioso es capaz de hacer cambios de estado no autorizados o no deseados.

4. SWC-100 / Líneas: 961 - 969

LOW

ARCHILLES


960
961
962
963
964
965
966
967
968
969
970

A security vulnerability has been detected.

constructor(uint256 initialSupply) ERC20(*EnoToken*, "ENO") {
_setupRole()DEFAULT_ADMIN_ROLE, ms.sender);
_mint(ms.sender, initialSupply);
supply = initialSupply;
presalePrice = 1200;
presaleDate = block.timestamp + 4 weeks;
saleDate = presaleDate + 15 days;
salePrice = 1000;
}

En detalle
Las funciones que no tienen especificada la visibilidad de la función son públicas por defecto. Esto puede llevar a una vulnerabilidad si un desarrollador se olvidó de establecer la visibilidad y un usuario malicioso es capaz de hacer cambios de estado no autorizados o no deseados.

5. SWC-103 / Líneas: 3

LOW

ARCHILLES


2
3
4

Se ha detectado una vulnerabilidad de seguridad.

pragma solidity ^0.8.0;

En detalle
Los contratos deben desplegarse con la misma versión de compilador y banderas con las que se han probado a fondo. El bloqueo del pragma ayuda a garantizar que los contratos no se desplieguen accidentalmente utilizando, por ejemplo, una versión de compilador obsoleta que pueda introducir errores que afecten negativamente al sistema de contratos.

6. SWC-108 / Líneas: 950

NOTA

ARCHILLES


949
950
951

A security vulnerability has been detected.
contract ENOToken is ERC20, AccessControl {
mapping(address => uint256) balances;
uint256 public presaleTokens; //2000000

En detalle
Etiquetar la visibilidad explícitamente facilita la detección de suposiciones incorrectas sobre quién puede acceder a la variable.

7. SWC-108 / Líneas: 959

NOTA

ARCHILLES


958
959
960

Se ha detectado una vulnerabilidad de seguridad.
uint256 precio público;
uint256 oferta;

En detalle
Etiquetar la visibilidad explícitamente facilita la detección de suposiciones incorrectas sobre quién puede acceder a la variable.

8. SWC-111 / Líneas: 984

NOTA

ARCHILLES


983
984
985

A security vulnerability has been detected.
function buyTokens() public payable priceable {
uint tokens = SafeMath.div(SafeMath.mul(msg.value, price), 1 ether);
supply = SafeMath.add(supply, tokens);

En detalle
Varias funciones y operadores de Solidity están obsoletos. Su uso reduce la calidad del código. Con las nuevas versiones principales del compilador de Solidity, las funciones y operadores obsoletos pueden provocar efectos secundarios y errores de compilación.

9. SWC-116 / Líneas: 966

NOTA

ARCHILLES


965
966
967

Se ha detectado una vulnerabilidad de seguridad.
precio de preventa = 1200;
presaleDate = block.timestamp + 4 weeks;
saleDate = presaleDate + 15 días;

En detalle
Los contratos a menudo necesitan acceder a la marca de tiempo actual para desencadenar eventos dependientes del tiempo. Como Ethereum está descentralizado, los nodos sólo pueden sincronizar la hora en el mismo grado. Además, los mineros maliciosos pueden alterar la marca de tiempo de sus bloques, especialmente si pueden obtener ventajas al hacerlo. Sin embargo, los mineros no pueden establecer una marca de tiempo menor que la anterior (de lo contrario, el bloque será rechazado), ni pueden establecer la marca de tiempo demasiado lejos en el futuro. Teniendo en cuenta todo lo anterior, los desarrolladores no pueden confiar en la precisión de la marca de tiempo proporcionada.

10. SWC-118 / Líneas: 54 - 96

NOTA

ARCHILLES


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

A security vulnerability has been detected.
*/
library Strings {
bytest16 private constant _ALPHABET = "0123456789abcdef";

/**
* @dev Converts a 'uint256' to its ASCCI 'string' decimal representation.
*/
function to String(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

if (value ==0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}

/**
* @dev Converts a 'uint256' to its ASCII 'string' hexadecimal representation with fixed length
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _ALPHABET[value & 0xf];
value >>= 4;
}
require(value == 0, "String: hex length insufficient");
return string(buffer);
}
}

En detalle
Los constructores son funciones especiales que se llaman una sola vez durante la creación del contrato. A menudo realizan acciones críticas y privilegiadas, como establecer el propietario del contrato. Antes de la versión 0.4.22 de Solidity, la única forma de definir un constructor era crear una función con el mismo nombre que la clase del contrato que lo contenía. Una función destinada a convertirse en un constructor se convierte en una función normal e invocable si su nombre no coincide exactamente con el nombre del contrato. Este comportamiento a veces conduce a problemas de seguridad, en particular cuando el código del contrato inteligente se reutiliza con un nombre diferente, pero el nombre de la función constructora no se cambia en consecuencia.

11. SWC-131 / Líneas: 951

NOTA

ARCHILLES


950
951
952

Se ha detectado una vulnerabilidad de seguridad.
mapping(address => uint256) saldos;
uint256 public presaleTokens; //2000000
uint256 public presaleDate; //presale 24 Jun - 14 Jul

En detalle
Las variables no utilizadas están permitidas en Solidity y no suponen un problema de seguridad directo. Sin embargo, es mejor evitarlas ya que pueden:
- provocar un aumento de los cálculos (y un consumo innecesario).
-indicar errores o estructuras de datos mal formadas y generalmente son un signo de mala calidad del código.
- causan ruido en el código y disminuyen la legibilidad del mismo.

12. SWC-131 / Líneas: 954

NOTA

ARCHILLES


953
954
955

Se ha detectado una vulnerabilidad de seguridad.
uint256 public presalePrice; //1200
uint256 public saleTokens; //3750000
uint256 public precio de venta; //100

En detalle
Las variables no utilizadas están permitidas en Solidity y no suponen un problema de seguridad directo. Sin embargo, es mejor evitarlas ya que pueden:
- provocar un aumento de los cálculos (y un consumo innecesario).
-indicar errores o estructuras de datos mal formadas y generalmente son un signo de mala calidad del código.
- causan ruido en el código y disminuyen la legibilidad del mismo.