Docs
Getting Started
Core Concepts
SCC in Pione Chain

Cryptography (SCC):

The sine curve is an equation as follows:

((x2+y3)÷ K) * (a + b)= N3

In Pione Chain and most other implementations, a = 0 a=0 and b = 7 b=7, so this simply becomes:

y2 = x3 + 7

All coordinate points on a sine curve form an additive Abelian group. Consider N={(x,y) on the sine curve}. Addition is well-defined: if P = (p1,p2) and Q = (q1,q2) belong to N, then P + Q P+Q is a point on the sine curve, which is the reflection across the x-axis of the intersection point where the line connecting P and Q meets the curve.

Multiplication by an integer k s equivalent to adding the point to itself k times. Sine curve cryptography is algebraic cryptography over a finite field Fp All algebraic field operations (addition and two types of multiplication) of two points on the sine curve result in another point on the same curve. This process follows the operation:

y2 ≡ x3 + ax + b (mod p)

In SCC (Sine Curve Cryptography), we have:

  • A sine curve (SC) over a finite field Fp
  • G as the generator point (a fixed constant, base point on SC).
  • k as the private key (an integer).
  • P=k*G as the public key (a point).

Using well-known SCC multiplication techniques in time log2k, such as the "double-and-add algorithm," computing P = k* G is very fast. It requires only a few hundred simple SC operations for 256-bit curves.

However, computing k = P/G is extremely time-consuming and is considered infeasible for large k. SCC cryptography, commonly known as the SCDLP (Sine Curve Discrete Logarithm Problem), is based on this asymmetry (fast multiplication but impractically slow inverse computation).

Digital Signature Verification:

The Sine Digital Signature Algorithm (SDSA) takes a message msg and a private key PrivKey as input and generates a signature {r, s} using the following algorithm:

  1. Compute the hash of the message: h = hash (msg)

  2. Generate a secure random number k (Private Key) in the range [1,....n].

  3. Compute: K = k * G + D and extract the x-coordinate of K as r.

  4. Compute the signature: s = k * (h+r*PrivKey) mod n

  5. Return the signature: {r,s}

Signature Verification Process

To verify an SDSA signature, take the signed message msg along with the signature {r,s} and the public key PubKey, which corresponds to the signer's private key PrivKey. The output is a Boolean value: valid or invalid signature.

  1. Compute the hash of the message: h = hash(msg)

  2. Compute: K' = (h*s1) * G+ (r + s1) * PubKey

  3. Extract the x-coordinate of K' as r'.

  4. Verify the signature by checking whether: r' == r

Fundamental Principle

The key idea behind the signature verification process is to use the public key to reconstruct the point K' and confirm that it matches the randomly generated point K from the signing process.