DAO/LP代幣質押流動性挖礦分紅系統開發(方案及專案)丨原始碼功能
#notice Convert ETH to Tokens.
#dev User specifies exact input(msg.value).
#dev User cannot specify minimum output or deadline.
#用ETH兌換代幣的預設函式,使用者只需要指定輸入的ETH的數量
public
payable
def __default__():
self.ethToTokenInput(msg.value,1,block.timestamp,msg.sender,msg.sender)
#notice Convert ETH to Tokens.
#dev User specifies exact input(msg.value)and minimum output.所以接收的代幣最小值
#param min_tokens Minimum Tokens bought.
#param deadline Time after which this transaction can no longer be executed.
#return Amount of Tokens bought.
關於區塊鏈專案技術開發唯:MrsFu123,代幣發行、dapp智慧合約開發、鏈遊開發、多鏈錢包開發
交易所開發、量化合約開發、互助遊戲開發、Nft數字藏品開發、眾籌互助開發、元宇宙開發、swap開發、
鏈上合約開發、ido開發、商城開發等,開發過各種各樣的系統模式,更有多種模式、制度、案例、後臺等,成熟技術團隊,歡迎實體參考。
#ETH透過msg.value的方式傳送給代幣合約,代幣合約根據所接收到的ETH計算所需支付的代幣
public
payable
def ethToTokenSwapInput(min_tokens:uint256,deadline:timestamp)->uint256:
return self.ethToTokenInput(msg.value,min_tokens,deadline,msg.sender,msg.sender)
#notice Convert ETH to Tokens and transfers Tokens to recipient.
#dev User specifies exact input(msg.value)and minimum output
#param min_tokens Minimum Tokens bought.
#param deadline Time after which this transaction can no longer be executed.
#param recipient The address that receives output Tokens.
#return Amount of Tokens bought.
public
payable
def ethToTokenTransferInput(min_tokens:uint256,deadline:timestamp,recipient:address)->uint256:
assert recipient!=self and recipient!=ZERO_ADDRESS
return self.ethToTokenInput(msg.value,min_tokens,deadline,msg.sender,recipient)
#notice Convert ETH to Tokens.
#dev User specifies maximum input(msg.value)and exact output.
#param tokens_bought Amount of tokens bought.
#param deadline Time after which this transaction can no longer be executed.
#return Amount of ETH sold.
public
payable
def ethToTokenSwapOutput(tokens_bought:uint256,deadline:timestamp)->uint256(wei):
return self.ethToTokenOutput(tokens_bought,msg.value,deadline,msg.sender,msg.sender)
#notice Convert ETH to Tokens and transfers Tokens to recipient.
#dev User specifies maximum input(msg.value)and exact output.
#param tokens_bought Amount of tokens bought.
#param deadline Time after which this transaction can no longer be executed.
#param recipient The address that receives output Tokens.
#return Amount of ETH sold.
public
payable
def ethToTokenTransferOutput(tokens_bought:uint256,deadline:timestamp,recipient:address)->uint256(wei):
assert recipient!=self and recipient!=ZERO_ADDRESS
return self.ethToTokenOutput(tokens_bought,msg.value,deadline,msg.sender,recipient)
private
def ethToTokenInput(eth_sold:uint256(wei),min_tokens:uint256,deadline:timestamp,buyer:address,recipient:address)->uint256:
assert deadline>=block.timestamp and(eth_sold>0 and min_tokens>0)
token_reserve:uint256=self.token.balanceOf(self)#獲取代幣儲備量
#用getInputPrice獲得所購買得到的代幣數量
#因為交易是先轉賬再執行合約,所以獲得ETH儲備量的時候需要先減去該買者已經傳送的ETH
tokens_bought:uint256=self.getInputPrice(as_unitless_number(eth_sold),as_unitless_number(self.balance-eth_sold),token_reserve)
assert tokens_bought>=min_tokens
assert self.token.transfer(recipient,tokens_bought)#向接收者傳送代幣
log.TokenPurchase(buyer,eth_sold,tokens_bought)
return tokens_bought
private
def ethToTokenOutput(tokens_bought:uint256,max_eth:uint256(wei),deadline:timestamp,buyer:address,recipient:address)->uint256(wei):
assert deadline>=block.timestamp and(tokens_bought>0 and max_eth>0)
token_reserve:uint256=self.token.balanceOf(self)#獲取代幣儲備
#用getOutputPrice獲得所需支付的ETH數量
#因為交易是先轉賬再執行合約程式碼,所以呼叫該合約時ETH已經轉到兌換合約中,
#而入口函式會直接將msg.value作為max_eth傳入,所以ETH儲備量為self.balance-max_eth
eth_sold:uint256=self.getOutputPrice(tokens_bought,as_unitless_number(self.balance-max_eth),token_reserve)
#Throws if eth_sold>max_eth
#計算需要退還給使用者的ETH
eth_refund:uint256(wei)=max_eth-as_wei_value(eth_sold,'wei')
if eth_refund>0:
send(buyer,eth_refund)#如果需要退還的ETH大於0,轉賬。
assert self.token.transfer(recipient,tokens_bought)#向使用者傳送代幣
log.TokenPurchase(buyer,as_wei_value(eth_sold,'wei'),tokens_bought)
return as_wei_value(eth_sold,'wei')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2939877/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DAO流動性質押挖礦分紅系統開發(開發案例)丨DAO流動性質押挖礦分紅原始碼原始碼
- DAO代幣流動性質押挖礦分紅系統開發(規則及方案)案例原始碼原始碼
- dao代幣質押流動性挖礦開發正式版丨dao代幣質押流動性挖礦系統開發案例詳細及原始碼原始碼
- LP流動性質押挖礦系統開發流程解析丨LP流動性質押挖礦開發成品原始碼功能原始碼
- DAPP丨LP雙幣質押流動性挖礦分紅系統開發(開發詳細及方案)原始碼案例APP原始碼
- DAO代幣流動性質押挖礦分紅系統開發(開發詳細)及邏輯原始碼原始碼
- 代幣智慧合約質押流動性挖礦分紅開發丨代幣智慧合約質押流動性挖礦分紅系統開發
- DAPP丨LP代幣合約流動性質押挖礦分紅系統開發(開發需求及案例)APP
- LP流動性質押挖礦開發正式版丨LP流動性質押挖礦系統開發(詳細及案例)丨原始碼原始碼
- 代幣合約流動性質押挖礦開發原始碼版丨代幣合約流動性質押挖礦系統開發(成熟方案)原始碼
- defi/dapp/lp/ido質押流動性挖礦分紅系統開發(案例及成熟)丨原始碼APP原始碼
- dao丨ido丨lp丨dapp丨defi單雙幣/子母幣/代幣流動性質押挖礦系統開發運營版及原始碼版APP原始碼
- defi丨dapp丨dao丨ido丨lp子母幣/單雙幣/機槍池流動性代幣質押挖礦系統開發案例及原始碼APP原始碼
- DAPP智慧合約LP流動性質押挖礦分紅系統開發詳細及功能丨原始碼案例APP原始碼
- LP質押模式系統開發技術功能丨LP(流動性)質押專案系統開發原始碼方案模式原始碼
- nft/dapp/defi/ulab/ido/dao代幣流動性LP質押挖礦系統開發/成熟技術/原始碼方案APP原始碼
- DAPP代幣LP質押流動性挖礦系統開發(功能詳情)APP
- dapp/defi/lp流動性質押挖礦分紅系統開發(開發規則)丨詳細及原始碼APP原始碼
- DAPP/LP代幣合約流動性質押挖礦分紅系統開發(規則及詳細)原始碼部署APP原始碼
- DAPP智慧合約代幣質押流動性挖礦分紅系統開發原始碼丨(詳細及案例)APP原始碼
- dapp/defi智慧合約流動性LP質押挖礦分紅系統開發方案原始碼APP原始碼
- DAPP/DAO代幣流動性質押挖礦系統開發(開發穩定版)及案例原始碼APP原始碼
- defi/dapp/lp/ido質押流動性挖礦分紅系統開發(案例原始碼)APP原始碼
- dapp/defi智慧合約流動性LP質押挖礦分紅系統開發(開發程式)及方案原始碼APP原始碼
- Defi/DAO代幣合約流動性挖礦系統開發模型丨NFT丨LP丨DAPP專案模型APP
- LP流動性質押挖礦專案系統開發案例
- DAO質押分紅智慧合約流動性挖礦系統開發
- dapp/defi流動性lp代幣質押挖礦系統開發技術詳細丨原始碼案例APP原始碼
- LP/defi流動性質押挖礦開發功能丨DAPP系統丨defi丨NFT丨LPAPP
- ULAB流動性質押挖礦系統開發(方案及詳細)丨ULAB流動性質押挖礦開發運營版及原始碼原始碼
- PtahDao普塔道智慧合約流動性質押挖礦分紅系統開發(方案及功能)丨原始碼部署原始碼
- 代幣智慧合約流動性質押挖礦開發穩定版丨代幣智慧合約流動性質押挖礦系統開發方案
- 單雙幣/字母幣流動性質押挖礦分紅系統開發詳細及方案
- 流動性質押挖礦開發規則丨流動性質押挖礦系統開發(方案及詳情)及程式碼部署
- DAPP/LP流動性挖礦系統開發(邏輯及功能)丨流動性挖礦原始碼交付APP原始碼
- DAO/DAPP去中心化流動性質押挖礦分紅系統開發(穩定版)丨案例原始碼APP中心化原始碼
- DAPP代幣質押挖礦LP系統開發方案APP
- defi/dapp/ulab流動性LP代幣質押挖礦系統開發詳情分析丨原始碼說明APP原始碼