TP錢包/ImToken錢包/MetaMask小狐狸錢包/去中心化錢包系統開發成熟技術丨原始碼案例
首先,使用者透過Web介面或者收集App將運算元據傳送到一個傳統的業務伺服器,該業務伺服器時傳統網際網路中心化的伺服器,但是與傳統系統不同的是,該系統沒有像傳統網際網路設計那樣將資料放入中心化的資料庫儲存,而是透過一個Web3.0介面,將資料傳送到以太坊區塊鏈公鏈上。
該介面是一個JSON RPC協議,該協議由很多程式碼實現。目前的是執行在Web容器中的Web.js3模組。Solidity程式語言經過編譯之後,除了交易需要的合約初始化程式碼之外,還有ABI介面等描述檔案
關於區塊鏈專案技術開發唯:MrsFu123,代幣發行、dapp智慧合約開發、鏈遊開發、單雙幣質押、多鏈錢包開發、NFT盲盒遊戲、公鏈、鏈上游戲開發
Uniswap博餅、 交易所開發、量化合約開發、合約對沖、互助遊戲開發、Nft數字藏品開發、眾籌互助開發、元宇宙開發、swap開發、DAO智慧合約、
夾子合約、 鏈上合約開發、ido開發、商城開發等,開發過各種各樣的系統模式,更有多種模式、制度、案例、後臺等,成熟技術團隊,歡迎實體參考。
以太坊採用了Solidity作為智慧合約語言,Solidity是一門為實現智慧合約而建立的程式語言,開發搭建威:MrsFu123,能在允許以太坊程式的節點上執行。該語言吸收了C++、JavaScript的一些特性,例如它是靜態型別語言,支援繼承庫等。
智慧合約是一種只有透過區塊鏈才能實現的新技術。智慧合約是數字化的,儲存在區塊鏈中,並使用加密程式碼強制執行協議。智慧合約與區塊鏈的結合,普遍被認為是區塊鏈世界中一次里程碑式的升級。第一個結合了區塊鏈與智慧合約技術的平臺--以太坊的誕生,被認為是開啟了"區塊鏈2.0"時代。
函式定義如下:
function transferFrom(
address from,
address to,
uint256 tokenId
)public payable virtual override
該函式的引數為:
from待轉移NFT的擁有者地址
to待轉移NFT的接收者地址
tokenId待轉移NFT的tokenId
根據上述流程,我們將逐個解析其中使用的函式。
uint256 prevOwnershipPacked=_packedOwnershipOf(tokenId);
from=address(uint160(uint256(uint160(from))&_BITMASK_ADDRESS));
if(address(uint160(prevOwnershipPacked))!=from)_revert(TransferFromIncorrectOwner.selector);
透過_packedOwnershipOf函式獲得NFT擁有者地址,使用address(uint160(uint256(uint160(from))&_BITMASK_ADDRESS))進行資料型別轉化。如果我們發現呼叫引數中的from與NFT擁有者不同,則直接丟擲錯誤。
接下來,我們使用以下程式碼校驗NFT轉移的相關許可權問題:
(uint256 approvedAddressSlot,address approvedAddress)=_getApprovedSlotAndAddress(tokenId);
if(!_isSenderApprovedOrOwner(approvedAddress,from,_msgSenderERC721A()))
if(!isApprovedForAll(from,_msgSenderERC721A()))_revert(TransferCallerNotOwnerNorApproved.selector);
滿足以下條件則繼續執行:
函式呼叫者為NFT擁有者或被授權者或函式呼叫者存在isApprovedForAll許可權。
如果上述條件全不滿足,則丟擲異常。
該部分中最複雜的函式為_getApprovedSlotAndAddress:
function _getApprovedSlotAndAddress(uint256 tokenId)
private
view
returns(uint256 approvedAddressSlot,address approvedAddress)
{
TokenApprovalRef storage tokenApproval=_tokenApprovals[tokenId];
assembly{
approvedAddressSlot:=tokenApproval.slot
approvedAddress:=sload(approvedAddressSlot)
}
}
該函式會返回兩個底層資料,即授權地址在storage中的位置approvedAddressSlot和授權地址的值approvedAddress。
理解此程式碼需要對EVM的儲存結構有一定了解,推薦閱讀Understanding Ethereum Smart Contract Storage
當函式呼叫者滿足條件後,我們進入真正的NFT轉移程式。首先清除待轉移NFT的原有授權,程式碼如下:
assembly{
if approvedAddress{
sstore(approvedAddressSlot,0)
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2945274/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- imtoken錢包丨metamask小狐狸錢包丨tp錢包系統開發丨去中心化錢包系統開發詳細及原始碼中心化原始碼
- 數字貨幣TP錢包/ImToken錢包/MetaMask小狐狸錢包系統開發(開發流程)丨原始碼分析原始碼
- TP錢包/ImToken/MetaMask小狐狸錢包系統設計開發及詳細方案
- 區塊鏈錢包系統開發丨imtoken丨metamask小狐狸丨tp錢包系統開發詳細規則及方案原始碼區塊鏈原始碼
- imtoken/tp/metamask小狐狸錢包系統開發(開發詳情及原始碼)原始碼
- imtoken/tp/metamask小狐狸錢包系統開發(開發規則及原始碼)原始碼
- 深入分析:tp/imtoken/metamask小狐狸錢包系統開發技術詳解
- 闡述ImToken/TP/MetaMask小狐狸錢包系統開發詳情及程式碼示例
- 區塊鏈錢包系統去中心化錢包模式開發案例詳情區塊鏈中心化模式
- 多鏈錢包開發原理丨多鏈錢包系統開發(詳情及流程)丨多鏈錢包系統原始碼分析原始碼
- 什麼是去中心化錢包?去中心化錢包是什麼意思?中心化
- imtoken錢包是什麼?imtoken錢包教程
- 錢包APP開發和理財中心化錢包介紹APP中心化
- 去中心化(多鏈)錢包系統開發方案(現有原始碼)中心化原始碼
- 什麼是去中心化錢包?中心化
- 多鏈token去中心化錢包系統開發應用(原始碼分析)中心化原始碼
- 去中心化區塊鏈錢包支付系統開發模式中心化區塊鏈模式
- 區塊鏈數字錢包系統開發方案,去中化多幣種錢包搭建區塊鏈
- 以太坊錢包開發系列1 - 建立錢包賬號
- Easy Store錢包挖礦技術系統開發
- NFT錢包開發鏈遊系統搭建技術
- NFT加密錢包交易開發系統搭建技術加密
- 區塊鏈錢包之ETH錢包生成區塊鏈
- 根據使用者是否掌握私鑰,可以劃分為中心化錢包和去中心化錢包中心化
- CXC錢包系統開發需求及原始碼示例原始碼
- 區塊鏈去中化錢包開發方案,交易所錢包社交軟體開發區塊鏈
- 錢包量化交易系統開發方案
- 多幣種數字錢包開發及區塊鏈數字錢包系統區塊鏈
- 區塊鏈錢包之BTC錢包地址生成區塊鏈
- EOS原始碼分析(4)錢包原始碼
- 【精選】atoken錢包詳細使用教程 - atoken錢包安全嗎,atoken錢包靠譜嗎
- 最安全的PMEER錢包,PMEER冷錢包使用教程
- 最安全的SRM錢包,SRM冷錢包使用教程
- 區塊鏈錢包系統開發,數字貨幣高頻搬磚錢包app開發區塊鏈APP
- 區塊鏈錢包開發,數字貨幣錢包開發的型別區塊鏈型別
- Vpay錢包app系統軟體開發APP
- web3 產品介紹:metamask 錢包 使用最多的瀏覽器外掛錢包Web瀏覽器
- 區塊鏈挖礦錢包系統開發技術搭建區塊鏈