Get desktop application:
View/edit binary Protocol Buffers messages
IES scheme used for transaction input encryption. Non-zero values match the discriminants of [miden_protocol::crypto::ies::IesScheme]. New schemes are added here as the node starts supporting them.
Used in: ,
Represents a commitment to an input note of a transaction. For authenticated notes, only the nullifier is present. For unauthenticated notes, the note header is also included.
Used in:
The nullifier of the input note.
The note header, present only for unauthenticated input notes.
The next transaction encryption key, announced ahead of a scheduled key rotation.
Used in:
IES scheme the next encryption key belongs to.
Opaque identifier of the next encryption key.
Raw public key bytes of the next encryption key, in the same encoding as `TransactionEncryptionKey.public_key`.
Block number at which the next key replaces the current one.
A proven transaction. Note that we currently require full transaction transparency for the validator set. This is a temporary measure while Miden stabilizes its protocol and proof systems. To this end, a transaction submission includes its **private** inputs, which a validator uses to verify that the transaction execution and proofs are correct. Those inputs are sealed against the validator set's shared transaction encryption key, so the nodes that relay a submission cannot read them: only a validator can. Submissions carrying unsealed inputs are rejected. This requirement will be lifted as Miden matures.
Used as request type in: rpc.Api.SubmitProvenTx, validator.Api.SubmitProvenTransaction
The transaction proof. Encoded using [miden_protocol::transaction::ProvenTransaction::to_bytes].
The sealed private inputs used for the transaction proof. Transactions missing this field will be rejected as per the message description.
Transaction inputs sealed against the validator set's shared transaction encryption key. Obtain the key with `GetTransactionEncryptionKey` before submitting.
Used in: ,
Opaque identifier of the encryption key the inputs were sealed against, copied from [TransactionEncryptionKey.key_id].
The transaction inputs sealed with [miden_protocol::crypto::ies::SealingKey], encoded using the [miden_protocol::crypto::utils::Serializable] implementation for [miden_protocol::crypto::ies::SealedMessage].
A proven batch of transactions. Note that we currently require full transaction transparency for the validator set. This is a temporary measure while Miden stabilizes its protocol and proof systems. To this end, each transaction includes its **private** inputs, which a validator uses to verify that the transaction execution and proofs are correct. Those inputs are sealed against the validator set's shared transaction encryption key, so the nodes that relay a submission cannot read them: only a validator can. Batches carrying unsealed inputs are rejected. This requirement will be lifted as Miden matures. In addition, in order to verify the batch itself, we also require the proposed batch.
Used as request type in: rpc.Api.SubmitProvenTxBatch
The batch proof. Encoded using [miden_protocol::batch::ProvenBatch::to_bytes].
The batch contents of the given proof. Encoded using [miden_protocol::batch::ProposedBatch::to_bytes]. Batches missing this field will be rejected as per the message description.
The sealed transaction inputs for each transaction in the batch. Must match the transaction ordering in the batch. Each entry is sealed independently against its own transaction's id, because the batch is fanned out into one validator submission per transaction. Batch will be rejected if any transaction's input is missing as per the method description.
The shared transaction encryption key, attested by validators. The public key is shared across the whole validator set, while each attesting signature is specific to one validator. Verifying an attestation against a chain-recognized validator signing key proves the encryption key was vouched for by a legitimate validator.
Used as response type in: rpc.Api.GetTransactionEncryptionKey, validator.Api.GetTransactionEncryptionKey
IES scheme the encryption key belongs to. Currently always `IES_SCHEME_X25519_XCHACHA20_POLY1305`.
Opaque identifier of the current encryption key. Changes when the key rotates.
Raw public key bytes of the shared encryption key. For the X25519 scheme these are the 32 bytes produced by [miden_protocol::crypto::dsa::eddsa_25519_sha512::PublicKey::to_bytes] (an Ed25519 public key that miden-crypto converts internally for X25519 key agreement).
Validator attestations of this key (and of `next_key` when set). Currently contains a single attestation from the validator that served the request. Collecting attestations from the whole validator set requires validator intercommunication and is planned as a follow-up; the wire format already accommodates it.
Set when a key rotation is scheduled: the key that replaces the current one, and the block number at which it takes effect. Covered by the attestation commitment, so it cannot be stripped or altered without invalidating the signatures. Never set currently; key rotation is not implemented yet.
Represents a transaction header.
Used in:
The unique identifier of the transaction.
ID of the account against which the transaction was executed.
State commitment of the account before the transaction was executed.
State commitment of the account after the transaction was executed.
Input notes of the transaction.
Output notes of the transaction.
Represents a transaction ID.
Used in: ,
The transaction ID.
Represents a transaction summary.
A unique 32-byte identifier of a transaction.
The block number in which the transaction was executed.
The ID of the account affected by the transaction.
A single validator's attestation of the transaction encryption key.
Used in:
Public key of the attesting validator, encoded using the [miden_serde_utils::Serializable] implementation for [miden_protocol::crypto::dsa::ecdsa_k256_keccak::PublicKey]. Must match a validator signing key committed in block headers to be trusted.
The validator's signature over the attestation commitment: the Poseidon2 byte-mode hash of `domain_tag || scheme || len(key_id) || key_id || genesis_commitment || len(public_key) || public_key || next_key_transcript`, where `domain_tag` is the ASCII string `MIDEN_TX_ENCRYPTION_KEY_ATTESTATION_V1`, the scheme, the rotation block number, and the length prefixes are encoded as 4 bytes little-endian, and the genesis block commitment ties the attestation to one network. `next_key_transcript` is empty when no rotation is scheduled, or the next key's `scheme || len(key_id) || key_id || len(public_key) || public_key || rotation_block_num` otherwise, binding any scheduled rotation to the signature. The canonical construction is `miden_node_proto::domain::encryption`.