Bitcoin Forum
November 08, 2024, 09:58:01 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Estudando algumas sorces, entendendo reflections  (Read 124 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: 3010
Merit: 7437


Top Crypto Casino


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

███████████████████████
████▐██▄█████████████████
████▐██████▄▄▄███████████
████▐████▄█████▄▄████████
████▐█████▀▀▀▀▀███▄██████
████▐███▀████████████████
████▐█████████▄█████▌████
████▐██▌█████▀██████▌████
████▐██████████▀████▌████
█████▀███▄█████▄███▀█████
███████▀█████████▀███████
██████████▀███▀██████████

███████████████████████
.
BC.GAME
▄▄▀▀▀▀▀▀▀▄▄
▄▀▀░▄██▀░▀██▄░▀▀▄
▄▀░▐▀▄░▀░░▀░░▀░▄▀▌░▀▄
▄▀▄█▐░▀▄▀▀▀▀▀▄▀░▌█▄▀▄
▄▀░▀░░█░▄███████▄░█░░▀░▀▄
█░█░▀░█████████████░▀░█░█
█░██░▀█▀▀█▄▄█▀▀█▀░██░█
█░█▀██░█▀▀██▀▀█░██▀█░█
▀▄▀██░░░▀▀▄▌▐▄▀▀░░░██▀▄▀
▀▄▀██░░▄░▀▄█▄▀░▄░░██▀▄▀
▀▄░▀█░▄▄▄░▀░▄▄▄░█▀░▄▀
▀▄▄▀▀███▄███▀▀▄▄▀
██████▄▄▄▄▄▄▄██████
.
..CASINO....SPORTS....RACING..


▄▄████▄▄
▄███▀▀███▄
██████████
▀███▄░▄██▀
▄▄████▄▄░▀█▀▄██▀▄▄████▄▄
▄███▀▀▀████▄▄██▀▄███▀▀███▄
███████▄▄▀▀████▄▄▀▀███████
▀███▄▄███▀░░░▀▀████▄▄▄███▀
▀▀████▀▀████████▀▀████▀▀
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!