nft/dapp/defi/ulab/ido/dao代幣流動性LP質押挖礦系統開發/成熟技術/原始碼方案

開發MrsFu123發表於2023-04-23

  DAPP是去中心化應用程式/分散式的應用程式,是底層區塊鏈平臺生態上衍生的各種分散式應用,也是區塊鏈世界中的基礎服務提供方。將應用程式分佈在不同節點上,透過共識機制和區塊鏈平臺來完成任務的應用程式,它本身就是去中心化,不依賴於任何中心化伺服器,促使使用者交易更加安全。


  資料作為新型生產要素,能為實體經濟帶來放大、疊加和倍增作用,是做強做優做大數字經濟的關鍵。開發案例唯:MrsFu123  建立資料可信流通體系,增強資料的可用、可信、可流通、可追溯水平,是啟用資料要素潛能、賦能實體經濟的重要途徑。區塊鏈技術具有去中心化、共識機制、不可篡改、可以追溯、規則透明等特點。


  //SPDX-License-Identifier:MIT


  //OpenZeppelin Contracts(last updated v4.5.0)(token/ERC721/ERC721.sol)


  pragma solidity^0.8.0;


  import"./IERC721.sol";


  import"./IERC721Receiver.sol";


  import"./extensions/IERC721Metadata.sol";


  import"../../utils/Address.sol";


  import"../../utils/Context.sol";


  import"../../utils/Strings.sol";


  import"../../utils/introspection/ERC165.sol";


  /**


  *dev Implementation of [ERC721]Non-Fungible Token Standard,including


  *the Metadata extension,but not including the Enumerable extension,which is available separately as


  *{ERC721Enumerable}.


  */


  contract ERC721 is Context,ERC165,IERC721,IERC721Metadata{


  //Address和Strings可理解為工具類,這裡是為了安全or操作便捷考慮。


  using Address for address;


  using Strings for uint256;


  //合約名字for IERC721Metadata中的定義


  string private _name;


  //合約標誌for IERC721Metadata中的定義


  string private _symbol;


  //map(tokenID,address),可理解為map結構,key為tokenID,value為該tokenID對應的owner地址


  mapping(uint256=>address)private _owners;


  //map(address,uint256),key為使用者地址,value為該地址擁有的token數量


  mapping(address=>uint256)private _balances;


  //map(uint256,address),key為代幣ID,value為代幣所授權地址(一個token只能授予一個賬號行使權)


  mapping(uint256=>address)private _tokenApprovals;


  //Mapping from owner to operator approvals


  mapping(address=>mapping(address=>bool))private _operatorApprovals;


  /**


  *dev建構函式,初始化合約的name和symbol


  */


  constructor(string memory name_,string memory symbol_){


  _name=name_;


  _symbol=symbol_;


  }


  /**


  *dev See{IERC165-supportsInterface}.


  *判斷合約是否實現了interfaceID介面


  */


  function supportsInterface(bytes4 interfaceId)public view virtual override(ERC165,IERC165)returns(bool){


  return


  interfaceId==type(IERC721).interfaceId||


  interfaceId==type(IERC721Metadata).interfaceId||


  super.supportsInterface(interfaceId);


  }


  /**


  *dev See{IERC721-balanceOf}.


  *返回賬戶擁有的代幣數


  */


  function balanceOf(address owner)public view virtual override returns(uint256){


  require(owner!=address(0),"ERC721:balance query for the zero address");


  return _balances[owner];


  }


  /**


  *dev See{IERC721-ownerOf}.


  *返回tokenID代幣的owner地址


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

相關文章