# JournaledGrain&lt;TGrainState, TEventBase&gt;

Package: [Microsoft.Orleans.EventSourcing](/orleans/docs/api/csharp/microsoft.orleans.eventsourcing/) 10.0.0

[NuGet package](https://www.nuget.org/packages/Microsoft.Orleans.EventSourcing) | [Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.EventSourcing/JournaledGrain.cs#L30)

```csharp
public abstract class JournaledGrain<TGrainState, TEventBase> : LogConsistentGrain<TGrainState>, IConnectionIssueListener, ILogConsistencyProtocolParticipant, ILogViewAdaptorHost<TGrainState, TEventBase>, IGrain, IAddressable
    where TGrainState : class, new()
    where TEventBase : class
```

A base class for log-consistent grains using standard event-sourcing terminology. All operations are reentrancy-safe.

## Type parameters

- `TEventBase`: The common base class for the events
- `TGrainState`: The type for the grain state, i.e. the aggregate view of the event log.

## Properties

- [UnconfirmedEvents](/orleans/docs/api/csharp/microsoft.orleans.eventsourcing/orleans.eventsourcing.journaledgrain-2/properties/unconfirmedevents-67ebabed/)

## Methods

- [OnActivateAsync(CancellationToken)](/orleans/docs/api/csharp/microsoft.orleans.eventsourcing/orleans.eventsourcing.journaledgrain-2/methods/onactivateasync-system-threading-cancellationtoken-77a1bc7c/)
