Uniswap交易所繫統開發(穩定版)丨Uniswap交易所開發成品及原始碼

xiaofufu發表於2023-02-20

  合約初始化


  公共函式(合約內外部都可以呼叫)


  constructor


  程式碼速覽


  constructor()public{


  factory=msg.sender;


  }


  引數分析


  函式constructor的入參有0個,出參有0個。


  在合約初始化時,Pair合約會將msg.sender記錄為factory地址。


  實現分析


  ...


  {


  //設定factory地址


  factory=msg.sender;


  }


  總結


  Pair合約初始化時,會記錄factory地址。


  外部函式(僅合約外部可以呼叫)


  initialize


  程式碼速覽


  function initialize(address _token0,address _token1)external{


  require(msg.sender==factory,'UniswapV2:FORBIDDEN');


  token0=_token0;


  token1=_token1;


  }


  引數分析


  函式initialize的入參有2個,出參有0個,對應的解釋如下:


  function initialize(


  address _token0,//token0地址


  address _token1//token1地址


  )external{


  ...


  }


  由於create2函式無法傳參,因此需要再次呼叫initialize函式來記錄token0和token1的地址。


  實現分析


  ...


  {


  //檢查msg.sender地址等於factory地址


  require(msg.sender==factory,'UniswapV2:FORBIDDEN');


  //記錄token0和token1地址


  token0=_token0;


  token1=_token1;


  }


  總結


  由於initialize是初始化函式,因此只能由factory呼叫,且只會呼叫一次。


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

相關文章