wintermute

package
v0.28.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2022 License: AGPL-3.0 Imports: 16 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Orchestrator

type Orchestrator struct {
	// contains filtered or unexported fields
}

Orchestrator encapsulates a stateful implementation of wintermute attack orchestrator logic. The attack logic works as follows:

  1. Orchestrator corrupts the result of the first incoming execution receipt from any of the corrupted execution node.
  2. Orchestrator sends the corrupted execution result to all corrupted execution nodes.
  3. If Orchestrator receives any chunk data pack request for a corrupted chunk from a corrupted verification node, it prompts the verifier to approve that chunk by sending it an attestation for that corrupted chunk.
  4. If Orchestrator receives any chunk data pack response from a corrupted execution node to an honest verification node, it drops the response if it is for one of the corrupted chunks.
  5. If Orchestrator receives a result approval for the original result (i.e., conflicting result with corrupted result), from a corrupted VN, it drops it, hence no conflicting result with the corrupted result is getting approved by any corrupted VN.
  6. Any other incoming messages to the orchestrator are passed through, i.e., are sent as they are in the original Flow network without any tampering.

func NewOrchestrator

func NewOrchestrator(logger zerolog.Logger, corruptedNodeIds flow.IdentifierList, allIds flow.IdentityList) *Orchestrator

func (*Orchestrator) AttackState added in v0.27.0

AttackState returns the corrupted and original execution results involved in this attack. Boolean return value determines whether attack conducted.

func (*Orchestrator) HandleEgressEvent added in v0.28.0

func (o *Orchestrator) HandleEgressEvent(event *insecure.EgressEvent) error

HandleEgressEvent implements logic of processing the events received from a corrupted node.

In Corruptible Conduit Framework for BFT testing, corrupted nodes relay their outgoing events to the attack Orchestrator instead of dispatching them directly to the network. The Orchestrator completely determines what the corrupted conduit should send to the network.

func (*Orchestrator) HandleIngressEvent added in v0.28.0

func (o *Orchestrator) HandleIngressEvent(event *insecure.IngressEvent) error

HandleIngressEvent implements logic of processing the incoming (ingress) events to a corrupt node. Wintermute orchestrator doesn't corrupt ingress events, so it just passes them through.

func (*Orchestrator) Register added in v0.28.0

func (o *Orchestrator) Register(network insecure.OrchestratorNetwork)

Register sets the orchestrator network of the orchestrator.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL