# Miscellaneous

## klay\_sha3 <a href="#klay_sha3" id="klay_sha3"></a>

입력된 데이터의 Keccak-256(이 해시 함수는 표준 SHA3-256가 아닙니다) 해시를 반환합니다.

**Parameters**

| Name | Type | Description          |
| ---- | ---- | -------------------- |
| data | DATA | SHA3 해시로 변환할 데이터입니다. |

**Return Value**

| Type         | Description                 |
| ------------ | --------------------------- |
| 32-byte DATA | 입력으로 받은 데이터의 SHA3 해시 결과입니다. |

**Example**

```shell
// Request
curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"klay_sha3","params":["0x11223344"],"id":1}' https://public-en-baobab.klaytn.net

// Result
{
  "jsonrpc":"2.0",
  "id":1,
  "result":"0x36712aa4d0dd2f64a9ae6ac09555133a157c74ddf7c079a70c33e8b4bf70dd73"
}
```

## klay\_recoverFromTransaction <a href="#klay_recoverfromtransaction" id="klay_recoverfromtransaction"></a>

Returns the recovered sender address from RLP encoded transaction bytes. If the sender address of the tx has composite accountKey type, it will return the sender address, not the addresses extracted from signatures. If the recovery failed, it returns 0x0 address.

**Parameters**

| Name         | Type            | Description                                                                                                                                                   |
| ------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| data         | DATA            | RLP encoded transaction bytes                                                                                                                                 |
| block number | QUANTITY \| TAG | Integer or hexadecimal block number, or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](#the-default-block-parameter). |

**Return Value**

| Type         | Description        |
| ------------ | ------------------ |
| 20-byte DATA | Recovered address. |

**Example**

```shell
// Request
curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"klay_recoverFromTransaction","params":["0x08f88307850ba43b74008366926694000000000000000000000000000000000000dead843b9aca00945bd2fb3c21564c023a4a735935a2b7a238c4cceaf847f8458207f6a09c57511347c7b88c3539a6584b4d57991f6c4665ffcde89da0e9895eb078bef7a0296f4fd2a765567e034f4754cf31a9902c49d6a1d465a2e3fd10b165476cffa8", "latest"],"id":1}' https://public-en-baobab.klaytn.net

// Result
{
  "jsonrpc":"2.0",
  "id":1,
  "result":"0xe15cd70a41dfb05e7214004d7d054801b2a2f06b"
}
```

## klay\_recoverFromMessage <a href="#klay_recoverfrommessage" id="klay_recoverfrommessage"></a>

Returns signer address from message signature. It validates if the message is signed by the given account. Klaytn has several [accountKey](https://docs.klaytn.foundation/content/klaytn/design/accounts#account-key) types. So if the address(account) argument has a composite accountKey like AccountKeyWeightedMultisig and the signature is generated by a member private key of the account, you will get the paired address with the member's private key, not account address. And you can be sure that the key used for signing the message is a member of the account. Additionally this function has an ability to validate a signature in the two kind of prefix when signing a message, "\x19Ethereum Signed Message:\n" and "\x19Klaytn Signed Message:\n"

**Parameters**

| Name         | Type            | Description                                                                                                                                                   |
| ------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | string          | The address of the signer account.                                                                                                                            |
| message      | DATA            | Message bytes                                                                                                                                                 |
| signature    | 65-byte DATA    | Signature bytes                                                                                                                                               |
| block number | QUANTITY \| TAG | Integer or hexadecimal block number, or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](#the-default-block-parameter). |

**Return Value**

| Type         | Description        |
| ------------ | ------------------ |
| 20-byte DATA | Recovered address. |

**Example**

```shell
// Request
curl -H "Content-Type: application/json" --data '{
  "jsonrpc":"2.0",
  "method":"klay_recoverFromMessage"
  ,"params":[
"0xA2a8854b1802D8Cd5De631E690817c253d6a9153",
"0xdeadbeef", 
"0x1e6338d6e4a8d688a25de78cf2a92efec9a92e52eb8425acaaee8c3957e68cdb3f91bdc483f0ed05a0da26eca3be4c566d087d90dc2ca293be23b2a9de0bcafc1c", 
"latest"
], 
  "Id":1
}
' https://public-en-baobab.klaytn.net

// Result
{
  "jsonrpc":"2.0",
  "id":1,
  "result":"0xa2a8854b1802d8cd5de631e690817c253d6a9153"
}
```

## klay\_forkStatus <a href="#klay_forkstatus" id="klay_forkstatus"></a>

Returns the whole list of hardforks and their effectiveness at the given block.

**Parameters**

| Name         | Type            | Description                                                                                                                                                   |
| ------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| block number | QUANTITY \| TAG | Integer or hexadecimal block number, or the string `"earliest"`, `"latest"` or `"pending"` as in the [default block parameter](#the-default-block-parameter). |

**Return Value**

| Type | Description                           |
| ---- | ------------------------------------- |
| JSON | List of forks and their effectiveness |

**Example**

```shell
// Request
curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"klay_forkStatus","params":["latest"],"id":1}' https://public-en-baobab.klaytn.net

// Result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "EthTxType": true,
    "Istanbul": true,
    "KIP103": false,
    "Kore": true,
    "London": true,
    "Magma": true,
    "Shanghai": false
  }
}
```


---

# 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://archive-ko.docs.klaytn.foundation/content/dapp/json-rpc/api-references/klay/misc.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.
