mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-16 04:55:18 +00:00
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
|
package keeper
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/0glabs/0g-chain/x/das/v1/types"
|
||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||
|
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||
|
)
|
||
|
|
||
|
var _ types.MsgServer = &Keeper{}
|
||
|
|
||
|
// RequestDAS handles MsgRequestDAS messages
|
||
|
func (k Keeper) RequestDAS(
|
||
|
goCtx context.Context, msg *types.MsgRequestDAS,
|
||
|
) (*types.MsgRequestDASResponse, error) {
|
||
|
ctx := sdk.UnwrapSDKContext(goCtx)
|
||
|
|
||
|
requestID, err := k.StoreNewDASRequest(ctx, msg.StreamID, msg.BatchHeaderHash, msg.NumBlobs)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
k.IncrementNextRequestID(ctx)
|
||
|
return &types.MsgRequestDASResponse{
|
||
|
RequestID: requestID,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
// ReportDASResult handles MsgReportDASResult messages
|
||
|
func (k Keeper) ReportDASResult(
|
||
|
goCtx context.Context, msg *types.MsgReportDASResult,
|
||
|
) (*types.MsgReportDASResultResponse, error) {
|
||
|
ctx := sdk.UnwrapSDKContext(goCtx)
|
||
|
|
||
|
sampler, err := sdk.ValAddressFromBech32(msg.Sampler)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
if _, found := k.stakingKeeperRef.GetValidator(ctx, sampler); !found {
|
||
|
return nil, stakingtypes.ErrNoValidatorFound
|
||
|
}
|
||
|
|
||
|
if err := k.StoreNewDASResponse(ctx, msg.RequestID, sampler, msg.Results); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return &types.MsgReportDASResultResponse{}, nil
|
||
|
}
|