hao86下載站:值得大家信賴的游戲下載站!

首頁(yè) > 區(qū)塊鏈 > Solana 科普:認(rèn)識(shí)賬戶、Token、交易與資產(chǎn)安全

Solana 科普:認(rèn)識(shí)賬戶、Token、交易與資產(chǎn)安全

時(shí)間:2024-01-08 13:09:26
來(lái)源:hao86下載
區(qū)塊鏈

【#區(qū)塊鏈# #Solana 科普:認(rèn)識(shí)賬戶、Token、交易與資產(chǎn)安全#】

作者:enze,慢霧科技

Solana 是一種快速且高度可擴(kuò)展的區(qū)塊鏈協(xié)議,為去中心化應(yīng)用(DApps) 提供了強(qiáng)大的基礎(chǔ)設(shè)施。近期 Solana 生態(tài)復(fù)蘇引發(fā)廣泛關(guān)注,本文將介紹 Solana 賬戶、Token、交易,以及如何在這個(gè)生態(tài)中保障資產(chǎn)安全。

Solana 賬戶

了解賬戶是保障資產(chǎn)安全的第一步。與以太坊中的賬戶不同,在 Solana 中,賬戶的主要作用是存儲(chǔ)數(shù)據(jù)。

Solana 中的賬戶主要分為三種類型:

  • 數(shù)據(jù)賬戶:用于存儲(chǔ)數(shù)據(jù)。

  • 程序賬戶:用于存儲(chǔ)可執(zhí)行程序。

  • 原生賬戶:指 Solana 上的原生程序,例如 System、Stake 以及 Vote。

其中,數(shù)據(jù)賬戶可進(jìn)一步分為兩類:

  • 系統(tǒng)所有賬戶:由 Solana 上的原生程序生成的賬戶。

  • 程序派生賬戶(PDA):簽名權(quán)限是程序的帳戶,因此不像其他帳戶那樣受私鑰控制。

每個(gè)賬戶都有一個(gè)地址(一般情況下是一個(gè)公鑰)以及一個(gè)所有者(程序賬戶的地址)。前者與以太坊上的類似,后者可以簡(jiǎn)單理解為創(chuàng)建該賬戶的程序。

普通用戶通過(guò)錢(qián)包生成的賬戶屬于數(shù)據(jù)賬戶中的系統(tǒng)所有賬戶,默認(rèn)的賬戶所有者是系統(tǒng)程序。我們可以簡(jiǎn)單理解為:用戶通過(guò)系統(tǒng)程序生成了一個(gè)系統(tǒng)所有賬戶,這個(gè)賬戶存儲(chǔ)了用戶的基本信息和資產(chǎn)等數(shù)據(jù),而這個(gè)賬戶擁有一個(gè)地址(也就是公鑰)。

以 Solana Explorer 為例,普通用戶使用的賬戶,即系統(tǒng)所有賬戶,在瀏覽器上的展示如下圖:

Assigned Program Id 代表賬戶的所有者,Allocated Data Size 表示賬戶已存儲(chǔ)的數(shù)據(jù)大小,Executable 表示賬戶是否可執(zhí)行,通常只有程序賬戶是可執(zhí)行的。普通用戶只需關(guān)注賬戶的地址。

通過(guò)以上內(nèi)容,我們已經(jīng)對(duì) Solana 賬戶有了初步的了解,接下來(lái)我們來(lái)認(rèn)識(shí)下 Solana Token。

Solana Token

SPL-Token 代表 Solana 網(wǎng)絡(luò)上的所有非本地代幣,包括同質(zhì)代幣和非同質(zhì)代幣(NFT)。

與 ERC20 和 ERC721 代幣類似,SPL 代幣 在 Solana 上發(fā)行和交易,而其與以太坊的區(qū)別是:

在 Solana 中,Token 的發(fā)行人通過(guò) Solana 上的原生程序 token-program 創(chuàng)建一個(gè) mint-account,并在這個(gè)賬戶中存儲(chǔ) Token 的基本信息。例如,Solana Explorer 上的 USDC 的 mint-account 地址為 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v。瀏覽器中顯示了有關(guān) USDC Token Mint 的詳細(xì)信息,包括當(dāng)前代幣供應(yīng)量、鑄幣和凍結(jié)權(quán)限的地址以及代幣的小數(shù)精度。

接下來(lái),讓我們了解一下什么是 token-account。

在 Solana 上,每個(gè) Token 持有者都有一個(gè)特定的 token-account,記錄了該持有者特定 Token 的余額和相關(guān)信息。例如,Alice 同時(shí)擁有 USDT 和 USDC 兩種 Token,她將分別擁有兩個(gè) token-account,其中一個(gè)記錄 USDT 的余額,另一個(gè)記錄 USDC 的余額。

那么如何查看自己的 token-account 呢?

我們可以使用 Solana Beach 瀏覽器,通過(guò)輸入數(shù)據(jù)賬戶的地址,點(diǎn)擊 Portfolio,就可以清晰地看到每個(gè) token-account,每個(gè)賬戶記錄著特定 Token 的余額。

通過(guò) Solana Beach 瀏覽器,還能查看每個(gè)賬戶記錄的 Token 信息,授權(quán)情況等詳細(xì)信息。

Solana 交易

在 Solana 上,每筆交易都包含以下關(guān)鍵信息:

  • Instructions(指令):一個(gè)或多個(gè)指令,定義了交易中的操作,例如轉(zhuǎn)賬、程序交互、Token 轉(zhuǎn)賬等。

  • Blockhash(塊哈希):包含了最新的塊哈希值,用于確保交易在正確的塊上執(zhí)行。

  • Signatures(簽名):一個(gè)或多個(gè)簽名,表示交易的授權(quán)。每個(gè)簽名對(duì)應(yīng)著交易中的一個(gè)簽名賬戶,確保只有授權(quán)的賬戶可以執(zhí)行這筆交易。

Solana 上的一筆交易可以包含多個(gè)指令,這意味著可以在同一筆交易中執(zhí)行多個(gè)不同的操作,例如用戶可以將多筆轉(zhuǎn)賬指令打包到同一個(gè)交易中,這些指令將按順序執(zhí)行。如果交易中的任何一個(gè)指令失敗,整個(gè)交易都將失敗。

Solana 的交易記錄與以太坊略有不同,我們來(lái)看下如何有效閱讀 Solana 上的交易記錄。

SOL 轉(zhuǎn)賬交易

對(duì)于 Solana 上的交易記錄,我們以 SOLSCAN 瀏覽器為例,關(guān)注以下主要信息:

  • Signature(簽名):類似于交易哈希,在交易記錄中將交易的第一個(gè)簽名作為交易的索引。

  • Result(結(jié)果):交易的執(zhí)行結(jié)果,表明交易是否成功。

  • Signer(簽名者):執(zhí)行交易的賬戶地址,即簽名者的地址。

  • Main Actions(主要操作):交易中包含的主要操作指令,可以是轉(zhuǎn)賬,程序調(diào)用等。

  • Instruction Details(指令詳情):交易中執(zhí)行的具體操作指令。

我們?cè)?Main Actions 中可以看到轉(zhuǎn)賬雙方的賬戶地址。

在 Instruction Details 中,我們可以看到 SOL 轉(zhuǎn)賬交易的主要指令是 SOL Transfer,該指令旨在進(jìn)行 SOL 的轉(zhuǎn)賬。通過(guò)詳細(xì)查看該指令的詳情,我們可以獲得有關(guān)該指令調(diào)用的程序,以及涉及到的轉(zhuǎn)賬雙方的賬戶地址等信息。

Token 轉(zhuǎn)賬交易

以下交易是 USDT 的轉(zhuǎn)賬,與 SOL 交易類似。

在 Instruction Details 部分,Token 交易通常首先調(diào)用 Create Associated Account 指令,為接收方創(chuàng)建一個(gè) Token 賬戶(如果接收方尚未有相應(yīng)賬戶),用于存儲(chǔ) USDT 余額等數(shù)據(jù)。

接著執(zhí)行 Token Transfer 指令,完成 USDT 的轉(zhuǎn)賬。值得注意的是,與 SOL Transfer 指令不同,Token Transfer 指令中的 Source 和 Destination 不代表轉(zhuǎn)賬雙方的直接賬戶地址,而是它們的 Token 賬戶(PDA 賬戶),這點(diǎn)需要特別注意。

Swap 交易

下面是一筆 Swap 交易,用戶將 USDT 兌換為 USDC。

多個(gè)指令交易

在包含多個(gè)指令的 Solana 交易中,涉及 SOL 的轉(zhuǎn)賬、Swap 交易以及 Token 的轉(zhuǎn)賬等多個(gè)操作。

即便有多個(gè)指令,我們?nèi)匀荒軌蛲ㄟ^(guò) Instruction Details 查看交易執(zhí)行的詳細(xì)指令,了解每個(gè)步驟的具體操作。

資產(chǎn)安全

俗話說(shuō),知己知彼,百戰(zhàn)不殆。我們已經(jīng)初步了解了 Solana 上的賬戶、Token 和交易。為規(guī)避資產(chǎn)被盜的風(fēng)險(xiǎn),我們需要深入了解在使用 Solana 錢(qián)包時(shí)可能面臨的風(fēng)險(xiǎn)。

私鑰和助記詞泄露

根據(jù)慢霧區(qū)塊鏈被黑檔案庫(kù)(https://hacked.slowmist.io) 統(tǒng)計(jì),2023 年 9 起私鑰泄露安全事件導(dǎo)致的損失就高達(dá) 8475 萬(wàn)美元。在慢霧 AML 團(tuán)隊(duì)處理的被盜案件中,私鑰和助記詞泄露導(dǎo)致資產(chǎn)被盜的事件占據(jù)了相當(dāng)大的比例。因此,要保證 Solana 錢(qián)包上資產(chǎn)的安全,最重要的是管理好錢(qián)包私鑰和助記詞。

使用錢(qián)包

在錢(qián)包使用過(guò)程中,簽名是最需要關(guān)注的安全風(fēng)險(xiǎn)之一,尤其需要特別注意在 Solana 上與項(xiàng)目互動(dòng)時(shí)所簽名的信息。

而且,Solana 允許將多筆轉(zhuǎn)賬打包成一個(gè)交易,也即只需一次簽名即可將錢(qián)包中的所有資產(chǎn)一次性轉(zhuǎn)移。

下面我們來(lái)看一個(gè)實(shí)際案例:

某位受害者在一個(gè)釣魚(yú)網(wǎng)站上誤操作,僅僅點(diǎn)擊了一次確認(rèn),導(dǎo)致錢(qián)包中的所有資產(chǎn)被一次性轉(zhuǎn)走。究竟是什么操作讓受害者只是簽了一次名就能讓黑客將所有資產(chǎn)轉(zhuǎn)走呢?

是的,黑客利用了上文提到的機(jī)制和錢(qián)包的一個(gè)特點(diǎn):

受害者使用的是 Phantom Wallet,這款錢(qián)包能夠?qū)⒍喙P轉(zhuǎn)賬指令打包成一個(gè)交易,僅需一次簽名即可完成整個(gè)過(guò)程。恰恰是這一功能成為黑客利用的突破口,導(dǎo)致受害者在一次簽名中失去了所有資產(chǎn)。在使用錢(qián)包時(shí),請(qǐng)用戶務(wù)必謹(jǐn)慎確認(rèn)每一次簽名的操作,以免遭受損失。

Phantom Wallet 的官方文檔中也明確介紹了這一關(guān)鍵功能:

總結(jié)

在本期 Solana 科普文章中,我們首先了解了 Solana 賬戶的基礎(chǔ)知識(shí);接著深入研究了 Solana Token 的基本概念;隨后探討了在 Solana 上進(jìn)行交易的相關(guān)內(nèi)容。在保障錢(qián)包資產(chǎn)安全的部分,我們強(qiáng)調(diào)了私鑰和助記詞的安全保存,建議用戶閱讀慢霧出品的《區(qū)塊鏈黑暗森林自救手冊(cè)》:https://github.com/slowmist/Blockchain-dark-forest-selfguard-handbook/blob/main/README_CN.md 以獲取更多安全建議;在使用錢(qián)包時(shí),請(qǐng)用戶務(wù)必小心確認(rèn)每一次簽名的操作,避免遭受損失。此外,閱讀錢(qián)包文檔中的安全提示至關(guān)重要,時(shí)刻保持警惕是保障資產(chǎn)安全的關(guān)鍵。

小編推薦下載

相關(guān)文章

更多>>

資訊排行

同類軟件下載