# Account

### defaultAccount <a href="#defaultaccount" id="defaultaccount"></a>

```javascript
caver.klay.defaultAccount
```

This default address is used as the default `from` property, if no `from` property is specified in parameters of the following methods:

* [caver.klay.sendTransaction()](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/transaction/sendtx_legacy#sendtransaction-legacy)
* [caver.klay.call()](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/transaction#call)
* [new caver.klay.Contract()](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/caver.klay.contract#new-contract) -> [myContract.methods.myMethod().call()](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/caver.klay.contract#methods-mymethod-call)
* [new caver.klay.Contract()](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/caver.klay.contract#new-contract) -> [myContract.methods.myMethod().send()](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/caver.klay.contract#methods-mymethod-send)

**Property**

20바이트 `String`인 모든 Klaytn 주소입니다. You should have the private key for that address in your node or keystore. 기본값은 `undefined`입니다.

**Example**

```javascript
> caver.klay.defaultAccount;
undefined

// set the default account
> caver.klay.defaultAccount = '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe';
```

### accountCreated <a href="#accountcreated" id="accountcreated"></a>

```javascript
caver.klay.accountCreated(address [, defaultBlock] [, callback])
```

Returns `true` if the account associated with the address is created. It returns `false` otherwise.

**참고** accountCreated는 계정이 네트워크에 있는 지 확인하므로, 키 쌍이 생성 되었다 하더라도 주소와 일치하는 계정이 실제 블록체인 네트워크에 존재하지 않으면 false가 반환됩니다.

**Parameters**

| Name         | Type             | Description                                                                                                                                                                             |
| ------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | String           | The address of the account you want to query to see if it has been created on the network.                                                                                              |
| defaultBlock | Number \| String | (선택 사항) 이 파라미터에 값을 전달하면 [caver.klay.defaultBlock](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock)에 설정된 기본 블록을 사용하지 않습니다.. |
| callback     | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                              |

**Return Value**

`프로미스`는 `Boolean`을 반환 - 입력한 주소가 존재하는지 여부입니다.

**Example**

```javascript
> caver.klay.accountCreated('0x7e6ea9e6f24567cd9edb92e6e2d9b94bdae8a47f').then(console.log);
true

> caver.klay.accountCreated('0x6a616d696e652e6b6c6179746t00000000000000').then(console.log);
false
```

### getAccount <a href="#getaccount" id="getaccount"></a>

```javascript
caver.klay.getAccount(address[, defaultBlock] [, callback])
```

Returns the account information of a given address. There are two different account types in Klaytn: Externally Owned Account (EOA) and Smart Contract Account. 자세한 내용은 [Klaytn 계정](https://archive-ko.docs.klaytn.foundation/klaytn/design/accounts#klaytn-accounts)을 참고해주세요.

**참고** getAccount는 계정이 네트워크에 있는 경우에만 계정을 반환하므로 키 쌍이 생성 되었다 하더라도 주소와 일치하는 계정이 실제 블록체인 네트워크에 존재하지 않으면 null이 반환됩니다.

**Parameters**

| Name         | Type             | Description                                                                                                                                                                                                                |
| ------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | String           | The address of the account for which you want to get account information.                                                                                                                                                  |
| defaultBlock | Number \| String | (optional) If you pass this parameter, it will not use the default block set with [caver.klay.defaultBlock](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock). |
| callback     | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                                                                 |

**Return Value**

`프로미스`는 JSON 객체를 반환 - 계정 정보를 담은 JSON 객체입니다.

**Example**

```javascript
> caver.klay.getAccount('0x52791fcf7900a64a6bcab8b89a78ae4cc60da01c').then(console.log);
{ 
  accType: 1,
  account:
  { 
     nonce: 3,
     balance: '0x446c3b15f9926687c8e202d20c14b7ffe02e7e3000',
     humanReadable: false,
     key: { keyType: 1, key: {} } 
  } 
}

> caver.klay.getAccount('0x52791fcf7900a64a6bcab8b89a78ae4cc60da01c', 'latest').then(console.log);
{ 
  accType: 1,
  account:
  { 
     nonce: 3,
     balance: '0x446c3b15f9926687c8e202d20c14b7ffe02e7e3000',
     humanReadable: false,
     key: { keyType: 1, key: {} } 
  } 
}
```

### getAccounts <a href="#getaccounts" id="getaccounts"></a>

```javascript
caver.klay.getAccounts([callback])
```

노드에 생성된 계정 목록을 반환합니다.

**Parameters**

| Name     | Type     | Description                                                                                                |
| -------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| callback | Function | (optional) Optional callback, returns an error object as the first parameter and the result as the second. |

**Return Value**

`프로미스`는 `Array`를 반환 - 노드가 관리하는 주소들이 담긴 배열입니다.

**Example**

```javascript
> caver.klay.getAccounts().then(console.log);
["0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "0xDCc6960376d6C6dEa93647383FfB245CfCed97Cf"]
```

### getAccountKey <a href="#getaccountkey" id="getaccountkey"></a>

```javascript
caver.klay.getAccountKey(address [, defaultBlock] [, callback])
```

Returns the account key of the Externally Owned Account (EOA) of the given address. If the account has AccountKeyLegacy or the account of the given address is a Smart Contract Account, it will return an empty key value. 자세한 내용은 [계정 키](https://archive-ko.docs.klaytn.foundation/klaytn/design/accounts#account-key)를 참고해주세요.

**참고** getAccountKey는 계정이 네트워크에 있는 경우에만 계정 키를 반환하므로 키 쌍이 생성 되었다 하더라도 주소와 일치하는 계정이 실제 블록체인 네트워크에 존재하지 않으면 null이 반환됩니다.

**Parameters**

| Name         | Type             | Description                                                                                                                                                                                                                |
| ------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | String           | 계정 키를 알고 싶은 계정 주소입니다.                                                                                                                                                                                                      |
| defaultBlock | Number \| String | (optional) If you pass this parameter, it will not use the default block set with [caver.klay.defaultBlock](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock). |
| callback     | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                                                                 |

**Return Value**

`Promise` returns `Object` - The account key consist of public key(s) and a key type.

**Example**

```javascript
// AccountKey type: AccountKeyLegacy
> caver.klay.getAccountKey('0x7e6ea9e6f24567cd9edb92e6e2d9b94bdae8a47f').then(console.log);
{ keyType: 1, key: {} }

// AccountKey type: AccountKeyPublic
> caver.klay.getAccountKey('0xe1be6edd35b68cbf69fe9376ed7320476cf18b5c').then(console.log);
{
  keyType: 2,
  key:{
    x:'0xb9a4b266083c05deb3ce95055510c34c84b8bb2ad1e0a687fafaf15118511e59',
    y:'0x7a28526d3d076d019f8856a56f1fefff33c6100e9f3a190e85d9c754aae7513d'
  }
}

// AccountKey type: AccountKeyFail
> caver.klay.getAccountKey('0xf6d69a7a006d7ab2dcef79195698f6c30895e7d5').then(console.log);
{
  keyType: 3,
  key:{}
}

// AccountKey type: AccountKeyWeightedMultiSig
> caver.klay.getAccountKey('0x676b02b1cb59bd86577f15ff17fb0d59d8ca1ab6').then(console.log);
{
  keyType: 4,
  key: {
    threshold: 2,
    keys: [
      {
        weight: 1,
        key: {
          x: '0xae6b72d7ce2c11520ac00cbd1c4da216171a96eae1ae3a0a1f979a554c9063ae',
          y: '0x79ddf38c8717030512f3ca6f304408a3beb51519b918b8d62a55ff4a8c165fea'
        }
      },
      {
        weight: 1,
        key: {
          x: '0xd4256fc43f42b3313b7204e42a82893a8d9b562f6c9b39456ee989339949c67c',
          y: '0xfc5e78e71b26f5a93b5bec454e4d63947576ffd23b4df624579ff4eb67a2a29b'
        }
      },
      {
        weight: 1,
        key: {
          x: '0xd653eae5f0e9cd6bfe4c3929f4c4f28c94f3bd183eafafee2d73db38a020d9d8',
          y: '0xe974e859b5be80755dedaebe937ac49800cbac483ca304179050a177e9ca0270'
        }
      }
    ]
  }
}

// AccountKey type: AccountKeyRoleBased
> caver.klay.getAccountKey('0x73436db2404853b41e4398d3cf094f1cce57f3bd').then(console.log);
{
  keyType: 5,
  key: [
      {
        key: {
          x: '0x819659d4f08e08d4bd97c6ce5ed2c2eb914201a5b3731eb9d208128df24b97dd',
          y: '0x1824267ab9e55f5a3fb1030f0299fa73fc0037305d5b1d90100e2131af41c010'
        },
        keyType: 2
      },
      {
        key: {
          x: '0x73363604ca8776a2883b02046361b7eb6bd11f4fc10700ee51c525bcded134c1',
          y: '0xfc3e3cb3f4f5b709df5a2075107bc73c8618440c08456bafc44ee6f27f9e6326'
        },
        keyType: 2
      },
      {
        key: {
          x: '0x95c920eb2571dff37baecdbbee32897e6e448c6725c5ab73569cc6f659684307',
          y: '0xef7839023c48acf710ad322356c12b7c5b7f475515ba7d5834f41a993f42b8f9'
        },
        keyType: 2
      }
  ]
}
```

### getBalance <a href="#getbalance" id="getbalance"></a>

```javascript
caver.klay.getBalance(address [, defaultBlock] [, callback])
```

주어진 블록에 있는 주소의 잔액을 반환합니다.

**Parameters**

| Name         | Type             | Description                                                                                                                                                                                                                |
| ------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | String           | 잔액을 알고 싶은 주소입니다.                                                                                                                                                                                                           |
| defaultBlock | Number \| String | (optional) If you pass this parameter, it will not use the default block set with [caver.klay.defaultBlock](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock). |
| callback     | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                                                                 |

**Return Value**

`프로미스`는 `String`을 반환 - 주어진 주소의 peb 단위 현재 잔액입니다.

**Example**

```javascript
> caver.klay.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1").then(console.log);
"1000000000000"
```

### getCode <a href="#getcode" id="getcode"></a>

```javascript
caver.klay.getCode(address [, defaultBlock] [, callback])
```

특정 주소의 코드를 반환합니다.

**Parameters**

| Name         | Type             | Description                                                                                                                                                                                                                |
| ------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | String           | The address to get the code from.                                                                                                                                                                                          |
| defaultBlock | Number \| String | (optional) If you pass this parameter, it will not use the default block set with [caver.klay.defaultBlock](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock). |
| callback     | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                                                                 |

**Return Value**

`프로미스`는 `String`을 반환 - 주어진 `주소`에 있는 데이터입니다.

**Example**

```javascript
> caver.klay.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8").then(console.log);
"0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"

```

### getTransactionCount <a href="#gettransactioncount" id="gettransactioncount"></a>

```javascript
caver.klay.getTransactionCount(address [, blockNumber] [, callback])
```

이 주소에서 발신된 트랜잭션의 개수를 반환합니다.

**Parameters**

| Name        | Type             | Description                                                                                                                                                                                                                                                                                       |
| ----------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address     | String           | The address to get the number of transactions from.                                                                                                                                                                                                                                               |
| blockNumber | number \| string | (optional) A block number, the string `pending` for the pending nonce, or the string `earliest` or `latest` as in the [default block parameter](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock). If omitted, `latest` will be used. |
| callback    | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                                                                                                                                        |

**Return Value**

| Type   | Description               |
| ------ | ------------------------- |
| Number | 주어진 주소에서 발신된 트랜잭션의 개수입니다. |

**Example**

```javascript
> caver.klay.getTransactionCount("0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe")
  .then(console.log);
1
```

### isContractAccount <a href="#iscontractaccount" id="iscontractaccount"></a>

```javascript
caver.klay.isContractAccount(address [, defaultBlock] [, callback])
```

Returns `true` if an input account has a non-empty codeHash at the time of a specific block number. It returns `false` if the account is an EOA or a smart contract account which doesn't have codeHash.

**Parameters**

| Name         | Type             | Description                                                                                                                                                                                                                |
| ------------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address      | String           | isContractAccount로 확인할 계정 주소입니다.                                                                                                                                                                                           |
| defaultBlock | Number \| String | (optional) If you pass this parameter, it will not use the default block set with [caver.klay.defaultBlock](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/block#defaultblock). |
| callback     | Function         | (optional) Optional callback, returns an error object as the first parameter and the result as the second.                                                                                                                 |

**Return Value**

`프로미스`는 `Boolean`을 반환 - `true`는 입력 파라미터가 블록에 존재하는 스마트 컨트랙트 주소임을 의미합니다.

**Example**

```javascript
> caver.klay.isContractAccount('0x7e6ea9e6f24567cd9edb92e6e2d9b94bdae8a47f').then(console.log);
true

> caver.klay.isContractAccount('0x407d73d8a49eeb85d32cf465507dd71d507100c1').then(console.log);
false
```

### sign <a href="#sign" id="sign"></a>

```javascript
caver.klay.sign(message, address [, callback])
```

Klaytn 네트워크에서 사용하는 서명된 데이터를 생성합니다. Refer to [Klaytn Platform API - klay\_sign](https://archive-ko.docs.klaytn.foundation/content/json-rpc/api-references/klay/account#klay_sign) to know how the signature is generated.

**참고**: 이 API는 노드에 있는 계정으로 메시지에 서명하는 기능을 제공합니다. 노드에 있는 계정은 반드시 잠금 해제되어야 메시지에 서명할 수 있습니다. To sign a transaction, use [caver.klay.signTransaction](https://archive-ko.docs.klaytn.foundation/content/dapp/sdk/caver-js/v1.4.1/api-references/transaction#signtransaction).

**Parameters**

| Name     | Type     | Description                                                                                                |
| -------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| message  | String   | Message to sign.                                                                                           |
| address  | String   | 메시지에 서명하는 계정 주소입니다.                                                                                        |
| callback | Function | (optional) Optional callback, returns an error object as the first parameter and the result as the second. |

**Return Value**

`프로미스`는 `String`을 반환 - 계정의 개인키로 서명한 메시지입니다.

**Example**

```javascript
> caver.klay.sign('Message to sign', '0x1427ac5d0f1c3174ee6ea05d29a9b05fd31d7579').then(console.log)
0xde8bd2f5a45de6b1baea57ed0219735ab60f0ef55c5e31a4b774824abea31bfc34c8bdbca43ed4155e8e6a8e0d11d7aba191ba025e0487ada2bcc422252b81591b
```


---

# 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/sdk/caver-js/v1.4.1/api-references/caver.klay/account.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.
