MT4/MT5交易所開發(fā)詳情,MT4/MT5交易所系統(tǒng)開發(fā)(開發(fā)方案)丨源碼部署
數(shù)據(jù)作為新型生產(chǎn)要素,能為實體經(jīng)濟(jì)帶來放大、疊加和倍增作用,是做強(qiáng)做優(yōu)做大數(shù)字經(jīng)濟(jì)的關(guān)鍵。
建立數(shù)據(jù)可信流通體系,增強(qiáng)數(shù)據(jù)的可用、可信、可流通、可追溯水平,是激活數(shù)據(jù)要素潛能、賦能實體經(jīng)濟(jì)的重要途徑。區(qū)塊鏈技術(shù)具有去中心化、共識機(jī)制、不可篡改、可以追溯、規(guī)則透明等特點。
從本質(zhì)上看,區(qū)塊鏈?zhǔn)且苑植际綌?shù)據(jù)存儲、點對點傳輸、共識機(jī)制、加密算法、開發(fā)功能唯:yy625019,智能合約等計算機(jī)技術(shù)集成創(chuàng)新而產(chǎn)生的分布式賬本技術(shù),是基于互聯(lián)網(wǎng)的分布式數(shù)據(jù)庫,具有去中心化、共識機(jī)制、不可篡改、可以追溯、規(guī)則透明等特點,
_approve
實現(xiàn)approve的核心函數(shù)為_approve函數(shù),其代碼如下:
function _approve(
address to,
uint256 tokenId,
bool approvalCheck
)internal virtual{
address owner=ownerOf(tokenId);
if(approvalCheck&&_msgSenderERC721A()!=owner)
if(!isApprovedForAll(owner,_msgSenderERC721A())){
_revert(ApprovalCallerNotOwnerNorApproved.selector);
}
_tokenApprovals[tokenId].value=to;
emit Approval(owner,to,tokenId);
}
其邏輯大致如下:
查詢待授權(quán)NFT的所有者
進(jìn)行資格審查,判斷函數(shù)調(diào)用者是否有權(quán)進(jìn)行授權(quán)
設(shè)置_tokenApprovals映射,確定授權(quán)
在資格審查方面,要求函數(shù)調(diào)用者滿足以下條件:
approvalCheck為false且函數(shù)調(diào)用者是NFT擁有者
approvalCheck為true且函數(shù)調(diào)用者被授權(quán)控制NFT擁有者的所有NFT
首先分析ownerOf函數(shù),其定義如下:
function ownerOf(uint256 tokenId)public view virtual override returns(address){
return address(uint160(_packedOwnershipOf(tokenId)));
function _packedOwnershipOf(uint256 tokenId)private view returns(uint256 packed){
if(_startTokenId()<=tokenId){
packed=_packedOwnerships[tokenId];
if(packed&_BITMASK_BURNED==0){
if(packed==0){
if(tokenId>=_currentIndex)_revert(OwnerQueryForNonexistentToken.selector);
for(;;){
unchecked{
packed=_packedOwnerships[--tokenId];
}
if(packed==0)continue;
return packed;
}
}
return packed;
}
}
_revert(OwnerQueryForNonexistentToken.selector);
}