Título Encaminhado: Design inteligente de contrato: veja como o stETH distribui automaticamente os lucros diariamente? Deixe o seu ETH participar do staking para ganhar juros estáveis.
O autor converteu uma pequena quantidade de Ether (ETH) em Ether estável (stETH) e descobriu que a quantidade de stETH aumentava naturalmente a cada dia, gerando lucros contínuos. No entanto, não havia registros de transações visíveis na conta. Porquê? Este artigo explorará o design inteligente por trás disso e revelará o segredo da distribuição de lucros.
1 stETH gerou alguns lucros depois de alguns dias.
Antes de mergulhar em como o stETH gera lucros, vamos primeiro apresentar a lógica por trás disso, que é o stake do Ethereum. Os leitores que já estão familiarizados com esse conceito podem pular adiante.
Inicialmente, o Ethereum, assim como o Bitcoin, usava o Proof of Work (PoW) como seu mecanismo de consenso. No entanto, devido a preocupações com o consumo de energia, segurança e escalabilidade, o Ethereum fez a transição para o Proof of Stake (PoS) em setembro de 2022.
Anteriormente dependente do poder de mineração para alcançar consenso, o Ethereum agora depende dos participantes apostando ETH para obter direitos de voto e ganhar recompensas por meio de votação. Isso incentiva o consenso por meio do PoS.
Ao apostar 32 ETH, alguém pode se juntar à rede Ethereum como validador, responsável por armazenar dados, processar transações e adicionar novos blocos à blockchain. Os validadores recebem recompensas em ETH por embalar corretamente transações em novos blocos e verificar o trabalho de outros validadores, permitindo retornos relativamente estáveis através do staking.
No entanto, a participação tradicional é complicada para usuários comuns, pois requer 32 ETH e um computador dedicado com acesso ininterrupto à rede Ethereum. Além disso, a participação em ETH bloqueia a liquidez. Daí surge a Derivada de Participação Líquida (LSD), com o objetivo de lidar com as barreiras e problemas de liquidez da participação tradicional. A LSD permite que os usuários participem com menos de 32 ETH e deleguem seu ETH a provedores de participação de terceiros, recebendo tokens de participação correspondentes (como o stETH da Lido ou o rETH da Rocket Pool). Esses tokens líquidos podem ser negociados, emprestados ou usados em outras atividades financeiras em diversas plataformas, permitindo que os usuários participem da participação de forma mais conveniente, mantendo a liquidez.
Portanto, a lógica fundamental por trás do stETH é que os usuários fornecem seu ETH para o Lido, que então usa esses ETH para participar do PoS do Ethereum para gerar lucros. Em troca, os usuários recebem stETH como prova de sua participação. Em seguida, o Lido distribui os lucros para os endereços que possuem stETH.
Podemos observar que os lucros de stETH são atualizados automaticamente todos os dias. O gráfico a seguir ilustra a situação dos lucros que testamos, e os usuários podem verificar o conteúdo relevante de suas carteiras criptografadas diariamente.
Neste ponto, aqueles familiarizados com o desenvolvimento de contratos inteligentes podem se perguntar: com lucros diários tão pequenos, será que é suficiente para cobrir as taxas de gás?
De fato, se o Lido distribuísse os lucros usando o método mais simples, provavelmente teria dificuldade em cobrir o custo do gás. Enviar tokens para um número tão grande de endereços exigiria taxas significativas de gás, o que pode não ser viável.
No entanto, o Lido conseguiu alcançar um crescimento automático de lucros nas participações de stETH dentro das carteiras sem qualquer transação aparente. Como isso é possível?
Encontramos o contrato da Lido emhttps://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84e rastreou o método balanceOf no contrato.
O método balanceOf está em conformidade com o padrão ERC20 e é usado pelas carteiras para recuperar a quantidade de tokens possuída por um usuário.
No contrato stETH, vemos que ele chama o método getPooledEthByShares. Este método recebe o mapeamento (endereço => uint256) ações privadas; como entrada. Isso representa quanto stETH um usuário possui? Claramente não, pois atualizar os dados para cada endereço todos os dias seria impraticável. Embora a atualização das ações em uma única transação possa alcançar isso, o consumo de gás ainda seria substancial.
Até agora, muitos de vocês podem ter adivinhado como o contrato funciona. Vamos continuar examinando o método getPooledEthByShares.
Pode-se observar que o resultado final é obtido multiplicando o sharesAmount no endereço por _getTotalPooledEther() e dividindo por _getTotalShares.
_getTotalPooledEther representa a quantidade total de stETH (que, se o stETH estiver vinculado ao ETH numa proporção de 1:1, também representa a quantidade total de ETH), enquanto _getTotalShares representa o número total de ações. Com esse cálculo, a quantidade de stETH possuída por cada endereço é determinada dinamicamente.
Por exemplo, se houver um total de 1000 ações, com o Endereço A possuindo 100 ações (conforme representado por sharesAmount), e o total de stETH for 1000 (conforme retornado por _getTotalPooledEther), então, de acordo com esse cálculo, o Endereço A possuiria 100 stETH.
Agora, se a Lido apostar o total de 1000 ETH e ganhar 1 ETH de lucro, atualizando _getTotalPooledEther para 1001, o que significa que o total de stETH aumenta de 1000 para 1001. Portanto, o novo cálculo para o Endereço A seria 100 * 1001 / 1000 = 100,1 stETH.
Em termos mais simples, enquanto as ações mantidas por cada endereço permanecem constantes, o stETH correspondente a essas ações aumenta. Portanto, ao ser recalculado, os ativos stETH naturalmente aumentam.
Continuando com o código, a lógica dentro de _getTotalPooledEther é influenciada pelo método handleOracleReport, que atualiza dados relevantes dentro do contrato. Este método é chamado periodicamente, e a invocação específica ocorre através do contrato emhttps://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, que periodicamente chama submitReportData para atualizar os dados (submitReportData chama internamente handleOracleReport no contrato Lido):
Podemos ver que há chamadas diárias para atualizar o conteúdo relevante, o que explica por que, mesmo que não possamos ver nenhuma transação distribuindo lucros para nosso endereço, o saldo muda todos os dias.
Isso ilustra uma característica dos contratos inteligentes Ethereum ERC20: a quantidade de tokens possuída por endereços não é codificada de forma rígida, mas é retornada pelos métodos do contrato. Portanto, é possível que o saldo de tokens de um endereço mude mesmo sem nenhuma transação. Embora essa flexibilidade torne os contratos ERC20 mais versáteis, também pode ser confusa para aqueles que não estão familiarizados com contratos. Espero que este artigo ajude os leitores a entender melhor os contratos inteligentes e interagir com eles de forma mais segura e inteligente.
Além disso, embora apostar ETH para obter stETH pareça oferecer recompensas estáveis de aposta, ainda existem riscos potenciais envolvidos. Este artigo serve como uma exploração técnica de contratos de aposta e não deve ser interpretado como um conselho de investimento.
Este artigo é reproduzido a partir de [ Equipe ZAN],Título original “Design de contrato engenhoso, veja como o stETH distribui automaticamente renda diariamente? Deixe seu ETH participar do staking para obter juros estáveis”,Direitos autorais pertencem ao autor original[Equipe ZAN], se você tiver alguma objeção à reprodução, entre em contato com o Gate Learn equipe, e a equipe cuidará disso o mais rápido possível de acordo com os procedimentos relevantes.
Aviso legal: As opiniões expressas neste artigo representam apenas as opiniões pessoais do autor e não constituem nenhum conselho de investimento.
Outras versões do artigo em outros idiomas são traduzidas pela equipe Gate Learn e não são mencionadas emGate.io) o artigo traduzido não pode ser reproduzido, distribuído ou plagiado.
Compartilhar
Conteúdo
Título Encaminhado: Design inteligente de contrato: veja como o stETH distribui automaticamente os lucros diariamente? Deixe o seu ETH participar do staking para ganhar juros estáveis.
O autor converteu uma pequena quantidade de Ether (ETH) em Ether estável (stETH) e descobriu que a quantidade de stETH aumentava naturalmente a cada dia, gerando lucros contínuos. No entanto, não havia registros de transações visíveis na conta. Porquê? Este artigo explorará o design inteligente por trás disso e revelará o segredo da distribuição de lucros.
1 stETH gerou alguns lucros depois de alguns dias.
Antes de mergulhar em como o stETH gera lucros, vamos primeiro apresentar a lógica por trás disso, que é o stake do Ethereum. Os leitores que já estão familiarizados com esse conceito podem pular adiante.
Inicialmente, o Ethereum, assim como o Bitcoin, usava o Proof of Work (PoW) como seu mecanismo de consenso. No entanto, devido a preocupações com o consumo de energia, segurança e escalabilidade, o Ethereum fez a transição para o Proof of Stake (PoS) em setembro de 2022.
Anteriormente dependente do poder de mineração para alcançar consenso, o Ethereum agora depende dos participantes apostando ETH para obter direitos de voto e ganhar recompensas por meio de votação. Isso incentiva o consenso por meio do PoS.
Ao apostar 32 ETH, alguém pode se juntar à rede Ethereum como validador, responsável por armazenar dados, processar transações e adicionar novos blocos à blockchain. Os validadores recebem recompensas em ETH por embalar corretamente transações em novos blocos e verificar o trabalho de outros validadores, permitindo retornos relativamente estáveis através do staking.
No entanto, a participação tradicional é complicada para usuários comuns, pois requer 32 ETH e um computador dedicado com acesso ininterrupto à rede Ethereum. Além disso, a participação em ETH bloqueia a liquidez. Daí surge a Derivada de Participação Líquida (LSD), com o objetivo de lidar com as barreiras e problemas de liquidez da participação tradicional. A LSD permite que os usuários participem com menos de 32 ETH e deleguem seu ETH a provedores de participação de terceiros, recebendo tokens de participação correspondentes (como o stETH da Lido ou o rETH da Rocket Pool). Esses tokens líquidos podem ser negociados, emprestados ou usados em outras atividades financeiras em diversas plataformas, permitindo que os usuários participem da participação de forma mais conveniente, mantendo a liquidez.
Portanto, a lógica fundamental por trás do stETH é que os usuários fornecem seu ETH para o Lido, que então usa esses ETH para participar do PoS do Ethereum para gerar lucros. Em troca, os usuários recebem stETH como prova de sua participação. Em seguida, o Lido distribui os lucros para os endereços que possuem stETH.
Podemos observar que os lucros de stETH são atualizados automaticamente todos os dias. O gráfico a seguir ilustra a situação dos lucros que testamos, e os usuários podem verificar o conteúdo relevante de suas carteiras criptografadas diariamente.
Neste ponto, aqueles familiarizados com o desenvolvimento de contratos inteligentes podem se perguntar: com lucros diários tão pequenos, será que é suficiente para cobrir as taxas de gás?
De fato, se o Lido distribuísse os lucros usando o método mais simples, provavelmente teria dificuldade em cobrir o custo do gás. Enviar tokens para um número tão grande de endereços exigiria taxas significativas de gás, o que pode não ser viável.
No entanto, o Lido conseguiu alcançar um crescimento automático de lucros nas participações de stETH dentro das carteiras sem qualquer transação aparente. Como isso é possível?
Encontramos o contrato da Lido emhttps://etherscan.io/token/0xae7ab96520de3a18e5e111b5eaab095312d7fe84e rastreou o método balanceOf no contrato.
O método balanceOf está em conformidade com o padrão ERC20 e é usado pelas carteiras para recuperar a quantidade de tokens possuída por um usuário.
No contrato stETH, vemos que ele chama o método getPooledEthByShares. Este método recebe o mapeamento (endereço => uint256) ações privadas; como entrada. Isso representa quanto stETH um usuário possui? Claramente não, pois atualizar os dados para cada endereço todos os dias seria impraticável. Embora a atualização das ações em uma única transação possa alcançar isso, o consumo de gás ainda seria substancial.
Até agora, muitos de vocês podem ter adivinhado como o contrato funciona. Vamos continuar examinando o método getPooledEthByShares.
Pode-se observar que o resultado final é obtido multiplicando o sharesAmount no endereço por _getTotalPooledEther() e dividindo por _getTotalShares.
_getTotalPooledEther representa a quantidade total de stETH (que, se o stETH estiver vinculado ao ETH numa proporção de 1:1, também representa a quantidade total de ETH), enquanto _getTotalShares representa o número total de ações. Com esse cálculo, a quantidade de stETH possuída por cada endereço é determinada dinamicamente.
Por exemplo, se houver um total de 1000 ações, com o Endereço A possuindo 100 ações (conforme representado por sharesAmount), e o total de stETH for 1000 (conforme retornado por _getTotalPooledEther), então, de acordo com esse cálculo, o Endereço A possuiria 100 stETH.
Agora, se a Lido apostar o total de 1000 ETH e ganhar 1 ETH de lucro, atualizando _getTotalPooledEther para 1001, o que significa que o total de stETH aumenta de 1000 para 1001. Portanto, o novo cálculo para o Endereço A seria 100 * 1001 / 1000 = 100,1 stETH.
Em termos mais simples, enquanto as ações mantidas por cada endereço permanecem constantes, o stETH correspondente a essas ações aumenta. Portanto, ao ser recalculado, os ativos stETH naturalmente aumentam.
Continuando com o código, a lógica dentro de _getTotalPooledEther é influenciada pelo método handleOracleReport, que atualiza dados relevantes dentro do contrato. Este método é chamado periodicamente, e a invocação específica ocorre através do contrato emhttps://etherscan.io/address/0x852deD011285fe67063a08005c71a85690503Cee, que periodicamente chama submitReportData para atualizar os dados (submitReportData chama internamente handleOracleReport no contrato Lido):
Podemos ver que há chamadas diárias para atualizar o conteúdo relevante, o que explica por que, mesmo que não possamos ver nenhuma transação distribuindo lucros para nosso endereço, o saldo muda todos os dias.
Isso ilustra uma característica dos contratos inteligentes Ethereum ERC20: a quantidade de tokens possuída por endereços não é codificada de forma rígida, mas é retornada pelos métodos do contrato. Portanto, é possível que o saldo de tokens de um endereço mude mesmo sem nenhuma transação. Embora essa flexibilidade torne os contratos ERC20 mais versáteis, também pode ser confusa para aqueles que não estão familiarizados com contratos. Espero que este artigo ajude os leitores a entender melhor os contratos inteligentes e interagir com eles de forma mais segura e inteligente.
Além disso, embora apostar ETH para obter stETH pareça oferecer recompensas estáveis de aposta, ainda existem riscos potenciais envolvidos. Este artigo serve como uma exploração técnica de contratos de aposta e não deve ser interpretado como um conselho de investimento.
Este artigo é reproduzido a partir de [ Equipe ZAN],Título original “Design de contrato engenhoso, veja como o stETH distribui automaticamente renda diariamente? Deixe seu ETH participar do staking para obter juros estáveis”,Direitos autorais pertencem ao autor original[Equipe ZAN], se você tiver alguma objeção à reprodução, entre em contato com o Gate Learn equipe, e a equipe cuidará disso o mais rápido possível de acordo com os procedimentos relevantes.
Aviso legal: As opiniões expressas neste artigo representam apenas as opiniões pessoais do autor e não constituem nenhum conselho de investimento.
Outras versões do artigo em outros idiomas são traduzidas pela equipe Gate Learn e não são mencionadas emGate.io) o artigo traduzido não pode ser reproduzido, distribuído ou plagiado.