defi质押挖矿dapp系统开发智能合约部署函数介绍

简介: defi质押挖矿dapp系统开发智能合约部署函数介绍

什么是 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 的特点:

消除可信第三方:依靠区块链的特性来创建信任,将传统交易中对政府和银行等信贷机构的信任转化为对机器的信任。

智能合约:自动自主,降低成本,提高速度和精度,不受外力影响确保合约执行

安全性、隐私性、透明性——区块链的本质优势

相关文章
|
安全 Linux Shell
全面对比linux和windows,选择哪个系统比较好
全面对比linux和windows,选择哪个系统比较好
2271 0
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
移动开发 小程序 IDE
《钉钉应用开发者速成手册》之“开放平台介绍”
什么是钉钉开放平台? 钉钉开放平台是基于钉钉的基础产品和底座,为生态合作伙伴、企业客户及开发者提供所需要的开放能力的应用开发平台。通过钉钉开放平台可以帮助企业快速、低成本的实现高质量的移动微应用,实现生产、管理、协作、运营的业务在线化。
2452 1
《钉钉应用开发者速成手册》之“开放平台介绍”
|
SQL 自然语言处理 关系型数据库
【Hive】函数 concat 、concat_ws 、concat_group 的区别
【Hive】函数 concat 、concat_ws 、concat_group 的区别
2181 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
2166 1
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
|
网络协议 Unix
EOF到底是什么意思?
我们在使用C标准I/O时,经常会看到EOF这个概念,这里需要明确的是并不存在EOF这样一个字符,它只是一个控制条件。起初,我认为EOF就是字面意思即,到达了文件的结尾(End of File)。
1743 1
|
机器学习/深度学习 缓存 自然语言处理
PyTorch使用Tricks:梯度裁剪-防止梯度爆炸或梯度消失 !!
PyTorch使用Tricks:梯度裁剪-防止梯度爆炸或梯度消失 !!
1325 0
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means算法对人脸图像进行聚类实战(附源码和数据集)
【Python机器学习】K-Means算法对人脸图像进行聚类实战(附源码和数据集)
751 1
|
移动开发 自然语言处理 前端开发
分享82个HTML电子产品模板,总有一款适合您
分享82个HTML电子产品模板,总有一款适合您
319 0