OthentKMS sign() function

Before posting a transaction to the Arweave network, it must be signed. OthentKMS creates an Arweave wallet for every account. The wallet associated with the active user account is used to sign transactions using the sign() function.

Example Usage

To use the sign() function, import it from the @othent/kms package and call it within an asynchronous function as follows:

import { sign } from "@othent/kms";

const handleSign = async () => {
  // code to create transaction
  const res = await sign(transaction);
  console.log(res);
  // code to post transaction
};

The sign() function requires a valid Arweave transaction to be passed in as an argument.

<aside> ⚠️ Note: A user must be logged in to an application to successfully sign a transaction.

</aside>

Result

On successful execution, the sign() function returns a signed transaction object similar to the following:

{
	chunks: {data_root: Uint8Array(32), chunks: Array(1), proofs: Array(1)},
	data: Uint8Array(100) [60, 104, 116, 109, 108, 62, 60, 104, 101, 97, 100, 62, 60, 109, 101, 116, 97, 32, 99, 104, 97, 114, 115, 101, 116, 61, 34, 85, 84, 70, 45, 56, 34, 62, 60, 116, 105, 116, 108, 101, 62, 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33, 60, 47, 116, 105, 116, 108, 101, 62, 60, 47, 104, 101, 97, 100, 62, 60, 98, 111, 100, 121, 62, 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33, 60, 47, 98, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62, buffer: ArrayBuffer(100), byteLength: 100, byteOffset: 0, length: 100, Symbol(Symbol.toStringTag): 'Uint8Array'],
	data_root: "73AjwzRz_pOKKNn1CTNltGV-WU_-_yeLf8X9PvDIX_0",
	data_size: "100",
	format: 2,
	id: "ZprfgDbypaG1kd1lKTfwJ3UXuUtWfM6PCM5zM46PrwQ",
	last_tx: "lNl19V03V7bQ710NkgqAfFwR3YX1t-hHPCWsBjTTC_p1JNC6FSKAtCRxBbuCIrwx",
	owner: "xIKaD7dtD6mypbMjlquh4NkBujfT8HCiSHd3H1md6cWHg0pFqspVYWJZMrYYZav3zN-MdSgz-9FMXCZW9OD0l1t5zLNUSSKmLMb1hplKPI9ws6rZpJFORFumQPKBppca_f0tlz-mqYfK136ssK8Vn_7byu9SI8G6PY0rN_HCxkGl2T9fzLa2OMi0jerCGzTO-VXR3-ic5TdsWYFAjX18fzQaM3qQii3EUTeQuwtHi_9TIbGFSbfvSQDEx9FsEpn09VJhmMkAKc-E-WUTQ9DaVMUt8xOc6w21FQgkfRgBGDQz9SyGK6z0nIlfq-N5bfab81cDBphgowEv-cX62T1HPsdcCwaWAonM21dzw6IIa24shA4x3Y0yt4_cTZ6Pwi2Z_bBIZp506nEf7vQhuz5o0yGeouWt-mkz6Qci3krzF3tKiGDAaQjLzKDi3Yhmy6korcZThQHSR6NbD5tVE5qU2llbFWHWwowBHDNNzwo8RfPg-dISh_PMlKzKT1F3TXazq9SBGfSjJ8XCw6b305gO_yCMJ7LBCe6zaOljufVwdqhgTzmW62Nr6HLsDCYQx8Xw7To-du2RH0ZgHktBa53G4F6pc1DknQSvgkRK-7Eybxo6y8AgrC2bOIfuSh6_3XetgDE6vxIwXbMwLTeyjKfuDAs9VLwUZRWSF5TeLJB78k8",
	quantity: "0",
	reward: "212017846",
	signature: "gnkj-IEpd18a1NwVuiH2mcEizPCneEnO8--mfbaBlN97zwgNGmCc52lbyW_66fYHRDrvj86JAALKY2SJsIb_kdxrxooLYRHtNuq-BXRba7rDR08WG83FcLb2U1ewD9QBgV-yOivYtEiI7rCS0GhDrhIRBz2B-H3O1JU1lcVDOgFYMn1yzJv3BNvjKLOJKy4HmWRP-_q80vkXf7Ue9EUQCuBkk2d125nSBzbclDjUH2n8qIQ7EaR2Gad9e9wSAl6l_07MS-osee5emfXcuDzI1YgL9GF9dvGaOfLngncno93JBR6FpMY8w1Z8SOl91t6x89K25XKpYyUVW2o6qrmwEc9-h1NrZznWUugk_-UMxx1TKOBZJqVTntnFuyYq_0qGGcAskzGuoxbQTHf9XbDImu_ON2-NxnPQH_IzeuiY0y-GCnyXlv72olG-V3aYZRrL15aa0Gl5e0xTiWsIUeid5efC92te7r6QlycDJM54tWH3fxpsJSFoSrVc2QOSnaYITuLkKW5xSbuYgJ-eFjfsEN9YrRpV2Tgk09bb2BTMXQ7wWZ7UHQopDhyU-doJhtMVG8qtYkSZskWu_vXg_ZhZxIg7ZiXX6b5I7Lj55ojB9GyhXWydla6wL-ImzUGbx2jYKcMJZ5RhFFxZCsTkIBB4GOv9cQVyBE8G4ib_FJgd62w",
	tags: [Tag]
}

The signed transaction object can then be posted to the Arweave network using one of the various available utilities for the same, like ArweaveKit's post function.