Урок 4

Implementando um contrato de ativo sintético no Remix IDE

Nesta lição, expandiremos nosso contrato SyntheticAsset.sol adicionando funcionalidades para cunhagem e resgate de ativos sintéticos. Estas operações são cruciais para o funcionamento dos ativos sintéticos num cenário do mundo real. Vamos dissecar o código para entender como essas funcionalidades são implementadas.

Estendendo o Contrato

Solidity 
 // Adicione essas variáveis de estado ao seu contrato 
 mapeamento(address => uint256) public SyntheticBalance; 
 uint256 público totalSyntheticSupply;

No trecho acima:

  • syntheticBalance é um mapeamento que acompanha o saldo dos ativos sintéticos para cada endereço.
  • totalSyntheticSupply é uma variável que acompanha a oferta total de ativos sintéticos em circulação.
Solidez 
 // Atualizar mintSyntheticAsset function 
 function mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

Na função mintSyntheticAsset :

  • Uma declaração require verifica se há garantias suficientes para cunhar a quantidade solicitada de ativos sintéticos.
  • O syntheticBalance do chamador (msg.sender) é aumentado em _amount.
  • O totalSyntheticSupply também é aumentado em _amount.
  • A collateral é reduzida em _amount , uma vez que é utilizada para garantir os activos sintéticos recentemente emitidos.
Solidez 
 // Atualizar redeemSyntheticAsset function 
 function redeemSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

Na função redeemSyntheticAsset :

  • Uma instrução require verifica se o chamador tem saldo suficiente de ativos sintéticos para resgatar.
  • O syntheticBalance do chamador é diminuído em _amount.
  • O totalSyntheticSupply é diminuído em _amount.
  • A collateral é aumentada em _amount à medida que é liberada no resgate de ativos sintéticos.

O código completo

TypeScript 
 // Identificador de licença SPDX: solidez do pragma do MIT 
 ^0.8.0; 

 contrato SyntheticAsset { 
 uint256 public subjacenteAssetPrice; 
 uint256 garantias públicas; 
 endereço proprietário público; 
 mapeamento (endereço => uint256) público sintéticoBalance; 
 uint256 público totalSyntheticSupply; 

 construtor() {
        owner = msg.sender;
    }

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

    função updatePrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    função depositCollateral(uint256 _amount) public {
        collateral += _amount;
    }

    função retirarCollateral(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    função getSyntheticAssetPrice() retornos de visualização pública (uint256) {
        return underlyingAssetPrice;
    }

    função mintSyntheticAsset (uint256 _amount) público {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    função redeemSyntheticAsset (uint256 _amount) público {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Preparação: Adquirindo Testnet Ether e configurando seu ambiente

Adquirindo Testnet Ether

Para implantar contratos no Goerli Testnet, você precisará do Goerli ETH (GoerliETH). Embora não tenha nenhum valor real, é essencial para pagar taxas de gás na testnet.

  1. Metamask: Certifique-se de que seu Metamask esteja migrado para a Goerli Test Network.

  2. Vá até a torneira Goerli para solicitar um pouco de GoerliETH. Basta colar seu endereço Goerli Testnet Ethereum e você receberá o ETH de teste em breve.

Configurando o Remix para implantação do Goerli Testnet

  1. No Remix, navegue até a guia Deploy & Run Transactions .

  2. Para a opção Environment , selecione Injected Provider. Esta opção permite que o Remix se conecte a qualquer rede para a qual seu Metamask esteja atualmente configurado, que deve ser Goerli Testnet.

  3. Certifique-se de que seu contrato, OracleIntegratedContract, esteja selecionado no menu suspenso Contract .

  4. No menu suspenso Account , você deverá ver seu endereço Goerli Testnet Ethereum.

Compilando e implantando o contrato estendido

Agora com as funcionalidades atualizadas implementadas, compile e implemente seu contrato seguindo as etapas da Lição 3.

Interagindo com o Contrato Estendido

Com o contrato estendido implantado:

  1. Chame as funções mintSyntheticAsset e redeemSyntheticAsset com valores diferentes para cunhar e resgatar ativos sintéticos, respectivamente.

  2. Observe as alterações em syntheticBalance, totalSyntheticSupply e collateral por meio da interface Remix IDE.

Observando o comportamento do contrato

Envolva-se com o contrato e observe como as variáveis de estado e o estado geral do contrato evoluem com suas interações. Esta experiência prática solidificará os conceitos e operações de ativos sintéticos.

À medida que enriquecemos o nosso contrato com funcionalidades essenciais, aproximamo-nos cada vez mais de um contrato realista de ativos sintéticos. Na próxima lição, nos concentraremos em testar esse contrato para garantir que ele funcione conforme planejado em vários cenários. A compreensão prática dos activos sintéticos continua a aprofundar-se à medida que avançamos. Fique ligado para mais aprendizado prático na próxima lição!

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 4

Implementando um contrato de ativo sintético no Remix IDE

Nesta lição, expandiremos nosso contrato SyntheticAsset.sol adicionando funcionalidades para cunhagem e resgate de ativos sintéticos. Estas operações são cruciais para o funcionamento dos ativos sintéticos num cenário do mundo real. Vamos dissecar o código para entender como essas funcionalidades são implementadas.

Estendendo o Contrato

Solidity 
 // Adicione essas variáveis de estado ao seu contrato 
 mapeamento(address => uint256) public SyntheticBalance; 
 uint256 público totalSyntheticSupply;

No trecho acima:

  • syntheticBalance é um mapeamento que acompanha o saldo dos ativos sintéticos para cada endereço.
  • totalSyntheticSupply é uma variável que acompanha a oferta total de ativos sintéticos em circulação.
Solidez 
 // Atualizar mintSyntheticAsset function 
 function mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

Na função mintSyntheticAsset :

  • Uma declaração require verifica se há garantias suficientes para cunhar a quantidade solicitada de ativos sintéticos.
  • O syntheticBalance do chamador (msg.sender) é aumentado em _amount.
  • O totalSyntheticSupply também é aumentado em _amount.
  • A collateral é reduzida em _amount , uma vez que é utilizada para garantir os activos sintéticos recentemente emitidos.
Solidez 
 // Atualizar redeemSyntheticAsset function 
 function redeemSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

Na função redeemSyntheticAsset :

  • Uma instrução require verifica se o chamador tem saldo suficiente de ativos sintéticos para resgatar.
  • O syntheticBalance do chamador é diminuído em _amount.
  • O totalSyntheticSupply é diminuído em _amount.
  • A collateral é aumentada em _amount à medida que é liberada no resgate de ativos sintéticos.

O código completo

TypeScript 
 // Identificador de licença SPDX: solidez do pragma do MIT 
 ^0.8.0; 

 contrato SyntheticAsset { 
 uint256 public subjacenteAssetPrice; 
 uint256 garantias públicas; 
 endereço proprietário público; 
 mapeamento (endereço => uint256) público sintéticoBalance; 
 uint256 público totalSyntheticSupply; 

 construtor() {
        owner = msg.sender;
    }

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

    função updatePrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    função depositCollateral(uint256 _amount) public {
        collateral += _amount;
    }

    função retirarCollateral(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    função getSyntheticAssetPrice() retornos de visualização pública (uint256) {
        return underlyingAssetPrice;
    }

    função mintSyntheticAsset (uint256 _amount) público {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    função redeemSyntheticAsset (uint256 _amount) público {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Preparação: Adquirindo Testnet Ether e configurando seu ambiente

Adquirindo Testnet Ether

Para implantar contratos no Goerli Testnet, você precisará do Goerli ETH (GoerliETH). Embora não tenha nenhum valor real, é essencial para pagar taxas de gás na testnet.

  1. Metamask: Certifique-se de que seu Metamask esteja migrado para a Goerli Test Network.

  2. Vá até a torneira Goerli para solicitar um pouco de GoerliETH. Basta colar seu endereço Goerli Testnet Ethereum e você receberá o ETH de teste em breve.

Configurando o Remix para implantação do Goerli Testnet

  1. No Remix, navegue até a guia Deploy & Run Transactions .

  2. Para a opção Environment , selecione Injected Provider. Esta opção permite que o Remix se conecte a qualquer rede para a qual seu Metamask esteja atualmente configurado, que deve ser Goerli Testnet.

  3. Certifique-se de que seu contrato, OracleIntegratedContract, esteja selecionado no menu suspenso Contract .

  4. No menu suspenso Account , você deverá ver seu endereço Goerli Testnet Ethereum.

Compilando e implantando o contrato estendido

Agora com as funcionalidades atualizadas implementadas, compile e implemente seu contrato seguindo as etapas da Lição 3.

Interagindo com o Contrato Estendido

Com o contrato estendido implantado:

  1. Chame as funções mintSyntheticAsset e redeemSyntheticAsset com valores diferentes para cunhar e resgatar ativos sintéticos, respectivamente.

  2. Observe as alterações em syntheticBalance, totalSyntheticSupply e collateral por meio da interface Remix IDE.

Observando o comportamento do contrato

Envolva-se com o contrato e observe como as variáveis de estado e o estado geral do contrato evoluem com suas interações. Esta experiência prática solidificará os conceitos e operações de ativos sintéticos.

À medida que enriquecemos o nosso contrato com funcionalidades essenciais, aproximamo-nos cada vez mais de um contrato realista de ativos sintéticos. Na próxima lição, nos concentraremos em testar esse contrato para garantir que ele funcione conforme planejado em vários cenários. A compreensão prática dos activos sintéticos continua a aprofundar-se à medida que avançamos. Fique ligado para mais aprendizado prático na próxima lição!

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.