Bitcoin Forum
May 04, 2024, 01:25:00 AM *
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 119 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.
1714785900
Hero Member
*
Offline Offline

Posts: 1714785900

View Profile Personal Message (Offline)

Ignore
1714785900
Reply with quote  #2

1714785900
Report to moderator
1714785900
Hero Member
*
Offline Offline

Posts: 1714785900

View Profile Personal Message (Offline)

Ignore
1714785900
Reply with quote  #2

1714785900
Report to moderator
1714785900
Hero Member
*
Offline Offline

Posts: 1714785900

View Profile Personal Message (Offline)

Ignore
1714785900
Reply with quote  #2

1714785900
Report to moderator
Bitcoin addresses contain a checksum, so it is very unlikely that mistyping an address will cause you to lose money.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
TryNinja
Legendary
*
Offline Offline

Activity: 2828
Merit: 6975



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

.
.HUGE.
▄██████████▄▄
▄█████████████████▄
▄█████████████████████▄
▄███████████████████████▄
▄█████████████████████████▄
███████▌██▌▐██▐██▐████▄███
████▐██▐████▌██▌██▌██▌██
█████▀███▀███▀▐██▐██▐█████

▀█████████████████████████▀

▀███████████████████████▀

▀█████████████████████▀

▀█████████████████▀

▀██████████▀▀
█▀▀▀▀











█▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
CASINSPORTSBOOK
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀▀█











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