在智能合约中,如何做到自动分红

目前,经常有智能合约要求做到自动分红,公开的合约很多,写得相对比较复杂,很多同学看了之后,一头蒙,那么自动分红的原理是什么呢?
这篇文章就简单的做一下介绍。
首先定义一个变量,当池子里沉淀到一定值的时候,才开始分红。为什么要这么做呢?因为在合约中,不可能每笔都要分红,所以,才要沉淀到一定值,分红一次,否则gas费会特别的高。
//分红池子
uint256 internal _maxfeihong=2000000*10**18;
//如果池子分红达到条件
if(feihongpool>=_maxfeihong ){
uint256 tmp=feihongpool.div(ERC20(pooladdress).totalSupply());
feihongpool=0;
feihongdetail.push(tmp);
}

//开始分红
uint256 tmp;
if(userfeihong[fromad]<feihongdetail.length-1){
for(uint256 i=userfeihong[fromad]+1;i<feihongdetail.length;i++){
tmp=feihongdetail[i]*ilpvalue;
}
_balances[fromad]=_balances[fromad].add(tmp);
userfeihong[fromad]=feihongdetail.length-1;
}

短短的几行代码,完美的解决问题。
有不了解的同学,可以一起交流学习,vx:54516204

猜你喜欢

转载自blog.csdn.net/weixin_38532278/article/details/123708047