DAPP/DAO代幣流動性質押挖礦系統開發(開發穩定版)及案例原始碼

xiaofufu發表於2023-03-15

  tokenToEthInput透過token.balanceOf獲得代幣兌換合約當前的代幣ERC20代幣儲存量,然後用getInputPrice獲得可兌換到的ETH的數量,接著用as_wei_value將單位轉換成wei後用send函式將eth傳送給接收者,最後再呼叫transferForm從buyer手中收取應當支付的代幣。


  #dev Pricing function for converting between ETH and Tokens.


  #param input_amount Amount of ETH or Tokens being sold.


      #param input_reserve Amount of ETH or Tokens(input type)in exchange reserves.


  #param output_reserve Amount of ETH or Tokens(output type)in exchange reserves.


  #return Amount of ETH or Tokens bought.關於區塊鏈專案技術開發唯:MrsFu123,代幣發行、dapp智慧合約開發、鏈遊開發、多鏈錢包開發


  交易所開發、量化合約開發、互助遊戲開發、Nft數字藏品開發、眾籌互助開發、元宇宙開發、swap開發、


  鏈上合約開發、ido開發、商城開發等,開發過各種各樣的系統模式,更有多種模式、制度、案例、後臺等,成熟技術團隊,歡迎實體參考。


  private


  constant


  def getInputPrice(input_amount:uint256,input_reserve:uint256,output_reserve:uint256)->uint256:


  assert input_reserve>0 and output_reserve>0#需要兩幣的儲備都大於0


  input_amount_with_fee:uint256=input_amount*997#抽取千分之3手續費


  numerator:uint256=input_amount_with_fee*output_reserve


  denominator:uint256=(input_reserve*1000)+input_amount_with_fee


  return numerator/denominator


  private


  def tokenToEthOutput(eth_bought:uint256(wei),max_tokens:uint256,deadline:timestamp,buyer:address,recipient:address)->uint256:


  assert deadline>=block.timestamp and eth_bought>0


  token_reserve:uint256=self.token.balanceOf(self)#獲取代幣儲備量


  #透過getOutputPrice計算所需要花費的代幣數量


  tokens_sold:uint256=self.getOutputPrice(as_unitless_number(eth_bought),token_reserve,as_unitless_number(self.balance))


  #tokens sold is always>0


  assert max_tokens>=tokens_sold


  send(recipient,eth_bought)#向接收者傳送所兌換得到的ETH


  assert self.token.transferFrom(buyer,self,tokens_sold)#從購買者收取代幣


  log.EthPurchase(buyer,tokens_sold,eth_bought)


  return tokens_sold


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2939878/,如需轉載,請註明出處,否則將追究法律責任。

相關文章