TON新人必看指南:從錢包選擇到資產(chǎn)保護(hù)的全面指導(dǎo)
TON新人必看指南:從錢包選擇到資產(chǎn)保護(hù)的全面指導(dǎo)!TON(The Open Network) 是一個(gè)去中心化的區(qū)塊鏈平臺(tái),由 Telegram 團(tuán)隊(duì)最初設(shè)計(jì)和開發(fā)。TON 的目標(biāo)是提供一個(gè)高性能和可擴(kuò)展的區(qū)塊鏈平臺(tái),以支持大規(guī)模的去中心化應(yīng)用(DApps) 和智能合約。
TON 如此特殊,它是易用的,它與 Telegram 深度結(jié)合,使得普通人也能輕易使用代幣;它又是復(fù)雜的,它與其他區(qū)塊鏈有著截然不同的架構(gòu),而且使用非主流的 FunC 智能合約語(yǔ)言。今天我們從賬號(hào)、Token、交易的角度討論一下 TON 的特點(diǎn)及用戶資產(chǎn)安全問(wèn)題。
今天腳本之家小編給大家分享的是TON新人必看指南:從錢包選擇到資產(chǎn)保護(hù)的全面指導(dǎo)的詳細(xì)介紹了,希望大家喜歡!
TON 的特點(diǎn)
賬號(hào) 生成
TON 賬號(hào)地址的生成方式與大多數(shù)區(qū)塊鏈都不同,它是一個(gè)智能合約地址。首先,開局一個(gè)私鑰,TON 主要使用 Ed25519 算法生成公鑰,生成流程如下:
這里有兩種形式的公鑰,一種是由私鑰計(jì)算出的原始公鑰,形如:
E39ECDA0A7B0C60A7107EC43967829DBE8BC356A49B9DFC6186B3EAC74B5477D
另一種是“美化”后的公鑰,它攜帶了公鑰的一些信息和校驗(yàn)位,形如:Pubjns2gp7DGCnEH7EOWeCnb6Lw1akm538YYaz6sdLVHfRB2
如果認(rèn)為得到公鑰就能像以太坊那樣得到賬號(hào)地址就太天真了,僅僅有用戶的公鑰還不足以計(jì)算出用戶的賬號(hào)地址。我們剛剛說(shuō)了,用戶的賬號(hào)地址是一個(gè)智能合約地址,但是我們連賬號(hào)都沒有,怎么部署智能合約?正確的順序是先計(jì)算地址,接收一點(diǎn)初始金額的代幣,然后就可以部署合約。賬號(hào)地址的計(jì)算過(guò)程如下圖所示:
用戶的地址也有多種形式,首先是原始形式,形如:
0:b4c1b2ede12aa76f4a44353944258bcc8f99e9c7c474711a152c78b43218e296
以及用戶友好形式,形如:
細(xì)心觀察這幾個(gè)地址就可以看出,它們只有首尾幾個(gè)字符存在差別,中間的 `account_id` 是一樣的,但是我們還是無(wú)法看出公鑰和賬號(hào)地址之間的關(guān)系,其實(shí)玄機(jī)就藏在開頭的 `initial data` 中,它包含了一個(gè)用戶的公鑰,用戶就是通過(guò)它掌握錢包合約的所有權(quán)。`workchainId` 很好理解,TON 并不是只有一條單鏈,它由非常多的分片組成,每個(gè)分片是整個(gè)網(wǎng)絡(luò)的一部分,處理特定的一組賬號(hào)和交易。為了定位和管理智能合約,需要明確指出它們位于哪個(gè)分片中。`Bounceable` 和 `Non-bounceable` 有什么區(qū)別?這和智能合約的工作機(jī)制相關(guān),我們先繼續(xù)往下看。
錢包合約
以下是一個(gè)用戶錢包合約的一段源代碼,可以看到它在接收到用戶的消息時(shí)讀取了 4 個(gè)參數(shù)。
沒錯(cuò),這個(gè)用戶的錢包合約在部署的時(shí)候,需要傳入一些初始參數(shù),其中就包含了一個(gè) 256 位的 public_key 信息,這樣就確保了每個(gè)用戶使用相同的合約代碼時(shí),有一個(gè)獨(dú)立的合約地址。用戶發(fā)起的一切交易都需要對(duì) `in_msg` 簽名,然后通過(guò)自己的錢包合約驗(yàn)證簽名(check_signature) 后,由合約去調(diào)用鏈上的一切操作。從這里我們也可以推斷出,一個(gè)用戶的公鑰其實(shí)是可以對(duì)應(yīng)無(wú)數(shù)錢包地址的,只需要部署不同源代碼的錢包或者不同的初始化數(shù)據(jù),就能得到完全不同的合約地址。
Jetton Token
Token 是資產(chǎn)在鏈上的表現(xiàn)形式,所以它是我們需要了解的一個(gè)基本元素。Jetton 是 TON token 的標(biāo)準(zhǔn)形式,Jetton 由兩部分合約組成,Jetton-minter 和 Jetton-wallet:
代幣被發(fā)行時(shí),會(huì)創(chuàng)建一個(gè) Jetton-minter 合約,合約初始化記錄了代幣的總量、管理員、錢包代碼等信息。
代幣被分發(fā)給用戶時(shí),Minter 合約會(huì)為用戶部署一個(gè)錢包合約,并在合約初始化時(shí)記錄用戶的余額、所有權(quán)、代幣 Minter 合約地址、用戶錢包代碼等信息,每個(gè)用戶都會(huì)獨(dú)立部署一個(gè)合約。注意,這里創(chuàng)建的合約是用于管理特定 Jetton 代幣的錢包合約,與用戶的賬號(hào)錢包合約并不相同,這里的 owner_address 記錄的是用戶的賬號(hào)錢包地址。
當(dāng)用戶 Alice 給用戶 Bob 轉(zhuǎn)賬時(shí),調(diào)用關(guān)系如下:
Alice 在鏈下的 APP 簽名,并通過(guò)調(diào)用她的錢包合約下達(dá)操作指令。這些指令會(huì)進(jìn)一步調(diào)用她的代幣錢包進(jìn)行轉(zhuǎn)賬。當(dāng) Bob 的代幣錢包收到代幣后,它會(huì)通知 Bob 的錢包合約(即 Bob Jetton-wallet 的 Owner 地址)。如果交易過(guò)程中有剩余的 Gas,還會(huì)返回給響應(yīng)地址,通常為 Alice 的賬號(hào)合約。
這是 Tonviewer 瀏覽器解析的一筆 Jetton 代幣轉(zhuǎn)賬:
一個(gè) ERC20 轉(zhuǎn)賬最少只需要調(diào)用一個(gè)合約,而一筆 Jetton 代幣轉(zhuǎn)賬至少要調(diào)用四個(gè)合約,這么做是為了讓轉(zhuǎn)賬可以在鏈上并發(fā)進(jìn)行,提高交易效率。
交易
當(dāng) TON 中的某個(gè)帳戶發(fā)生某些事件時(shí),它會(huì)引發(fā)一筆交易,最常見的事件是“接收某個(gè)消息”,交易包括以下內(nèi)容:
最初觸發(fā)合約的傳入消息(存在特殊的觸發(fā)方式)
由傳入消息引起的合約行動(dòng),例如更新合約的存儲(chǔ)(可選)
發(fā)送給其他參與者的傳出消息(可選)
交易需要注意幾個(gè)特性:
1. 異步:TON 的交易并不是在一次調(diào)用里完成的,它可能需要通過(guò)消息傳遞到多個(gè)不同的智能合約去執(zhí)行一系列調(diào)用。由于分片鏈中的路由不同,TON 并不能保證多個(gè)智能合約之間的消息傳遞順序。
2. 手續(xù)費(fèi): 異步的特性還會(huì)帶來(lái)一個(gè)問(wèn)題,即消耗的手續(xù)費(fèi)難以預(yù)估。因此在發(fā)起交易時(shí),錢包通常會(huì)多發(fā)送一些代幣做為手續(xù)費(fèi)。如果調(diào)用的合約有良好的手續(xù)費(fèi)處理機(jī)制,那么剩余的手續(xù)費(fèi)最后會(huì)返還到用戶錢包。用戶可能會(huì)觀察到錢包代幣突然變少,過(guò)幾分鐘又變多,就是這個(gè)原因。
3. 反彈:反彈是合約的一種錯(cuò)誤處理機(jī)制,當(dāng)調(diào)用的合約不存在或者拋出錯(cuò)誤時(shí),如果交易設(shè)置為可反彈的,那么就會(huì)反彈回一個(gè) bounced 消息給發(fā)起調(diào)用的合約。例如:用戶發(fā)起一筆轉(zhuǎn)賬,如果調(diào)用過(guò)程出錯(cuò)了,那么就需要反彈消息,這樣用戶的錢包合約才能將自己的余額恢復(fù)。幾乎所有在智能合約之間發(fā)送的內(nèi)部消息都應(yīng)該是可彈回的,即應(yīng)該設(shè)置它們的“bounce”位。
資產(chǎn)安全
TON 有很多特性會(huì)帶來(lái)安全問(wèn)題,因此用戶也需要了解一些常見的陷阱。
手續(xù)費(fèi)截留攻擊
上面說(shuō)到錢包經(jīng)常需要多發(fā)送一些手續(xù)費(fèi)以防止交易執(zhí)行失敗,這讓攻擊者找到了作惡的機(jī)會(huì)。如果你是一個(gè) TON 錢包用戶,你可能碰到過(guò)這樣的情況,錢包里總是會(huì)收到各種 NFT 或者代幣,本以為只是一些垃圾代幣空投,但是一查交易信息,竟然可以賣不少錢?可是當(dāng)發(fā)起交易時(shí),發(fā)現(xiàn)需要的手續(xù)費(fèi)超高(1 TON),這時(shí)就需要注意了,這可能是手續(xù)費(fèi)詐 騙。
攻擊者利用精心構(gòu)造的代幣合約,讓錢包的預(yù)估轉(zhuǎn)賬手續(xù)費(fèi)超高,而實(shí)際執(zhí)行時(shí)卻只是截留手續(xù)費(fèi),并未發(fā)送轉(zhuǎn)賬消息。
首尾號(hào)釣魚
首尾號(hào)釣魚不是 TON 上才有,各大公鏈都存在這種釣魚 攻擊。攻擊者會(huì)為全網(wǎng)每個(gè)用戶地址都生成一個(gè)首尾號(hào)相同的高仿賬號(hào),當(dāng)用戶發(fā)送一筆轉(zhuǎn)賬時(shí),攻擊者用高仿賬號(hào)也尾隨發(fā)送一筆小額轉(zhuǎn)賬,目的是在用戶的收款記錄里留下一個(gè)記錄。當(dāng)收款用戶想要轉(zhuǎn)回一筆代幣時(shí),可能會(huì)從歷史記錄里復(fù)制地址,這時(shí)很可能復(fù)制到攻擊者的地址,導(dǎo)致轉(zhuǎn)賬到錯(cuò)誤地址,攻擊者可謂是精準(zhǔn)拿捏用戶的行為了。
comment 釣魚
TON 在轉(zhuǎn)賬時(shí)可以添加一個(gè) comment,用于備注交易信息,這個(gè)功能在交易所充值時(shí)會(huì)頻繁用到,交易所通常會(huì)要求用戶在充值時(shí)備注一下用戶 ID。但這個(gè)功能經(jīng)常會(huì)被惡意利用,攻擊者通過(guò)在備注里寫入欺詐信息來(lái)騙取用戶的資產(chǎn)。如圖所示:
用戶尤其需要注意 Anonymous Telegram Number 這個(gè) NFT,如果用戶用 Anonymous Telegram Number 開通了 TG 號(hào),但沒開 Two-Step Verification,一旦這個(gè) NFT 被釣走,黑客就可以直接登錄目標(biāo) TG 號(hào),實(shí)施后續(xù)的資產(chǎn)盜取及欺騙行為。
智能合約漏洞
智能合約的安全漏洞會(huì)導(dǎo)致用戶放在智能合約的資金受損,用戶在選擇項(xiàng)目時(shí)需要選擇經(jīng)過(guò)良好審計(jì)的項(xiàng)目。TON 的智能合約主要使用 FunC 語(yǔ)言來(lái)編程,也有使用更高級(jí)的 Tact,或者更底層的 Fift,都是原創(chuàng)程度很高的語(yǔ)言。新的編程語(yǔ)言會(huì)帶來(lái)新的安全風(fēng)險(xiǎn),特別是對(duì)開發(fā)者而言,要有安全編程的良好習(xí)慣,掌握最佳安全實(shí)踐,并且在部署生產(chǎn)環(huán)境之前經(jīng)過(guò)嚴(yán)格的安全審計(jì),限于篇幅,本文暫不討論合約安全。慢霧安全團(tuán)隊(duì)已推出 TON 智能合約安全審計(jì)服務(wù),歡迎有審計(jì)需求的朋友一起探討。
假充值攻擊
錢包或交易所用戶需要注意假充值攻擊,通常有兩種類型的假充值攻擊:
假幣,攻擊者發(fā)行一個(gè) metadata 和目標(biāo)代幣相同的代幣,如果自動(dòng)化入賬程序沒有檢查這是否是正確的 minter 合約,那么就會(huì)導(dǎo)致錯(cuò)誤入賬。
反彈,TON 的轉(zhuǎn)賬過(guò)程需要在兩個(gè)用戶的錢包合約之間發(fā)生調(diào)用關(guān)系,如果接收方的錢包合約不存在,并且交易設(shè)置為 Bounceable,這時(shí)消息會(huì)被反彈,原始資金在扣除手續(xù)費(fèi)后將返還給發(fā)送方。對(duì)細(xì)節(jié)感興趣的朋友可以查看我們之前披露過(guò)的假充值文章。
詳細(xì)說(shuō)說(shuō) TON 從錢包選擇到資產(chǎn)保護(hù)的全面指導(dǎo)
一、正確選擇錢包
由于技術(shù)實(shí)現(xiàn)不同,大家習(xí)慣使用的 EVM 錢包如 Metamask、Rabby 等目前都不支持 TON,因此我們需要另外安裝支持 TON 的錢包。
此時(shí)一個(gè)安全性高的錢包對(duì)于我們來(lái)說(shuō)至關(guān)重要,我們可以從錢包是否開源,是否支持硬件錢包等方面來(lái)評(píng)估哪款錢包更適合自己,而特別要注意的就是該錢包對(duì)于交易信息的解析是否全面到位。
舉個(gè)例子,在面對(duì) TON 上的釣魚網(wǎng)站,當(dāng)黑客想轉(zhuǎn)走我錢包里的某些資產(chǎn)時(shí),錢包軟件 OpenMask 和TonKeeper @tonkeeper的交易解析結(jié)果大相徑庭,如下圖所示:
在OpenMask看起來(lái),這就是一筆正常的「領(lǐng)取空投」交易,但事實(shí)果真如此嗎?
同樣一筆交易,Tonkeeper卻為我們解析展現(xiàn)了更多的信息,似乎釣魚網(wǎng)站正試圖盜走錢包中的 FISH 代幣, 黑客的行為成功地被Tonkeeper揭示出來(lái)了。
相比較之下,你覺得使用哪款錢包的用戶更容易上當(dāng)?
安全性更好的錢包,猶如一面「照妖鏡」,可以有效降低用戶在識(shí)別釣魚詐 騙上的焦慮。近期 Keystone 也成功地與 TonKeeper 完成集成,相信硬件錢包的加入,能讓用戶在 TON 上的安全性成噸提高。
二、防范常見的釣魚形式
和其他公鏈一樣,釣魚也是目前 TON 上最常見,受害者最廣泛的攻擊形式。借此機(jī)會(huì)我們來(lái)了解一下 TON 上黑客都有哪些釣魚手段:
1.零金額轉(zhuǎn)賬釣魚
黑客通過(guò)批量發(fā)送 0 金額的 TON 到許多地址上,再對(duì)轉(zhuǎn)賬交易備注諸如“領(lǐng)取 1000 TON 的空投,訪問(wèn) “http://xxxxx.com ” 等內(nèi)容,“涉世未深”的用戶可能因此上當(dāng)受騙,訪問(wèn)該釣魚網(wǎng)站,并進(jìn)行了所謂的領(lǐng)取交互,結(jié)果被黑客偷走了寶貴的資產(chǎn)。
2.NFT 空投釣魚
除了代幣轉(zhuǎn)賬,黑客也會(huì)嘗試空投 NFT 到用戶錢包進(jìn)行釣魚,NFT 上除了好看的外,同樣也會(huì)留下釣魚網(wǎng)站的網(wǎng)址對(duì)用戶進(jìn)行誘騙。
比如下面這個(gè)案例,在空投給用戶的 NFT 上留有假冒的 fragment 市場(chǎng)鏈接。當(dāng)用戶進(jìn)入假冒的市場(chǎng)并試圖將空投的 NFT 掛單賣出時(shí),便掉進(jìn)了黑客的陷阱,不僅沒能賣出 NFT,反而被轉(zhuǎn)走了其他資產(chǎn)。
3.警惕 TON 特有的「交易附言」功能
TON 上的轉(zhuǎn)賬交易都有一個(gè)可選的 comment 字段,我們把它理解成銀行轉(zhuǎn)賬時(shí)的交易附言。這本來(lái)是方便用戶的功能,卻也被別有用心的釣魚網(wǎng)站利用。
如下圖所示,黑客試圖讓用戶將錢包中的 FISH 代幣轉(zhuǎn)出,并在交易附言中寫上"Received +xxx,xxx,xxx FISH"的字樣,誤導(dǎo)用戶以為自己將獲得比現(xiàn)有數(shù)量更多的 FISH 代幣,從而確認(rèn)交易。
在此我們提醒各位,不要相信交易附言中的任何內(nèi)容,也希望在未來(lái)各個(gè)錢包軟件能為交易附言做出更明確的安全提示。
三、利用區(qū)塊鏈瀏覽器識(shí)別詐 騙釣魚
在以太坊上我們常用 etherscan 查看鏈上信息,而 TON 上對(duì)應(yīng)的工具有 tonscan 和 tonviewer。
通過(guò)比較二者在安全方面的功能,可以發(fā)現(xiàn) tonviewer 在識(shí)別詐 騙釣魚這一功能上更勝一籌:不僅針對(duì)疑是釣魚的交易給出了"SUSPICIOUS"的可疑提示,對(duì)于空投的詐 騙 NFT,也加上了 SCAM 字樣,防止用戶上當(dāng)。
而 tonscan 僅僅展示了鏈上信息,缺少一些安全相關(guān)的提示。我們建議剛剛進(jìn)入 TON 生態(tài)的用戶,優(yōu)先使用 tonviewer 來(lái)查看錢包地址的信息。
四、使用硬件錢包進(jìn)一步保證安全
在任何公鏈上,使用硬件錢包將助記詞脫網(wǎng),并對(duì)交易進(jìn)行二次驗(yàn)證,都是有效保護(hù)資產(chǎn)的安全手段。Keystone 通過(guò)與 TonKeeper 錢包集成,使得 TON 生態(tài)用戶也能夠享受硬件錢包帶來(lái)的安全性。針對(duì)硬件錢包用戶,我們有以下建議:
• 將大額資產(chǎn)使用硬件錢包保存
• 利用 Keystone 的 3 組助記詞,將資產(chǎn)分開多個(gè)錢包存放,防止單點(diǎn)風(fēng)險(xiǎn)
• 仔細(xì)查看 Keystone 顯示的交易信息,避免簽名釣魚交易
總結(jié)
本文從 TON 的公私鑰創(chuàng)建、錢包合約、Token 的形式、交易特性等角度介紹了 TON 的一些基礎(chǔ)的技術(shù)原理,同時(shí)也探討了使用 TON 的過(guò)程中可能存在的安全問(wèn)題,希望能給大家的學(xué)習(xí)帶來(lái)啟發(fā)。
以上就是腳本之家小編給大家分享的是TON新人必看指南:從錢包選擇到資產(chǎn)保護(hù)的全面指導(dǎo)的詳細(xì)介紹了,希望大家喜歡!
你可能感興趣的文章
-
虛擬貨幣怎么玩?虛擬貨幣賺錢的15種方法詳解
虛擬貨幣作為一個(gè)新興市場(chǎng),存在許多機(jī)會(huì),這是眾所周知的,然而,許多人把虛擬貨幣投資等同于交易,其實(shí)并不是,交易只是虛擬貨幣玩法的一種,還有許多其他的虛擬貨幣投資方…
2025-07-24 -
虛擬貨幣排名,值得推薦的虛擬貨幣有哪些?虛擬貨幣如何選擇?
在目前各類金融資產(chǎn)異常波動(dòng)的情況下,除黃金外,虛擬貨幣也成了越來(lái)越多人投資避險(xiǎn)的選擇,畢竟它的保密性、流動(dòng)性都是更方便的,是資產(chǎn)配置中不可忽視的標(biāo)的,但虛擬貨幣…
2025-07-24 -
GameFi是什么?有哪些項(xiàng)目類型?2025熱門GameFi項(xiàng)目盤點(diǎn)
GameFi意思是用區(qū)塊鏈技術(shù)把游戲中的虛擬寶物、游戲貨幣轉(zhuǎn)成NFT和加密貨幣,讓人可以在加密貨幣交易所自由交易,本文將介紹GameFi是什么,有哪些項(xiàng)目類型、優(yōu)點(diǎn)、缺點(diǎn)以及目…
2025-07-24 -
如何使用ChatGPT 和Grok AI 分析鏈上數(shù)據(jù)、鯨魚動(dòng)向?一文解析
在加密貨幣領(lǐng)域,速度不僅是優(yōu)勢(shì),它是生存的關(guān)鍵, 有個(gè)問(wèn)題:當(dāng)技術(shù)指標(biāo)如相對(duì)強(qiáng)弱指數(shù)(RSI)或移動(dòng)平均匯聚擴(kuò)散(MACD)反應(yīng)過(guò)來(lái)時(shí),鯨魚已經(jīng)撤退了,那么,如何使用ChatGPT …
2025-07-24 -
一文速覽加密牛市周期:本輪牛市何時(shí)結(jié)束?
加密市場(chǎng)似乎正進(jìn)入活躍增長(zhǎng)階段,比特幣價(jià)格上揚(yáng),帶動(dòng)了整個(gè)加密市場(chǎng)的上漲,但每位投資者都會(huì)問(wèn)一個(gè)問(wèn)題:牛市何時(shí)結(jié)束,何時(shí)鎖定利潤(rùn)?或許市場(chǎng)周期和流動(dòng)性層級(jí)可以提供…
2025-07-24 -
什么是流動(dòng)性質(zhì)押代幣?如何運(yùn)作?新手指南
隨著加密貨幣生態(tài)系統(tǒng)的不斷發(fā)展,新的金融工具正在改變交易者賺取收益和參與區(qū)塊鏈安全的方式,流動(dòng)性質(zhì)押代幣 (LST) 就是其中一項(xiàng)創(chuàng)新,它為那些希望在不鎖定資產(chǎn)的情況下…
2025-07-24 -
2025年最適合使用的Memecoin Launchpad有哪些?最佳Memecoin Launchpad
最佳的 memecoin 發(fā)行平臺(tái)正在改變 2025 年 meme 代幣的上線方式,使創(chuàng)作者無(wú)需任何編程技能即可發(fā)行代幣,并最大限度地提升社區(qū)影響力,在本指南中,我們將探索 2025 年最…
2025-07-23 -
流動(dòng)性挖礦和質(zhì)押挖礦有什么不同?之間的區(qū)別和聯(lián)系介紹
流動(dòng)性挖礦和質(zhì)押挖礦是兩種常見的加密貨幣挖礦方式,它們雖然都涉及通過(guò)鎖定加密資產(chǎn)來(lái)獲得獎(jiǎng)勵(lì),但其操作機(jī)制、目的和收益方式有所不同,下文將為大家詳細(xì)介紹流動(dòng)性挖礦…
2025-07-23 -
2025年中心化交易所的加密貨幣流動(dòng)性五大亮點(diǎn)
流動(dòng)性已成為衡量加密資產(chǎn)的關(guān)鍵指標(biāo),它不僅影響著交易的便捷性,還影響著波動(dòng)性、滑點(diǎn)以及機(jī)構(gòu)吸引力,本報(bào)告探討了領(lǐng)先的中心化交易所的交易深度,重點(diǎn)關(guān)注窄幅價(jià)格區(qū)間,以…
2025-07-22 -
什么是鏈?鏈?zhǔn)窃趺催\(yùn)作的?區(qū)塊鏈網(wǎng)絡(luò)的全面介紹
在快速發(fā)展的加密貨幣和去中心化金融世界中,理解什么是鏈——通常簡(jiǎn)單地稱為“鏈”或區(qū)塊鏈網(wǎng)絡(luò)——是基礎(chǔ),無(wú)論你是在跟蹤下一個(gè)空投、探索加密市場(chǎng),還是深入了解區(qū)塊鏈…
2025-07-22