org.ergoplatform.wallet.interpreter
ErgoProvingInterpreter
Companion object ErgoProvingInterpreter
class ErgoProvingInterpreter extends ErgoInterpreter with ProverInterpreter
A class which is holding secrets and signing transactions. Signing a transaction means producing spending proofs for all of the input boxes of the transaction.
This interpreter also acts as a wallet, in the sense that it is a vault holding user's secrets.
There are two basic types of secrets, hierarchical deterministic keys corresponding to BIP-32 implementation, and also "primitive" keys, such as just secret exponent for a Schnorr signature scheme done in Ergo.
It is considered that there could be very many hierarchical deterministic keys (for example, if we are talking about an exchange there could be thousands of them), and not so many primitive keys. Optimizations are centered around this assumption.
- Alphabetic
- By Inheritance
- ErgoProvingInterpreter
- ProverInterpreter
- AttributionCore
- AttributionCommon
- ErgoInterpreter
- ErgoLikeInterpreter
- Interpreter
- ScorexLogging
- StrictLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
ErgoProvingInterpreter(secretKeys: IndexedSeq[SecretKey], params: ErgoLikeParameters, cachedHdPubKeysOpt: Option[IndexedSeq[ExtendedPublicKey]] = None)(implicit IR: IRContext)
- secretKeys
- secrets used by the prover
- params
- ergo network parameters at the moment of proving
- cachedHdPubKeysOpt
- optionally, public keys corresponding to the BIP32-related secrets (to not to recompute them)
Type Members
-
type
CTX = ErgoLikeContext
- Definition Classes
- ErgoInterpreter → ErgoLikeInterpreter → Interpreter
-
class
CachedAttribute[T, U] extends Attribute[T, U]
- Definition Classes
- AttributionCore
-
class
CachedDynamicAttribute[T, U] extends CachedAttribute[T, U]
- Definition Classes
- AttributionCore
-
class
CachedParamAttribute[A, T, U] extends (A) ⇒ Attribute[T, U]
- Definition Classes
- AttributionCore
-
class
CircularAttribute[T, U] extends Attribute[T, U]
- Definition Classes
- AttributionCore
-
class
ConstantAttribute[T, U] extends Attribute[T, U]
- Definition Classes
- AttributionCommon
-
class
MutableCell[T] extends AnyRef
- Definition Classes
- Interpreter
-
type
ProofT = UncheckedTree
- Definition Classes
- ProverInterpreter → Interpreter
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
implicit
val
IR: IRContext
- Definition Classes
- ErgoLikeInterpreter → Interpreter
-
def
applyDeserializeContext(context: CTX, exp: Value[SType]): (BoolValue, CTX)
- Definition Classes
- Interpreter
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
macro
def
attr[T, U](f: (T) ⇒ U): CachedAttribute[T, U]
- Definition Classes
- AttributionCore
-
def
attrWithName[T, U](name: String, f: (T) ⇒ U): CachedAttribute[T, U]
- Definition Classes
- AttributionCore
- val cachedHdPubKeysOpt: Option[IndexedSeq[ExtendedPublicKey]]
-
def
calcResult(context: special.sigma.Context, calcF: sigmastate.eval.IRContext.Ref[(sigmastate.eval.IRContext.Context) ⇒ Any]): SigmaProp
- Definition Classes
- Interpreter
-
def
checkCost(context: CTX, exp: Value[SType], costF: sigmastate.eval.IRContext.Ref[((Int, sigmastate.eval.IRContext.Size[sigmastate.eval.IRContext.Context])) ⇒ Int]): Int
- Definition Classes
- Interpreter
-
def
checkExpiredBox(box: ErgoBox, output: ErgoBoxCandidate, currentHeight: ErgoLikeContext.Height): Boolean
Checks that expired box is spent in a proper way
Checks that expired box is spent in a proper way
- box
- box being spent
- output
- newly created box when storage fee covered, otherwise any output box
- currentHeight
- current height of the blockchain (at the moment of spending)
- returns
whether the box is spent properly according to the storage fee rule
- Attributes
- protected
- Definition Classes
- ErgoInterpreter
-
macro
def
circular[T, U](init: U)(f: (T) ⇒ U): CircularAttribute[T, U]
- Definition Classes
- AttributionCore
-
def
circularWithName[T, U](name: String, init: U)(f: (T) ⇒ U): CircularAttribute[T, U]
- Definition Classes
- AttributionCore
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
val
computeCommitments: Strategy
- Definition Classes
- Interpreter
-
def
constant[T, U](name: String, u: ⇒ U): Attribute[T, U]
- Definition Classes
- AttributionCommon
-
macro
def
constant[T, U](u: ⇒ U): Attribute[T, U]
- Definition Classes
- AttributionCommon
-
val
convertToUnchecked: (ProofTree) ⇒ UncheckedSigmaTree
- Definition Classes
- ProverInterpreter
-
def
convertToUnproven(sigmaTree: SigmaBoolean): UnprovenTree
- Definition Classes
- ProverInterpreter
-
def
deserializeMeasured(context: CTX, scriptBytes: Array[Byte]): (CTX, Value[SType])
- Definition Classes
- Interpreter
-
macro
def
dynAttr[T, U](f: (T) ⇒ U): CachedDynamicAttribute[T, U]
- Definition Classes
- AttributionCore
-
def
dynAttrWithName[T, U](name: String, f: (T) ⇒ U): CachedDynamicAttribute[T, U]
- Definition Classes
- AttributionCore
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
extractChallenge(pt: ProofTree): Option[Array[Byte]]
- Definition Classes
- ProverInterpreter
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
val
hdKeys: IndexedSeq[ExtendedSecretKey]
Only secrets corresponding to hierarchical deterministic scheme (BIP-32 impl)
-
val
hdPubKeys: IndexedSeq[ExtendedPublicKey]
Only public keys corresponding to hierarchical deterministic scheme (BIP-32 impl)
-
implicit
def
internalToDynamicAttribute[T, U](f: (T) ⇒ U): CachedDynamicAttribute[T, U]
- Definition Classes
- AttributionCore
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
log: Logger
- Attributes
- protected
- Definition Classes
- ScorexLogging
- Annotations
- @inline()
-
val
logger: Logger
- Attributes
- protected
- Definition Classes
- StrictLogging
-
val
markReal: Strategy
- Definition Classes
- ProverInterpreter
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
macro
def
paramAttr[V, T, U](f: (V) ⇒ (T) ⇒ U): CachedParamAttribute[V, T, U]
- Definition Classes
- AttributionCore
-
def
paramAttrWithName[V, T, U](name: String, f: (V) ⇒ (T) ⇒ U): CachedParamAttribute[V, T, U]
- Definition Classes
- AttributionCore
-
val
polishSimulated: Strategy
- Definition Classes
- ProverInterpreter
-
def
propositionFromErgoTree(tree: ErgoTree, ctx: CTX): SigmaPropValue
- Definition Classes
- Interpreter
-
def
prove(env: ScriptEnv, tree: ErgoTree, ctx: CTX, message: Array[Byte]): Try[CostedProverResult]
- Definition Classes
- ProverInterpreter
-
def
prove(exp: ErgoTree, context: CTX, message: Array[Byte]): Try[CostedProverResult]
- Definition Classes
- ProverInterpreter
-
def
prove(unprovenTree: UnprovenTree, message: Array[Byte]): ProofT
- Attributes
- protected
- Definition Classes
- ProverInterpreter
-
val
proving: Strategy
- Definition Classes
- ProverInterpreter
-
def
reduceToCrypto(context: CTX, exp: Value[SType]): Try[ReductionResult]
- Definition Classes
- Interpreter
-
def
reduceToCrypto(context: CTX, env: ScriptEnv, exp: Value[SType]): Try[ReductionResult]
- Definition Classes
- Interpreter
- val secretKeys: IndexedSeq[SecretKey]
-
val
secrets: IndexedSeq[SigmaProtocolPrivateInput[_, _]]
Interpreter's secrets, in form of sigma protocols private inputs
Interpreter's secrets, in form of sigma protocols private inputs
- Definition Classes
- ErgoProvingInterpreter → ProverInterpreter
-
def
sign(unsignedTx: UnsignedErgoLikeTransaction, boxesToSpend: IndexedSeq[ErgoBox], dataBoxes: IndexedSeq[ErgoBox], stateContext: ErgoLikeStateContext): Try[ErgoLikeTransaction]
- Note
requires
unsignedTxandboxesToSpendhave the same boxIds in the same order.
-
val
simulateAndCommit: Strategy
- Definition Classes
- ProverInterpreter
-
def
substDeserialize(context: CTX, updateContext: (CTX) ⇒ Unit, node: SValue): Option[SValue]
- Definition Classes
- ErgoLikeInterpreter → Interpreter
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
toValidScriptType(exp: SValue): BoolValue
- Definition Classes
- Interpreter
-
def
verify(env: ScriptEnv, exp: ErgoTree, context: CTX, proof: Array[Byte], message: Array[Byte]): Try[VerificationResult]
Checks that given exp evaluates to
true.Checks that given exp evaluates to
true.- env
- environment to use during expression evaluation
- exp
- expression to check
- context
- expression evaluation context
- proof
- cryptographic proof
- message
- message
- Definition Classes
- ErgoInterpreter → Interpreter
-
def
verify(exp: ErgoTree, context: CTX, proof: ErgoProvingInterpreter.ProofT, message: Array[Byte]): Try[VerificationResult]
- Definition Classes
- Interpreter
-
def
verify(env: ScriptEnv, exp: ErgoTree, context: CTX, proverResult: ProverResult, message: Array[Byte]): Try[VerificationResult]
- Definition Classes
- Interpreter
-
def
verify(exp: ErgoTree, context: CTX, proverResult: ProverResult, message: Array[Byte]): Try[VerificationResult]
- Definition Classes
- Interpreter
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
withNewExtendedSecret(secret: ExtendedSecretKey): (ErgoProvingInterpreter, ExtendedPublicKey)
Produces updated instance of ErgoProvingInterpreter with a new secret included
Produces updated instance of ErgoProvingInterpreter with a new secret included
- secret
- new secret to add
- returns
modified prover
-
def
withNewParameters(newParams: ErgoLikeParameters): ErgoProvingInterpreter
Produces updated instance of ErgoProvingInterpreter with updated parameters
Produces updated instance of ErgoProvingInterpreter with updated parameters
- newParams
- updated parameters
- returns
modified prover