Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var BadTxFormatTestCases = []struct { Tx *protoblocktx.Tx ExpectedStatus protoblocktx.Status }{ { Tx: &protoblocktx.Tx{ Id: "", }, ExpectedStatus: protoblocktx.Status_ABORTED_MISSING_TXID, }, { Tx: &protoblocktx.Tx{ Id: "empty namespaces", }, ExpectedStatus: protoblocktx.Status_ABORTED_EMPTY_NAMESPACES, }, { Tx: &protoblocktx.Tx{ Id: "invalid signature", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{{Key: []byte("1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_SIGNATURE_INVALID, }, { Tx: &protoblocktx.Tx{ Id: "namespace id is invalid in tx", Namespaces: []*protoblocktx.TxNamespace{ { NsId: "//", }, }, Signatures: [][]byte{ []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_NAMESPACE_ID_INVALID, }, { Tx: &protoblocktx.Tx{ Id: "missing namespace version", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, }, }, Signatures: [][]byte{ []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_MISSING_NAMESPACE_VERSION, }, { Tx: &protoblocktx.Tx{ Id: "no writes", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadsOnly: []*protoblocktx.Read{ { Key: []byte("k1"), }, }, }, }, Signatures: [][]byte{ []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_NO_WRITES, }, { Tx: &protoblocktx.Tx{ Id: "namespace id is invalid in metaNs tx", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("key"), }, }, }, { NsId: types.MetaNamespaceID, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("/\\"), }, }, }, }, Signatures: [][]byte{ []byte("dummy"), []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_NAMESPACE_ID_INVALID, }, { Tx: &protoblocktx.Tx{ Id: "namespace policy is invalid in metaNs tx", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("key"), }, }, }, { NsId: types.MetaNamespaceID, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("2"), Value: []byte("value"), }, }, }, }, Signatures: [][]byte{ []byte("dummy"), []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_NAMESPACE_POLICY_INVALID, }, { Tx: &protoblocktx.Tx{ Id: "duplicate namespace", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("key"), }, }, }, { NsId: types.MetaNamespaceID, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("2"), Value: defaultNsPolicy(), }, }, }, { NsId: ns1, NsVersion: v0, }, }, Signatures: [][]byte{ []byte("dummy"), []byte("dummy"), []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_DUPLICATE_NAMESPACE, }, { Tx: &protoblocktx.Tx{ Id: "blind writes not allowed in metaNs tx", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{ { Key: []byte("key"), }, }, }, { NsId: types.MetaNamespaceID, NsVersion: v0, BlindWrites: []*protoblocktx.Write{ { Key: []byte("2"), Value: defaultNsPolicy(), }, }, }, }, Signatures: [][]byte{ []byte("dummy"), []byte("dummy"), }, }, ExpectedStatus: protoblocktx.Status_ABORTED_BLIND_WRITES_NOT_ALLOWED, }, { Tx: &protoblocktx.Tx{ Id: "nil key in ReadOnly", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadsOnly: []*protoblocktx.Read{{Key: nil}}, ReadWrites: []*protoblocktx.ReadWrite{{Key: []byte("1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_NIL_KEY, }, { Tx: &protoblocktx.Tx{ Id: "nil key in ReadWrites", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{{Key: nil}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_NIL_KEY, }, { Tx: &protoblocktx.Tx{ Id: "nil key in BlindWrites", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, BlindWrites: []*protoblocktx.Write{{Key: nil}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_NIL_KEY, }, { Tx: &protoblocktx.Tx{ Id: "duplicate key within ReadOnly", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadsOnly: []*protoblocktx.Read{{Key: []byte("key1")}, {Key: []byte("key1")}}, ReadWrites: []*protoblocktx.ReadWrite{{Key: []byte("1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_DUPLICATE_KEY_IN_READ_WRITE_SET, }, { Tx: &protoblocktx.Tx{ Id: "duplicate key within ReadWrite", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{{Key: []byte("key1")}, {Key: []byte("key1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_DUPLICATE_KEY_IN_READ_WRITE_SET, }, { Tx: &protoblocktx.Tx{ Id: "duplicate key within BlindWrites", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, BlindWrites: []*protoblocktx.Write{{Key: []byte("key1")}, {Key: []byte("key1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_DUPLICATE_KEY_IN_READ_WRITE_SET, }, { Tx: &protoblocktx.Tx{ Id: "duplicate key across ReadOnly and ReadWrite", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadsOnly: []*protoblocktx.Read{{Key: []byte("key1")}}, ReadWrites: []*protoblocktx.ReadWrite{{Key: []byte("key1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_DUPLICATE_KEY_IN_READ_WRITE_SET, }, { Tx: &protoblocktx.Tx{ Id: "duplicate key across ReadWrite and BlindWrites", Namespaces: []*protoblocktx.TxNamespace{ { NsId: ns1, NsVersion: v0, ReadWrites: []*protoblocktx.ReadWrite{{Key: []byte("key1")}}, BlindWrites: []*protoblocktx.Write{{Key: []byte("key1")}}, }, }, Signatures: [][]byte{[]byte("dummy")}, }, ExpectedStatus: protoblocktx.Status_ABORTED_DUPLICATE_KEY_IN_READ_WRITE_SET, }, }
BadTxFormatTestCases holds the test cases needed to test bad transaction formats.
View Source
var ( // ErrUpdatePolicies is returned when UpdatePolicies fails to parse a given policy. ErrUpdatePolicies = errors.New("failed to update policies") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
Server *connection.ServerConfig `mapstructure:"server" yaml:"server"`
Monitoring monitoring.Config `mapstructure:"monitoring" yaml:"monitoring"`
ParallelExecutor ExecutorConfig `mapstructure:"parallel-executor" yaml:"parallel-executor"`
}
Config describes the signature verifier parameters.
type ExecutorConfig ¶
type ExecutorConfig struct {
// Parallelism How many parallel go routines will be launched
Parallelism int `mapstructure:"parallelism" yaml:"parallelism"`
// BatchSizeCutoff The minimum amount of responses we need to collect before emitting a response
BatchSizeCutoff int `mapstructure:"batch-size-cutoff" yaml:"batch-size-cutoff"`
// BatchTimeCutoff How often we should empty the non-empty buffer
BatchTimeCutoff time.Duration `mapstructure:"batch-time-cutoff" yaml:"batch-time-cutoff"`
// ChannelBufferSize The size of the buffer of the input channels (increase for high fluctuations of load)
ChannelBufferSize int `mapstructure:"channel-buffer-size" yaml:"channel-buffer-size"`
}
ExecutorConfig describes the execution parameters.
type Server ¶
type Server struct {
protosigverifierservice.UnimplementedVerifierServer
// contains filtered or unexported fields
}
Server implements verifier.Server.
func (*Server) StartStream ¶
func (s *Server) StartStream(stream protosigverifierservice.Verifier_StartStreamServer) error
StartStream starts a verification stream.
Source Files
¶
Click to show internal directories.
Click to hide internal directories.