[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-deep-evm-20-cicd-contratos-inteligentes-regresion-gas":3},{"article":4,"author":42},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":16,"meta_description":17,"focus_keyword":18,"og_image":19,"canonical_url":19,"robots_meta":20,"created_at":15,"updated_at":15,"tags":21,"category_name":22,"related_articles":23},"d8000000-0000-0000-0000-000000000120","a0000000-0000-0000-0000-000000000082","Deep EVM #20: CI\u002FCD para Contratos Inteligentes — Testing, Regresión de Gas y Seguridad","deep-evm-20-cicd-contratos-inteligentes-regresion-gas","Construya un pipeline CI\u002FCD de grado de producción para contratos inteligentes con seguimiento de regresión de gas, análisis estático, verificación automatizada y controles de seguridad de despliegue.","## La necesidad de CI\u002FCD en smart contracts\n\nLos contratos inteligentes son inmutables una vez desplegados. Un bug en producción no se puede parchear — solo se puede desplegar un nuevo contrato y migrar el estado. Esto hace que el CI\u002FCD sea más crítico que en el software tradicional.\n\n## Pipeline completo\n\n```yaml\n# .github\u002Fworkflows\u002Fsmart-contracts.yml\nname: Smart Contracts CI\n\non:\n  push:\n    branches: [main, develop]\n  pull_request:\n    branches: [main]\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: forge fmt --check\n      - run: forge build --sizes  # Verificar tamaño de contratos\n\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: forge test -vvv\n      - run: forge test --gas-report > gas-report.txt\n      - uses: actions\u002Fupload-artifact@v4\n        with:\n          name: gas-report\n          path: gas-report.txt\n\n  security:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - run: pip install slither-analyzer\n      - run: slither . --print human-summary\n      - run: slither . --detect reentrancy-eth,reentrancy-no-eth\n\n  gas-regression:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: forge snapshot\n      - run: forge snapshot --diff .gas-snapshot\n        continue-on-error: true\n```\n\n## Seguimiento de regresión de gas\n\nFoundry genera snapshots de gas que permiten detectar regresiones:\n\n```bash\n# Generar snapshot base\nforge snapshot\n\n# Comparar contra snapshot anterior\nforge snapshot --diff .gas-snapshot\n```\n\nSalida:\n```\ntestTransfer() (gas: 25000 -> 27000) REGRESSION (+8%)\ntestApprove() (gas: 22000 -> 22000) OK\ntestMint() (gas: 45000 -> 43000) IMPROVEMENT (-4.4%)\n```\n\nConfigurar un umbral de alerta (e.g., fallar CI si algún test aumenta > 5% en gas) previene regresiones accidentales.\n\n## Análisis estático con Slither\n\nSlither analiza contratos Solidity buscando vulnerabilidades conocidas:\n\n```bash\nslither . --detect reentrancy-eth,reentrancy-no-eth,\\\n  uninitialized-state,arbitrary-send-eth,\\\n  controlled-delegatecall,unchecked-transfer\n```\n\nPara Huff, Slither no es directamente aplicable, pero puedes analizar la interfaz Solidity que define los tests.\n\n## Verificación automatizada en Etherscan\n\n```yaml\n  verify:\n    needs: [test, security]\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: |\n          forge verify-contract $CONTRACT_ADDRESS \\\n            src\u002FMiContrato.sol:MiContrato \\\n            --chain mainnet \\\n            --etherscan-api-key $ETHERSCAN_KEY\n```\n\n## Controles de seguridad pre-despliegue\n\nAntes de desplegar, verificar:\n\n1. **Todos los tests pasan** incluyendo fork tests contra mainnet\n2. **Sin regresiones de gas** significativas\n3. **Slither no reporta** vulnerabilidades de severidad alta\n4. **Código verificable** en Etherscan\n5. **Timelock configurado** para funciones de admin\n6. **Multi-firma** para ownership\n\n## Conclusión\n\nUn pipeline CI\u002FCD robusto para contratos inteligentes combina testing exhaustivo, análisis estático, tracking de gas, y verificación automatizada. Dado que los contratos son inmutables, invertir en infraestructura de CI\u002FCD no es un lujo — es una necesidad absoluta.","\u003Ch2 id=\"la-necesidad-de-ci-cd-en-smart-contracts\">La necesidad de CI\u002FCD en smart contracts\u003C\u002Fh2>\n\u003Cp>Los contratos inteligentes son inmutables una vez desplegados. Un bug en producción no se puede parchear — solo se puede desplegar un nuevo contrato y migrar el estado. Esto hace que el CI\u002FCD sea más crítico que en el software tradicional.\u003C\u002Fp>\n\u003Ch2 id=\"pipeline-completo\">Pipeline completo\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-yaml\"># .github\u002Fworkflows\u002Fsmart-contracts.yml\nname: Smart Contracts CI\n\non:\n  push:\n    branches: [main, develop]\n  pull_request:\n    branches: [main]\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: forge fmt --check\n      - run: forge build --sizes  # Verificar tamaño de contratos\n\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: forge test -vvv\n      - run: forge test --gas-report &gt; gas-report.txt\n      - uses: actions\u002Fupload-artifact@v4\n        with:\n          name: gas-report\n          path: gas-report.txt\n\n  security:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - run: pip install slither-analyzer\n      - run: slither . --print human-summary\n      - run: slither . --detect reentrancy-eth,reentrancy-no-eth\n\n  gas-regression:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: forge snapshot\n      - run: forge snapshot --diff .gas-snapshot\n        continue-on-error: true\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"seguimiento-de-regresi-n-de-gas\">Seguimiento de regresión de gas\u003C\u002Fh2>\n\u003Cp>Foundry genera snapshots de gas que permiten detectar regresiones:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># Generar snapshot base\nforge snapshot\n\n# Comparar contra snapshot anterior\nforge snapshot --diff .gas-snapshot\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Salida:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>testTransfer() (gas: 25000 -&gt; 27000) REGRESSION (+8%)\ntestApprove() (gas: 22000 -&gt; 22000) OK\ntestMint() (gas: 45000 -&gt; 43000) IMPROVEMENT (-4.4%)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Configurar un umbral de alerta (e.g., fallar CI si algún test aumenta &gt; 5% en gas) previene regresiones accidentales.\u003C\u002Fp>\n\u003Ch2 id=\"an-lisis-est-tico-con-slither\">Análisis estático con Slither\u003C\u002Fh2>\n\u003Cp>Slither analiza contratos Solidity buscando vulnerabilidades conocidas:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">slither . --detect reentrancy-eth,reentrancy-no-eth,\\\n  uninitialized-state,arbitrary-send-eth,\\\n  controlled-delegatecall,unchecked-transfer\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Para Huff, Slither no es directamente aplicable, pero puedes analizar la interfaz Solidity que define los tests.\u003C\u002Fp>\n\u003Ch2 id=\"verificaci-n-automatizada-en-etherscan\">Verificación automatizada en Etherscan\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-yaml\">  verify:\n    needs: [test, security]\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: foundry-rs\u002Ffoundry-toolchain@v1\n      - run: |\n          forge verify-contract $CONTRACT_ADDRESS \\\n            src\u002FMiContrato.sol:MiContrato \\\n            --chain mainnet \\\n            --etherscan-api-key $ETHERSCAN_KEY\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"controles-de-seguridad-pre-despliegue\">Controles de seguridad pre-despliegue\u003C\u002Fh2>\n\u003Cp>Antes de desplegar, verificar:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Todos los tests pasan\u003C\u002Fstrong> incluyendo fork tests contra mainnet\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Sin regresiones de gas\u003C\u002Fstrong> significativas\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Slither no reporta\u003C\u002Fstrong> vulnerabilidades de severidad alta\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Código verificable\u003C\u002Fstrong> en Etherscan\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Timelock configurado\u003C\u002Fstrong> para funciones de admin\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multi-firma\u003C\u002Fstrong> para ownership\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"conclusi-n\">Conclusión\u003C\u002Fh2>\n\u003Cp>Un pipeline CI\u002FCD robusto para contratos inteligentes combina testing exhaustivo, análisis estático, tracking de gas, y verificación automatizada. Dado que los contratos son inmutables, invertir en infraestructura de CI\u002FCD no es un lujo — es una necesidad absoluta.\u003C\u002Fp>\n","es","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:31.625130Z","CI\u002FCD para Contratos Inteligentes — Testing, Regresión de Gas y Seguridad","Pipeline CI\u002FCD para smart contracts: testing con Foundry, regresión de gas, análisis estático con Slither y verificación en Etherscan.","CI\u002FCD contratos inteligentes",null,"index, follow",[],"Blockchain",[24,30,36],{"id":25,"title":26,"slug":27,"excerpt":28,"locale":12,"category_name":22,"published_at":29},"d0000000-0000-0000-0000-000000000614","La capa de interoperabilidad de Ethereum: Como 55+ L2s se convierten en una sola cadena","capa-interoperabilidad-ethereum-55-l2s-una-sola-cadena","Ethereum tiene 55+ rollups Layer 2, fragmentando la liquidez y la experiencia del usuario. La capa de interoperabilidad de Ethereum — combinando mensajeria cross-rollup, secuenciadores compartidos y based rollups — busca unificarlos en una red componible unica.","2026-03-28T10:44:45.451917Z",{"id":31,"title":32,"slug":33,"excerpt":34,"locale":12,"category_name":22,"published_at":35},"d0000000-0000-0000-0000-000000000613","Pruebas ZK mas alla de los rollups: Inferencia de IA verificable en Ethereum","pruebas-zk-mas-alla-rollups-inferencia-ia-verificable-ethereum","Las pruebas de conocimiento cero ya no son solo una herramienta de escalabilidad. En 2026, zkML permite la inferencia de IA verificable on-chain, los coprocesadores ZK mueven el calculo pesado off-chain con verificacion on-chain, y nuevos sistemas de prueba como SP1 y Jolt lo hacen practico.","2026-03-28T10:44:45.446211Z",{"id":37,"title":38,"slug":39,"excerpt":40,"locale":12,"category_name":22,"published_at":41},"d0000000-0000-0000-0000-000000000590","EIP-7702 en la practica: construir flujos de cuenta inteligente despues de Pectra","eip-7702-en-la-practica-construir-flujos-cuenta-inteligente-despues-pectra","EIP-7702 permite a cualquier EOA de Ethereum actuar temporalmente como contrato inteligente en una sola transaccion. Asi se implementan transacciones por lotes, patrocinio de gas y recuperacion social con la nueva primitiva de account abstraction.","2026-03-28T10:44:43.986612Z",{"id":13,"name":43,"slug":44,"bio":45,"photo_url":19,"linkedin":19,"role":46,"created_at":47,"updated_at":47},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]