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.