NFT數字藏品開發功能丨NFT數字藏品系統開發(開發流程及方案)

xiaofufu發表於2023-03-03

  數字藏品是指使用是指使用區域鏈技術,對應特定的作品、藝術品生成的數字憑證,在保護其數字版權的基礎上,實現真實可信的數字化發行,購買收藏和使用。


  在createPool函式中首先會檢查tokenA與tokenB是否是同一Token,之後將TokenA與TokenB根據地址進行升序排列,之後檢查token0地址是否為空地址,之後根據費率檢索TickSpace並檢查TickSpace是否為0(建構函式會進行初始化一次),之後檢查當前新建的池子是否已經存在,之後透過deploy建立池子,然後新增池子記錄,在新增記錄時可以看到也提供了反向對映,這樣做的好處是在減少後期檢索時比較地址的成本,最後透過emit觸發池子建立事件


  ///inheritdoc IUniswapV3Factory


  function createPool(


  address tokenA,


  address tokenB,


  uint24 fee


  )external override noDelegateCall returns(address pool){


  require(tokenA!=tokenB);


  (address token0,address token1)=tokenA<tokenB?(tokenA,tokenB):(tokenB,tokenA);


  require(token0!=address(0));


  int24 tickSpacing=feeAmountTickSpacing[fee];


  require(tickSpacing!=0);開發功能:MrsFu123


  require(getPool[token0][token1][fee]==address(0));


  pool=deploy(address(this),token0,token1,fee,tickSpacing);


  getPool[token0][token1][fee]=pool;


  //populate mapping in the reverse direction,deliberate choice to avoid the cost of comparing addresses


  getPool[token1][token0][fee]=pool;


  emit PoolCreated(token0,token1,fee,tickSpacing,pool);


  }


  之後的setOwner函式用於更新工廠合約的owner,該函式只能由合約的owner呼叫,在更新時透過emit來觸發owner變更事件:


  ///inheritdoc IUniswapV3Factory


  function setOwner(address _owner)external override{


  require(msg.sender==owner);


  emit OwnerChanged(owner,_owner);


  owner=_owner;


  }


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

相關文章