Crypto Market Pool - Abstracción de cuenta Solidity

Crypto Market Pool – Abstracción de cuenta Solidity

Publicado por
Comparte en redes sociales


Creación de un contrato inteligente de solidez con abstracción de cuenta. Una de las características más emocionantes de Solidity es la abstracción de cuentas. La abstracción de cuentas permite a los desarrolladores crear tipos de cuentas personalizados que tienen una funcionalidad especializada más allá de las cuentas estándar de Ethereum. Con la abstracción de cuentas, puede crear contratos inteligentes que definan tipos de cuentas personalizados que requieran varias firmas para autorizar una transacción, implementar un servicio de custodia u otras características complejas.

En este artículo, veremos los pasos para crear un contrato inteligente de Solidity con abstracción de cuenta. Comenzaremos explicando qué es la abstracción de cuentas y por qué es importante. Luego, cubriremos los conceptos básicos de la programación de Solidity, incluidos los tipos de datos, funciones y eventos. Finalmente, proporcionaremos una guía paso a paso para crear un contrato inteligente con abstracción de cuenta.

¿Qué es la abstracción de cuentas?

La abstracción de cuenta es una característica de Solidity que permite a los desarrolladores crear tipos de cuenta personalizados con funcionalidad especializada. Ethereum utiliza dos tipos de cuentas: cuentas externas y cuentas de contrato. Una cuenta externa está controlada por una clave privada y una cuenta de contrato está controlada por un contrato inteligente.

Con la abstracción de cuentas, los desarrolladores pueden crear cuentas de contrato personalizadas que tienen una funcionalidad única más allá de lo que proporcionan las cuentas de contrato estándar. Por ejemplo, podría crear una cuenta de contrato que requiera varias firmas para autorizar una transacción o una cuenta de contrato que implemente un servicio de depósito en garantía.

Leer también  Los inversores de China continental probablemente se perderán los ETF de Hong Kong; Analista de Bloomberg predice sólo 1.000 millones de dólares en activos bajo gestión

¿Por qué es importante la abstracción de cuentas?

La abstracción de cuentas es importante porque permite a los desarrolladores crear contratos inteligentes más sofisticados y flexibles. Con la abstracción de cuentas, los desarrolladores pueden definir tipos de cuentas personalizados que implementan una lógica comercial específica, lo que puede simplificar la creación de contratos inteligentes complejos.

La abstracción de cuentas también ayuda a mejorar la seguridad y la facilidad de uso de la cadena de bloques de Ethereum. Al abstraer los detalles de la arquitectura de la cuenta subyacente, los desarrolladores pueden concentrarse en crear aplicaciones y servicios más sofisticados sobre la cadena de bloques.

Creación de un contrato inteligente con abstracción de cuenta

A continuación se muestra un ejemplo de contrato inteligente de Solidity con abstracción de cuenta que implementa un servicio de depósito en garantía utilizando un tipo de cuenta de contrato personalizado:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

struct EscrowAccount {
    uint balance;
    address buyer;
    address seller;
    bool buyerApproved;
    bool sellerApproved;
}

contract EscrowService {

    mapping (address => EscrowAccount) public escrowAccounts;

    function createEscrowAccount(address buyer, address seller, uint amount) public {
        EscrowAccount memory escrow = EscrowAccount({
            balance: amount,
            buyer: buyer,
            seller: seller,
            buyerApproved: false,
            sellerApproved: false
        });
        escrowAccounts[address(escrow)] = escrow;
    }

    function approveTransaction() public {
        EscrowAccount storage escrow = escrowAccounts[msg.sender];
        if (msg.sender == escrow.buyer) {
            escrow.buyerApproved = true;
        } else if (msg.sender == escrow.seller) {
            escrow.sellerApproved = true;
        }
        if (escrow.buyerApproved && escrow.sellerApproved) {
            escrow.buyerApproved = false;
            escrow.sellerApproved = false;
            payable(escrow.seller).transfer(escrow.balance);
        }
    }

}

Pruébalo en remezclar

En este ejemplo, definimos un tipo de cuenta personalizado llamado «Cuenta de depósito en garantía» usando una estructura. La “Cuenta de depósito en garantía” tiene cinco campos: “saldo” (la cantidad de fondos en depósito en garantía), “comprador” (la dirección de Ethereum del comprador), “vendedor” (la dirección de Ethereum del vendedor), y “aprobado por el comprador” y “ sellerApproved” (booleanos que indican si el comprador y el vendedor han aprobado la transacción).

Leer también  Se anunció la exclusión de estos 2

El contrato inteligente en sí se llama «Servicio de depósito en garantía» y contiene un mapeo de direcciones de cuenta a estructuras de «Cuenta de depósito en garantía». La función «createEscrowAccount» se utiliza para crear una nueva cuenta de depósito en garantía con un comprador, un vendedor y una cantidad específicos. La función «aprobar transacción» se utiliza para aprobar una transacción por parte del comprador o vendedor. Cuando tanto el comprador como el vendedor han aprobado la transacción, los fondos se transfieren al vendedor.

Este ejemplo demuestra cómo se puede usar la abstracción de cuenta para crear un tipo de cuenta de contrato personalizado que implemente una funcionalidad especializada. En este caso, la “Cuenta de depósito en garantía” brinda un servicio de depósito en garantía que requiere que tanto el comprador como el vendedor aprueben la liberación de fondos. Con la abstracción de cuentas, los desarrolladores pueden crear contratos inteligentes más complejos y flexibles que satisfagan las necesidades específicas de sus aplicaciones.

Recursos

Redes de cadena de bloques

A continuación se muestra una lista de redes de cadena de bloques Mainnet y Testnet compatibles con EVM. Cada enlace contiene la configuración de la red, enlaces a varios grifos para probar ETH y tokens, detalles del puente y recursos técnicos para cada cadena de bloques. Básicamente todo lo que necesita para probar e implementar contratos inteligentes o aplicaciones descentralizadas en cada cadena. Para obtener una lista de foros populares de Ethereum y aplicaciones de chat, haga clic aquí.

cryptoshitcompra.com/wp-content/uploads/2021/08/Grupo-de-criptomercados-bot-de-liquidacion-dYdX.png» alt=»»/> Ethereum prueba la configuración de la red y prueba la información del grifo ETH
png» alt=»»/> Configuración optimista de Ethereum Mainnet y Testnet, detalles del puente, etc.
Configuración de red de polígono Mainnet y Testnet, grifos para prueba de tokens MATIC, detalles de puente, etc.
Configuración de Binance Smart Chain Mainnet y Testnet, faucets para tokens BNB de prueba, detalles del puente, etc.
Fanton networt Configuración de Mainnet y Testnet, faucets para tokens FTM de prueba, detalles del puente, etc.
Configuración de Kucoin Chain Mainnet y Testnet, faucets para tokens KCS de prueba, detalles del puente, etc.

Bibliotecas de software Web3

Puede usar las siguientes bibliotecas para interactuar con una cadena de bloques compatible con EVM.

Leer también  El precio de XRP se acerca a una coyuntura crucial, ¿pueden los alcistas tomar una posición?



Source link

Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.

Direcciones de Billetera:

- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS 

- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe 

- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f

- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx 

También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:

-Twitter

- Telegram

Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *