x/evidence doc general audit & cleanup (#8277)
* Update x/evidence doc * Update x/evidence spec
This commit is contained in:
parent
1895831641
commit
0ba839a738
|
@ -20,13 +20,11 @@ A full setup of the evidence module may look something as follows:
|
||||||
evidence.AppModuleBasic{},
|
evidence.AppModuleBasic{},
|
||||||
)
|
)
|
||||||
|
|
||||||
// First, create the keeper's subspace for parameters and the keeper itself.
|
// First, create the keeper
|
||||||
evidenceParamspace := app.ParamsKeeper.Subspace(evidence.ModuleName)
|
|
||||||
evidenceKeeper := evidence.NewKeeper(
|
evidenceKeeper := evidence.NewKeeper(
|
||||||
app.cdc, keys[evidence.StoreKey], evidenceParamspace, evidence.DefaultCodespace,
|
appCodec, keys[evidence.StoreKey], &app.StakingKeeper, app.SlashingKeeper,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
// Second, create the evidence Handler and register all desired routes.
|
// Second, create the evidence Handler and register all desired routes.
|
||||||
evidenceRouter := evidence.NewRouter().
|
evidenceRouter := evidence.NewRouter().
|
||||||
AddRoute(evidenceRoute, evidenceHandler).
|
AddRoute(evidenceRoute, evidenceHandler).
|
||||||
|
@ -34,9 +32,11 @@ A full setup of the evidence module may look something as follows:
|
||||||
|
|
||||||
evidenceKeeper.SetRouter(evidenceRouter)
|
evidenceKeeper.SetRouter(evidenceRouter)
|
||||||
|
|
||||||
|
app.EvidenceKeeper = *evidenceKeeper
|
||||||
|
|
||||||
app.mm = module.NewManager(
|
app.mm = module.NewManager(
|
||||||
// ...
|
// ...
|
||||||
evidence.NewAppModule(evidenceKeeper),
|
evidence.NewAppModule(app.EvidenceKeeper),
|
||||||
)
|
)
|
||||||
|
|
||||||
// Remaining application bootstrapping...
|
// Remaining application bootstrapping...
|
||||||
|
|
|
@ -16,6 +16,8 @@ has also been created to define a contract for evidence against malicious valida
|
||||||
// Evidence defines the contract which concrete evidence types of misbehavior
|
// Evidence defines the contract which concrete evidence types of misbehavior
|
||||||
// must implement.
|
// must implement.
|
||||||
type Evidence interface {
|
type Evidence interface {
|
||||||
|
proto.Message
|
||||||
|
|
||||||
Route() string
|
Route() string
|
||||||
Type() string
|
Type() string
|
||||||
String() string
|
String() string
|
||||||
|
@ -71,5 +73,5 @@ capabilities such as slashing and jailing a validator.
|
||||||
// for executing all corresponding business logic necessary for verifying the
|
// for executing all corresponding business logic necessary for verifying the
|
||||||
// evidence as valid. In addition, the Handler may execute any necessary
|
// evidence as valid. In addition, the Handler may execute any necessary
|
||||||
// slashing and potential jailing.
|
// slashing and potential jailing.
|
||||||
type Handler func(Context, Evidence) error
|
type Handler func(sdk.Context, Evidence) error
|
||||||
```
|
```
|
||||||
|
|
|
@ -27,17 +27,24 @@ as follows:
|
||||||
```go
|
```go
|
||||||
func SubmitEvidence(ctx Context, evidence Evidence) error {
|
func SubmitEvidence(ctx Context, evidence Evidence) error {
|
||||||
if _, ok := GetEvidence(ctx, evidence.Hash()); ok {
|
if _, ok := GetEvidence(ctx, evidence.Hash()); ok {
|
||||||
return ErrEvidenceExists(codespace, evidence.Hash().String())
|
return sdkerrors.Wrap(types.ErrEvidenceExists, evidence.Hash().String())
|
||||||
}
|
}
|
||||||
if !router.HasRoute(evidence.Route()) {
|
if !router.HasRoute(evidence.Route()) {
|
||||||
return ErrNoEvidenceHandlerExists(codespace, evidence.Route())
|
return sdkerrors.Wrap(types.ErrNoEvidenceHandlerExists, evidence.Route())
|
||||||
}
|
}
|
||||||
|
|
||||||
handler := router.GetRoute(evidence.Route())
|
handler := router.GetRoute(evidence.Route())
|
||||||
if err := handler(ctx, evidence); err != nil {
|
if err := handler(ctx, evidence); err != nil {
|
||||||
return ErrInvalidEvidence(codespace, err.Error())
|
return sdkerrors.Wrap(types.ErrInvalidEvidence, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx.EventManager().EmitEvent(
|
||||||
|
sdk.NewEvent(
|
||||||
|
types.EventTypeSubmitEvidence,
|
||||||
|
sdk.NewAttribute(types.AttributeKeyEvidenceHash, evidence.Hash().String()),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
SetEvidence(ctx, evidence)
|
SetEvidence(ctx, evidence)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -45,4 +52,4 @@ func SubmitEvidence(ctx Context, evidence Evidence) error {
|
||||||
|
|
||||||
First, there must not already exist valid submitted `Evidence` of the exact same
|
First, there must not already exist valid submitted `Evidence` of the exact same
|
||||||
type. Secondly, the `Evidence` is routed to the `Handler` and executed. Finally,
|
type. Secondly, the `Evidence` is routed to the `Handler` and executed. Finally,
|
||||||
if there is no error in handling the `Evidence`, it is persisted to state.
|
if there is no error in handling the `Evidence`, an event is emitted and it is persisted to state.
|
||||||
|
|
Loading…
Reference in New Issue