# 解析 4-byte Function Signature

## I. 什麼是 4-byte Function Signature ？

在以太坊智能合約中，開發者通常會命名本合約需要調用的函數，而這些函數名稱通過哈希等運算及編碼，取前四位的字節，最終得到了智能合約中的 4-byte Function Signatur，點擊[這裡](https://www.4byte.directory/)查看更多關於 4-byte Function Signature 信息。

![](https://37182324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVozfoQsxc6YFPQfVTB-3369173170%2Fuploads%2FcrSBlhRmNpWeuJKBjuwH%2FScreen%20Shot%202022-06-07%20at%203.15.57%20PM.png?alt=media\&token=fa768822-7264-4efb-b0e0-3679bacf4640)

## II. 為什麼要開發此功能？

Keystone 的願景和使命是讓交易更安全可靠。

Keystone 已經為用戶提供了 [ABI 解析](https://support.keyst.one/traditional-chinese/gao-ji-gong-neng/jie-xi-defi-jiao-yi)的功能，在收到了用戶認可的同時，也收到了許多用戶的反饋，希望 Keystone 可以解析更多的內容，將這些智能合約中的字節轉化為人類可讀的語言。於是在 ABI 解析功能的基礎上，推出了 4-byte Function Signature 的解析，幫助用戶在簽名的時候若未能進行 ABI 解析則會繼續解析 4-byte Function Signature 這樣可以看到智能合約調用了哪些函數，從側面增加了簽名的安全性。

## III. 解析 4-byte Function Signature

Keystone 錢包的 V6.0.0 (多幣種) 及以上多幣種固件版本已支持解析 4-byte Function Signature。本教程將以 MetaMask 為例，展示如何使用 Keystone 解析4-byte Function Signature。

#### 1. 準備

1）將 Keystone 的固件版本升級到 V6.0.0 （Multi-Coin）或以上版本，\
（有關更多詳情，請閱讀[如何升級固件](https://support.keyst.one/traditional-chinese/kai-shi-shi-yong/ru-he-sheng-ji-gu-jian)）

2）綁定“ MetaMask Extension ”（[如何綁定 MetaMask](https://support.keyst.one/traditional-chinese/di-san-fang-qian-bao/eth-web3-qian-bao/metamask-eth)）。

3）準备 MicroSD 記憶卡（要求：默認 FAT32 格式，且**不超過** 512GB，否則無法被 Keystone 識別）。

{% hint style="info" %}
提示：Keystone 可以將 Micro SD 卡格式化為 FAT32。（[教程](https://support.keyst.one/v/traditional-chinese/kai-shi-shi-yong/ru-he-sheng-ji-gu-jian/jiang-tf-ka-ge-shi-hua-cheng-fat32-ge-shi)）
{% endhint %}

4） MicroSD 記憶卡讀卡器（如果電腦支持直接插入 MicroSD 記憶卡，則無需準備）。

#### 2.操作

1）將 Micro SD 記憶卡插入電腦，下載 [ method\_signatures](https://github.com/KeystoneHQ/4bytes/releases)，下載完成後，解壓文檔，講解壓文檔“selector”並拷貝到 Micro SD 記憶卡的根目錄。

{% hint style="info" %}
**小貼士：**&#x60A8;可以使用開源工具小貼士查看 Selector 中的數據。[點擊此處](https://github.com/sqlitebrowser/sqlitebrowser)在 “GitHub > REDEME” 中下載開源工具。
{% endhint %}

![](https://37182324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVozfoQsxc6YFPQfVTB-3369173170%2Fuploads%2FhSDphEjOuxtOP17FlSLp%2FScreen%20Shot%202022-06-07%20at%204.08.07%20PM.png?alt=media\&token=8b944f91-3d6c-42e0-b6be-2cced9c9617a)

2）3. 將 MicroSD 記憶卡插入 Keystone 錢包設備。

![](https://37182324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVozfoQsxc6YFPQfVTB-3369173170%2Fuploads%2Fk72FShdB81c4AyWXycg7%2FTF%E6%8F%92%E5%85%A5KV.jpg?alt=media\&token=dfdab374-5cc2-4a26-85a8-39bc14cdc4a3)

3）創建一筆 DeFi 交易，生成待簽名的二維碼 （本教程通過連接 MetaMask 在 Sushiswap 上創建交易舉例）。

![](https://37182324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVozfoQsxc6YFPQfVTB-3369173170%2Fuploads%2FLWDe0rnpQjJtuEDz91oE%2F3.png?alt=media\&token=f3b06515-fccd-4e27-aa1c-cd56836eea20)

4）Keystone 端：點擊【菜單】> 【選擇軟件錢包】>【MM / DeFi / Web3】>【確認】，在此模式下，點擊主頁右上角 “掃描” 按鈕，攝像頭打開後對準  MetaMask 彈出來的待簽名交易二維碼進行掃描。

![](https://37182324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVozfoQsxc6YFPQfVTB-3369173170%2Fuploads%2FSk5WQDqa55erq9aoEFjw%2F6.png?alt=media\&token=8747d1f8-7f4b-46b7-9b68-c342a6ada1aa)

5）Keystone 將讀取到 MicroSD 記憶卡中匹配的 4-byte Function Signature 數據，解析該筆交易的資訊並展示所有可能調用的函&#x6578;**（只有在ABI數據未能解析時，才會進一步解析 4-byte Function Signature ）**。

![
](https://37182324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVozfoQsxc6YFPQfVTB-3369173170%2Fuploads%2FYAcbQNfZ4iIwnSM0Cwqc%2F4.0.png?alt=media\&token=857f7c97-400f-4bf4-9609-acbcdd7d2a12)

{% hint style="info" %}
**注意事項：**\
1\. 簽名交易時，需保持含有 Selector 資料庫的 MicroSD 記憶卡始終插在 Keystone 錢包中，不可中途將 MicroSD 記憶卡拔出，否則會導致交易無法解析。

2\. Keystone 錢包設備對之前已經讀取過的 Selector 不會有記憶，因此每一次簽名交易時，都需要將含有 Selector 資料庫的 MicroSD 記憶卡插入 Keystone 錢包設備中，直到不需要再做任何簽名時方可拔出 MicroSD 記憶卡。
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.keyst.one/traditional-chinese/gao-ji-gong-neng/jie-xi-4byte-function-signature.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
