区块链是一种特殊的分布式数据库,任何服务器都可以成为区块链中的一个节点,且节点之间是平等的,无中心化,区块链中的数据是经过加密存储,已经存储的数据无法修改,可以保证数据的准确性。
区块链技术就是一种数据库技术,每个区块就像一个硬盘,把信息全部保存下来,再通过密码学技术进行加密,这些被保存起来的数据是不能被篡改的。
区块链技术一般用于构建交易系统,而且要保证交易的信息真实可信,可追踪且不可篡改。每一次交易的信息被确认后存储在一个区块中,区块信息通过散列技术加密,以保证信息不被篡改。这些区块按时间顺序构成链条。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.
区块链就是把加密数据(区块)按照时间顺序进行叠加(链)生成的永久、不可逆向修改的记录。某种意义上说,区块链技术是互联网时代一种新的“信息传递”技术,
///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 unlessmsg.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 unlessmsg.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 unlessmsg.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 ofmsg.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);
}