NEAR

Transaction

Signs an unsigned transaction and broadcasts it to chain.

Field
Description
Type - Optional

kind

Transaction

String

transaction

The unsigned hex encoded transaction as shown below.

String

externalId

A unique ID from your system. It can be leveraged to be used as an idempotency key (read more here).

String (optional)

{
  "kind": "Transaction",
  "transaction": "0x400000006630346263396261376263363835643132636638373733316363343832306331333932303732336236613737333663663235623662633839386363646333613800f04bc9ba7bc685d12cf87731cc4820c13920723b6a7736cf25b6bc898ccdc3a805b83e62ccbb000040000000336532323130653131383462343562363463386134333463306137653762323363633034656137656237613663336333323532306430336434616663623861669ea4fc49d0e9e4d8536afa07c1d43dff89a5fc32189e27d1821b645e60dea58a01000000020b00000066745f7472616e736665725f0000007b22616d6f756e74223a2231222c2272656365697665725f6964223a2239623837663061373830323130396330333464373163643663633533653664613239313930666334336332333932366538386333383731316664643534373664227d00e057eb481b000001000000000000000000000000000000"
}

Typescript Example with NEAR JavaScript API

First install the NEAR JavaScript API. You can find the full documentation here: https://near.github.io/near-api-js

Here a code sample to broadcast a transaction via the Dfns TypeScript SDK:

import { KeyType, PublicKey } from '@near-js/crypto'
import { JsonRpcProvider } from '@near-js/providers'
import { actionCreators, createTransaction } from '@near-js/transactions'
import { baseDecode } from '@near-js/utils'

const walletId = 'wa-172um-hgi5f-xxxxxxxxxxxxxxxx'
const wallet = await dfnsClient.wallets.getWallet({ walletId })

const provider = new JsonRpcProvider({url: process.env.NEAR_NODE_URL!})

const publicKey = new PublicKey({
  keyType: KeyType.ED25519,
  data: Buffer.from(wallet.address!, 'hex'),
})
const accessKey = await provider.viewAccessKey(wallet.address!, publicKey)
    
const nonce = accessKey.nonce++
const recentBlockHash = baseDecode(accessKey.block_hash)
const transaction = createTransaction(
  address,
  publicKey,
  'f04bc9ba7bc685d12cf87731cc4820c13920723b6a7736cf25b6bc898ccdc3a8',
  nonce,
  [actionCreators.transfer(1n)],
  recentBlockHash
)

const res = await dfnsClient.wallets.broadcastTransaction({
  walletId,
  body: {
    kind: 'Transaction',
    transaction: `0x${Buffer.from(transaction.encode()).toString('hex')}`,
  },
})

Last updated