Bài học 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!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 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!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.