WIP type updates

This commit is contained in:
2022-09-02 21:03:03 +00:00
parent e8e7680ae2
commit 75c051af04
7 changed files with 234 additions and 26 deletions

View File

@@ -1,8 +1,10 @@
package keeper
import (
"cosmos-test/x/cosmostest/math"
"cosmos-test/x/cosmostest/memdb"
"math/big"
"time"
"github.com/cosmos/cosmos-sdk/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -25,7 +27,7 @@ func (k *Keeper) FinalizeExpiredAuctions(ctx types.Context) {
auction, found := k.GetAuction(ctx, auctionId)
// make sure the auction exists on-chain
if !found {
return errors.Errorf("auction %s not found on-chain", auctionId)
return errors.Errorf("auction %s not found", auctionId)
}
if uint64(ctx.BlockHeight()) >= auction.Deadline {
@@ -35,6 +37,9 @@ func (k *Keeper) FinalizeExpiredAuctions(ctx types.Context) {
return errors.Errorf("could not get highest bid for auction %s: %s", auctionId, err)
}
// Remainig Unpaid: Full bid amount
auction.Remaining = auction.Best.Amount
// clear auction
memdb.BidDB.ClearAuction(auctionId)
@@ -62,6 +67,34 @@ func (k *Keeper) FinalizeExpiredAuctions(ctx types.Context) {
})
}
func (k *Keeper) VestAuctionPayments(ctx types.Context) {
func (k *Keeper) PayAuctionAmountDue(ctx types.Context, auctionId string) error {
auction, found := k.GetAuction(ctx, auctionId)
if !found {
return errors.Errorf("auction %s not found", auctionId)
}
blockTime := ctx.BlockTime()
deadline := time.Unix(int64(auction.Deadline), 0)
if blockTime.After(deadline) {
return nil
} else {
amtTotal := new(big.Int)
amtTotal.SetString(auction.Best.Amount, 10)
amtRemaining := new(big.Int)
amtTotal.SetString(auction.Remaining, 10)
amt, err := math.CalcAmountVestableLinear(
amtTotal,
amtRemaining,
ctx.BlockTime(),
time.Unix(int64(auction.LeaseStart), 0),
time.Unix(int64(auction.LeaseEnd), 0),
)
if err != nil {
return err
}
coins := sdk.NewCoins(sdk.NewCoin(auction.Denom, sdk.NewIntFromBigInt(amt)))
err = k.bank.SendCoinsFromModuleToAccount(ctx, "cosmostest", sdk.AccAddress(auction.Best.Owner), coins)
return err
}
}

View File

@@ -27,10 +27,14 @@ func (k msgServer) NewAuction(goCtx context.Context, msg *types.MsgNewAuction) (
Name: msg.Name,
Description: msg.Description,
// Best: new(types.Bid),
Deadline: uint64(ctx.BlockHeight()) + auctionconfig.AuctionTime,
Denom: msg.Denom,
Owner: msg.Creator,
Ceiling: msg.Ceiling,
Deadline: uint64(ctx.BlockHeight()) + auctionconfig.AuctionTime,
Denom: msg.Denom,
Owner: msg.Creator,
Ceiling: msg.Ceiling,
LeaseStart: uint64(ctx.BlockTime().Unix()),
LeaseEnd: msg.LeaseEnd,
Closed: false,
Remaining: "0",
}
senderAddr, err := sdk.AccAddressFromBech32(msg.Creator)

View File

@@ -31,7 +31,10 @@ type Auction struct {
Ceiling string `protobuf:"bytes,6,opt,name=ceiling,proto3" json:"ceiling,omitempty"`
Denom string `protobuf:"bytes,7,opt,name=denom,proto3" json:"denom,omitempty"`
Owner string `protobuf:"bytes,8,opt,name=owner,proto3" json:"owner,omitempty"`
LeaseEnd uint64 `protobuf:"varint,9,opt,name=leaseEnd,proto3" json:"leaseEnd,omitempty"`
LeaseStart uint64 `protobuf:"varint,9,opt,name=leaseStart,proto3" json:"leaseStart,omitempty"`
LeaseEnd uint64 `protobuf:"varint,10,opt,name=leaseEnd,proto3" json:"leaseEnd,omitempty"`
Closed bool `protobuf:"varint,11,opt,name=closed,proto3" json:"closed,omitempty"`
Remaining string `protobuf:"bytes,12,opt,name=remaining,proto3" json:"remaining,omitempty"`
}
func (m *Auction) Reset() { *m = Auction{} }
@@ -123,6 +126,13 @@ func (m *Auction) GetOwner() string {
return ""
}
func (m *Auction) GetLeaseStart() uint64 {
if m != nil {
return m.LeaseStart
}
return 0
}
func (m *Auction) GetLeaseEnd() uint64 {
if m != nil {
return m.LeaseEnd
@@ -130,6 +140,20 @@ func (m *Auction) GetLeaseEnd() uint64 {
return 0
}
func (m *Auction) GetClosed() bool {
if m != nil {
return m.Closed
}
return false
}
func (m *Auction) GetRemaining() string {
if m != nil {
return m.Remaining
}
return ""
}
func init() {
proto.RegisterType((*Auction)(nil), "cosmostest.cosmostest.Auction")
}
@@ -137,24 +161,27 @@ func init() {
func init() { proto.RegisterFile("cosmostest/auction.proto", fileDescriptor_631f6f59914101d9) }
var fileDescriptor_631f6f59914101d9 = []byte{
// 271 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xb1, 0x4e, 0xc3, 0x30,
0x10, 0x86, 0xe3, 0x92, 0x36, 0xad, 0xbb, 0x59, 0x45, 0x3a, 0x65, 0xb0, 0x22, 0xa6, 0x2c, 0xb8,
0x12, 0x2c, 0xac, 0x54, 0xe2, 0x05, 0x32, 0xb2, 0x25, 0xf1, 0x09, 0x59, 0x4a, 0xec, 0x28, 0x36,
0xa2, 0xcc, 0xbc, 0x00, 0x8f, 0xc5, 0xd8, 0x91, 0x11, 0x25, 0x2f, 0x82, 0x62, 0xab, 0x34, 0x03,
0xdb, 0x7d, 0xff, 0xdd, 0xe9, 0xff, 0xf5, 0x53, 0xa8, 0x8d, 0x6d, 0x8d, 0x75, 0x68, 0xdd, 0xbe,
0x7c, 0xad, 0x9d, 0x32, 0x5a, 0x74, 0xbd, 0x71, 0x86, 0x5d, 0x5f, 0x36, 0xe2, 0x32, 0xa6, 0xbb,
0xd9, 0x43, 0xa5, 0x64, 0x38, 0xbe, 0xf9, 0x58, 0xd0, 0xe4, 0x31, 0xbc, 0xb3, 0x1d, 0x5d, 0x2a,
0x2d, 0xf1, 0x08, 0x24, 0x23, 0xf9, 0xa6, 0x08, 0xc0, 0x18, 0x8d, 0x75, 0xd9, 0x22, 0x2c, 0xbc,
0xe8, 0x67, 0x96, 0xd1, 0xad, 0x44, 0x5b, 0xf7, 0xaa, 0x9b, 0x1e, 0xe1, 0xca, 0xaf, 0xe6, 0x12,
0x13, 0x34, 0xae, 0xd0, 0x3a, 0x88, 0x33, 0x92, 0x6f, 0xef, 0x52, 0xf1, 0x6f, 0x26, 0x71, 0x50,
0xb2, 0xf0, 0x77, 0x2c, 0xa5, 0x6b, 0x89, 0xa5, 0x6c, 0x94, 0x46, 0x58, 0x66, 0x24, 0x8f, 0x8b,
0x3f, 0x66, 0x40, 0x93, 0x1a, 0x55, 0xa3, 0xf4, 0x0b, 0xac, 0xbc, 0xd3, 0x19, 0xa7, 0xc4, 0x12,
0xb5, 0x69, 0x21, 0x09, 0x89, 0x3d, 0x4c, 0xaa, 0x79, 0xd3, 0xd8, 0xc3, 0x3a, 0xa8, 0x1e, 0x26,
0x87, 0x06, 0x4b, 0x8b, 0x4f, 0x5a, 0xc2, 0x26, 0x38, 0x9c, 0xf9, 0xf0, 0xf0, 0x35, 0x70, 0x72,
0x1a, 0x38, 0xf9, 0x19, 0x38, 0xf9, 0x1c, 0x79, 0x74, 0x1a, 0x79, 0xf4, 0x3d, 0xf2, 0xe8, 0x99,
0x87, 0xb4, 0xb7, 0xbe, 0xb6, 0xe3, 0x7e, 0xd6, 0xa1, 0x7b, 0xef, 0xd0, 0x56, 0x2b, 0x5f, 0xe3,
0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x23, 0x2c, 0x20, 0x51, 0x8f, 0x01, 0x00, 0x00,
// 312 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xbf, 0x4e, 0xfb, 0x30,
0x10, 0xc7, 0xeb, 0xfe, 0xd2, 0x7f, 0xd7, 0xdf, 0x64, 0x15, 0x74, 0xaa, 0x90, 0x15, 0x31, 0x65,
0x21, 0x95, 0x60, 0x61, 0xa5, 0x12, 0x2f, 0x10, 0x36, 0x36, 0x37, 0x3e, 0x21, 0x4b, 0x89, 0x5d,
0xc5, 0x46, 0x94, 0xb7, 0xe0, 0xb1, 0x18, 0x3b, 0xc2, 0x86, 0xda, 0x17, 0x41, 0xb1, 0x29, 0xc9,
0xc0, 0xe6, 0xcf, 0xf7, 0xee, 0x74, 0x1f, 0xf9, 0x00, 0x4b, 0xeb, 0x6a, 0xeb, 0x3c, 0x39, 0xbf,
0x92, 0xcf, 0xa5, 0xd7, 0xd6, 0xe4, 0xdb, 0xc6, 0x7a, 0xcb, 0xcf, 0xba, 0x4a, 0xde, 0x3d, 0x97,
0x8b, 0xde, 0xc0, 0x46, 0xab, 0xd8, 0x7c, 0xf9, 0x39, 0x84, 0xc9, 0x5d, 0x1c, 0xe7, 0x0b, 0x18,
0x69, 0xa3, 0x68, 0x87, 0x2c, 0x65, 0xd9, 0xac, 0x88, 0xc0, 0x39, 0x24, 0x46, 0xd6, 0x84, 0xc3,
0x10, 0x86, 0x37, 0x4f, 0x61, 0xae, 0xc8, 0x95, 0x8d, 0xde, 0xb6, 0x83, 0xf8, 0x2f, 0x94, 0xfa,
0x11, 0xcf, 0x21, 0xd9, 0x90, 0xf3, 0x98, 0xa4, 0x2c, 0x9b, 0x5f, 0x2f, 0xf3, 0x3f, 0x9d, 0xf2,
0xb5, 0x56, 0x45, 0xe8, 0xe3, 0x4b, 0x98, 0x2a, 0x92, 0xaa, 0xd2, 0x86, 0x70, 0x94, 0xb2, 0x2c,
0x29, 0x7e, 0x99, 0x23, 0x4c, 0x4a, 0xd2, 0x95, 0x36, 0x4f, 0x38, 0x0e, 0x9b, 0x4e, 0xd8, 0x1a,
0x2b, 0x32, 0xb6, 0xc6, 0x49, 0x34, 0x0e, 0xd0, 0xa6, 0xf6, 0xc5, 0x50, 0x83, 0xd3, 0x98, 0x06,
0xe0, 0x02, 0xa0, 0x22, 0xe9, 0xe8, 0xc1, 0xcb, 0xc6, 0xe3, 0x2c, 0xec, 0xe8, 0x25, 0xad, 0x41,
0xa0, 0x7b, 0xa3, 0x10, 0xa2, 0xc1, 0x89, 0xf9, 0x39, 0x8c, 0xcb, 0xca, 0x3a, 0x52, 0x38, 0x4f,
0x59, 0x36, 0x2d, 0x7e, 0x88, 0x5f, 0xc0, 0xac, 0xa1, 0x5a, 0x6a, 0xd3, 0xba, 0xfd, 0x0f, 0xdb,
0xba, 0x60, 0x7d, 0xfb, 0x7e, 0x10, 0x6c, 0x7f, 0x10, 0xec, 0xeb, 0x20, 0xd8, 0xdb, 0x51, 0x0c,
0xf6, 0x47, 0x31, 0xf8, 0x38, 0x8a, 0xc1, 0xa3, 0x88, 0x7f, 0x70, 0x15, 0x8e, 0xb1, 0x5b, 0xf5,
0x2e, 0xe3, 0x5f, 0xb7, 0xe4, 0x36, 0xe3, 0x70, 0x9c, 0x9b, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff,
0x98, 0x0b, 0x92, 0x45, 0xe5, 0x01, 0x00, 0x00,
}
func (m *Auction) Marshal() (dAtA []byte, err error) {
@@ -177,9 +204,31 @@ func (m *Auction) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Remaining) > 0 {
i -= len(m.Remaining)
copy(dAtA[i:], m.Remaining)
i = encodeVarintAuction(dAtA, i, uint64(len(m.Remaining)))
i--
dAtA[i] = 0x62
}
if m.Closed {
i--
if m.Closed {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x58
}
if m.LeaseEnd != 0 {
i = encodeVarintAuction(dAtA, i, uint64(m.LeaseEnd))
i--
dAtA[i] = 0x50
}
if m.LeaseStart != 0 {
i = encodeVarintAuction(dAtA, i, uint64(m.LeaseStart))
i--
dAtA[i] = 0x48
}
if len(m.Owner) > 0 {
@@ -292,9 +341,19 @@ func (m *Auction) Size() (n int) {
if l > 0 {
n += 1 + l + sovAuction(uint64(l))
}
if m.LeaseStart != 0 {
n += 1 + sovAuction(uint64(m.LeaseStart))
}
if m.LeaseEnd != 0 {
n += 1 + sovAuction(uint64(m.LeaseEnd))
}
if m.Closed {
n += 2
}
l = len(m.Remaining)
if l > 0 {
n += 1 + l + sovAuction(uint64(l))
}
return n
}
@@ -581,6 +640,25 @@ func (m *Auction) Unmarshal(dAtA []byte) error {
m.Owner = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 9:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field LeaseStart", wireType)
}
m.LeaseStart = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAuction
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.LeaseStart |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 10:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field LeaseEnd", wireType)
}
@@ -599,6 +677,58 @@ func (m *Auction) Unmarshal(dAtA []byte) error {
break
}
}
case 11:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Closed", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAuction
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.Closed = bool(v != 0)
case 12:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Remaining", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAuction
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthAuction
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthAuction
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Remaining = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipAuction(dAtA[iNdEx:])