Como combatir a las ballenas?

AccessControl implementa un map internamente. La ventaja es que en el smart contract solo tienes que declarar el rol y añadirlo en el constructor. Las No hay que hacer una funcion especifica para añadir o eliminar wallets del rol, sino que puedes usar metodos web3. Es decir, son menos lineas de solidity.

estaba tentado a reemplazar mis mappings de whitelist y blacklist por AccessControl pero cuando vi que AccessControl tiene 247 iineas de codigo, e importa 4 contractos mas, decidi quedarme con mis 2 mappings xq pense que iba a subir mucho el tamanyo del contrato y con ello la cantidad de gas. No me parece optimo en cuestion de eficiencia para este caso. Por eso decia que OZ deberia tener un AntiWhale.sol basico....


El problema con el uso de maps es que cada vez que se añade un usuario al map, tanto la lista de color como la blanca, significa que *tu* debes pagar por 20.000 unidades de gas, que es el coste de salvar en la blockchain un valor en un map.

Imagina que tienes 1000 usuarios. Pues te puedes gastar perfectamente 5k dolares en gas para añadir a las listas blanca y de color si resulta que tus usuarios son de USA ... o Sudamerica.

Con un merkle tree el gas que gastarias seria unos $10 en total. Merece la pena. La gente que apuntes en la lista blanca o de color la salvas en una base de datos hasta que llegue el momento del lanzamiento del token. En ese momento es cuando creas el merkle tree, pasando todos los usuarios en una unica llamada.

si, aun asi, apenas esperaria quiza un par de direcciones en la blacklist. la whitelist si podria tener muchos si la uso para el KYC
 
Última edición:
Usar AccessControl incrementa la cantidad de gas que debes pagar cuando despliegues a mainnet. De todas formas van a ser sobre $2000 asi que tampoco va a influir tanto. Lo ganas en la seguridad de que no vas a tener errores de programacion que tu puedas introducir al programar desde cero los maps y que se supone que el gas esta optimizado.

Yo creo que si vas a tener mas de 10 usuarios merece la pena el merkle tree. Ojo, yo considero un merkle tree como algo de solo lectura porque insertar un nuevo elemento implica recalcular el hash del resto de nodos de esa rama. O sea facilmente cientos o miles de dolares
 
Usar AccessControl incrementa la cantidad de gas que debes pagar cuando despliegues a mainnet. De todas formas van a ser sobre $2000 asi que tampoco va a influir tanto. Lo ganas en la seguridad de que no vas a tener errores de programacion que tu puedas introducir al programar desde cero los maps y que se supone que el gas esta optimizado.

Yo creo que si vas a tener mas de 10 usuarios merece la pena el merkle tree. Ojo, yo considero un merkle tree como algo de solo lectura porque insertar un nuevo elemento implica recalcular el hash del resto de nodos de esa rama. O sea facilmente cientos o miles de dolares
el tamanyo del contrato no te encarece cada llamada, ademas del despliegue inicial? el despliegue inicial si es asumible

$2000 quieres decir 2000 wei el incremento de usar AccessControl? o q desplegar el contrato en mainnet son $2000?

el merkle tree tenia q venir con open zeppelin
 
el tamanyo del contrato no te encarece cada llamada, ademas del despliegue inicial? el despliegue inicial si es asumible

No. A menos que superes el tamaño maximo del contrato (24kb) y uses el optimizador.

$2000 quieres decir 2000 wei el incremento de usar AccessControl? o q desplegar el contrato en mainnet son $2000?

A grandes rasgos desplegar en la mainnet de ETH costaba unos $2000 la ultima vez que me puse con ello. Consejo: Nunca lo hagas en horario de trabajo de USA. El mejor momento es un fin de semana o un dia laborable sobre las 11h hora de España.

el merkle tree tenia q venir con open zeppelin

Hay muchos EIPs que tambien deberian ir con open zeppelin. Pero ten en cuenta que OpenZeppelin es una libreria creada por una empresa de auditoria. Y esa empresa nos dieron ¡en Julio! fecha para auditar un smart contract que yo habia hecho a principios de 2023 como muy pronto.

Es decir, están a tope y solo pueden dedicar unos poquisimos recursos a mantener OpenZeppelin.
 
A grandes rasgos desplegar en la mainnet de ETH costaba unos $2000 la ultima vez que me puse con ello. Consejo: Nunca lo hagas en horario de trabajo de USA. El mejor momento es un fin de semana o un dia laborable sobre las 11h hora de España.

esto no lo entiendo bien. Tengo el Gas Reporter instalado en hardhat y me salen unas magnitudes similares a las del ejemplo de abajo. Sobre el precio del despliegue veo 3 versiones:

* en este contrato de ejemplo dice que el despliegue cuesta 82.58 USD, a mi m salen 24.5 USD en mi caso, muy barato​
* si tomo el numero de 3,759.533 que entiendo que son wei y lo convierto a USD me salen 15,791.03 USD por el despligue :eek
* y x otro lado tu dices que cuesta unos 2,000 USD​

xq tal discrepancia?


1*mGGpyvj8k-yo1jxoUlcdbw.webp



-----------------------------


* aqui dice 5000 USD

parece que Gas Reporter miente como un macho cabrío

-----------------------------

ok, creo que el 3,759.533 es en gas x 29.64 Gwei / gas = 111,432.558 GWei que son 139.1097 USD
 
Última edición:
Ni te va a costar 15k dolares, ni te va a costar $25

Yo uso truffle, que incrementa un poco el coste al desplegar tambien un smart contract llamado "migration", pero la solucion para saber el coste es muy sencilla.

Despliega en goerli

Eso va a tener cierto coste en unidades de gas. Y coincide con las unidades de gas que consumiras al hacer el deploy en mainnet. Usando truffle te hace un informe donde la ultima linea es el coste total en gas units. Ese numero lo puedes usar para calcular el precio en usd
 
Ni te va a costar 15k dolares, ni te va a costar $25

Yo uso truffle, que incrementa un poco el coste al desplegar tambien un smart contract llamado "migration", pero la solucion para saber el coste es muy sencilla.

Despliega en goerli

Eso va a tener cierto coste en unidades de gas. Y coincide con las unidades de gas que consumiras al hacer el deploy en mainnet. Usando truffle te hace un informe donde la ultima linea es el coste total en gas units. Ese numero lo puedes usar para calcular el precio en usd

yo empece en Truffle y Ganache y web3 y me pase a Hardhat y ethers, me parece mucho mas estable

si, desplegue en la red Sepolia y ahi estoy testeando. Goerli no pude desplegar, no se xq

creo que mi duda de arriba se debe a que Gas Reporter solo te da los costes de ejecucion, pero segun dice aqui tb hay un coste d almacenamiento

 
yo empece en Truffle y Ganache y web3 y me pase a Hardhat y ethers, me parece mucho mas estable

si, desplegue en la red Sepolia y ahi estoy testeando. Goerli no pude desplegar, no se xq

creo que mi duda de arriba se debe a que Gas Reporter solo te da los costes de ejecucion, pero segun dice aqui tb hay un coste d almacenamiento



A mi me gusta mucho mas truffle. Hardhat no me da la misma informacion y me complica la vida al trabajar con los desarrolladores del front y el back.

Hardhat tiene mucho mejor el plugin de validacion. El de truffle es bastante malo. Para todo lo demas yo prefiero truffle a hardhat

Cuando desplegaste en sepolia ¿cuanto gas consumiste? porque ese mismo gas es el que vas a gastar cuando vayas a mainnet. El gas en gas units es lo que debes mirar. Olvidate del precio en usd por el momento

Calcula que salvar 32 bytes tiene un coste de 20k gas. El hacer el deploy es una tras*accion muy grande donde se salva en la blockchain el propio codigo, asi que tiene que ser caro necesariamente.
 
de quien sali corriendo es de ganache mas bien

Cuando desplegaste en sepolia ¿cuanto gas consumiste? porque ese mismo gas es el que vas a gastar cuando vayas a mainnet. El gas en gas units es lo que debes mirar. Olvidate del precio en usd por el momento


Gas Limit & Usage by Txn: 2,945,683 | 2,945,683 (100%)
Gas Price: 7 wei (0.000000007 Gwei)

ok, entonces seria en mainnet 2,945,683 x 29.64 Gwei = 87310044.12 Gwei o sea 109.3987 USD

como puede ser tan bajo? pensando:
 
Última edición:
El proyecto es pequeño y el gas algo bajo. Pero tus calculos son correctos. Yo he llegado a gastar $10.000 en algun momento solo en hacer un deploy a mainnet
 
Volver