Bitcoin Forum
May 27, 2024, 09:43:49 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Estudando algumas sorces, entendendo reflections  (Read 120 times)
moinho (OP)
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
April 28, 2021, 08:51:32 PM
 #1

Sou bem novo no mundo de solidity, estudei o necessário para entender as sintaxes mas para me aprofundar, comecei a ler as sources das criptomoedas. E me deparei com esse tal de reflections que tem pra todo canto, tem muito o que eu entender então esse será meu primeiro de muitos topicos aqui.

https://prnt.sc/127tg78

por que geralmente todos os contratos usam isso? Não poderia ser mais fácil, por exemplo:

mapping (address => uint256) public balanceOf;

return balanceOf[msg.address]

Se alguém poder explicar o motivo de usar uma logica mais complexa, e também qual a logica por trás, ficarei muito grato. Não precisa ser tudo em detalhes, apenas um empurrãozinho já vai me ajudar muito.
TryNinja
Legendary
*
Offline Offline

Activity: 2842
Merit: 7103


Crypto Swap Exchange


View Profile WWW
April 29, 2021, 05:17:31 AM
 #2

Esses tokens de reflection não calculam os saldos da mesma forma (simples) de um token qualquer.

Exemplo de um token genérico:

- ABC tem 10 tokens e XYZ tem 5 tokens.
- O estado do array addresses é: [ABC: 5, XYZ: 10]

- ABC envia 10 tokens para XYZ.
- É realizado as operações: addresses[ABC] = addresses[ABC] - 10 e addresses[XYZ] = addresses[XYZ] + 10

No caso de um token de reflection, todos os saldos devem ser dinâmicos, já que ao contrário de um token comum onde cada transação só afeta quem envia e quem recebe (ABC e XYZ), cada transação afeta todos os endereços com tokens através do tal "imposto" das transações (e.g cada transação cobra 2% e envia para o restante dos hodlers).

Dessa forma, o endereço ABC enviaria 10 tokens para XYZ, porém XYZ apenas receberia 8 tokens, sendo que os 2 restantes seriam distribuídos para todos os outros endereços, proporcionalmente ao balanço de cada.

No seu screenshot, a função balanceOf chama tokenFromReflection, que deriva o saldo do endereço baseado no rate atual da rede, digamos, 25 tokens a cada 1 token de "share" do total da rede. Após a transação de ABC -> XYZ, os 2 tokens taxados são somados ao rate da rede, fazendo com que cada token de share agora equivale a 25.2 tokens.

Claro que tem toda uma matemática por trás para derivar esses valores, mas estou explicando tudo da forma mais simples possível para você entender a logíca por trás disso. Cheesy

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!