智慧合約盲盒遊戲開發上線版丨智慧合約盲盒遊戲系統開發(開發案例)
Blockchain technology can thus empower enterprises in many ways:providing reliable shared data and building trust between all parties;Eliminate data islands,that is,integrate data into a system through centralized ledgers that are shared in a network and support the access of licensees;Give high security to data;
interface IWETH{
function deposit()external payable;
function transfer(address to,uint value)external returns(bool);
function withdraw(uint)external;
}
contract UniswapV2Router02 is IUniswapV2Router02{
using SafeMath for uint;
address public immutable override factory;
address public immutable override WETH;
//交易時間是否過期,dapp中預設設定時20分鐘內成交有效
modifier ensure(uint deadline){
require(deadline>=block.timestamp,'UniswapV2Router:EXPIRED');
_;
}
constructor(address _factory,address _WETH)public{
factory=_factory;
WETH=_WETH;
}
receive()external payable{
assert(msg.sender==WETH);//only accept ETH via fallback from the WETH contract
}
//****ADD LIQUIDITY****
//新增流動性內部方法,透過該方法計算出兩個幣的實際所需數量
function _addLiquidity(
address tokenA,//代幣地址A
address tokenB,//代幣地址B
uint amountADesired,//代幣A期望新增量
uint amountBDesired,//代幣B期望新增量
uint amountAMin,//代幣A最小新增量(這兩個min,收益新增的時候可以和Desired一樣,二次新增的時候,一般都是小於Desired,具體小多少,演演算法可以檢視uniswap前端程式碼)
uint amountBMin//代幣B最小新增量
)internal virtual returns(uint amountA,uint amountB){//返回值是兩個
//create the pair if it doesn't exist yet
//透過factory,查詢pair,如果等於0地址,就表示還沒有該交易對,呼叫建立方法
if(IUniswapV2Factory(factory).getPair(tokenA,tokenB)==address(0)){
IUniswapV2Factory(factory).createPair(tokenA,tokenB);//建立交易對
}功能及詳細:MrsFu123
//可以先了解下UniswapV2Library中相關方法的意思
//如果查詢兩個值都是0,首次新增,直接使用期望值
(uint reserveA,uint reserveB)=UniswapV2Library.getReserves(factory,tokenA,tokenB);
if(reserveA==0&&reserveB==0){
(amountA,amountB)=(amountADesired,amountBDesired);//直接使用這兩個值,比例就是相互的幣價
}else{
//如果兩個儲備量不為0,需要根據當前的價格/比例去新增流動性
//先透過quote計算如果輸入A的數量,得出B的實際輸入量
uint amountBOptimal=UniswapV2Library.quote(amountADesired,reserveA,reserveB);
//如果B的實際輸入量<=B的期望輸入數量,
if(amountBOptimal<=amountBDesired){
//實際輸入量需要大於等於引數中的最小數量
require(amountBOptimal>=amountBMin,'UniswapV2Router:INSUFFICIENT_B_AMOUNT');
(amountA,amountB)=(amountADesired,amountBOptimal);//得到兩個的實際新增量
}else{
//如果上面計算的B的實際輸入量大於期望輸入量,就說明使用者得B數量不夠,需要反過來,透過B計算A的數量,看A的數量是否滿足,
//透過B計算A的數量
uint amountAOptimal=UniswapV2Library.quote(amountBDesired,reserveB,reserveA);//
assert(amountAOptimal<=amountADesired);//需要計算得來的A量小於等於A的預期輸入量
require(amountAOptimal>=amountAMin,'UniswapV2Router:INSUFFICIENT_A_AMOUNT');//且實際輸入量,需要大於等於最小數量
(amountA,amountB)=(amountAOptimal,amountBDesired);//得到兩個的實際新增量
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2937719/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Dapp智慧合約遊戲鏈遊開發丨智慧合約遊戲鏈遊系統開發案例版APP遊戲
- 盲盒遊戲開發(功能)丨盲盒遊戲系統開發(規則及詳細)丨盲盒遊戲原始碼部署遊戲開發原始碼
- DApp智慧合約鏈上盲盒遊戲代幣質押專案挖礦系統開發APP遊戲
- DApp智慧合約鏈上盲盒代幣挖礦系統開發APP
- NFT+盲盒模式智慧合約dapp系統開發思路分析模式APP
- DAPP智慧合約迴圈互助遊戲開發原理丨DAPP智慧合約迴圈互助遊戲系統開發(開發案例)APP遊戲開發
- DAPP/defi智慧合約交易系統開發詳情/NFT智慧合約盲盒模式方案.搭建APP模式
- 智慧合約互助遊戲開發運營版丨FDF智慧合約互助遊戲系統開發(詳情及流程)遊戲開發
- NFT盲盒系統開發智慧合約專案分析(原始碼Solidity示例)原始碼Solid
- NFT盲盒卡牌遊戲系統開發搭建遊戲
- 如何建立智慧合約遊戲系統?智慧合約遊戲開發核心原始碼示例遊戲開發原始碼
- DAPP智慧合約互助遊戲開發詳情丨DAPP智慧合約互助遊戲系統開發技術分析及規則APP遊戲開發
- NFT鏈遊數藏盲盒元宇宙系統開發流程丨NFT鏈遊盲盒案例原始碼元宇宙原始碼
- NFT卡牌遊戲系統開發|NFT盲盒商城開發搭建遊戲
- 智慧合約鏈遊開發詳情丨智慧合約鏈遊系統開發(開發方案)及原始碼分析原始碼
- 智慧合約眾籌迴圈互助遊戲系統開發(DAPP開發)丨案例原始碼遊戲APP原始碼
- NFT遊戲開發系統盲盒交易搭建技術遊戲開發
- NFT盲盒商城遊戲系統開發技術搭建遊戲
- NFT鏈遊功能開發丨DAPP智慧合約遊戲系統技術開發模式APP遊戲模式
- web3 DApp盲盒抽獎遊戲系統開發NFT鑄造合約定製詳情WebAPP遊戲
- NFT鑄造盲盒挖礦智慧合約系統開發定製詳情丨DAPP技術框架APP框架
- FDF互助智慧合約遊戲系統開發(開發原理及方案)遊戲
- defi+nft卡牌鏈遊開發原理丨NFT卡牌盲盒遊戲系統模式開發遊戲模式
- 馬蹄鏈互助遊戲開發詳情丨馬蹄鏈互助智慧合約遊戲系統開發(案例及分析)遊戲開發
- NFT盲盒開發丨NFT盲盒質押挖礦理財DAPP系統開發丨Defi丨LPAPP
- FDF智慧合約系統開發程式碼示例丨FDF互助遊戲合約迴圈理念遊戲
- 秒合約開發(穩定版)丨秒合約系統開發(開發案例)丨秒合約系統原始碼詳情原始碼
- BSC幣安鏈盲盒區塊鏈遊戲開發詳情丨BSC幣安鏈盲盒區塊鏈遊戲系統開發技術原理及分析區塊鏈遊戲開發
- FDF互助遊戲智慧合約開發(馬蹄鏈開發)遊戲
- FDF智慧合約互助公排遊戲系統開發方案遊戲
- FDF互助遊戲智慧合約系統開發原始碼解析遊戲原始碼
- 智慧合約系統開發原理介紹丨智慧合約開發原始碼詳情原始碼
- 雜湊競猜遊戲系統技術開發丨雜湊遊戲Solidity智慧合約遊戲Solid
- NFT卡牌盲盒元宇宙遊戲系統制度開發規則元宇宙遊戲
- NFT卡牌遊戲系統開發|NFT盲盒商城搭建技術遊戲
- 什麼是NFT盲盒?NFT盲盒挖礦生態遊戲開發功能介紹遊戲開發
- dapp/nft盲盒遊戲系統開發規則說明/案例分析/原始碼部署APP遊戲原始碼
- 迴圈互助智慧合約(FDF)系統開發(參考版)丨FDF智慧合約開發程式碼示例