120 lines
3.0 KiB
Go
120 lines
3.0 KiB
Go
package auction
|
|
|
|
import (
|
|
"fmt"
|
|
time "time"
|
|
|
|
errorsmod "cosmossdk.io/errors"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
)
|
|
|
|
var (
|
|
_ sdk.Msg = &MsgCreateAuction{}
|
|
_ sdk.Msg = &MsgCommitBid{}
|
|
_ sdk.Msg = &MsgRevealBid{}
|
|
)
|
|
|
|
// NewMsgCreateAuction is the constructor function for MsgCreateAuction.
|
|
func NewMsgCreateAuction(
|
|
commitsDuration time.Duration,
|
|
revealsDuration time.Duration,
|
|
commitFee sdk.Coin,
|
|
revealFee sdk.Coin,
|
|
minimumBid sdk.Coin,
|
|
maxPrice sdk.Coin,
|
|
numProviders int32,
|
|
kind string,
|
|
signer sdk.AccAddress,
|
|
) MsgCreateAuction {
|
|
fmt.Print(signer.String())
|
|
return MsgCreateAuction{
|
|
CommitsDuration: commitsDuration,
|
|
RevealsDuration: revealsDuration,
|
|
CommitFee: commitFee,
|
|
RevealFee: revealFee,
|
|
MinimumBid: minimumBid,
|
|
MaxPrice: maxPrice,
|
|
Kind: kind,
|
|
NumProviders: numProviders,
|
|
Signer: signer.String(),
|
|
}
|
|
}
|
|
|
|
// NewMsgCommitBid is the constructor function for MsgCommitBid.
|
|
func NewMsgCommitBid(auctionId string, commitHash string, signer sdk.AccAddress) MsgCommitBid {
|
|
return MsgCommitBid{
|
|
AuctionId: auctionId,
|
|
CommitHash: commitHash,
|
|
Signer: signer.String(),
|
|
}
|
|
}
|
|
|
|
// ValidateBasic Implements Msg.
|
|
func (msg MsgCreateAuction) ValidateBasic() error {
|
|
if msg.Signer == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidAddress, msg.Signer)
|
|
}
|
|
|
|
if msg.CommitsDuration <= 0 {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "commit phase duration invalid.")
|
|
}
|
|
|
|
if msg.RevealsDuration <= 0 {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "reveal phase duration invalid.")
|
|
}
|
|
|
|
if msg.Kind == AuctionKindVickrey && !msg.MinimumBid.IsPositive() {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "minimum bid should be greater than zero.")
|
|
}
|
|
|
|
if msg.Kind == AuctionKindProvider && !msg.MaxPrice.IsPositive() {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "maximum price should be greater than zero.")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ValidateBasic Implements Msg.
|
|
func (msg MsgCommitBid) ValidateBasic() error {
|
|
if msg.Signer == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "invalid signer address")
|
|
}
|
|
|
|
if msg.AuctionId == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid auction id")
|
|
}
|
|
|
|
if msg.CommitHash == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid commit hash")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// NewMsgRevealBid is the constructor function for MsgRevealBid.
|
|
func NewMsgRevealBid(auctionId string, reveal string, signer sdk.AccAddress) MsgRevealBid {
|
|
return MsgRevealBid{
|
|
AuctionId: auctionId,
|
|
Reveal: reveal,
|
|
Signer: signer.String(),
|
|
}
|
|
}
|
|
|
|
// ValidateBasic Implements Msg.
|
|
func (msg MsgRevealBid) ValidateBasic() error {
|
|
if msg.Signer == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "invalid signer address")
|
|
}
|
|
|
|
if msg.AuctionId == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid auction id")
|
|
}
|
|
|
|
if msg.Reveal == "" {
|
|
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid reveal data")
|
|
}
|
|
|
|
return nil
|
|
}
|