DAPP质押挖矿理财系统开发细节详情

v_tg_ch3nguang · · 601 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

随着区块链技术的快速发展,各种金融衍生品也如雨后春笋般涌现出来。其中,质押挖矿理财分红成为了一个备受关注的话题。质押挖矿理财分红,顾名思义,是将数字货币进行质押挖矿,获得挖矿奖励和质押利息,再通过分红方式分给持币者的一种理财方式。这种方式具有较高的风险性,但同时也可以获得较高的收益。 下面我们将通过编程实现一个简单的质押挖矿理财分红合约。 代码实现: solidityCopycode//SPDX-License-Identifier:MIT pragmasolidity^0.8.0; contractStaking{【更全面的开发源码搭建可看我昵称】 //存储挖矿奖励和质押利息 structUserInfo{ uint256amount;//存储的数量 uint256rewardDebt;//质押挖矿时的rewardDebt } //存储代币总量和每个地址存储的数量 uint256publictotalSupply; mapping(address=>uint256)publicbalanceOf; //存储每个地址的质押挖矿信息 mapping(address=>UserInfo)publicuserInfo; //存储质押和挖矿奖励的比例 uint256publicconstantrewardRate=10;//挖矿奖励比例,10% uint256publicconstantstakeRate=10;//质押利息比例,10% //存储最后一次更新的块高和奖励数量 uint256publiclastRewardBlock; uint256publicrewardPerBlock; //构造函数 constructor(uint256_rewardPerBlock){ rewardPerBlock=_rewardPerBlock; lastRewardBlock=block.number; } //质押 functionstake(uint256_amount)public{ //转移代币到合约账户 require(_amount>0,"Cannotstake0"); require( balanceOf[msg.sender]+_amount<=address(this).balance, "Insufficientbalance" ); payable(address(this)).transfer(_amount);  //更新质押信息 UserInfostorageuser=userInfo[msg.sender]; uint256pendingReward=(block.number-lastRewardBlock)*rewardPerBlock; if(user.amount>0){ uint256reward=(user.amount*pendingReward*rewardRate)/ (totalSupply*100); user.rewardDebt+=reward; } user.amount+=_amount; user.rewardDebt+=(user.amount*pendingReward*stakeRate)/ (totalSupply*100); balanceOf[msg.sender]+=_amount; totalSupply+=_amount; }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

601 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传