Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrSizeByteSlice memory checking ErrSizeByteSlice = errors.New("byte slice size is inconsistant 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 inconsistant nonce between transfer and account ErrNonce = errors.New("incorrect nonce") )
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 [batchSize]AccountConstraints
ReceiverAccountsBefore [batchSize]AccountConstraints
PublicKeysSender [batchSize]eddsa.PublicKey
// list of accounts involved after update and their public keys
SenderAccountsAfter [batchSize]AccountConstraints
ReceiverAccountsAfter [batchSize]AccountConstraints
PublicKeysReceiver [batchSize]eddsa.PublicKey
// list of transactions
Transfers [batchSize]TransferConstraints
// list of proofs corresponding to sender account
MerkleProofsSenderBefore [batchSize][depth]frontend.Variable
MerkleProofsSenderAfter [batchSize][depth]frontend.Variable
MerkleProofHelperSenderBefore [batchSize][depth - 1]frontend.Variable
MerkleProofHelperSenderAfter [batchSize][depth - 1]frontend.Variable
// list of proofs corresponding to receiver account
MerkleProofsReceiverBefore [batchSize][depth]frontend.Variable
MerkleProofsReceiverAfter [batchSize][depth]frontend.Variable
MerkleProofHelperReceiverBefore [batchSize][depth - 1]frontend.Variable
MerkleProofHelperReceiverAfter [batchSize][depth - 1]frontend.Variable
// list of root hashes
RootHashesBefore [batchSize]frontend.Variable `gnark:",public"`
RootHashesAfter [batchSize]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.