Poner tus preciados fondos en una nueva farm de rendimiento puede ser muy arriesgado, pero podemos hacerlo un poco más seguro contrastando el contrato MasterChef con el de farms anteriores y probadas para comprobar si hay código malicioso o peligroso.
¿No puedes leer Solidity? No pasa nada: normalmente hay muy poca diferencia entre las farmsy, en muchos casos, una rápida comprobación de diferencias puede confirmar que el nuevo MasterChef no contiene código obviamente malicioso.
Paso 1: Localiza el MasterChef y cópialo en DiffCheck. #
La mayoría de las farms indican la dirección de su MasterChef en la página de documentación enlazada desde su web.
Utilizaremos GarudaSwap como ejemplo en los siguientes pasos.
Asegúrate de que está verificado en bscscan.com (no lo cojas de GitHub porque puede no coincidir con el contrato desplegado) y cópialo desde allí.
Pega el nuevo Masterchef en una de las columnas de Diffchecker. Fíjate en la parte inferior del código del Masterchef para identificar de qué código padre procede el nuevo Masterchef.
Paso 2: Busca el MasterChef del que se ha hecho un fork. #
Los Masterchefs comúnmente forkeados pueden ser identificados mirando el final de su código. Aquí se enumeran los distintos Masterchefs y cómo terminan.
- Goose acaba con:
//Pancake has to add hidden dummy pools inorder to alter the emission, here we make it simple and transparent to all. function updateEmissionRate(uint256 _eggPerBlock) public onlyOwner { massUpdatePools(); eggPerBlock = _eggPerBlock; - Pancake acaba con:
// Update dev address by the previous dev. function dev(address _devaddr) public { require(msg.sender == devaddr, “dev: wut?”); devaddr = _devaddr; - Viking acaba con:
//Pancake has to add hidden dummy pools inorder to alter the emission, here we make it simple and transparent to all. function updateEmissionRate(uint256 _vikingPerBlock) public onlyOwner { massUpdatePools(); vikingPerBlock = _vikingPerBlock; - Slime acaba con:
//set what will be the stake pool function setStakePoolId(uint256 _id) public onlyOwner { stakepoolId =_id; } function enableMethod(uint256 _id,bool enabled) public onlyOwner { enablemethod[_id]= enabled; } - Fullsail acaba con:
// Pay referral commission to the referrer who referred this user. function payReferralCommission(address _user, uint256 _pending) internal { if (address(sailReferral) != address(0) && referralCommissionRate > 0) { address referrer = sailReferral.getReferrer(_user); uint256 commissionAmount = _pending.mul(referralCommissionRate).div(10000); if (referrer != address(0) && commissionAmount > 0) { sail.mint(referrer, commissionAmount); emit ReferralCommissionPaid(_user, referrer, commissionAmount); - Jiggly acaba con:
//Pancake has to add hidden dummy pools inorder to alter the emission, here we make it simple and transparent to all. function updateEmissionRate(uint256 _jiggPerBlock) public onlyOwner { massUpdatePools(); jiggPerBlock = _jiggPerBlock; emit UpdateEmissionRate(msg.sender, _jiggPerBlock); - Blizzard acaba con:
function setFeeAddressSt(address _feeAddress) public { require(msg.sender == feeAddSt, “setFeeAddress: FORBIDDEN”); feeAddSt = _feeAddress; Deflate ends with: function inCaseTokensGetStuck(address _token, uint256 _amount) external onlyOwner { require(_token != address(balloon), “!safe”); IERC20(_token).safeTransfer(msg.sender, _amount); - Panther acaba con:
if (referrer != address(0) && commissionAmount > 0) { panther.mint(referrer, commissionAmount); pantherReferral.recordReferralCommission(referrer, commissionAmount); emit ReferralCommissionPaid(_user, referrer, commissionAmount);
Las terminaciones de los Masterchef comúnmente forkeados se pueden encontrar aquí.
Si no es ninguno de estos es que tienes un código personalizado - intenta ponerlo en conocimiento de los administradores del Telegram de RugDoc .
Paso 3: Copia el MasterChef forkeado en DiffCheck #
Puedes encontrar el repositorio de MasterChefs comúnmente forkeados aquí.
Aquí tienes PantherSwap - haz clic para abrir el contrato en BscScan,
Como antes, coge el contrato verificado de BscScan.
En la columna vacía de DiffCheck, copia y pega el código del contrato maestro Masterchef.
Y pulsa el botón "Encontrar Diferencias".
Paso 4: Compara las diferencias entre los dos #
Compara tus códigos. Donde veas diferencias presta atención y averigua qué hacen esas diferencias.
Paso 5: Cuando se encuentren diferencias, compáralas con nuestra lista de códigos maliciosos conocidos #
Consulta la tabla "Exploits y Rug Codes" aquí.
¡Bien hecho por leer hasta el final! Ahora ya sabes cómo evaluar (con bastante rapidez) la seguridad de un MasterChef, incluso sin apenas conocimientos del lenguaje de programación Solidity.
Por favor, mantente #SAFU y #DYOR. Síguenos en Twitter para obtener actualizaciones frecuentes de las farms revisadas y otros contenidos útiles sobre seguridad en la yield farming y únete a nosotros en Telegram para participar más: ¡si puedes comprobar las farms queremos saber de ti!