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
:
exigência
verifica se há garantia suficiente para cunhar o valor solicitado de ativos sintéticos.saldo sintético
do chamador (msg.sender
) é aumentado em
_amount.TotalSyntheticSupply
também é aumentado em
_amount.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
:
exigência
verifica se o chamador tem um saldo suficiente de ativos sintéticos para resgatar.saldo sintético
do chamador é diminuído em
_amount.Total SyntheticSupply
é reduzido em
_quantidade.garantia
é aumentada em _montante
à medida que é liberada de volta após o resgate de ativos sintéticos.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;
}
}
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.
Metamask: Certifique-se de que a sua Metamask está ligada à Rede de Teste Goerli.
Vá à torneira Goerli pedir algum Goerlieth. Basta colar o seu endereço Goerli Testnet Ethereum e deverá receber o teste ETH em breve.
No Remix, navegue até ao separador Implantar & Executar Transações
.
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.
Certifique-se de que o seu contrato, OracleIntegratedContract
, está selecionado na lista suspensa Contrato.
Para a lista suspensa Conta
, deverá ver o seu endereço Goerli Testnet Ethereum.
Agora com as funcionalidades atualizadas em vigor, compile e implemente o seu contrato seguindo os passos da Lição 3.
Com o contrato alargado implementado:
Chame as funções MintSyntheticAsset e redeemSyntheticAsset
com diferentes montantes para cunhar e resgatar ativos
sintéticos, respectivamente.
Observe as alterações no SyntheticBalance,
TotalSyntheticSupply
e colaterais
através da interface Remix IDE.
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!
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
:
exigência
verifica se há garantia suficiente para cunhar o valor solicitado de ativos sintéticos.saldo sintético
do chamador (msg.sender
) é aumentado em
_amount.TotalSyntheticSupply
também é aumentado em
_amount.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
:
exigência
verifica se o chamador tem um saldo suficiente de ativos sintéticos para resgatar.saldo sintético
do chamador é diminuído em
_amount.Total SyntheticSupply
é reduzido em
_quantidade.garantia
é aumentada em _montante
à medida que é liberada de volta após o resgate de ativos sintéticos.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;
}
}
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.
Metamask: Certifique-se de que a sua Metamask está ligada à Rede de Teste Goerli.
Vá à torneira Goerli pedir algum Goerlieth. Basta colar o seu endereço Goerli Testnet Ethereum e deverá receber o teste ETH em breve.
No Remix, navegue até ao separador Implantar & Executar Transações
.
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.
Certifique-se de que o seu contrato, OracleIntegratedContract
, está selecionado na lista suspensa Contrato.
Para a lista suspensa Conta
, deverá ver o seu endereço Goerli Testnet Ethereum.
Agora com as funcionalidades atualizadas em vigor, compile e implemente o seu contrato seguindo os passos da Lição 3.
Com o contrato alargado implementado:
Chame as funções MintSyntheticAsset e redeemSyntheticAsset
com diferentes montantes para cunhar e resgatar ativos
sintéticos, respectivamente.
Observe as alterações no SyntheticBalance,
TotalSyntheticSupply
e colaterais
através da interface Remix IDE.
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!