# subbridge

The namespace `subbridge` provides functions related to Service Chain. To use the functions in this namespace, the option `subbridge` should be enabled in the SEN connected to the service chain.

## subbridge\_nodeInfo <a href="#subbridge_nodeinfo" id="subbridge_nodeinfo"></a>

Returns bridge node information including the KNI (Klaytn Network Identifier) of the node. A subbridge node can connect to a mainbridge node via the KNI.

**Parameters**

None

**Return Value**

| Type        | Description                  |
| ----------- | ---------------------------- |
| JSON string | the bridge node information. |

**Example**

```javascript
> subbridge.nodeInfo
{
  kni: "kni://f8a1f0cd1e2bebeece571e4fda16e215218fd4b9bc2eddd924f7cd5b5f950fcec8f4b8cd3851390d1d0bacf1b15e1c4a38c882252e429a28d16eeb6edbacd726@[::]:50505?discport=0",
  id: "f8a1f0cd1e2bebeece571e4fda16e215218fd4b9bc2eddd924f7cd5b5f950fcec8f4b8cd3851390d1d0bacf1b15e1c4a38c882252e429a28d16eeb6edbacd726",
  ip: "::",
  listenAddr: "[::]:50505",
  name: "-2",
  ports: {
    discovery: 0,
    listener: 50505
  },
  protocols: {
    servicechain: {
      config: {
        chainId: 2018,
        deriveShaImpl: 0,
        isBFT: true,
        istanbul: {...},
        unitPrice: 0
      },
      difficulty: 87860,
      genesis: "0x711ce9865492659977abb2758d29f68c2b0c82862d9376f25953579f64f95b58",
      head: "0x0d4b130731f1e7560e4531ac73d55ac8c6daccb178abd86af0d96b7aafded7c5",
      network: 1
    }
  }
}
```

## subbridge\_addPeer <a href="#subbridge_addpeer" id="subbridge_addpeer"></a>

Returns `true` if adding a mainbridge peer is done successfully.

The `addPeer` method adds a new remote node to the peer list. The node will try to maintain connectivity to these nodes at all times, reconnecting every once in a while if the remote connection goes down.

The method accepts a single argument, the `kni` URL of the remote peer to start tracking and returns a `BOOL` indicating whether the peer was accepted for tracking or some error occurred.

**Parameters**

| Name | Type   | Description       |
| ---- | ------ | ----------------- |
| url  | string | Peer's `kni` URL. |

**Return Value**

| Type | Description                                         |
| ---- | --------------------------------------------------- |
| bool | `true` if the peer was accepted, `false` otherwise. |

**Example**

Console

```javascript
> mainbridge.addPeer("kni://a979fb...1163c@10.0.0.1:50505") // or 'subbridge.addPeer'
true
```

HTTP RPC

```shell
$ curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"mainbridge_addPeer","params":["kni://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@10.0.0.1:50505"],"id":1}' https://public-en-baobab.klaytn.net
{"jsonrpc":"2.0","id":1,"result":true}
```

## subbridge\_removePeer <a href="#subbridge_removepeer" id="subbridge_removepeer"></a>

Returns `true` if removing the peer is done successfully.

The `removePeer` method disconnects and removes the remote node in the list of tracked static nodes. The method accepts a single argument, the `kni` URL of the remote peer to start tracking and returns a `BOOL` indicating whether the peer was accepted for tracking or some error occurred.

**Parameters**

| Name | Type   | Description       |
| ---- | ------ | ----------------- |
| url  | string | Peer's `kni` URL. |

**Return Value**

| Type | Description                                        |
| ---- | -------------------------------------------------- |
| bool | `true` if the peer was removed, `false` otherwise. |

**Example**

Console

```javascript
> mainbridge.removePeer("kni://a979fb...1163c@10.0.0.1:50505") // or 'subbridge.removePeer'
true
```

HTTP RPC

```shell
$ curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"mainbridge_removePeer","params":["kni://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@10.0.0.1:50505"],"id":1}' https://public-en-baobab.klaytn.net
{"jsonrpc":"2.0","id":1,"result":true}
```

## subbridge\_parentOperator <a href="#subbridge_parentoperator" id="subbridge_parentoperator"></a>

The `subbridge_parentOperator` returns the parent operator account address.

**Parameters**

none

**Return Value**

| Type    | Description                            |
| ------- | -------------------------------------- |
| Account | Parent chain operator account address. |

**Example**

```javascript
> subbridge.parentOperator
"0xA057995175B93Ee0D1bdfA54f078Ad0F0116130b"
```

## subbridge\_childOperator <a href="#subbridge_childoperator" id="subbridge_childoperator"></a>

The `subbridge_childOperator` returns the child operator account address.

**Parameters**

none

**Return Value**

| Type    | Description                           |
| ------- | ------------------------------------- |
| Account | Child chain operator account address. |

**Example**

```javascript
> subbridge.childOperator
"0x5C1C757a6Cb6c6FcEFE398674D8209FDA2A74Df4"
```

## subbridge\_parentOperatorNonce <a href="#subbridge_parentoperatornonce" id="subbridge_parentoperatornonce"></a>

The `subbridge_parentOperatorNonce` returns the nonce of the parent operator account address.

**Parameters**

none

**Return Value**

| Type     | Description                                                                  |
| -------- | ---------------------------------------------------------------------------- |
| QUANTITY | Integer of the number of transactions sent from the parent operator account. |

**Example**

```javascript
> subbridge.parentOperatorNonce
1348
```

## subbridge\_childOperatorNonce <a href="#subbridge_childoperatornonce" id="subbridge_childoperatornonce"></a>

The `subbridge_childOperator` returns the child operator account address.

**Parameters**

none

**Return Value**

| Type     | Description                                                                 |
| -------- | --------------------------------------------------------------------------- |
| QUANTITY | Integer of the number of transactions sent from the child operator account. |

**Example**

```javascript
> subbridge.childOperatorNonce
1024
```

## subbridge\_parentOperatorBalance <a href="#subbridge_parentoperatorbalance" id="subbridge_parentoperatorbalance"></a>

The `subbridge_parentOperatorBalance` returns the balance of the parent operator account.

**Parameters**

none

**Return Value**

| Type     | Description                                                    |
| -------- | -------------------------------------------------------------- |
| QUANTITY | Integer of the current balance of the parent operator account. |

**Example**

```javascript
> subbridge.parentOperatorBalance
1e+50
```

## subbridge\_childOperatorBalance <a href="#subbridge_childoperatorbalance" id="subbridge_childoperatorbalance"></a>

The `subbridge_childOperatorBalance` returns the balance of the child operator account.

**Parameters**

none

**Return Value**

| Type     | Description                                                   |
| -------- | ------------------------------------------------------------- |
| QUANTITY | Integer of the current balance of the child operator account. |

**Example**

```javascript
> subbridge.childOperatorBalance
1e+50
```

## subbridge\_sendChainTxslimit <a href="#subbridge_sendchaintxslimit" id="subbridge_sendchaintxslimit"></a>

The `sendChainTxslimit` gets the maximum number of pending transactions to pick up for sending at once.

**Parameters**

None

**Return Value**

| Type   | Description                                                               |
| ------ | ------------------------------------------------------------------------- |
| Uint64 | the maximum number of pending transactions to pickup for sending at once. |

**Example**

```javascript
> subbridge.sendChainTxslimit
100
```

## subbridge\_anchoring <a href="#subbridge_anchoring" id="subbridge_anchoring"></a>

The `subbridge_anchoring` can enable/disable the anchoring feature of the service chain.

**Parameters**

| Name   | Type | Description                                                |
| ------ | ---- | ---------------------------------------------------------- |
| enable | Bool | `true` enables the anchoring feature, `false` disables it. |

**Return Value**

| Type | Description                                             |
| ---- | ------------------------------------------------------- |
| bool | `true` if the anchoring was enabled, `false` otherwise. |

**Example**

Console

```javascript
> subbridge.anchoring(true)
true
> subbridge.anchoring(false)
false
```

HTTP RPC

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

## subbridge\_latestAnchoredBlockNumber <a href="#subbridge_latestanchoredblocknumber" id="subbridge_latestanchoredblocknumber"></a>

The `subbridge_latestAnchoredBlockNumber` returns the latest anchored block number of the service chain.

**Parameters**

None

**Return Value**

| Type   | Description                       |
| ------ | --------------------------------- |
| Uint64 | The latest anchored block number. |

**Example**

```javascript
> subbridge.latestAnchoredBlockNumber
71025
```

## subbridge\_getReceiptFromParentChain <a href="#subbridge_getreceiptfromparentchain" id="subbridge_getreceiptfromparentchain"></a>

The `subbridge_getReceiptFromParentChain` returns the receipt of the anchoring transaction.

**Parameters**

| Type         | Description                                                         |
| ------------ | ------------------------------------------------------------------- |
| 32-byte DATA | The child chain block hash that was included the anchoring tx hash. |

**Return Value**

`Object` - A transaction receipt object, or `null` when no receipt was found.

| Name            | Type          | Description                                                                                                      |
| --------------- | ------------- | ---------------------------------------------------------------------------------------------------------------- |
| contractAddress | DATA          | The contract address created, if the transaction was a contract creation, otherwise `null`. (will be deprecated) |
| gasUsed         | QUANTITY      | The amount of gas used by this specific transaction alone.                                                       |
| logs            | Array         | Array of log objects, which this transaction generated.                                                          |
| logsBloom       | 256-byte DATA | Bloom filter for light clients to quickly retrieve related logs.                                                 |
| status          | QUANTITY      | Either `1` (success) or `0` (failure).                                                                           |
| transactionHash | 32-byte DATA  | Hash of the transaction.                                                                                         |

**Example**

```javascript
> subbridge.getReceiptFromParentChain("0x4f300d6574e71d7940c88fe08f27d9ac45cbc7b81d45c17e848d3772f64377b5")
{
  contractAddress: "0x0000000000000000000000000000000000000000",
  gasUsed: "0x9470",
  logs: [],
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  status: "0x1",
  transactionHash: "0x3641f52359f44ef2a9941ea840aed4befbace5cac28d5cc8cacd94eae211fd1e"
}
```

## subbridge\_deployBridge <a href="#subbridge_deploybridge" id="subbridge_deploybridge"></a>

The `subbridge_deployBridge` deploys a bridge contract to the parent and child chains and returns the addresses of deployed bridge contracts. This method also registers the bridge contracts with the sub-bridge.

**Parameters**

none

**Return Value**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |

**Example**

```javascript
> subbridge.deployBridge()
["0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4"]
```

## subbridge\_registerBridge <a href="#subbridge_registerbridge" id="subbridge_registerbridge"></a>

The `subbridge_registerBridge` registers already deployed bridge contracts in the parent and child chains.

**Parameters**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |

**Return Value**

| Name  | Type  | Description                                                  |
| ----- | ----- | ------------------------------------------------------------ |
| error | Error | `null` if the registration succeeds, Error object otherwise. |

**Example**

```javascript
> subbridge.registerBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
null

> subbridge.registerBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
Error: bridge already exists
```

## subbridge\_deregisterBridge <a href="#subbridge_deregisterbridge" id="subbridge_deregisterbridge"></a>

The `subbridge.deregisterBridge` deregisters already registered bridge contracts in the parent/child chain.

**Parameters**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |

**Return Value**

| Name  | Type  | Description                                                    |
| ----- | ----- | -------------------------------------------------------------- |
| error | Error | `null` if the deregistration succeeds, Error object otherwise. |

**Example**

```javascript
> subbridge.deregisterBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
null

> subbridge.deregisterBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
Error: invalid bridge pair
```

## subbridge\_subscribeBridge <a href="#subbridge_subscribebridge" id="subbridge_subscribebridge"></a>

The `subbridge_subscribeBridge` subscribes to the registered bridge contracts in the parent and child chains. If the sub-bridge node is subscribed to the bridge contract pair, cross-chain value-transfer requests are handled automatically by the sub-bridge.

**Parameters**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |

**Return Value**

| Name  | Type  | Description                                                 |
| ----- | ----- | ----------------------------------------------------------- |
| error | Error | `null` if the subscribing succeeds, Error object otherwise. |

**Example**

```javascript
> subbridge.subscribeBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
null
> subbridge.subscribeBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
Error: already subscribed
```

## subbridge\_unsubscribeBridge <a href="#subbridge_unsubscribebridge" id="subbridge_unsubscribebridge"></a>

The `subbridge_unsubscribeBridge` unsubscribes the sub-bridge from the bridge contracts in the parent and child chains. If the sub-bridge is unsubscribed from the bridge contracts, cross-chain value transfer requests can not be handled by the sub-bridge.

**Parameters**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |

**Return Value**

| Name  | Type  | Description                                                   |
| ----- | ----- | ------------------------------------------------------------- |
| error | Error | `null` if the unsubscribing succeeds, Error object otherwise. |

**Example**

```javascript
> subbridge.unsubscribeBridge("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4")
null
```

## subbridge\_registerToken <a href="#subbridge_registertoken" id="subbridge_registertoken"></a>

The `subbridge_registerToken` registers a pair of ERC-20 or 721 tokens with the bridge contracts.

**Parameters**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |
| account | 20-byte DATA | Address of token contract on child chain.   |
| account | 20-byte DATA | Address of token contract on parent chain.  |

**Return Value**

| Name  | Type  | Description                                                  |
| ----- | ----- | ------------------------------------------------------------ |
| error | Error | `null` if the registration succeeds, Error object otherwise. |

**Example**

```javascript
> subbridge.registerToken("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4","0xA4b0c6e12346426a09FaD70dAE0651E6Dbdd5198","0x865Cca53828C91663BFf0Ca9808827Bac552BAec")
null
> subbridge.registerToken("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4","0xA4b0c6e12346426a09FaD70dAE0651E6Dbdd5198","0x865Cca53828C91663BFf0Ca9808827Bac552BAec")
Error: token already exists
```

## subbridge\_deregisterToken <a href="#subbridge_deregistertoken" id="subbridge_deregistertoken"></a>

The `subbridge_deregisterBridge` deregisters already registered token pair from the bridge contracts.

**Parameters**

| Name    | Type         | Description                                 |
| ------- | ------------ | ------------------------------------------- |
| account | 20-byte DATA | Address of bridge contract on child chain.  |
| account | 20-byte DATA | Address of bridge contract on parent chain. |
| account | 20-byte DATA | Address of token contract on child chain.   |
| account | 20-byte DATA | Address of token contract on parent chain.  |

**Return Value**

| Name  | Type  | Description                                                    |
| ----- | ----- | -------------------------------------------------------------- |
| error | Error | `null` if the deregistration succeeds, Error object otherwise. |

**Example**

```javascript
> subbridge.deregisterToken("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4","0xA4b0c6e12346426a09FaD70dAE0651E6Dbdd5198","0x865Cca53828C91663BFf0Ca9808827Bac552BAec")
null
> subbridge.deregisterToken("0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a", "0x23dab942822021bbd6d551ef51003208924877e4","0xA4b0c6e12346426a09FaD70dAE0651E6Dbdd5198","0x865Cca53828C91663BFf0Ca9808827Bac552BAec")
Error: invalid token pair
```

## subbridge\_convertRequestTxHashToHandleTxHash <a href="#subbridge_convertrequesttxhashtohandletxhash" id="subbridge_convertrequesttxhashtohandletxhash"></a>

The `subbridge_convertRequestTxHashToHandleTxHash` returns the corresponding "handle value transfer transaction" hash in the opposite chain for the given "request value transfer transaction" hash. "Request value transfer transaction" is a transaction initiated by a user, requesting a cross-chain value transfer. "Handle value transfer transaction" is the transaction created by the sub-bridge to handle the value transfer request from the user.

**Parameters**

| Name | Type         | Description                                     |
| ---- | ------------ | ----------------------------------------------- |
| Hash | 32-byte DATA | Hash of a "request value transfer" transaction. |

**Return Value**

| Name | Type         | Description                                                                                                                   |
| ---- | ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| Hash | 32-byte DATA | Hash of a "handle value transfer" transaction. zero hash means there is no corresponding "handle value transfer" transaction. |

**Example**

```javascript
> subbridge.convertRequestTxHashToHandleTxHash("0xae5604f8673098436ee4eaf1b453f1a395afccd6e8eb674c60edd63ebb047622")
"0x97493d1a91d65c149763209be6535efdacf8f1b50c99daa22abf06502010b2ee"
> subbridge.convertRequestTxHashToHandleTxHash("0xc585cfd1e7047b4faae69e62e77db192d8a339701b40d6ab4adb58453b934bec")
"0x0000000000000000000000000000000000000000000000000000000000000000"
```

## subbridge\_listBridge <a href="#subbridge_listbridge" id="subbridge_listbridge"></a>

The `subbridge_listBridge` returns the list of all bridge contract pairs that are registered (stored) in the sub-bridge.

**Parameters**

nonce

**Return Value**

| Name         | Type    | Description                                                              |
| ------------ | ------- | ------------------------------------------------------------------------ |
| localAddress | account | 20-byte DATA                                                             |
| localAddress | account | 20-byte DATA                                                             |
| subscribed   | bool    | `true` if the pair of bridge contracts is subscribed, `false` otherwise. |

**Example**

```javascript
> subbridge.listBridge
[{
    localAddress: "0x27caeba831d98b5fbb1d81ce0ed20801702f443a",
    remoteAddress: "0x22c41ae528627b790233d2e59ea520be12350eb5",
    subscribed: true
}, {
    localAddress: "0x376b72abe1b29cace831bd3f5acdfa967814c9cd",
    remoteAddress: "0x53160735f7cc6ff75e48619f368bb94daff66a1b",
    subscribed: false
}, {
    localAddress: "0x87d6b9c567e5b84cd00e03bfbe6d20d88209c33a",
    remoteAddress: "0x23dab942822021bbd6d551ef51003208924877e4",
    subscribed: false
}]
```

## subbridge\_getBridgeInformation <a href="#subbridge_getbridgeinformation" id="subbridge_getbridgeinformation"></a>

The `subbridge_getBridgeInformation` returns the information of the given bridge contract.

**Parameters**

| Name    | Type         | Description                  |
| ------- | ------------ | ---------------------------- |
| account | 20-byte DATA | Address of a bridge contract |

**Return Value**

| Name             | Type         | Description                                                                                                             |
| ---------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------- |
| counterPart      | 20-byte DATA | Address of the counterpart bridge contract. (Not supported yet)                                                         |
| isRunning        | bool         | `true` if the bridge contract is running, `false` otherwise.                                                            |
| isSubscribed     | bool         | `true` if the bridge contract is subscribed, `false` otherwise.                                                         |
| onServiceChain   | bool         | `true` if the bridge contact is on child (service) chain, `false` otherwise.                                            |
| pendingEventSize | QUANTITY     | Number of pending "request value transfer" events generated by the bridge contracts, not handled yet by the sub-bridge. |
| requestNonce     | QUANTITY     | Request nonce of the bridge contract.                                                                                   |
| handleNonce      | QUANTITY     | Upper handle nonce of the bridge contract.                                                                              |
| lowerHandleNonce | QUANTITY     | Lower handle nonce of the bridge contract.                                                                              |

**Example**

```javascript
> subbridge.getBridgeInformation("0x27caeba831d98b5fbb1d81ce0ed20801702f443a")
{
  counterPart: "0x0000000000000000000000000000000000000000",
  handleNonce: 0,
  lowerHandleNonce: 0,
  isRunning: true,
  isSubscribed: true,
  onServiceChain: true,
  pendingEventSize: 0,
  requestNonce: 0
}
```

## subbridge\_txPendingCount <a href="#subbridge_txpendingcount" id="subbridge_txpendingcount"></a>

The `subbridge_txPendingCount` returns the number of pending transactions in the bridge transaction pool.

**Parameters**

None

**Return Value**

| Type   | Description                                                        |
| ------ | ------------------------------------------------------------------ |
| Uint64 | The number of pending transactions in the bridge transaction pool. |

**Example**

```javascript
> subbridge.txPendingCount
2
```

## subbridge\_txPending <a href="#subbridge_txpending" id="subbridge_txpending"></a>

The `subbridge_txPending` returns the list of pending transactions in the bridge transaction pool.

**Parameters**

None

**Return Value**

| Type        | Description                                                  |
| ----------- | ------------------------------------------------------------ |
| JSON string | List of pending transactions in the bridge transaction pool. |

**Example**

```javascript
> subbridge.txPending
{
  0xa057995175b93ee0d1bdfa54f078ad0f0116130b: [{
      from: "0xa057995175b93ee0d1bdfa54f078ad0f0116130b",
      gas: "0x186a0",
      gasPrice: "0x5d21dba00",
      hash: "0x284c8f5bc82ef987c3a14fc8dac7933beb528777745987ff790014441f26ca03",
      input: "0xf8a9a063f41a6ec8e2f8074c30fccf11f2b8479e7ebd8a0e5aa0c171623bc1f3812e33a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0f845557d8dc2175974f29c2e9d12b1a57f634acaafdf56ae7033201a0796bedea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a09109530b191b47ca3d91012faba70fcf307f13b030f19d932cab38f2c1ece7b78304157c",
      nonce: "0x41589",
      signatures: [{...}],
      type: "TxTypeChainDataAnchoring",
      typeInt: 72
  }, {
      from: "0xa057995175b93ee0d1bdfa54f078ad0f0116130b",
      gas: "0x186a0",
      gasPrice: "0x5d21dba00",
      hash: "0x4dd093916a419608091da28b5d7ffc6e34d894ddaac96328f1904bfef93a4ad0",
      input: "0xf8a9a05b0dd6cc938916e37b17b602690399987b4e8540a14a494626d85e947f721a10a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a063f41a6ec8e2f8074c30fccf11f2b8479e7ebd8a0e5aa0c171623bc1f3812e33a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a09109530b191b47ca3d91012faba70fcf307f13b030f19d932cab38f2c1ece7b78304157d",
      nonce: "0x4158a",
      signatures: [{...}],
      type: "TxTypeChainDataAnchoring",
      typeInt: 72
  }]
}
```


---

# 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-docs.klaytn.foundation/content/dapp/json-rpc/servicechain/subbridge.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.
