馬蹄鏈二二複製公排互助系統開發|二二複製公排案例

caiayu1234發表於2023-03-28

 pragma solidity>=0.4.22<0.6.0;

  

  contract returnmanyresults{

  

  //返回多個引數。

  

  function getmanagResult()public pure returns(uint a,uint b,uint c){

  

  return(1,2,3);

  

  }

  

  }

  

  區鏈智慧合約支援建立無需信任的協議。這意味著執行合約的雙方可以透過區鏈做出承諾,而無需相互瞭解或相互信任。合約內容經雙方確認後,如果沒達到觸發條件,合約將不會被執行。除此之外,使用智慧合約可以消除對中介的需求,從而顯著降低運營成本。

  

  從技術角度來說,智慧合約可以被看作一種計算機程式,這種程式可以自主地執行全部或部分和合約相關的操作,併產生相應的可以被驗證的證據,來說明執行合約操作的有效性。在部署智慧合約之前,與合約相關的所有條款的邏輯流程就已經被制定好了。智慧合約通常具有一個使用者介面,以供使用者與已制定的合約進行互動,這些互動行為都嚴格遵守此前制定的邏輯。得益於密碼學技術,這些互動行為能夠被嚴格地驗證,以確保合約能夠按照此前制定的規則順利執行,從而防止出現違約行為。

  

  token_reserve:uint256=self.token.balanceOf(self)#token餘額

  

  eth_amount:uint256(wei)=amount*self.balance/total_liquidity

  

  #UNI數量兌換等比例的eth

  

  token_amount:uint256=amount*token_reserve/total_liquidity

  

  #UNI數換等比例的token數

  

  assert eth_amount>=min_eth and token_amount>=min_tokens

  

  #兌換的數量應該大於使用者最小提取期望值

  

  self.balances[msg.sender]-=amount

  

  #減少使用者的UNI餘額

  

  self.totalSupply=total_liquidity-amount

  

  #減小總流動性池的UNI餘額

  

  send(msg.sender,eth_amount)

  

  #給使用者轉eth,因此self.balance也會減少

  

  assert self.token.transfer(msg.sender,token_amount)

  

  #池子給使用者轉ERC20

  

  log.RemoveLiquidity(msg.sender,eth_amount,token_amount)

  

  log.Transfer(msg.sender,ZERO_ADDRESS,amount)

  

  return eth_amount,token_amount

  

  //SPDX-License-Identifier:Unlicense

  

  pragma solidity 0.8.2;

  

  //interface need to claim rouge tokens from contract and handle upgraded functions

  

  abstract contract IERC20{

  

  function balanceOf(address owner)public view virtual returns(uint256);

  

  function transfer(address to,uint256 amount)public virtual;

  

  function allowance(address owner,address spender)

  

  public

  

  view

  

  virtual

  

  returns(uint256);

  

  function totalSupply()public view virtual returns(uint256);

  

  }


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

相關文章