Documentation ¶
Index ¶
Constants ¶
View Source
const (
BatchSizeCircuit = 1 // nbTranfers to batch in a proof
)
Variables ¶
View Source
var ( // ErrSizeByteSlice memory checking ErrSizeByteSlice = errors.New("byte slice size is inconsistent with Account size") // ErrNonExistingAccount account not in the database ErrNonExistingAccount = errors.New("the account is not in the rollup database") // ErrWrongSignature wrong signature ErrWrongSignature = errors.New("invalid signature") // ErrAmountTooHigh the amount is bigger than the balance ErrAmountTooHigh = errors.New("amount is bigger than balance") // ErrNonce inconsistent nonce between transfer and account ErrNonce = errors.New("incorrect nonce") // ErrIndexConsistency the map publicKey(string) -> index(int) gives access to the account position. // Account has a field index, that should match position. ErrIndexConsistency = errors.New("account's position should match account's index") )
View Source
var BatchSize = 10
BatchSize size of a batch of transactions to put in a snark
View Source
var ( // SizeAccount byte size of a serialized account (5*32bytes) // index ∥ nonce ∥ balance ∥ pubkeyX ∥ pubkeyY, each chunk is 32 bytes SizeAccount = 160 )
Functions ¶
func Deserialize ¶
Deserialize deserializes a stream of byte in an account
Types ¶
type Account ¶
type Account struct {
// contains filtered or unexported fields
}
Account describes a rollup account
type AccountConstraints ¶
type AccountConstraints struct { Index frontend.Variable // index in the tree Nonce frontend.Variable // nb transactions done so far from this account Balance frontend.Variable PubKey eddsa.PublicKey `gnark:"-"` }
AccountConstraints accounts encoded as constraints
type Circuit ¶
type Circuit struct { // list of accounts involved before update and their public keys SenderAccountsBefore [BatchSizeCircuit]AccountConstraints ReceiverAccountsBefore [BatchSizeCircuit]AccountConstraints PublicKeysSender [BatchSizeCircuit]eddsa.PublicKey // list of accounts involved after update and their public keys SenderAccountsAfter [BatchSizeCircuit]AccountConstraints ReceiverAccountsAfter [BatchSizeCircuit]AccountConstraints PublicKeysReceiver [BatchSizeCircuit]eddsa.PublicKey // list of transactions Transfers [BatchSizeCircuit]TransferConstraints // list of proofs corresponding to sender and receiver accounts MerkleProofReceiverBefore [BatchSizeCircuit]merkle.MerkleProof MerkleProofReceiverAfter [BatchSizeCircuit]merkle.MerkleProof MerkleProofSenderBefore [BatchSizeCircuit]merkle.MerkleProof MerkleProofSenderAfter [BatchSizeCircuit]merkle.MerkleProof LeafReceiver [BatchSizeCircuit]frontend.Variable LeafSender [BatchSizeCircuit]frontend.Variable // list of root hashes RootHashesBefore [BatchSizeCircuit]frontend.Variable `gnark:",public"` RootHashesAfter [BatchSizeCircuit]frontend.Variable `gnark:",public"` }
Circuit "toy" rollup circuit where an operator can generate a proof that he processed some transactions
type Operator ¶
type Operator struct { State []byte // list of accounts: index ∥ nonce ∥ balance ∥ pubkeyX ∥ pubkeyY, each chunk is 256 bits HashState []byte // Hashed version of the state, each chunk is 256bits: ... ∥ H(index ∥ nonce ∥ balance ∥ pubkeyX ∥ pubkeyY)) ∥ ... AccountMap map[string]uint64 // hashmap of all available accounts (the key is the account.pubkey.X), the value is the index of the account in the state // contains filtered or unexported fields }
Operator represents a rollup operator
func NewOperator ¶
NewOperator creates a new operator. nbAccounts is the number of accounts managed by this operator, h is the hash function for the merkle proofs
type Queue ¶
type Queue struct {
// contains filtered or unexported fields
}
Queue queue for storing the transfers (fixed size queue)
Click to show internal directories.
Click to hide internal directories.