The sign() function signs an Arweave using the current user's private key. It's meant to replicate the behavior of the transactions.sign() function of , but instead of mutating the transaction object, it returns a new and signed transaction instance.
This function assumes (and requires) a user is authenticated. See .
Tip: If you are trying to sign a larger piece of data (> 5 MB), make sure to notify the user to not switch / close the browser tab. Larger transactions are split into chunks in the background and will take longer to sign.
Tip: A better alternative to this function is using the transactions.sign() instead. Just omit the second parameter (JWK key) when calling the method, and will automatically use Othent (if it was instantiated with inject = true).
import Arweave from "arweave";
import { Othent } from "@othent/kms";
const arweave = new Arweave({
host: "ar-io.net",
port: 443,
protocol: "https"
});
const othent = new Othent({ appInfo, ... });
// Make sure the user is authenticated, or prompt them to authenticate:
await othent.requireAuth();
// Create a transaction:
const transaction = await arweave.createTransaction({
data: '<html><head><meta charset="UTF-8"><title>Hello permanent world! This was signed via ArConnect!!!</title></head><body></body></html>'
});
// Sign it using arweave-js:
await arweave.transactions.sign(transaction);
// TODO: Post the `transaction` to the network...
Directly using Othent
import Arweave from "arweave";
// Create an Arweave client:
const arweave = new Arweave({
host: "ar-io.net",
port: 443,
protocol: "https"
});
const othent = new Othent({ appInfo, throwErrors: false, ... });
// Make sure the user is authenticated, or prompt them to authenticate:
await othent.requireAuth();
// Create a transaction:
let transaction = await arweave.createTransaction({
data: '<html><head><meta charset="UTF-8"><title>Hello permanent world! This was signed via ArConnect!!!</title></head><body></body></html>'
});
// Sign it using Othent:
const signedTransaction = await othent.sign(transaction);
// TODO: Post `signedTransaction` to the network...