# Class BSV::Primitives::Schnorr::Proof <a id="class-BSV-Primitives-Schnorr-Proof"></a>

**Inherits:** `Object`

A Schnorr zero-knowledge proof consisting of a commitment point, blinded
shared secret, and response scalar.

## Attributes
### `r` [R] <a id="attribute-i-r"></a> <a id="r-instance_method"></a>
- **@return** [PublicKey] the commitment point R

### `s_prime` [R] <a id="attribute-i-s_prime"></a> <a id="s_prime-instance_method"></a>
- **@return** [PublicKey] the blinded shared secret S'

### `z` [R] <a id="attribute-i-z"></a> <a id="z-instance_method"></a>
- **@return** [OpenSSL::BN] the response scalar z

## Public Class Methods
### `from_binary(data)` <a id="method-c-from_binary"></a> <a id="from_binary-class_method"></a>
Deserialise a proof from its binary representation.

The format is: R (33 bytes) + S' (33 bytes) + z (remaining bytes). The z
scalar is variable-length to accommodate both the Ruby SDK's fixed 32-byte
encoding and the TS SDK's minimal encoding (which omits leading zero bytes).
See issue #203.
- **@param** `data` [String] binary proof data (>= 67 bytes)
- **@raise** [ArgumentError] if data is too short
- **@return** [Proof]

## Public Instance Methods
### `initialize(r, s_prime, z)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
- **@param** `r` [PublicKey] commitment point
- **@param** `s_prime` [PublicKey] blinded shared secret
- **@param** `z` [OpenSSL::BN] response scalar
- **@return** [Proof] a new instance of Proof
