safemoon分红机制原理解析

这篇文章主要介绍了safemoon分红机制原理解析 ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/24268.html

safemoon分红机制原理解析是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,safemoon分红机制原理解析学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉safemoon分红机制原理解析比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

safemoon分红机制原理解析

  • 分红代币

在社区里提问了这个问题,自己做个总结

合约源码

[https://cn.etherscan.com/address/0xcd7492db29e2ab436e819b249452ee1bbdf52214#code](https://cn.etherscan.com/address/0xcd7492…

在社区里提问了这个问题,自己做个总结

合约源码

https://cn.etherscan.com/address/0xcd7492db29e2ab436e819b249452ee1bbdf52214#code

基本原理

每一笔转账都会触发分红,但是分红不会触发转账,只是修改一个系数,即修改每个用户的占比。 在别人进行转账时,用户的rOwned不变,系数currentRate变小,实际余额变大。 我觉得需要理解的一点是:在用户转账成功后,还未分红的时候,用户的_rOwned占比即为分红后的占比

举例说明

假设用户所有转账即为分红 _tTotal = 100,_rTotal = 10000 _rOwned[A] = 7000,_rOwned[B] = 2000,_rOwned[C] = 1000 用户B发起转账交易1000,即1000用做被分红。

  1. 常规分红计算

    _rOwned[A] = 70 + 70/90*10 = 700/9

    _rOwned[B] = 10 + 10/90*10 = 100/9

    _rOwned[C] = 10 + 10/90*10 = 100/9

  2. 占比分红

    _rOwned[A] = 7000/9000*100 = 700/9

    _rOwned[B] = 1000/9000*100 = 100/9

    _rOwned[C] = 1000/9000*100 = 100/9

余额核心代码

contract SMI is Context, IERC20, Ownable {     mapping (address => uint256) private _rOwned;      mapping (address => uint256) private _tOwned;      uint256 private constant MAX = ~uint256(0); //最大值     uint256 private constant _tTotal = 100000 * 10**6 * 10**9; // 实际总量     uint256 private _rTotal = (MAX - (MAX % _tTotal)); // 映射的总量      function balanceOf(address account) public view override returns (uint256) {         if (_isExcluded[account]) return _tOwned[account]; //不参与分红的用户         return tokenFromReflection(_rOwned[account]);//参与分红的用户     }     function tokenFromReflection(uint256 rAmount) public view returns(uint256) {         require(rAmount <= _rTotal, "Amount must be less than total reflections");         uint256 currentRate =  _getRate();         return rAmount.div(currentRate);     }     function _getRate() private view returns(uint256) {         (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();         return rSupply.div(tSupply);     }      function _getCurrentSupply() private view returns(uint256, uint256) {         uint256 rSupply = _rTotal;         uint256 tSupply = _tTotal;               for (uint256 i = 0; i < _excluded.length; i++) {             if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);             rSupply = rSupply.sub(_rOwned[_excluded[i]]);             tSupply = tSupply.sub(_tOwned[_excluded[i]]);         }         if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);         return (rSupply, tSupply);     } }

  • 发表于 1小时前
  • 阅读 ( 10 )
  • 学分 ( 0 )
  • 分类:以太坊eth

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/24268.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » safemoon分红机制原理解析

提供最优质的资源集合

立即查看 了解详情