Ed25519 cryptography library for the Tana blockchain ecosystem.
tana-crypto provides consistent cryptographic operations across all Tana services. it handles signature verification, key formatting, and message canonicalization to ensure signatures generated by any Tana component can be verified by any other.
the library wraps @noble/ed25519 with Tana-specific conventions. it handles the ed25519_ prefix for public keys and ed25519_sig_ prefix for signatures, ensuring consistent formatting regardless of how keys and signatures are stored or transmitted.
const result = await verifySignature(
message,
signature, // with or without ed25519_sig_ prefix
publicKey // with or without ed25519_ prefix
)
if (result.valid) {
// signature matches
}
for transactions and authentication, the library provides functions that create deterministic message formats:
const result = await verifyTransactionSignature(
transaction,
signature,
publicKey
)
transaction fields are ordered consistently before hashing, ensuring the same transaction always produces the same signature regardless of JSON key ordering.
written in TypeScript with full type definitions. the library exports functions for:
verification results include detailed error information:
{
valid: false,
error: "invalid signature length",
details: {
expected: 64,
received: 32
}
}
enable debug logging for troubleshooting signature issues:
await verifySignature(message, sig, key, {
debug: true,
label: "user-registration"
})
tana-crypto is used by tana-ledger for transaction verification, tana-identity for authentication signatures, and tana-mobile for message signing. all services share this single source of truth for cryptographic operations.
Ed25519 cryptography library for the Tana blockchain ecosystem.
tana-crypto provides consistent cryptographic operations across all Tana services. it handles signature verification, key formatting, and message canonicalization to ensure signatures generated by any Tana component can be verified by any other.
the library wraps @noble/ed25519 with Tana-specific conventions. it handles the ed25519_ prefix for public keys and ed25519_sig_ prefix for signatures, ensuring consistent formatting regardless of how keys and signatures are stored or transmitted.
const result = await verifySignature(
message,
signature, // with or without ed25519_sig_ prefix
publicKey // with or without ed25519_ prefix
)
if (result.valid) {
// signature matches
}
for transactions and authentication, the library provides functions that create deterministic message formats:
const result = await verifyTransactionSignature(
transaction,
signature,
publicKey
)
transaction fields are ordered consistently before hashing, ensuring the same transaction always produces the same signature regardless of JSON key ordering.
written in TypeScript with full type definitions. the library exports functions for:
verification results include detailed error information:
{
valid: false,
error: "invalid signature length",
details: {
expected: 64,
received: 32
}
}
enable debug logging for troubleshooting signature issues:
await verifySignature(message, sig, key, {
debug: true,
label: "user-registration"
})
tana-crypto is used by tana-ledger for transaction verification, tana-identity for authentication signatures, and tana-mobile for message signing. all services share this single source of truth for cryptographic operations.