> For the complete documentation index, see [llms.txt](https://dev-docs.dcentwallet.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev-docs.dcentwallet.com/dcent-biometric-wallet-for-pc/dcent-web-connector/near-near-and-near-token.md).

# Near (NEAR & Near Token)

## Sign Transaction

The D'CENT Web SDK provides functions for signing transaction of coins.

### **getNearSignedTransaction()**

#### Supported Coin Type

* Near(NEAR)
* Near Token

#### Parameters&#x20;

* unsignedTx: unsigned hexadecimal tx [Near Docs](https://docs.near.org/ko/tools/near-api-js/reference/modules/transaction#signtransaction)
* path: key path, wallet sign with that private key with a given key path (BIP32 ex) "m/44'/397'/0'").
* fee: fee, It is fee that wallet displays on the screen.
* symbol: symbol, It is a symbol that the wallet displays on the screen.
* decimals: near or near token's decimals.
* optionParams: hexadecimal value of the token method type is used only in near token.
  * '02' : Function call(ft\_transfer)
  * '~~04' : Stake~~ (**The method will be supported later.)**
  * ~~'08' : Delegate~~ (**The method will be supported later)**

#### Requirements

* `D'CENT Bridge` version 1.5.1 or higher is required.
* D'CENT Biometric Wallet version 2.24.0 or higher is required.
  * near token: version 2.27.1 or higher is required.

#### Useage&#x20;

```javascript
const {connect, utils, providers} = require('near-api-js')
const nearTransaction = require('near-api-js/lib/transaction')
const nearSerialize = require('borsh')

const connectionConfig = {
  networkId: "mainnet",
  nodeUrl: "https://rpc.mainnet.near.org",
};
const nearConnection = await connect(connectionConfig);

let nonceOfAccessKey = await nearConnection.connection.provider.query({
    request_type: 'view_access_key_list',
    account_id: address,
    finality: 'final'
  })

const blockHash = await nearConnection.connection.provider.block({ finality: 'final' }).then(block => {
    const encodedBlockHash = block.header.hash
    return Buffer.from(bs58Lib.decode(encodedBlockHash))
  })
const nonce = ++nonceOfAccessKey;
const publicKey = utils.PublicKey.from(bs58Lib.encode(Buffer.from(address, 'hex')))
var actions = [nearTransaction.transfer(utils.parseNearAmount(BigNumber(amount).toString(10)).replace(',', ''))];

let transaction = new nearTransaction.SignedTransaction({
    transaction: {
      signerId: address,
      publicKey: publicKey,
      nonce: nonce,
      receiverId: toAddr,
      actions: actions,
      blockHash: blockHash 
    },
    signature: new nearTransaction.Signature({ 
      keyType: transaction.publicKey.keyType,
    })
  })
let unsignedTx = nearSerialize.serialize(nearTransaction.SCHEMA, transaction)

const transactionJson = {
    coinType: DcentWebConnector.coinType.NEAR,
    sigHash: unsignedTx.toString('hex'),
    path: `m/44'/397'/0'`,
    decimals, // 24
    fee, 
    symbol: 'NEAR',
    }

var result
try {
    result = await DcentWebConnector.getNearSignedTransaction(transactionJson);  
} catch (e) {
    console.log(e)
    result = e
}
```

#### Returned response object

```json
{
    "header": {
        "version": "1.0",
        "response_from": "near",
        "status": "success"
    },
    "body": {
        "command": "transaction",
        "parameter": {
            "signed_tx": "0x31aa13b5e04cb6fc6381ea0520bf7f6727ebdb6e96cd7ca8625bb3e3dd36cf0e2cee4ece13aa9f7ddc09ee10c74aa00af954201829d8016317f10f5a921dcc0d"
        }
    }
}
```
