什么是 DeFi? 让用户在无需依附中心化机构的状况下,通过部署在智能合约平台上的去中心化利用(Dapp)实现一系列金融服务
合约次要性能函数介绍
1.1 主要参数I34开发I633搭建53I9定制
address private owner; //合约部署(拥有者)账号地址
address private profitor; //收益分配者账号地址,仅该地址有权调配收益
bool _isDIS = false; //质押合约性能状态,true才能够进行质押
ERC20 _Token; //用于调配收益的ERC20资产
KeyFlag[] keys; //用于标记用户地址的质押状态
uint256 size; //质押者地址(用户)数量
uint256 _maxPledgeAmount; //最大质押(底层币)额度
uint256 _maxMiningAmount; //最大(ERC20收益分配)额度
uint256 _leftMiningAmount; //残余额度
uint256 _minAmount; //单次起码质押额度
uint256 _totalPledegAmount; //已质押总额度
uint256 _maxPreMiningAmount; //最大单次调配额度
uint256 _startTime; //开始工夫,单位“秒”
uint256 _endTime; //完结工夫,单位“秒”
uint256 _precentUp=100; //与_precentDown一起设定每次收益提取比例
uint256 _precentDown=100; //与_precentUp一起设定每次收益提取比例
struct PledgeOrder { //构造体,用于标记质押用户的各类状态
bool isExist; //质押状态uint256 token; //质押额度uint256 profitToken; //收益额度uint256 time; //最近一次提取收益工夫uint256 index; //质押地址序号
}
struct KeyFlag { //构造体,用于标记用户地址的质押状态
address key; //地址bool isExist; //质押状态
}
部署合约时,构造函数内的参数须要用户输出,以实现相应的参数设置并实现相应性能;
1.2 质押函数pledgeToken
function pledgeToken() public payable{
require(address(msg.sender) == address(tx.origin), "no contract");require(_isDIS, "is disable");require(_leftMiningAmount>0, "less token");require(msg.value>=_minAmount, "less token");require(_totalPledegAmount.add(msg.value)<=_maxPledgeAmount, "more token");require(block.timestamp>=_startTime&&block.timestamp<=_endTime, "is disable");if(_orders[msg.sender].isExist==false){ keys.push(KeyFlag(msg.sender,true)); size++; createOrder(msg.value,keys.length.sub(1));}else{ PledgeOrder storage order=_orders[msg.sender]; order.token=order.token.add(msg.value); keys[order.index].isExist=true;}_totalPledegAmount=_totalPledegAmount.add(msg.value);
}
性能阐明:
显著的,该函数具备接管底层币性能(payable);
质押地址必须是账号地址,不能是合约地址;
须要合约质押性能曾经开始,且在流动限定工夫内;
残余额度大于0;
进行质押的底层币额度不能少于最小值,质押后也不能超过限定的最大质押额度;
如果该用户之前没有质押过,则建设档案(createOrder),否则仅批改档案;
DeFi 的特点:
打消可信第三方:依附区块链的个性来创立信赖,将传统交易中对政府和银行等信贷机构的信赖转化为对机器的信赖。
智能合约:主动自主,降低成本,进步速度和精度,不受外力影响确保合约执行
安全性、隐衷性、透明性——区块链的实质劣势