LTO Network documentation

Searchâ€¦

Latest version

Powered By GitBook

Cryptography

LTO Network uses

`SHA256`

to create cryptographic hashes. The `BLAKE2b`

and `SHA256`

hashing algorithms are used for creating public/secret key pairs.The

`ED25519`

scheme is applied to create and verify signatures. `X25519`

with `Salsa20`

+ `Poly1305`

is used for asymmetric encryption.`Base58`

is used to create a string from an array of bytes.If you want to create an application, you should find the implementation of these algorithms in your programming language.

Encoding

Base58

Arrays of bytes (like strings and hashes) in the project are encoded by Base58 algorithm with Bitcoin alphabet.

When encoding a hash, use the raw bytes and not the hexadecimal notation.

The string

`hello world`

is encoded as `StV1DL6CwTryKyV`

.SHA256 hash

`e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`

is encoded as`GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn`

Hashing

SHA256

In general Live Contracts uses the 256-bit version of SHA-2 for encoding. SHA-2 is one of the most common hashing algorithms which means it's available for almost all platforms and programming languages.

BLAKE2b + SHA256

When secure hashes are required, a combination of BLAKE2b and SHA256 are used.

BLAKE2b is supported by NaCl compatible libraries like libsodium as 'Generic hashing'. It's widely supported across platforms and languages.

Signing

The default method for signing is using ED25519. This is an EdDSA algorithm on curve25519. It is designed to be faster than existing digital signature schemes without sacrificing security.

ED25519 is well supported on across many platforms and languages.

There are many valid (not unique!) signatures for one message when using ED25519. Also, you should not rely on any information before the hash and/or signature are checked.

secp256k1

Bitcoin, Ethereum, and many other blockchains use ECDSA with the secp256k1 curve for signing transactions. Outside of the realm of blockchain, this curve is barely used and not well supported.

NIST P-256

The most commonly used and well-supported Elliptic Curve is NIST P-256. This is an ECDSA method using the secp256p1 curve.

RSA

RSA is a cryptographic algorithm that relies on the practical difficulty of factoring the product of two large prime numbers.

Encryption

X25519

There are 3 algorithms involved for asymmetric encryption:

Key exchange: X25519

Encryption: XSalsa20 stream cipher

Authentication: Poly1305 MAC

This is a public key encryption schema, where the public key is used to encrypt data and the private key is used to decrypt data.

Last modified 4mo ago