*Publicidad pagada. No es asesoramiento financiero. RugDoc no se hace responsable de los proyectos aquí expuestos. DYOR y mantente seguro.

Cómo Utilizar Diffcheck para Comprobar el Contrato de MasterChef de una Nueva Farm

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. #

Link to MasterChef on a farm page
GarudaSwap lists its MasterChef in the docs under “no Migrator code”

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.

MasterChef contract code in explorer
MasterChef de GarudaSwap en BscScan. Botón "Copiar" segundo por la derecha.

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í.

Code pasted into one side of diffcheck
MasterChef pegado en DiffChecker. Este se parece mucho al MasterChef de PantherSwap

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í.

Common MasterChefs page on RugDocWiki
Artículo en RugDocWiki de MasterChefs Comunes
PantherSwap entry on Common MasterChefs page

Aquí tienes PantherSwap - haz clic para abrir el contrato en BscScan,

PantherSwap MasterChef on BscScan
MasterChef de PantherSwap en BscScan

Como antes, coge el contrato verificado de BscScan.

DIffcheck
DIffcheck

En la columna vacía de DiffCheck, copia y pega el código del contrato maestro Masterchef.

Y pulsa el botón "Encontrar Diferencias".

Diffcheck showing differences between contracts
Las diferencias se resaltarán en el navegador.

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 #

Exploits and rug codes page on RugDocWiki
Lista Exploits y Rug Codes

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!

Actualizado el julio 5, 2021
¿Qué sientes respecto a éste artículo?

Dejar una Respuesta

*Publicidad pagada. No es asesoramiento financiero. RugDoc no se hace responsable de los proyectos aquí expuestos. DYOR y mantente seguro.

ES