Volver al índice
Modo oscuro
Arbitrum

Arbitrum por Santiago Soñora

star star star star star (5.0 de 5 estrellas, basado en 1 reseña)

Este tutorial está diseñado para guiar a quienes desean aprender más acerca de Arbitrum. Es ideal para un nivel avanzado.

Arbitrum One es el rollup de Capa 2 (L2) de mayor valor total bloqueado (TVL) en Ethereum, impulsado por el motor Nitro para proporcionar transacciones ultrarrápidas, gas mínimo y total compatibilidad con la EVM mediante compilación sobre WASM. Alberga un vibrante ecosistema DeFi con los pools de liquidez más profundos en Uniswap V3, Camelot y GMX. Esta guía especializada profundiza en la ejecución masiva con Multicall3, Flash Swaps, dimensionamiento de préstamos con grillas multi-escala, integración con secuenciadores de baja latencia y mitigación de fallos de ejecución en contratos inteligentes.

“Hola, mundo” en Arbitrum

Ejecución por lote de múltiples llamadas de lectura y cotización mediante Multicall3 en Arbitrum One.

📋 Copiar
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IMulticall3 {
    struct Call3 {
        address target;
        bool allowFailure;
        bytes callData;
    }
    struct Result {
        bool success;
        bytes returnData;
    }
    function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData);
}

contract ArbitrumBatchReader {
    address public constant MULTICALL3 = 0xcA11bde05977b3631167028862bE2a173976CA11;

    function batchQueryPools(address poolA, address poolB) external returns (bytes memory resA, bytes memory resB) {
        IMulticall3.Call3[] memory calls = new IMulticall3.Call3[](2);
        calls[0] = IMulticall3.Call3({
            target: poolA,
            allowFailure: true,
            callData: abi.encodeWithSignature("slot0()")
        });
        calls[1] = IMulticall3.Call3({
            target: poolB,
            allowFailure: true,
            callData: abi.encodeWithSignature("slot0()")
        });

        IMulticall3.Result[] memory results = IMulticall3(MULTICALL3).aggregate3(calls);
        require(results[0].success && results[1].success, "Fallo en lectura");
        return (results[0].returnData, results[1].returnData);
    }
}

Resultado:

Output
Ejecución en 1 único RPC round-trip: Resuelve datos de reserva y precios de múltiples pools descentralizados en menos de 15 ms.

Comandos básicos

Familiarizarse con estos comandos es esencial para interactuar eficientemente con Arbitrum:

Conceptos Clave

Comprender estos conceptos fundamentales te ayudará a dominar Arbitrum de forma más organizada y eficiente:

Casos de uso

Algunos ejemplos de aplicaciones prácticas donde se utiliza Arbitrum:

Consejos para Principiantes

Aquí tienes algunas recomendaciones para facilitar tus inicios en Arbitrum:

Herramientas relacionadas

Si te interesa Arbitrum, también podrías explorar estas herramientas:

Recursos útiles

Amplía tus conocimientos con estos enlaces y materiales:

También te puede interesar

Continúa aprendiendo con estos contenidos relacionados: