MSG乌托邦理想国NFT系统设计

简介: 什么是MSG乌托邦理想国NFT系统

什么是MSG乌托邦理想国NFT系统

MSG乌托邦理想国NFT系统是专为数字艺术家和数字货币爱好者打造的一个去中心化的NFT交易系统。
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/utils/math/SafeMath.sol";
contract IDOStakingContract {
using SafeMath for uint256; IERC20 public token1; IERC20 public token2;
struct User {
uint256 amount1;
uint256 amount2;
uint256 rewardDebt;
}
mapping (address => User) public users;
uint256 public totalAmount1;
uint256 public totalAmount2;
uint256 public rewardPerToken;
constructor(IERC20 _token1, IERC20 _token2) {
token1 = _token1;
token2 = _token2;
}
function stake(uint256 _amount1, uint256 _amount2) external {
require(_amount1 > 0 && _amount2 > 0, "Amounts must be greater than 0");
token1.transferFrom(msg.sender, address(this), _amount1);
token2.transferFrom(msg.sender, address(this), _amount2);
users[msg.sender].amount1 = _amount1;
users[msg.sender].amount2 = _amount2;
totalAmount1 = totalAmount1.add(_amount1);
totalAmount2 = totalAmount2.add(_amount2);
if (totalAmount1 > 0 && totalAmount2 > 0) {
uint256 reward = token1.balanceOf(address(this));
rewardPerToken = reward.div(totalAmount1).div(totalAmount2);
}
users[msg.sender].rewardDebt = rewardPerToken;
}
function withdraw() external {
require(users[msg.sender].amount1 > 0 && users[msg.sender].amount2 > 0,
"Nothing staked");
uint256 amount1 = users[msg.sender].amount1;
uint256 amount2 = users[msg.sender].amount2;
token

相关文章
|
安全 网络协议 关系型数据库
firewalld 详细介绍配置(一)
【8月更文挑战第10天】FirewallD是一款动态防火墙管理工具,通过网络区域(zone)定义接口的安全级别。与iptables需重载全部规则相比,FirewallD仅更新变动部分,更高效。它利用iptables作为规则管理入口,自身不具防火墙功能,依赖内核的netfilter实现。区域(zone)代表一组过滤规则,不同区域默认行为各异,如public、work等。服务配置则以人性化名称管理端口,简化规则管理。常用命令包括安装、启动、停止及查询状态等。
225 4
|
11月前
|
监控 数据可视化 安全
AD域管理PowerShell常用命令总结
本文介绍了GET-ADUser命令在AD域管理中的多种应用场景,包括获取、过滤和导出用户信息至CSV文件。同时,推荐了卓豪ADManager Plus软件,该软件提供了批量用户与组管理、报表生成功能,极大简化了AD域的日常管理工作,提升了IT管理员的工作效率和准确性。
292 1
|
XML Java 数据格式
【Spring】全面讲解IOC、AOP、注入方式、bean的生命周期、aop通知应用 spring与web容器整合
Spring是一个开源的轻量级Java应用开发框架,它提供了一种简单、高效、灵活的方式来构建企业级应用程序。Spring框架的核心特点是依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming),它通过一组模块化的组件提供全面的支持,使开发人员能够快速搭建可扩展、可维护的应用。
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
|
资源调度 JavaScript API
使用 Pinia 掌握 Vue.js 中的状态管理
使用 Pinia 掌握 Vue.js 中的状态管理
|
机器学习/深度学习 弹性计算 人工智能
动态分享 | 看看阿里云和伙伴们,最近都在做什么?
动态分享 | 看看阿里云和伙伴们,最近都在做什么?
764 0
|
监控 算法 Java
JVM调优---堆溢出,栈溢出的出现场景以及解决方案
【7月更文挑战第3天】堆溢出(Heap Overflow)和栈溢出(Stack Overflow)是两种常见的内存溢出问题,通常发生在内存管理不当或设计不合理的情况下
462 3
|
数据采集 人工智能 监控
阿里云百炼模型训练实战流程:从入门到实战应用
【7月更文第2天】阿里云百炼是AI大模型开发平台,提供一站式服务,涵盖模型训练到部署。用户从注册登录、创建应用开始,选择模型框架,配置资源。接着,进行数据准备、预处理,上传至阿里云OSS。模型训练涉及设置参数、启动训练及调优。训练后,模型导出并部署为API,集成到应用中。平台提供监控工具确保服务性能。通过百炼,开发者能高效地进行大模型实战,开启AI创新。
4351 2
|
存储 Prometheus 监控
【监控】grafana图表使用快速上手
【监控】grafana图表使用快速上手
487 0
|
缓存
如何彻底卸载VSCode及其原来的插件配置缓存
如何彻底卸载VSCode及其原来的插件配置缓存
1561 0