confidential

package
v0.3.8-rc.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 30, 2022 License: MIT Imports: 13 Imported by: 7

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrPrivKeyMult         = errors.New("privKey mult error")
	ErrPrivKeyTweakAdd     = errors.New("privKey tweak add error")
	ErrPrivKeyNegate       = errors.New("privKey negate error")
	ErrInvalidValueBlinder = errors.New("invalid value blinder")
)
View Source
var (
	Zero = make([]byte, 32)
)

Functions

func AssetCommitment

func AssetCommitment(asset, factor []byte) ([]byte, error)

AssetCommitment method generates asset commitment

func CalculateScalarOffset added in v0.4.0

func CalculateScalarOffset(
	amount uint64, assetBlinder, valueBlinder []byte,
) ([]byte, error)

CalculateScalarOffset computes the scalar offset used for the final blinder computation value * asset_blinder + value_blinder

func ComputeAndAddToScalarOffset added in v0.4.0

func ComputeAndAddToScalarOffset(
	scalar []byte, value uint64, assetBlinder, valueBlinder []byte,
) ([]byte, error)

ComputeAndAddToScalarOffset computes a scalar offset and adds it to another existing one

func CreateBlindAssetProof added in v0.4.0

func CreateBlindAssetProof(
	asset, assetCommitment, assetBlinder []byte,
) ([]byte, error)

func CreateBlindValueProof added in v0.4.0

func CreateBlindValueProof(
	rng func() ([]byte, error),
	valueBlinder []byte, amount uint64, valueCommitment, assetCommitment []byte,
) ([]byte, error)

func FinalValueBlindingFactor

func FinalValueBlindingFactor(
	args FinalValueBlindingFactorArgs,
) ([32]byte, error)

FinalValueBlindingFactor method calculates the blinder as the sum of all previous blinders of a tx.

func NonceHash

func NonceHash(pubKey, privKey []byte) ([32]byte, error)

NonceHash method generates hashed secret based on ecdh.

func RangeProof

func RangeProof(args RangeProofArgs) ([]byte, error)

RangeProof method calculates range proof

func SubtractScalars added in v0.4.0

func SubtractScalars(a []byte, b []byte) ([]byte, error)

SubtractScalars subtract b from a in place

func SurjectionProof

func SurjectionProof(args SurjectionProofArgs) ([]byte, bool)

SurjectionProof method generates surjection proof

func ValueCommitment

func ValueCommitment(value uint64, generator, factor []byte) ([]byte, error)

ValueCommitment method generates value commitment

func VerifyBlindAssetProof added in v0.4.0

func VerifyBlindAssetProof(asset, assetCommitment, proof []byte) bool

func VerifyBlindValueProof added in v0.4.0

func VerifyBlindValueProof(
	value uint64, valueCommitment, assetCommitment, proof []byte,
) bool

func VerifySurjectionProof added in v0.0.4

func VerifySurjectionProof(args VerifySurjectionProofArgs) bool

VerifySurjectionProof method verifies the validity of a surjection proof

Types

type BlinderHandler

type BlinderHandler struct {
	// contains filtered or unexported fields
}

func NewBlinderHandlerFromBlindingKeys

func NewBlinderHandlerFromBlindingKeys(
	inBlindingKeys [][]byte, opts *BlinderHandlerOpts,
) *BlinderHandler

func NewBlinderHandlerFromMasterBlindingKey

func NewBlinderHandlerFromMasterBlindingKey(
	masterBlindingKey []byte, opts *BlinderHandlerOpts,
) (*BlinderHandler, error)

func NewBlinderHandlerFromOwnedInputs

func NewBlinderHandlerFromOwnedInputs(
	ownedInputs map[uint32]psetv2.OwnedInput, opts *BlinderHandlerOpts,
) (*BlinderHandler, error)

func (*BlinderHandler) BlindIssuances

func (h *BlinderHandler) BlindIssuances(
	p *psetv2.Pset, blindingKeysByIndex map[uint32][]byte,
) ([]psetv2.InputIssuanceBlindingArgs, error)

func (*BlinderHandler) BlindOutputs

func (h *BlinderHandler) BlindOutputs(
	p *psetv2.Pset, outputIndexes []uint32,
	inIssuances []psetv2.InputIssuanceBlindingArgs,
) ([]psetv2.OutputBlindingArgs, error)

func (*BlinderHandler) ComputeAndAddToScalarOffset

func (h *BlinderHandler) ComputeAndAddToScalarOffset(
	scalar []byte, value uint64, assetBlinder, valueBlinder []byte,
) ([]byte, error)

func (*BlinderHandler) LastBlindValueProof

func (h *BlinderHandler) LastBlindValueProof(
	value uint64, valueCommitment, assetCommitment, blinder []byte,
) ([]byte, error)

func (*BlinderHandler) LastValueCommitment

func (h *BlinderHandler) LastValueCommitment(
	value uint64, asset, blinder []byte,
) ([]byte, error)

func (*BlinderHandler) LastValueRangeProof

func (h *BlinderHandler) LastValueRangeProof(
	value uint64, asset, assetBlinder, valueCommitment, valueBlinder,
	scriptPubkey, nonce []byte,
) ([]byte, error)

func (*BlinderHandler) SubtractScalars

func (h *BlinderHandler) SubtractScalars(a, b []byte) ([]byte, error)

func (*BlinderHandler) UnblindInputs

func (h *BlinderHandler) UnblindInputs(
	p *psetv2.Pset, inputIndexes []uint32,
) ([]psetv2.OwnedInput, error)

func (*BlinderHandler) VerifyBlindAssetProof

func (h *BlinderHandler) VerifyBlindAssetProof(
	asset, assetCommitment, proof []byte,
) bool

func (*BlinderHandler) VerifyBlindValueProof

func (h *BlinderHandler) VerifyBlindValueProof(
	value uint64, valueCommitment, assetCommitment, proof []byte,
) bool

type BlinderHandlerOpts

type BlinderHandlerOpts struct {
	Rng RandomNumberGenerator
}

type FinalValueBlindingFactorArgs added in v0.0.4

type FinalValueBlindingFactorArgs struct {
	InValues      []uint64
	OutValues     []uint64
	InGenerators  [][]byte
	OutGenerators [][]byte
	InFactors     [][]byte
	OutFactors    [][]byte
}

FinalValueBlindingFactorArgs is the type provided to the function that calculates the blinder of the last output of a tx.

type RandomNumberGenerator added in v0.4.0

type RandomNumberGenerator func() ([]byte, error)

type RangeProofArgs added in v0.0.4

type RangeProofArgs struct {
	Value               uint64
	Nonce               [32]byte
	Asset               []byte
	AssetBlindingFactor []byte
	ValueBlindFactor    [32]byte
	ValueCommit         []byte
	ScriptPubkey        []byte
	MinValue            uint64
	Exp                 int
	MinBits             int
}

type SurjectionProofArgs added in v0.0.4

type SurjectionProofArgs struct {
	OutputAsset               []byte
	OutputAssetBlindingFactor []byte
	InputAssets               [][]byte
	InputAssetBlindingFactors [][]byte
	Seed                      []byte
	NumberOfTargets           int
}

type UnblindIssuanceResult added in v0.0.4

type UnblindIssuanceResult struct {
	Asset *UnblindOutputResult
	Token *UnblindOutputResult
}

func UnblindIssuance added in v0.0.4

func UnblindIssuance(
	in *transaction.TxInput, blindKeys [][]byte,
) (*UnblindIssuanceResult, error)

type UnblindOutputResult

type UnblindOutputResult struct {
	Value               uint64
	Asset               []byte
	ValueBlindingFactor []byte
	AssetBlindingFactor []byte
}

UnblindOutputResult is the type returned by the functions that unblind tx outs. It contains the unblinded asset and value and also the respective blinding factors.

func UnblindOutputWithKey added in v0.0.4

func UnblindOutputWithKey(
	out *transaction.TxOutput, blindKey []byte,
) (*UnblindOutputResult, error)

UnblindOutputWithKey method unblinds a confidential transaction output with the given blinding private key.

func UnblindOutputWithNonce added in v0.0.4

func UnblindOutputWithNonce(
	out *transaction.TxOutput, nonce []byte,
) (*UnblindOutputResult, error)

UnblindOutputWithNonce method unblinds a confidential transaction output with the given ecdh nonce calculated for example with the above NonceHash func.

type VerifySurjectionProofArgs added in v0.0.4

type VerifySurjectionProofArgs struct {
	InputAssets               [][]byte
	InputAssetBlindingFactors [][]byte
	OutputAsset               []byte
	OutputAssetBlindingFactor []byte
	Proof                     []byte
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL