Lección 4

Implementando um Contrato de Ativos Sintéticos no Remix IDE

Nesta lição, expandiremos o nosso contrato SyntheticAsset.SOL adicionando funcionalidades para cunhar e resgatar ativos sintéticos. Estas operações são cruciais para o funcionamento de ativos sintéticos num cenário do mundo real. Vamos dissecar o código para perceber como estas funcionalidades são implementadas.

Estender o Contrato

Solidez
//Adicione estas variáveis de estado ao seu contrato
mapeamento (endereço = > uint256) balanço sintético público;
uint256 fornecimento sintético total público;

No trecho acima:

  • SyntheticBalance é um mapeamento que acompanha o saldo de 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 a função MintSyntheticAsset
função mintSyntheticAsset (uint256 _amount) pública {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

Na função MintSyntheticAsset:

  • Uma declaração de exigência verifica se há garantia suficiente para cunhar o valor solicitado de ativos sintéticos.
  • O saldo sintético do chamador (msg.sender) é aumentado em _amount.
  • O TotalSyntheticSupply também é aumentado em _amount.
  • A garantia é reduzida em _montante uma vez que é usada para apoiar os activos sintéticos recém-cuntados.
Solidez
//Atualizar a função RedeemSyntheticAsset
função 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 declaração de exigência verifica se o chamador tem um saldo suficiente de ativos sintéticos para resgatar.
  • O saldo sintético do chamador é diminuído em _amount.
  • O Total SyntheticSupply é reduzido em _quantidade.
  • A garantia é aumentada em _montante à medida que é liberada de volta após o resgate de ativos sintéticos.

O código completo

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

contrato SyntheticAsset {
 uint256 preço público do ativo subjacente;
 uint256 garantia pública;
 endereço proprietário público;
 mapeamento (endereço = > uint256) balanço sintético público;
 uint256 fornecimento sintético total público;

 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 vista pública (uint256) {
        return underlyingAssetPrice;
    }

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

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

Preparação: Adquirir Testnet Ether e Configurar o seu Ambiente

Adquirindo Testnet Ether

Para implementar contratos na Goerli Testnet, vai precisar de 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 a sua Metamask está ligada à Rede de Teste Goerli.

  2. Vá à torneira Goerli pedir algum Goerlieth. Basta colar o seu endereço Goerli Testnet Ethereum e deverá receber o teste ETH em breve.

Configurar o Remix para a implementação Goerli Testnet

  1. No Remix, navegue até ao separador Implantar & Executar Transações.

  2. Para a opção Ambiente, seleccione Provedor Injectado. Esta opção permite que o Remix ligue-se a qualquer rede para a qual a sua Metamask esteja configurada atualmente, que deve ser a Goerli Testnet.

  3. Certifique-se de que o seu contrato, OracleIntegratedContract, está selecionado na lista suspensa Contrato.

  4. Para a lista suspensa Conta, deverá ver o seu endereço Goerli Testnet Ethereum.

Compilando e Implantando o Contrato Alargado

Agora com as funcionalidades atualizadas em vigor, compile e implemente o seu contrato seguindo os passos da Lição 3.

Interagir com o Contrato Alargado

Com o contrato alargado implementado:

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

  2. Observe as alterações no SyntheticBalance, TotalSyntheticSupply e colaterais através da interface Remix IDE.

Observando o Comportamento do Contrato

Envolver-se com o contrato e observe como as variáveis de estado e o estado geral do contrato evoluem com as 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 de um contrato realista de ativos sintéticos. Na próxima lição, vamos nos concentrar em testar este contrato para garantir que ele funcione conforme pretendido em vários cenários. A compreensão prática dos ativos sintéticos continua a aprofundar-se à medida que avançamos. Fique ligado para mais aprendizagem prática na próxima lição!

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

Implementando um Contrato de Ativos Sintéticos no Remix IDE

Nesta lição, expandiremos o nosso contrato SyntheticAsset.SOL adicionando funcionalidades para cunhar e resgatar ativos sintéticos. Estas operações são cruciais para o funcionamento de ativos sintéticos num cenário do mundo real. Vamos dissecar o código para perceber como estas funcionalidades são implementadas.

Estender o Contrato

Solidez
//Adicione estas variáveis de estado ao seu contrato
mapeamento (endereço = > uint256) balanço sintético público;
uint256 fornecimento sintético total público;

No trecho acima:

  • SyntheticBalance é um mapeamento que acompanha o saldo de 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 a função MintSyntheticAsset
função mintSyntheticAsset (uint256 _amount) pública {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

Na função MintSyntheticAsset:

  • Uma declaração de exigência verifica se há garantia suficiente para cunhar o valor solicitado de ativos sintéticos.
  • O saldo sintético do chamador (msg.sender) é aumentado em _amount.
  • O TotalSyntheticSupply também é aumentado em _amount.
  • A garantia é reduzida em _montante uma vez que é usada para apoiar os activos sintéticos recém-cuntados.
Solidez
//Atualizar a função RedeemSyntheticAsset
função 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 declaração de exigência verifica se o chamador tem um saldo suficiente de ativos sintéticos para resgatar.
  • O saldo sintético do chamador é diminuído em _amount.
  • O Total SyntheticSupply é reduzido em _quantidade.
  • A garantia é aumentada em _montante à medida que é liberada de volta após o resgate de ativos sintéticos.

O código completo

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

contrato SyntheticAsset {
 uint256 preço público do ativo subjacente;
 uint256 garantia pública;
 endereço proprietário público;
 mapeamento (endereço = > uint256) balanço sintético público;
 uint256 fornecimento sintético total público;

 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 vista pública (uint256) {
        return underlyingAssetPrice;
    }

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

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

Preparação: Adquirir Testnet Ether e Configurar o seu Ambiente

Adquirindo Testnet Ether

Para implementar contratos na Goerli Testnet, vai precisar de 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 a sua Metamask está ligada à Rede de Teste Goerli.

  2. Vá à torneira Goerli pedir algum Goerlieth. Basta colar o seu endereço Goerli Testnet Ethereum e deverá receber o teste ETH em breve.

Configurar o Remix para a implementação Goerli Testnet

  1. No Remix, navegue até ao separador Implantar & Executar Transações.

  2. Para a opção Ambiente, seleccione Provedor Injectado. Esta opção permite que o Remix ligue-se a qualquer rede para a qual a sua Metamask esteja configurada atualmente, que deve ser a Goerli Testnet.

  3. Certifique-se de que o seu contrato, OracleIntegratedContract, está selecionado na lista suspensa Contrato.

  4. Para a lista suspensa Conta, deverá ver o seu endereço Goerli Testnet Ethereum.

Compilando e Implantando o Contrato Alargado

Agora com as funcionalidades atualizadas em vigor, compile e implemente o seu contrato seguindo os passos da Lição 3.

Interagir com o Contrato Alargado

Com o contrato alargado implementado:

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

  2. Observe as alterações no SyntheticBalance, TotalSyntheticSupply e colaterais através da interface Remix IDE.

Observando o Comportamento do Contrato

Envolver-se com o contrato e observe como as variáveis de estado e o estado geral do contrato evoluem com as 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 de um contrato realista de ativos sintéticos. Na próxima lição, vamos nos concentrar em testar este contrato para garantir que ele funcione conforme pretendido em vários cenários. A compreensão prática dos ativos sintéticos continua a aprofundar-se à medida que avançamos. Fique ligado para mais aprendizagem prática na próxima lição!

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.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.