Lección 4

Implementación de un contrato de activos sintéticos en Remix IDE

En esta lección, ampliaremos nuestro contrato SyntheticAsset.sol agregando funcionalidades para acuñar y canjear activos sintéticos. Estas operaciones son cruciales para el funcionamiento de los activos sintéticos en un escenario del mundo real. Analicemos el código para comprender cómo se implementan estas funcionalidades.

Ampliación del contrato

Solidez 
 // Agregue estas variables de estado a su contrato 
 mapeo (dirección => uint256) public SyntheticBalance; 
 uint256 público totalSyntheticSupply;

En el fragmento de arriba:

  • syntheticBalance es un mapeo que realiza un seguimiento del saldo de activos sintéticos para cada dirección.
  • totalSyntheticSupply es una variable que realiza un seguimiento de la oferta total de activos sintéticos en circulación.
Solidity 
 // Actualiza la función mintSyntheticAsset 
 function mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

En la función mintSyntheticAsset :

  • Una declaración require verifica si hay garantía suficiente para acuñar la cantidad solicitada de activos sintéticos.
  • El syntheticBalance de la persona que llama (msg.sender) aumenta en _amount.
  • El totalSyntheticSupply también aumenta en _amount.
  • La collateral se reduce en _amount ya que se utiliza para respaldar los activos sintéticos recién acuñados.
Solidez 
 // Actualiza la función canjearSyntheticAsset 
 función canjearSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

En la función redeemSyntheticAsset :

  • Una declaración require verifica si la persona que llama tiene un saldo suficiente de activos sintéticos para canjear.
  • El syntheticBalance de la persona que llama se reduce en _amount.
  • El totalSyntheticSupply se reduce en _amount.
  • La collateral aumenta en _amount a medida que se libera tras el reembolso de activos sintéticos.

El código completo

TypeScript 
 // Identificador de licencia SPDX: solidez pragma del MIT 
 ^0.8.0; 

 contrato SyntheticAsset { 
 uint256 público subyacenteAssetPrice; 
 uint256 garantía pública; 
 dirección pública titular; 
 mapeo (dirección => uint256) balance sintético público; 
 uint256 público totalSyntheticSupply; 

 constructor() {
        owner = msg.sender;
    }

    modificador onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    función updatePrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    función depositColateral(uint256 _amount) public {
        collateral += _amount;
    }

    función retiroColateral(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    función getSyntheticAssetPrice() vista pública devuelve (uint256) {
        return underlyingAssetPrice;
    }

    función mintSyntheticAsset(uint256 _amount) pública {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    función canjearSyntheticAsset(uint256 _amount) pública {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Preparación: adquirir Testnet Ether y configurar su entorno

Adquisición de Testnet Ether

Para implementar contratos en Goerli Testnet, necesitará Goerli ETH (GoerliETH). Si bien no tiene ningún valor real, es esencial para pagar las tarifas del gas en la red de prueba.

  1. Metamask: asegúrese de que su Metamask esté cambiada a la red de prueba de Goerli.

  2. Vaya al grifo de Goerli para solicitar GoerliETH. Simplemente pegue su dirección Goerli Testnet Ethereum y debería recibir el ETH de prueba en breve.

Configuración de Remix para la implementación de Goerli Testnet

  1. En Remix, navegue hasta la pestaña Deploy & Run Transactions .

  2. Para la opción Environment , seleccione Injected Provider. Esta opción permite que Remix se conecte a cualquier red en la que esté configurado actualmente su Metamask, que debería ser Goerli Testnet.

  3. Asegúrese de que su contrato, OracleIntegratedContract, esté seleccionado en el menú desplegable Contract .

  4. Para el menú desplegable Account , debería ver su dirección Goerli Testnet Ethereum.

Compilación e implementación del contrato ampliado

Ahora, con las funcionalidades actualizadas implementadas, compile e implemente su contrato siguiendo los pasos de la Lección 3.

Interactuar con el contrato ampliado

Con el contrato ampliado desplegado:

  1. Llame a las funciones mintSyntheticAsset y redeemSyntheticAsset con diferentes cantidades para acuñar y canjear activos sintéticos respectivamente.

  2. Observe los cambios en syntheticBalance, totalSyntheticSupply y collateral a través de la interfaz Remix IDE.

Observar el comportamiento del contrato

Participe en el contrato y observe cómo las variables de estado y el estado general del contrato evolucionan con sus interacciones. Esta experiencia práctica solidificará los conceptos y operaciones de los activos sintéticos.

A medida que enriquecemos nuestro contrato con funcionalidades esenciales, nos acercamos cada vez más a un contrato de activos sintéticos realista. En la próxima lección, nos centraremos en probar este contrato para garantizar que funcione según lo previsto en varios escenarios. La comprensión práctica de los activos sintéticos continúa profundizándose a medida que avanzamos. ¡Estén atentos para más aprendizaje práctico en la próxima lección!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 4

Implementación de un contrato de activos sintéticos en Remix IDE

En esta lección, ampliaremos nuestro contrato SyntheticAsset.sol agregando funcionalidades para acuñar y canjear activos sintéticos. Estas operaciones son cruciales para el funcionamiento de los activos sintéticos en un escenario del mundo real. Analicemos el código para comprender cómo se implementan estas funcionalidades.

Ampliación del contrato

Solidez 
 // Agregue estas variables de estado a su contrato 
 mapeo (dirección => uint256) public SyntheticBalance; 
 uint256 público totalSyntheticSupply;

En el fragmento de arriba:

  • syntheticBalance es un mapeo que realiza un seguimiento del saldo de activos sintéticos para cada dirección.
  • totalSyntheticSupply es una variable que realiza un seguimiento de la oferta total de activos sintéticos en circulación.
Solidity 
 // Actualiza la función mintSyntheticAsset 
 function mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

En la función mintSyntheticAsset :

  • Una declaración require verifica si hay garantía suficiente para acuñar la cantidad solicitada de activos sintéticos.
  • El syntheticBalance de la persona que llama (msg.sender) aumenta en _amount.
  • El totalSyntheticSupply también aumenta en _amount.
  • La collateral se reduce en _amount ya que se utiliza para respaldar los activos sintéticos recién acuñados.
Solidez 
 // Actualiza la función canjearSyntheticAsset 
 función canjearSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

En la función redeemSyntheticAsset :

  • Una declaración require verifica si la persona que llama tiene un saldo suficiente de activos sintéticos para canjear.
  • El syntheticBalance de la persona que llama se reduce en _amount.
  • El totalSyntheticSupply se reduce en _amount.
  • La collateral aumenta en _amount a medida que se libera tras el reembolso de activos sintéticos.

El código completo

TypeScript 
 // Identificador de licencia SPDX: solidez pragma del MIT 
 ^0.8.0; 

 contrato SyntheticAsset { 
 uint256 público subyacenteAssetPrice; 
 uint256 garantía pública; 
 dirección pública titular; 
 mapeo (dirección => uint256) balance sintético público; 
 uint256 público totalSyntheticSupply; 

 constructor() {
        owner = msg.sender;
    }

    modificador onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    función updatePrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    función depositColateral(uint256 _amount) public {
        collateral += _amount;
    }

    función retiroColateral(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    función getSyntheticAssetPrice() vista pública devuelve (uint256) {
        return underlyingAssetPrice;
    }

    función mintSyntheticAsset(uint256 _amount) pública {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    función canjearSyntheticAsset(uint256 _amount) pública {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Preparación: adquirir Testnet Ether y configurar su entorno

Adquisición de Testnet Ether

Para implementar contratos en Goerli Testnet, necesitará Goerli ETH (GoerliETH). Si bien no tiene ningún valor real, es esencial para pagar las tarifas del gas en la red de prueba.

  1. Metamask: asegúrese de que su Metamask esté cambiada a la red de prueba de Goerli.

  2. Vaya al grifo de Goerli para solicitar GoerliETH. Simplemente pegue su dirección Goerli Testnet Ethereum y debería recibir el ETH de prueba en breve.

Configuración de Remix para la implementación de Goerli Testnet

  1. En Remix, navegue hasta la pestaña Deploy & Run Transactions .

  2. Para la opción Environment , seleccione Injected Provider. Esta opción permite que Remix se conecte a cualquier red en la que esté configurado actualmente su Metamask, que debería ser Goerli Testnet.

  3. Asegúrese de que su contrato, OracleIntegratedContract, esté seleccionado en el menú desplegable Contract .

  4. Para el menú desplegable Account , debería ver su dirección Goerli Testnet Ethereum.

Compilación e implementación del contrato ampliado

Ahora, con las funcionalidades actualizadas implementadas, compile e implemente su contrato siguiendo los pasos de la Lección 3.

Interactuar con el contrato ampliado

Con el contrato ampliado desplegado:

  1. Llame a las funciones mintSyntheticAsset y redeemSyntheticAsset con diferentes cantidades para acuñar y canjear activos sintéticos respectivamente.

  2. Observe los cambios en syntheticBalance, totalSyntheticSupply y collateral a través de la interfaz Remix IDE.

Observar el comportamiento del contrato

Participe en el contrato y observe cómo las variables de estado y el estado general del contrato evolucionan con sus interacciones. Esta experiencia práctica solidificará los conceptos y operaciones de los activos sintéticos.

A medida que enriquecemos nuestro contrato con funcionalidades esenciales, nos acercamos cada vez más a un contrato de activos sintéticos realista. En la próxima lección, nos centraremos en probar este contrato para garantizar que funcione según lo previsto en varios escenarios. La comprensión práctica de los activos sintéticos continúa profundizándose a medida que avanzamos. ¡Estén atentos para más aprendizaje práctico en la próxima lección!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.