Jogger慢跑著跑鞋系統(tǒng)開發(fā)技術(shù)詳細(xì)(規(guī)則玩法)丨Jogger慢跑著跑鞋開發(fā)源碼案例版
區(qū)塊鏈技術(shù)一般用于構(gòu)建交易系統(tǒng),而且要保證交易的信息真實(shí)可信,可追蹤且不可篡改。每一次交易的信息被確認(rèn)后存儲在一個區(qū)塊中,區(qū)塊信息通過散列技術(shù)加密,以保證信息不被篡改。這些區(qū)塊按時間順序構(gòu)成鏈條。Each node maintains complete blockchain information,and the information of individual nodes is damaged without affecting the blockchain information.This type of information recording method is called distributed ledger.
區(qū)塊鏈?zhǔn)且环N特殊的分布式數(shù)據(jù)庫,任何服務(wù)器都可以成為區(qū)塊鏈中的一個節(jié)點(diǎn),且節(jié)點(diǎn)之間是平等的,無中心化,區(qū)塊鏈中的數(shù)據(jù)是經(jīng)過加密存儲,已經(jīng)存儲的數(shù)據(jù)無法修改,可以保證數(shù)據(jù)的準(zhǔn)確性。
/// dev This emits when ownership of any NFT changes by any mechanism.
///This event emits when NFTs are created(`from`==0)and destroyed
///(`to`==0).Exception:during contract creation,any number of NFTs
///may be created and assigned without emitting Transfer.At the time of
///any transfer,the approved address for that NFT(if any)is reset to none.
event Transfer(address indexed _from,address indexed _to,uint256 indexed _tokenId);
/// dev This emits when the approved address for an NFT is changed or
///reaffirmed.The zero address indicates there is no approved address.
///When a Transfer event emits,this also indicates that the approved
///address for that NFT(if any)is reset to none.
event Approval(address indexed _owner,address indexed _approved,uint256 indexed _tokenId);
/// dev This emits when an operator is enabled or disabled for an owner.
///The operator can manage all NFTs of the owner.
event ApprovalForAll(address indexed _owner,address indexed _operator,bool _approved);
/// notice Count all NFTs assigned to an owner
/// dev NFTs assigned to the zero address are considered invalid,and this
///function throws for queries about the zero address.
/// param _owner An address for whom to query the balance
/// return The number of NFTs owned by`_owner`,possibly zero
function balanceOf(address _owner)external view returns(uint256);
/// notice Find the owner of an NFT
/// dev NFTs assigned to zero address are considered invalid,and queries
///about them do throw.
/// param _tokenId The identifier for an NFT
/// return The address of the owner of the NFT
function ownerOf(uint256 _tokenId)external view returns(address);
/// notice Transfers the ownership of an NFT from one address to another address
/// dev Throws unless`msg.sender`is the current owner,an authorized
///operator,or the approved address for this NFT.Throws if`_from`is
///not the current owner.Throws if`_to`is the zero address.Throws if
///`_tokenId`is not a valid NFT.When transfer is complete,this function
///checks if`_to`is a smart contract(code size>0).If so,it calls
///`onERC721Received`on`_to`and throws if the return value is not
///`bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
/// param _from The current owner of the NFT
/// param _to The new owner
/// param _tokenId The NFT to transfer
/// param data Additional data with no specified format,sent in call to`_to`
function safeTransferFrom(address _from,address _to,uint256 _tokenId,bytes calldata data)external payable;
/// notice Transfers the ownership of an NFT from one address to another address
/// dev This works identically to the other function with an extra data parameter,
///except this function just sets data to"".
/// param _from The current owner of the NFT
/// param _to The new owner
/// param _tokenId The NFT to transfer
function safeTransferFrom(address _from,address _to,uint256 _tokenId)external payable;
/// notice Transfer ownership of an NFT--THE CALLER IS RESPONSIBLE
///TO CONFIRM THAT`_to`IS CAPABLE OF RECEIVING NFTS OR ELSE
///THEY MAY BE PERMANENTLY LOST
/// dev Throws unless`msg.sender`is the current owner,an authorized
///operator,or the approved address for this NFT.Throws if`_from`is
///not the current owner.Throws if`_to`is the zero address.Throws if
///`_tokenId`is not a valid NFT.
/// param _from The current owner of the NFT
/// param _to The new owner
/// param _tokenId The NFT to transfer
function transferFrom(address _from,address _to,uint256 _tokenId)external payable;
/// notice Change or reaffirm the approved address for an NFT
/// dev The zero address indicates there is no approved address.
///Throws unless`msg.sender`is the current NFT owner,or an authorized
///operator of the current owner.
/// param _approved The new approved NFT controller
/// param _tokenId The NFT to approve
function approve(address _approved,uint256 _tokenId)external payable;
/// notice Enable or disable approval for a third party("operator")to manage
///all of`msg.sender`'s assets
/// dev Emits the ApprovalForAll event.The contract MUST allow
///multiple operators per owner.
/// param _operator Address to add to the set of authorized operators
/// param _approved True if the operator is approved,false to revoke approval
function setApprovalForAll(address _operator,bool _approved)external;
/// notice Get the approved address for a single NFT
/// dev Throws if`_tokenId`is not a valid NFT.
/// param _tokenId The NFT to find the approved address for
/// return The approved address for this NFT,or the zero address if there is none
function getApproved(uint256 _tokenId)external view returns(address);
/// notice Query if an address is an authorized operator for another address
/// param _owner The address that owns the NFTs
/// param _operator The address that acts on behalf of the owner
/// return True if`_operator`is an approved operator for`_owner`,false otherwise
function isApprovedForAll(address _owner,address _operator)external view returns(bool);
}