From 05c679a0ba75e723cea83109a761f857aea0b6c5 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Tue, 22 Oct 2024 17:50:21 +0200 Subject: [PATCH 01/23] Stakedrop charge as param --- .../osmosis/tokenfactory/v1beta1/params.proto | 6 + x/tokenfactory/types/params.go | 17 +++ x/tokenfactory/types/params.pb.go | 130 +++++++++++++----- 3 files changed, 116 insertions(+), 37 deletions(-) diff --git a/proto/osmosis/tokenfactory/v1beta1/params.proto b/proto/osmosis/tokenfactory/v1beta1/params.proto index d8afa12..f6f344e 100755 --- a/proto/osmosis/tokenfactory/v1beta1/params.proto +++ b/proto/osmosis/tokenfactory/v1beta1/params.proto @@ -52,4 +52,10 @@ message Params { ]; repeated string free_mint_whitelist_addresses = 5; + + cosmos.base.v1beta1.Coin stakedrop_charge_per_block = 6 [ + (gogoproto.moretags) = "yaml:\"stakedrop_charge_per_block\"", + (gogoproto.nullable) = false + ]; + } \ No newline at end of file diff --git a/x/tokenfactory/types/params.go b/x/tokenfactory/types/params.go index dd6e24d..62045c9 100644 --- a/x/tokenfactory/types/params.go +++ b/x/tokenfactory/types/params.go @@ -21,6 +21,7 @@ func DefaultParams() Params { BuildersCommission: math.LegacyNewDecWithPrec(5, 3), // "0.005" if there is builders addresses, this commission rate from minted amount is redirected to builders BuildersAddresses: []WeightedAddress(nil), FreeMintWhitelistAddresses: []string(nil), + StakedropChargePerBlock: sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(0)), } } @@ -46,10 +47,26 @@ func (p Params) Validate() error { if err != nil { return err } + err = validateStakedropChargePerBlock(p.StakedropChargePerBlock) + if err != nil { + return err + } return nil } +func validateStakedropChargePerBlock(i interface{}) error { + v, ok := i.(sdk.Coin) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + if v.Validate() != nil { + return fmt.Errorf("invalid denom stakedrop creation fee: %+v", i) + } + + return nil +} + func validateFreeMintWhitelistAddresses(i interface{}) error { v, ok := i.([]string) if !ok { diff --git a/x/tokenfactory/types/params.pb.go b/x/tokenfactory/types/params.pb.go index 1f0f834..4aa0877 100644 --- a/x/tokenfactory/types/params.pb.go +++ b/x/tokenfactory/types/params.pb.go @@ -85,6 +85,7 @@ type Params struct { BuildersCommission cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=builders_commission,json=buildersCommission,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"builders_commission" yaml:"builders_commission"` BuildersAddresses []WeightedAddress `protobuf:"bytes,4,rep,name=builders_addresses,json=buildersAddresses,proto3" json:"builders_addresses" yaml:"builders_addresses"` FreeMintWhitelistAddresses []string `protobuf:"bytes,5,rep,name=free_mint_whitelist_addresses,json=freeMintWhitelistAddresses,proto3" json:"free_mint_whitelist_addresses,omitempty"` + StakedropChargePerBlock types.Coin `protobuf:"bytes,6,opt,name=stakedrop_charge_per_block,json=stakedropChargePerBlock,proto3" json:"stakedrop_charge_per_block" yaml:"stakedrop_charge_per_block"` } func (m *Params) Reset() { *m = Params{} } @@ -148,6 +149,13 @@ func (m *Params) GetFreeMintWhitelistAddresses() []string { return nil } +func (m *Params) GetStakedropChargePerBlock() types.Coin { + if m != nil { + return m.StakedropChargePerBlock + } + return types.Coin{} +} + func init() { proto.RegisterType((*WeightedAddress)(nil), "osmosis.tokenfactory.v1beta1.WeightedAddress") proto.RegisterType((*Params)(nil), "osmosis.tokenfactory.v1beta1.Params") @@ -158,43 +166,46 @@ func init() { } var fileDescriptor_cc8299d306f3ff47 = []byte{ - // 570 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xbf, 0x6f, 0xd3, 0x40, - 0x14, 0xc7, 0x63, 0x1a, 0x8a, 0x6a, 0xc4, 0xaf, 0x03, 0x89, 0x34, 0x80, 0x9d, 0x7a, 0x4a, 0x25, - 0x62, 0xab, 0xd0, 0x01, 0x75, 0x4b, 0x5c, 0xc1, 0xd2, 0x08, 0xe4, 0xa5, 0x12, 0x8b, 0x75, 0xb1, - 0x5f, 0xec, 0x53, 0x62, 0x5f, 0xe4, 0x3b, 0x53, 0x32, 0xc1, 0x9f, 0x80, 0x84, 0xc4, 0xcc, 0xcc, - 0xcc, 0x1f, 0x91, 0x31, 0x62, 0x42, 0x0c, 0x06, 0x25, 0x0b, 0x73, 0xfe, 0x02, 0x94, 0xbb, 0x73, - 0x94, 0xb4, 0x55, 0xc5, 0x64, 0xdf, 0xbd, 0xef, 0xfb, 0xdc, 0xbb, 0xef, 0x7b, 0xa7, 0xef, 0x53, - 0x96, 0x50, 0x46, 0x98, 0xc3, 0xe9, 0x00, 0xd2, 0x3e, 0x0e, 0x38, 0xcd, 0xc6, 0xce, 0xbb, 0x83, - 0x1e, 0x70, 0x7c, 0xe0, 0x8c, 0x70, 0x86, 0x13, 0x66, 0x8f, 0x32, 0xca, 0x29, 0x7a, 0xac, 0xa4, - 0xf6, 0xba, 0xd4, 0x56, 0xd2, 0xfa, 0x83, 0x88, 0x46, 0x54, 0x08, 0x9d, 0xe5, 0x9f, 0xcc, 0xa9, - 0x1f, 0x5e, 0x89, 0xc7, 0x39, 0x8f, 0x69, 0x46, 0xf8, 0xb8, 0x0b, 0x1c, 0x87, 0x98, 0x63, 0x95, - 0xb5, 0x1b, 0x88, 0x34, 0x5f, 0xe2, 0xe4, 0x42, 0x85, 0x0c, 0xb9, 0x72, 0x7a, 0x98, 0xc1, 0x8a, - 0x13, 0x50, 0x92, 0xca, 0xb8, 0xf5, 0x59, 0xd3, 0xef, 0x9c, 0x02, 0x89, 0x62, 0x0e, 0x61, 0x3b, - 0x0c, 0x33, 0x60, 0x0c, 0x3d, 0xd5, 0x6f, 0x60, 0xf9, 0x5b, 0xd3, 0x1a, 0x5a, 0x73, 0xa7, 0x83, - 0x16, 0x85, 0x79, 0x7b, 0x8c, 0x93, 0xe1, 0x91, 0xa5, 0x02, 0x96, 0x57, 0x4a, 0xd0, 0x89, 0xbe, - 0x7d, 0x26, 0x00, 0xb5, 0x6b, 0x42, 0x7c, 0x38, 0x29, 0xcc, 0xca, 0xaf, 0xc2, 0x7c, 0x24, 0x4f, - 0x66, 0xe1, 0xc0, 0x26, 0xd4, 0x49, 0x30, 0x8f, 0xed, 0x13, 0x88, 0x70, 0x30, 0x3e, 0x86, 0x60, - 0x51, 0x98, 0xb7, 0x24, 0x4f, 0xa6, 0x5a, 0x9e, 0x62, 0x1c, 0x55, 0xff, 0x7e, 0x35, 0x35, 0x6b, - 0x5a, 0xd5, 0xb7, 0xdf, 0x08, 0x2f, 0xd1, 0x17, 0x4d, 0x47, 0x21, 0xa4, 0x34, 0xf1, 0x83, 0x0c, - 0x30, 0x27, 0x34, 0xf5, 0xfb, 0x00, 0x35, 0xad, 0xb1, 0xd5, 0xbc, 0xf9, 0x6c, 0xd7, 0x56, 0x97, - 0x5d, 0x5e, 0xaf, 0xb4, 0xd6, 0x76, 0x29, 0x49, 0x3b, 0xdd, 0x65, 0x19, 0x8b, 0xc2, 0xdc, 0x95, - 0xe7, 0x5c, 0x44, 0x58, 0xdf, 0x7e, 0x9b, 0xcd, 0x88, 0xf0, 0x38, 0xef, 0xd9, 0x01, 0x4d, 0x94, - 0x6d, 0xea, 0xd3, 0x62, 0xe1, 0xc0, 0xe1, 0xe3, 0x11, 0x30, 0x41, 0x63, 0xde, 0x5d, 0x01, 0x70, - 0x55, 0xfe, 0x4b, 0x00, 0xd4, 0xd7, 0xeb, 0xe7, 0xa0, 0x11, 0x66, 0x7e, 0x40, 0x53, 0x96, 0x27, - 0x20, 0xbc, 0xa8, 0x76, 0xf6, 0x27, 0x85, 0xa9, 0x2d, 0x0a, 0x73, 0xef, 0xd2, 0x22, 0xd6, 0xf4, - 0x96, 0xf7, 0x70, 0xe3, 0x80, 0x57, 0x98, 0xb9, 0x32, 0x82, 0x3e, 0x6a, 0xfa, 0xfd, 0x5e, 0x4e, - 0x86, 0x21, 0x64, 0x4b, 0x79, 0x92, 0x10, 0xc6, 0x08, 0x4d, 0x6b, 0x5b, 0xc2, 0xed, 0xd7, 0xff, - 0xe7, 0x76, 0x5d, 0x16, 0x70, 0x09, 0xc7, 0xfa, 0xf1, 0xbd, 0xa5, 0x2b, 0x17, 0x8f, 0x21, 0xf0, - 0x50, 0xa9, 0x71, 0x57, 0x12, 0xf4, 0x41, 0x5f, 0xed, 0xfa, 0xaa, 0xed, 0xc0, 0x6a, 0x55, 0xd1, - 0x82, 0x96, 0x7d, 0xd5, 0x98, 0xdb, 0xe7, 0x66, 0xab, 0xb3, 0xb7, 0xd9, 0x96, 0x8b, 0x58, 0xcb, - 0xbb, 0x57, 0x6e, 0xb6, 0xcb, 0x3d, 0xd4, 0xd6, 0x9f, 0xf4, 0x33, 0x00, 0x3f, 0x21, 0x29, 0xf7, - 0xcf, 0x62, 0xc2, 0x61, 0x48, 0x18, 0x5f, 0xab, 0xe5, 0x7a, 0x63, 0xab, 0xb9, 0xe3, 0xd5, 0x97, - 0xa2, 0x2e, 0x49, 0xf9, 0x69, 0x29, 0x59, 0x21, 0x3a, 0xde, 0x64, 0x66, 0x68, 0xd3, 0x99, 0xa1, - 0xfd, 0x99, 0x19, 0xda, 0xa7, 0xb9, 0x51, 0x99, 0xce, 0x8d, 0xca, 0xcf, 0xb9, 0x51, 0x79, 0xfb, - 0x62, 0x6d, 0x08, 0xdc, 0x98, 0xc4, 0x39, 0x8e, 0x73, 0xec, 0xc6, 0x98, 0xa4, 0x4e, 0x50, 0x2e, - 0x9d, 0xf7, 0x9b, 0x2f, 0x52, 0x8c, 0x46, 0x6f, 0x5b, 0xbc, 0xa1, 0xe7, 0xff, 0x02, 0x00, 0x00, - 0xff, 0xff, 0xf5, 0x32, 0x92, 0x65, 0x15, 0x04, 0x00, 0x00, + // 622 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0x3f, 0x6f, 0xd3, 0x4e, + 0x18, 0xc7, 0x73, 0xbf, 0xb6, 0xf9, 0xa9, 0x46, 0xfc, 0x33, 0x48, 0x4d, 0x03, 0xd8, 0xa9, 0xa7, + 0x54, 0xa2, 0xb6, 0x0a, 0x1d, 0x50, 0xb7, 0xc6, 0x15, 0x2c, 0xad, 0xa8, 0xbc, 0x54, 0x62, 0xb1, + 0x2e, 0xf6, 0x13, 0xfb, 0x94, 0xd8, 0x17, 0xdd, 0x5d, 0x28, 0x99, 0x80, 0x77, 0x80, 0x84, 0xc4, + 0xcc, 0xcc, 0xcc, 0x8b, 0xe8, 0x58, 0x21, 0x06, 0xc4, 0x60, 0x50, 0xbb, 0x30, 0xe7, 0x15, 0x20, + 0xdf, 0x9d, 0x43, 0xfa, 0x87, 0x88, 0x29, 0x77, 0xf7, 0x7c, 0x9f, 0xcf, 0x3d, 0xf7, 0x7d, 0x9e, + 0xd8, 0x58, 0xa7, 0x3c, 0xa3, 0x9c, 0x70, 0x4f, 0xd0, 0x3e, 0xe4, 0x3d, 0x1c, 0x09, 0xca, 0xc6, + 0xde, 0xcb, 0xcd, 0x2e, 0x08, 0xbc, 0xe9, 0x0d, 0x31, 0xc3, 0x19, 0x77, 0x87, 0x8c, 0x0a, 0x6a, + 0xde, 0xd7, 0x52, 0x77, 0x56, 0xea, 0x6a, 0x69, 0xf3, 0x6e, 0x42, 0x13, 0x2a, 0x85, 0x5e, 0xb9, + 0x52, 0x39, 0xcd, 0xad, 0xb9, 0x78, 0x3c, 0x12, 0x29, 0x65, 0x44, 0x8c, 0xf7, 0x41, 0xe0, 0x18, + 0x0b, 0xac, 0xb3, 0x56, 0x23, 0x99, 0x16, 0x2a, 0x9c, 0xda, 0xe8, 0x90, 0xa5, 0x76, 0x5e, 0x17, + 0x73, 0x98, 0x72, 0x22, 0x4a, 0x72, 0x15, 0x77, 0xde, 0x23, 0xe3, 0xe6, 0x21, 0x90, 0x24, 0x15, + 0x10, 0xef, 0xc4, 0x31, 0x03, 0xce, 0xcd, 0x87, 0xc6, 0xff, 0x58, 0x2d, 0x1b, 0xa8, 0x85, 0xda, + 0xcb, 0x1d, 0x73, 0x52, 0xd8, 0x37, 0xc6, 0x38, 0x1b, 0x6c, 0x3b, 0x3a, 0xe0, 0x04, 0x95, 0xc4, + 0xdc, 0x33, 0xea, 0x47, 0x12, 0xd0, 0xf8, 0x4f, 0x8a, 0xb7, 0x8e, 0x0b, 0xbb, 0xf6, 0xbd, 0xb0, + 0xef, 0xa9, 0x9b, 0x79, 0xdc, 0x77, 0x09, 0xf5, 0x32, 0x2c, 0x52, 0x77, 0x0f, 0x12, 0x1c, 0x8d, + 0x77, 0x21, 0x9a, 0x14, 0xf6, 0x75, 0xc5, 0x53, 0xa9, 0x4e, 0xa0, 0x19, 0xdb, 0x8b, 0xbf, 0x3e, + 0xda, 0xc8, 0xf9, 0xba, 0x64, 0xd4, 0x0f, 0xa4, 0x97, 0xe6, 0x07, 0x64, 0x98, 0x31, 0xe4, 0x34, + 0x0b, 0x23, 0x06, 0x58, 0x10, 0x9a, 0x87, 0x3d, 0x80, 0x06, 0x6a, 0x2d, 0xb4, 0xaf, 0x3d, 0x5a, + 0x75, 0xf5, 0x63, 0xcb, 0xe7, 0x55, 0xd6, 0xba, 0x3e, 0x25, 0x79, 0x67, 0xbf, 0x2c, 0x63, 0x52, + 0xd8, 0xab, 0xea, 0x9e, 0xcb, 0x08, 0xe7, 0xd3, 0x0f, 0xbb, 0x9d, 0x10, 0x91, 0x8e, 0xba, 0x6e, + 0x44, 0x33, 0x6d, 0x9b, 0xfe, 0xd9, 0xe0, 0x71, 0xdf, 0x13, 0xe3, 0x21, 0x70, 0x49, 0xe3, 0xc1, + 0x2d, 0x09, 0xf0, 0x75, 0xfe, 0x53, 0x00, 0xb3, 0x67, 0x34, 0x2f, 0x40, 0x13, 0xcc, 0xc3, 0x88, + 0xe6, 0x7c, 0x94, 0x81, 0xf4, 0x62, 0xb1, 0xb3, 0x7e, 0x5c, 0xd8, 0x68, 0x52, 0xd8, 0x6b, 0x57, + 0x16, 0x31, 0xa3, 0x77, 0x82, 0x95, 0x73, 0x17, 0x3c, 0xc3, 0xdc, 0x57, 0x11, 0xf3, 0x0d, 0x32, + 0xee, 0x74, 0x47, 0x64, 0x10, 0x03, 0x2b, 0xe5, 0x59, 0x46, 0x38, 0x27, 0x34, 0x6f, 0x2c, 0x48, + 0xb7, 0x9f, 0xff, 0x9b, 0xdb, 0x4d, 0x55, 0xc0, 0x15, 0x1c, 0xe7, 0xcb, 0xe7, 0x0d, 0x43, 0xbb, + 0xb8, 0x0b, 0x51, 0x60, 0x56, 0x1a, 0x7f, 0x2a, 0x31, 0x5f, 0x1b, 0xd3, 0xd3, 0x50, 0xb7, 0x1d, + 0x78, 0x63, 0x51, 0xb6, 0x60, 0xc3, 0x9d, 0x37, 0xe6, 0xee, 0x85, 0xd9, 0xea, 0xac, 0x9d, 0x6f, + 0xcb, 0x65, 0xac, 0x13, 0xdc, 0xae, 0x0e, 0x77, 0xaa, 0x33, 0x73, 0xc7, 0x78, 0xd0, 0x63, 0x00, + 0x61, 0x46, 0x72, 0x11, 0x1e, 0xa5, 0x44, 0xc0, 0x80, 0x70, 0x31, 0x53, 0xcb, 0x52, 0x6b, 0xa1, + 0xbd, 0x1c, 0x34, 0x4b, 0xd1, 0x3e, 0xc9, 0xc5, 0x61, 0x25, 0xf9, 0x83, 0x78, 0x8b, 0x8c, 0x26, + 0x17, 0xb8, 0x0f, 0x31, 0xa3, 0xc3, 0x30, 0x4a, 0x31, 0x4b, 0x20, 0x1c, 0x02, 0x0b, 0xbb, 0x03, + 0x1a, 0xf5, 0x1b, 0xf5, 0x16, 0x9a, 0x3f, 0x4f, 0xeb, 0xba, 0x70, 0xdd, 0xca, 0xbf, 0xa3, 0x9c, + 0x60, 0x65, 0x1a, 0xf4, 0x65, 0xec, 0x00, 0x58, 0xa7, 0x8c, 0x74, 0x82, 0xe3, 0x53, 0x0b, 0x9d, + 0x9c, 0x5a, 0xe8, 0xe7, 0xa9, 0x85, 0xde, 0x9d, 0x59, 0xb5, 0x93, 0x33, 0xab, 0xf6, 0xed, 0xcc, + 0xaa, 0xbd, 0x78, 0x32, 0x33, 0x88, 0x7e, 0x4a, 0xd2, 0x11, 0x4e, 0x47, 0xd8, 0x4f, 0x31, 0xc9, + 0xbd, 0xa8, 0xda, 0x7a, 0xaf, 0xce, 0x7f, 0x15, 0xe4, 0x78, 0x76, 0xeb, 0xf2, 0x7f, 0xfc, 0xf8, + 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0xea, 0xc0, 0x1d, 0x99, 0x04, 0x00, 0x00, } func (this *WeightedAddress) Equal(that interface{}) bool { @@ -284,6 +295,16 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.StakedropChargePerBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintParams(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 if len(m.FreeMintWhitelistAddresses) > 0 { for iNdEx := len(m.FreeMintWhitelistAddresses) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.FreeMintWhitelistAddresses[iNdEx]) @@ -394,6 +415,8 @@ func (m *Params) Size() (n int) { n += 1 + l + sovParams(uint64(l)) } } + l = m.StakedropChargePerBlock.Size() + n += 1 + l + sovParams(uint64(l)) return n } @@ -701,6 +724,39 @@ func (m *Params) Unmarshal(dAtA []byte) error { } m.FreeMintWhitelistAddresses = append(m.FreeMintWhitelistAddresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StakedropChargePerBlock", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthParams + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StakedropChargePerBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipParams(dAtA[iNdEx:]) From d6d7ed1a99bfee9b2d670fd0be5a90a390680fd3 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Tue, 22 Oct 2024 17:50:59 +0200 Subject: [PATCH 02/23] Stakedrop creation implementation in progress --- .../tokenfactory/v1beta1/stakedrop.proto | 23 + proto/osmosis/tokenfactory/v1beta1/tx.proto | 15 + x/tokenfactory/keeper/createstakedrop.go | 69 +++ x/tokenfactory/keeper/keeper.go | 48 +- x/tokenfactory/types/errors.go | 2 + x/tokenfactory/types/keys.go | 8 + x/tokenfactory/types/stakedrop.pb.go | 453 ++++++++++++++ x/tokenfactory/types/tx.pb.go | 565 +++++++++++++++--- 8 files changed, 1106 insertions(+), 77 deletions(-) create mode 100644 proto/osmosis/tokenfactory/v1beta1/stakedrop.proto create mode 100644 x/tokenfactory/keeper/createstakedrop.go create mode 100644 x/tokenfactory/types/stakedrop.pb.go diff --git a/proto/osmosis/tokenfactory/v1beta1/stakedrop.proto b/proto/osmosis/tokenfactory/v1beta1/stakedrop.proto new file mode 100644 index 0000000..ad309cd --- /dev/null +++ b/proto/osmosis/tokenfactory/v1beta1/stakedrop.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; +package osmosis.tokenfactory.v1beta1; + +import "gogoproto/gogo.proto"; +import "cosmos/base/v1beta1/coin.proto"; + +option go_package = "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types"; + + +message Stakedrop { + + cosmos.base.v1beta1.Coin amount = 1 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false + ]; + cosmos.base.v1beta1.Coin amount_per_block = 2 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false + ]; + + int64 start_block = 3; + int64 end_block = 4; +} \ No newline at end of file diff --git a/proto/osmosis/tokenfactory/v1beta1/tx.proto b/proto/osmosis/tokenfactory/v1beta1/tx.proto index 18c9dc9..8c2c390 100755 --- a/proto/osmosis/tokenfactory/v1beta1/tx.proto +++ b/proto/osmosis/tokenfactory/v1beta1/tx.proto @@ -50,6 +50,21 @@ message MsgCreateDenomResponse { string new_token_denom = 1 [ (gogoproto.moretags) = "yaml:\"new_token_denom\"" ]; } +// It allows the creator (sender) of a denom to launch a stakedrop to chain delegators +//between block 'startBlock' and 'endBlock' +message MsgCreateStakeDrop { + option (cosmos.msg.v1.signer) = "sender"; + + string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; + //amount to stakedrop + cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.moretags) = "yaml:\"amount\""]; + + int64 start_block = 4; + int64 end_block = 5; +} + +message MsgCreateStakeDropResponse {} + // MsgMint is the sdk.Msg type for allowing an admin account to mint // more of a token. For now, we only support minting to the sender account diff --git a/x/tokenfactory/keeper/createstakedrop.go b/x/tokenfactory/keeper/createstakedrop.go new file mode 100644 index 0000000..ae85a5d --- /dev/null +++ b/x/tokenfactory/keeper/createstakedrop.go @@ -0,0 +1,69 @@ +package keeper + +import ( + "cosmossdk.io/math" + "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k Keeper) CreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) error { + denom, err := k.validateCreateStakedrop(ctx, creatorAddr, amount, startBlock, endBlock) + if err != nil { + return err + } + + err = k.chargeForCreateStakedrop(ctx, creatorAddr, startBlock, endBlock) + if err != nil { + return err + } + + err = k.createStakedropAfterValidation(ctx, creatorAddr, denom) + return err +} + +func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, startBlock uint64, endBlock uint64) error { + +} + +func (k Keeper) validateCreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) (string, error) { + //verify sender has created a subdenom (amount.Denom) + denom, err := types.GetTokenDenom(creatorAddr, amount.Denom) + if err != nil { + return "", err + } + _, found := k.bankKeeper.GetDenomMetaData(ctx, denom) + if !found { + return "", types.ErrDenomDoesNotExist + } + + if ctx.BlockHeight() > int64(startBlock) || startBlock >= endBlock { + return "", types.ErrBadBlockParameters + } + + return denom, nil +} + +func (k Keeper) chargeForCreateStakedrop(ctx sdk.Context, creatorAddr string, startBlock uint64, endBlock uint64) (err error) { + params := k.GetParams(ctx) + + // if StakedropChargePerBlock is non-zero, transfer the tokens from the creator + // account to community pool + if params.StakedropChargePerBlock.Amount.GT(math.NewInt(0)) { + accAddr, err := sdk.AccAddressFromBech32(creatorAddr) + if err != nil { + return err + } + charge := params.StakedropChargePerBlock.Amount.Mul(math.NewIntFromUint64(endBlock - startBlock)) + + if err := k.communityPoolKeeper.FundCommunityPool(ctx, sdk.NewCoins(sdk.NewCoin(params.StakedropChargePerBlock.Denom, charge)), accAddr); err != nil { + return err + } + } + + // if DenomCreationGasConsume is non-zero, consume the gas + if params.DenomCreationGasConsume != 0 { + ctx.GasMeter().ConsumeGas(params.DenomCreationGasConsume, "consume denom creation gas") + } + + return nil +} diff --git a/x/tokenfactory/keeper/keeper.go b/x/tokenfactory/keeper/keeper.go index 1ebecbf..09a68c5 100644 --- a/x/tokenfactory/keeper/keeper.go +++ b/x/tokenfactory/keeper/keeper.go @@ -3,6 +3,9 @@ package keeper import ( "fmt" + "cosmossdk.io/collections" + "cosmossdk.io/collections/indexes" + "cosmossdk.io/core/store" "cosmossdk.io/log" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" @@ -15,8 +18,9 @@ import ( type ( Keeper struct { - cdc codec.BinaryCodec - storeKey storetypes.StoreKey + cdc codec.BinaryCodec + storeKey storetypes.StoreKey + storeService store.KVStoreService accountKeeper types.AccountKeeper bankKeeper types.BankKeeper @@ -26,32 +30,60 @@ type ( // the address capable of executing a MsgUpdateParams message. Typically, this // should be the x/gov module account. - authority string + authority string + AirdropSequence collections.Sequence + ActiveAirdrop *collections.IndexedMap[collections.Pair[uint64, uint64], types.Stakedrop, StakedropIndexes] + FeeCollectorName string } ) +type StakedropIndexes struct { + StakedropByDenom *indexes.Multi[string, collections.Pair[uint64, uint64], types.Stakedrop] +} + +func (stkdIndexes StakedropIndexes) IndexesList() []collections.Index[collections.Pair[uint64, uint64], types.Stakedrop] { + return []collections.Index[collections.Pair[uint64, uint64], types.Stakedrop]{stkdIndexes.StakedropByDenom} +} + // NewKeeper returns a new instance of the x/tokenfactory keeper func NewKeeper( cdc codec.BinaryCodec, storeKey storetypes.StoreKey, + storeService store.KVStoreService, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, communityPoolKeeper types.CommunityPoolKeeper, enabledCapabilities []string, + feeCollectorName string, authority string, ) Keeper { - return Keeper{ - cdc: cdc, - storeKey: storeKey, - + sb := collections.NewSchemaBuilder(storeService) + k := Keeper{ + cdc: cdc, + storeKey: storeKey, + storeService: storeService, accountKeeper: accountKeeper, bankKeeper: bankKeeper, communityPoolKeeper: communityPoolKeeper, enabledCapabilities: enabledCapabilities, - authority: authority, + authority: authority, + FeeCollectorName: feeCollectorName, + AirdropSequence: collections.NewSequence(sb, types.AirdropSequenceKey, "airdrop_sequence"), + ActiveAirdrop: collections.NewIndexedMap(sb, types.ActiveStakedropPrefix, "active_airdrop", collections.PairKeyCodec(collections.Uint64Key, collections.Uint64Key), codec.CollValue[types.Stakedrop](cdc), + StakedropIndexes{ + StakedropByDenom: indexes.NewMulti(sb, types.StakedropIndexKey, "stakedrop_by_denom", collections.StringKey, collections.PairKeyCodec(collections.Uint64Key, collections.Uint64Key), func(pk collections.Pair[uint64, uint64], value types.Stakedrop) (string, error) { + return value.Amount.Denom, nil + }), + }), + } + _, err := sb.Build() + if err != nil { + panic(err) } + + return k } // GetAuthority returns the x/mint module's authority. diff --git a/x/tokenfactory/types/errors.go b/x/tokenfactory/types/errors.go index 27cf026..e9418b6 100644 --- a/x/tokenfactory/types/errors.go +++ b/x/tokenfactory/types/errors.go @@ -22,4 +22,6 @@ var ( ErrBurnOrForceTransferFromModuleAccount = errorsmod.Register(ModuleName, 11, "burning or force transfer from Module Account is not allowed") ErrBurnOrForceTransferFromBuilderAccount = errorsmod.Register(ModuleName, 12, "burning or force transfer from Builder Account is not allowed") ErrCapabilityNotEnabled = errorsmod.Register(ModuleName, 13, "this capability is not enabled on chain") + ErrBadBlockParameters = errorsmod.Register(ModuleName, 14, "Bad block range, end block should be greater than start block") + ErrBadBlockHeight = errorsmod.Register(ModuleName, 15, "Bad block range, chain height is greater than start block") ) diff --git a/x/tokenfactory/types/keys.go b/x/tokenfactory/types/keys.go index bb52b5d..ad48ad3 100644 --- a/x/tokenfactory/types/keys.go +++ b/x/tokenfactory/types/keys.go @@ -2,10 +2,18 @@ package types import ( "strings" + + "cosmossdk.io/collections" ) var ParamsKey = []byte{0x00} +var ( + ActiveStakedropPrefix = collections.NewPrefix(10) + AirdropSequenceKey = collections.NewPrefix(11) + StakedropIndexKey = collections.NewPrefix(12) +) + const ( // ModuleName defines the module name ModuleName = "tokenfactory" diff --git a/x/tokenfactory/types/stakedrop.pb.go b/x/tokenfactory/types/stakedrop.pb.go new file mode 100644 index 0000000..a201a8c --- /dev/null +++ b/x/tokenfactory/types/stakedrop.pb.go @@ -0,0 +1,453 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: osmosis/tokenfactory/v1beta1/stakedrop.proto + +package types + +import ( + fmt "fmt" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type Stakedrop struct { + Amount types.Coin `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount" yaml:"amount"` + AmountPerBlock types.Coin `protobuf:"bytes,2,opt,name=amount_per_block,json=amountPerBlock,proto3" json:"amount_per_block" yaml:"amount"` + StartBlock int64 `protobuf:"varint,3,opt,name=start_block,json=startBlock,proto3" json:"start_block,omitempty"` + EndBlock int64 `protobuf:"varint,4,opt,name=end_block,json=endBlock,proto3" json:"end_block,omitempty"` +} + +func (m *Stakedrop) Reset() { *m = Stakedrop{} } +func (m *Stakedrop) String() string { return proto.CompactTextString(m) } +func (*Stakedrop) ProtoMessage() {} +func (*Stakedrop) Descriptor() ([]byte, []int) { + return fileDescriptor_cd4240998049b2c8, []int{0} +} +func (m *Stakedrop) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Stakedrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Stakedrop.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Stakedrop) XXX_Merge(src proto.Message) { + xxx_messageInfo_Stakedrop.Merge(m, src) +} +func (m *Stakedrop) XXX_Size() int { + return m.Size() +} +func (m *Stakedrop) XXX_DiscardUnknown() { + xxx_messageInfo_Stakedrop.DiscardUnknown(m) +} + +var xxx_messageInfo_Stakedrop proto.InternalMessageInfo + +func (m *Stakedrop) GetAmount() types.Coin { + if m != nil { + return m.Amount + } + return types.Coin{} +} + +func (m *Stakedrop) GetAmountPerBlock() types.Coin { + if m != nil { + return m.AmountPerBlock + } + return types.Coin{} +} + +func (m *Stakedrop) GetStartBlock() int64 { + if m != nil { + return m.StartBlock + } + return 0 +} + +func (m *Stakedrop) GetEndBlock() int64 { + if m != nil { + return m.EndBlock + } + return 0 +} + +func init() { + proto.RegisterType((*Stakedrop)(nil), "osmosis.tokenfactory.v1beta1.Stakedrop") +} + +func init() { + proto.RegisterFile("osmosis/tokenfactory/v1beta1/stakedrop.proto", fileDescriptor_cd4240998049b2c8) +} + +var fileDescriptor_cd4240998049b2c8 = []byte{ + // 308 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x91, 0xb1, 0x4e, 0x02, 0x31, + 0x18, 0xc7, 0xaf, 0x62, 0x88, 0x94, 0x68, 0xcc, 0x45, 0x13, 0x44, 0x53, 0x08, 0x13, 0x83, 0x69, + 0x83, 0x2e, 0xc6, 0x11, 0x16, 0x47, 0x83, 0x1b, 0x0b, 0xe9, 0x95, 0xca, 0x35, 0x70, 0xfd, 0x2e, + 0x6d, 0xcf, 0xc8, 0x5b, 0xf8, 0x58, 0x8c, 0x8c, 0x4e, 0xc4, 0xc0, 0x03, 0x98, 0xf8, 0x04, 0x86, + 0xf6, 0x30, 0xba, 0xba, 0x7d, 0xed, 0xff, 0xf7, 0xfb, 0x7f, 0x49, 0x8b, 0xaf, 0xc1, 0x66, 0x60, + 0x95, 0x65, 0x0e, 0x66, 0x52, 0x3f, 0x73, 0xe1, 0xc0, 0x2c, 0xd8, 0x4b, 0x2f, 0x91, 0x8e, 0xf7, + 0x98, 0x75, 0x7c, 0x26, 0x27, 0x06, 0x72, 0x9a, 0x1b, 0x70, 0x10, 0x5f, 0x95, 0x34, 0xfd, 0x4d, + 0xd3, 0x92, 0x6e, 0x9e, 0x4d, 0x61, 0x0a, 0x1e, 0x64, 0xbb, 0x29, 0x38, 0x4d, 0x22, 0xbc, 0xc4, + 0x12, 0x6e, 0xe5, 0x4f, 0xb1, 0x00, 0xa5, 0x43, 0xde, 0xf9, 0x44, 0xb8, 0xf6, 0xb4, 0xdf, 0x13, + 0x3f, 0xe0, 0x2a, 0xcf, 0xa0, 0xd0, 0xae, 0x81, 0xda, 0xa8, 0x5b, 0xbf, 0xb9, 0xa0, 0x41, 0xa7, + 0x3b, 0x7d, 0xbf, 0x89, 0x0e, 0x40, 0xe9, 0xfe, 0xf9, 0x72, 0xdd, 0x8a, 0xbe, 0xd6, 0xad, 0xe3, + 0x05, 0xcf, 0xe6, 0xf7, 0x9d, 0xa0, 0x75, 0x86, 0xa5, 0x1f, 0x8f, 0xf0, 0x69, 0x98, 0xc6, 0xb9, + 0x34, 0xe3, 0x64, 0x0e, 0x62, 0xd6, 0x38, 0xf8, 0x67, 0xe7, 0x49, 0x18, 0x1e, 0xa5, 0xe9, 0xef, + 0x7a, 0xe2, 0x16, 0xae, 0x5b, 0xc7, 0x8d, 0x2b, 0x6b, 0x2b, 0x6d, 0xd4, 0xad, 0x0c, 0xb1, 0xbf, + 0x0a, 0xc0, 0x25, 0xae, 0x49, 0x3d, 0x29, 0xe3, 0x43, 0x1f, 0x1f, 0x49, 0x3d, 0xf1, 0x61, 0x7f, + 0xb8, 0xdc, 0x10, 0xb4, 0xda, 0x10, 0xf4, 0xb1, 0x21, 0xe8, 0x6d, 0x4b, 0xa2, 0xd5, 0x96, 0x44, + 0xef, 0x5b, 0x12, 0x8d, 0xee, 0xa6, 0xca, 0xa5, 0x45, 0x42, 0x05, 0x64, 0x6c, 0x90, 0xaa, 0xb4, + 0xe0, 0x69, 0xc1, 0x07, 0x29, 0x57, 0x9a, 0x89, 0xfd, 0x91, 0xbd, 0xfe, 0xfd, 0x2b, 0xb7, 0xc8, + 0xa5, 0x4d, 0xaa, 0xfe, 0x31, 0x6f, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x86, 0xdc, 0xbd, 0x73, + 0xd0, 0x01, 0x00, 0x00, +} + +func (m *Stakedrop) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Stakedrop) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Stakedrop) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.EndBlock != 0 { + i = encodeVarintStakedrop(dAtA, i, uint64(m.EndBlock)) + i-- + dAtA[i] = 0x20 + } + if m.StartBlock != 0 { + i = encodeVarintStakedrop(dAtA, i, uint64(m.StartBlock)) + i-- + dAtA[i] = 0x18 + } + { + size, err := m.AmountPerBlock.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStakedrop(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStakedrop(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintStakedrop(dAtA []byte, offset int, v uint64) int { + offset -= sovStakedrop(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Stakedrop) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovStakedrop(uint64(l)) + l = m.AmountPerBlock.Size() + n += 1 + l + sovStakedrop(uint64(l)) + if m.StartBlock != 0 { + n += 1 + sovStakedrop(uint64(m.StartBlock)) + } + if m.EndBlock != 0 { + n += 1 + sovStakedrop(uint64(m.EndBlock)) + } + return n +} + +func sovStakedrop(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozStakedrop(x uint64) (n int) { + return sovStakedrop(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Stakedrop) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStakedrop + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Stakedrop: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Stakedrop: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStakedrop + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthStakedrop + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStakedrop + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountPerBlock", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStakedrop + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthStakedrop + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStakedrop + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AmountPerBlock.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StartBlock", wireType) + } + m.StartBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStakedrop + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.StartBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EndBlock", wireType) + } + m.EndBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStakedrop + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EndBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipStakedrop(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthStakedrop + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipStakedrop(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowStakedrop + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowStakedrop + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowStakedrop + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthStakedrop + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupStakedrop + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthStakedrop + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthStakedrop = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowStakedrop = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupStakedrop = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenfactory/types/tx.pb.go b/x/tokenfactory/types/tx.pb.go index 2c8ffd6..741af61 100644 --- a/x/tokenfactory/types/tx.pb.go +++ b/x/tokenfactory/types/tx.pb.go @@ -140,6 +140,113 @@ func (m *MsgCreateDenomResponse) GetNewTokenDenom() string { return "" } +// It allows the creator (sender) of a denom to launch a stakedrop to chain delegators +// between block 'startBlock' and 'endBlock' +type MsgCreateStakeDrop struct { + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` + //amount to stakedrop + Amount *types.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty" yaml:"amount"` + StartBlock int64 `protobuf:"varint,4,opt,name=start_block,json=startBlock,proto3" json:"start_block,omitempty"` + EndBlock int64 `protobuf:"varint,5,opt,name=end_block,json=endBlock,proto3" json:"end_block,omitempty"` +} + +func (m *MsgCreateStakeDrop) Reset() { *m = MsgCreateStakeDrop{} } +func (m *MsgCreateStakeDrop) String() string { return proto.CompactTextString(m) } +func (*MsgCreateStakeDrop) ProtoMessage() {} +func (*MsgCreateStakeDrop) Descriptor() ([]byte, []int) { + return fileDescriptor_283b6c9a90a846b4, []int{2} +} +func (m *MsgCreateStakeDrop) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateStakeDrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateStakeDrop.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateStakeDrop) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateStakeDrop.Merge(m, src) +} +func (m *MsgCreateStakeDrop) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateStakeDrop) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateStakeDrop.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateStakeDrop proto.InternalMessageInfo + +func (m *MsgCreateStakeDrop) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +func (m *MsgCreateStakeDrop) GetAmount() *types.Coin { + if m != nil { + return m.Amount + } + return nil +} + +func (m *MsgCreateStakeDrop) GetStartBlock() int64 { + if m != nil { + return m.StartBlock + } + return 0 +} + +func (m *MsgCreateStakeDrop) GetEndBlock() int64 { + if m != nil { + return m.EndBlock + } + return 0 +} + +type MsgCreateStakeDropResponse struct { +} + +func (m *MsgCreateStakeDropResponse) Reset() { *m = MsgCreateStakeDropResponse{} } +func (m *MsgCreateStakeDropResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateStakeDropResponse) ProtoMessage() {} +func (*MsgCreateStakeDropResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_283b6c9a90a846b4, []int{3} +} +func (m *MsgCreateStakeDropResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateStakeDropResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateStakeDropResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCreateStakeDropResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateStakeDropResponse.Merge(m, src) +} +func (m *MsgCreateStakeDropResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateStakeDropResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateStakeDropResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateStakeDropResponse proto.InternalMessageInfo + // MsgMint is the sdk.Msg type for allowing an admin account to mint // more of a token. For now, we only support minting to the sender account type MsgMint struct { @@ -152,7 +259,7 @@ func (m *MsgMint) Reset() { *m = MsgMint{} } func (m *MsgMint) String() string { return proto.CompactTextString(m) } func (*MsgMint) ProtoMessage() {} func (*MsgMint) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{2} + return fileDescriptor_283b6c9a90a846b4, []int{4} } func (m *MsgMint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -209,7 +316,7 @@ func (m *MsgMintResponse) Reset() { *m = MsgMintResponse{} } func (m *MsgMintResponse) String() string { return proto.CompactTextString(m) } func (*MsgMintResponse) ProtoMessage() {} func (*MsgMintResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{3} + return fileDescriptor_283b6c9a90a846b4, []int{5} } func (m *MsgMintResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -250,7 +357,7 @@ func (m *MsgBurn) Reset() { *m = MsgBurn{} } func (m *MsgBurn) String() string { return proto.CompactTextString(m) } func (*MsgBurn) ProtoMessage() {} func (*MsgBurn) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{4} + return fileDescriptor_283b6c9a90a846b4, []int{6} } func (m *MsgBurn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -307,7 +414,7 @@ func (m *MsgBurnResponse) Reset() { *m = MsgBurnResponse{} } func (m *MsgBurnResponse) String() string { return proto.CompactTextString(m) } func (*MsgBurnResponse) ProtoMessage() {} func (*MsgBurnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{5} + return fileDescriptor_283b6c9a90a846b4, []int{7} } func (m *MsgBurnResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -348,7 +455,7 @@ func (m *MsgChangeAdmin) Reset() { *m = MsgChangeAdmin{} } func (m *MsgChangeAdmin) String() string { return proto.CompactTextString(m) } func (*MsgChangeAdmin) ProtoMessage() {} func (*MsgChangeAdmin) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{6} + return fileDescriptor_283b6c9a90a846b4, []int{8} } func (m *MsgChangeAdmin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -407,7 +514,7 @@ func (m *MsgChangeAdminResponse) Reset() { *m = MsgChangeAdminResponse{} func (m *MsgChangeAdminResponse) String() string { return proto.CompactTextString(m) } func (*MsgChangeAdminResponse) ProtoMessage() {} func (*MsgChangeAdminResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{7} + return fileDescriptor_283b6c9a90a846b4, []int{9} } func (m *MsgChangeAdminResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -447,7 +554,7 @@ func (m *MsgSetDenomMetadata) Reset() { *m = MsgSetDenomMetadata{} } func (m *MsgSetDenomMetadata) String() string { return proto.CompactTextString(m) } func (*MsgSetDenomMetadata) ProtoMessage() {} func (*MsgSetDenomMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{8} + return fileDescriptor_283b6c9a90a846b4, []int{10} } func (m *MsgSetDenomMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -499,7 +606,7 @@ func (m *MsgSetDenomMetadataResponse) Reset() { *m = MsgSetDenomMetadata func (m *MsgSetDenomMetadataResponse) String() string { return proto.CompactTextString(m) } func (*MsgSetDenomMetadataResponse) ProtoMessage() {} func (*MsgSetDenomMetadataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{9} + return fileDescriptor_283b6c9a90a846b4, []int{11} } func (m *MsgSetDenomMetadataResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -539,7 +646,7 @@ func (m *MsgForceTransfer) Reset() { *m = MsgForceTransfer{} } func (m *MsgForceTransfer) String() string { return proto.CompactTextString(m) } func (*MsgForceTransfer) ProtoMessage() {} func (*MsgForceTransfer) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{10} + return fileDescriptor_283b6c9a90a846b4, []int{12} } func (m *MsgForceTransfer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -603,7 +710,7 @@ func (m *MsgForceTransferResponse) Reset() { *m = MsgForceTransferRespon func (m *MsgForceTransferResponse) String() string { return proto.CompactTextString(m) } func (*MsgForceTransferResponse) ProtoMessage() {} func (*MsgForceTransferResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{11} + return fileDescriptor_283b6c9a90a846b4, []int{13} } func (m *MsgForceTransferResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -648,7 +755,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParams) ProtoMessage() {} func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{12} + return fileDescriptor_283b6c9a90a846b4, []int{14} } func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -702,7 +809,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParamsResponse) ProtoMessage() {} func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_283b6c9a90a846b4, []int{13} + return fileDescriptor_283b6c9a90a846b4, []int{15} } func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -734,6 +841,8 @@ var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo func init() { proto.RegisterType((*MsgCreateDenom)(nil), "osmosis.tokenfactory.v1beta1.MsgCreateDenom") proto.RegisterType((*MsgCreateDenomResponse)(nil), "osmosis.tokenfactory.v1beta1.MsgCreateDenomResponse") + proto.RegisterType((*MsgCreateStakeDrop)(nil), "osmosis.tokenfactory.v1beta1.MsgCreateStakeDrop") + proto.RegisterType((*MsgCreateStakeDropResponse)(nil), "osmosis.tokenfactory.v1beta1.MsgCreateStakeDropResponse") proto.RegisterType((*MsgMint)(nil), "osmosis.tokenfactory.v1beta1.MsgMint") proto.RegisterType((*MsgMintResponse)(nil), "osmosis.tokenfactory.v1beta1.MsgMintResponse") proto.RegisterType((*MsgBurn)(nil), "osmosis.tokenfactory.v1beta1.MsgBurn") @@ -753,63 +862,68 @@ func init() { } var fileDescriptor_283b6c9a90a846b4 = []byte{ - // 889 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x4f, 0x8f, 0xdb, 0x44, - 0x14, 0x5f, 0xb7, 0x4b, 0xd8, 0x9d, 0x6d, 0x9a, 0xac, 0x77, 0xe9, 0x66, 0xcd, 0xd6, 0xae, 0x2c, - 0x8a, 0x28, 0xa2, 0xb6, 0x52, 0xa0, 0x82, 0x3d, 0x51, 0x07, 0xad, 0x38, 0x10, 0x09, 0xb9, 0xcb, - 0x05, 0x55, 0x8a, 0x26, 0xc9, 0xac, 0x63, 0x2d, 0x9e, 0x09, 0x9e, 0x71, 0xd3, 0xdc, 0x10, 0x9f, - 0x80, 0x2b, 0x07, 0x0e, 0x88, 0x2f, 0xc0, 0x01, 0xf1, 0x19, 0x7a, 0x41, 0xaa, 0xe0, 0xc2, 0xc9, - 0x42, 0xbb, 0x07, 0xee, 0xfe, 0x04, 0xc8, 0x33, 0xe3, 0xbf, 0x59, 0x6d, 0x92, 0x53, 0x4f, 0x89, - 0xfd, 0x7e, 0xbf, 0xdf, 0xbc, 0xdf, 0x9b, 0x37, 0x6f, 0x0c, 0xee, 0x13, 0x1a, 0x10, 0xea, 0x53, - 0x9b, 0x91, 0x73, 0x84, 0xcf, 0xe0, 0x88, 0x91, 0x70, 0x6e, 0x3f, 0xef, 0x0e, 0x11, 0x83, 0x5d, - 0x9b, 0xbd, 0xb0, 0xa6, 0x21, 0x61, 0x44, 0x3d, 0x92, 0x30, 0xab, 0x0c, 0xb3, 0x24, 0x4c, 0xdb, - 0xf7, 0x88, 0x47, 0x38, 0xd0, 0x4e, 0xff, 0x09, 0x8e, 0xa6, 0x8f, 0x38, 0xc9, 0x1e, 0x42, 0x8a, - 0x72, 0xc5, 0x11, 0xf1, 0xf1, 0x42, 0x1c, 0x9f, 0xe7, 0xf1, 0xf4, 0x41, 0xc6, 0x1f, 0x5c, 0x9b, - 0xda, 0x14, 0x86, 0x30, 0xa0, 0x12, 0x7a, 0x20, 0xa5, 0x02, 0xea, 0xd9, 0xcf, 0xbb, 0xe9, 0x8f, - 0x0c, 0x1c, 0x8a, 0xc0, 0x40, 0x24, 0x27, 0x1e, 0x44, 0xc8, 0x9c, 0x83, 0xdb, 0x7d, 0xea, 0xf5, - 0x42, 0x04, 0x19, 0xfa, 0x1c, 0x61, 0x12, 0xa8, 0x0f, 0x40, 0x83, 0x22, 0x3c, 0x46, 0x61, 0x47, - 0xb9, 0xa7, 0xbc, 0xb7, 0xed, 0xec, 0x26, 0xb1, 0xd1, 0x9c, 0xc3, 0xe0, 0xdb, 0x63, 0x53, 0xbc, - 0x37, 0x5d, 0x09, 0x50, 0x6d, 0xb0, 0x45, 0xa3, 0xe1, 0x38, 0xa5, 0x75, 0x6e, 0x70, 0xf0, 0x5e, - 0x12, 0x1b, 0x2d, 0x09, 0x96, 0x11, 0xd3, 0xcd, 0x41, 0xc7, 0x3b, 0x3f, 0xfc, 0xf7, 0xdb, 0xfb, - 0x92, 0x6d, 0x3e, 0x03, 0x77, 0xaa, 0x4b, 0xbb, 0x88, 0x4e, 0x09, 0xa6, 0x48, 0x75, 0x40, 0x0b, - 0xa3, 0xd9, 0x80, 0x3b, 0x1e, 0x08, 0x79, 0x91, 0x8b, 0x96, 0xc4, 0xc6, 0x1d, 0x21, 0x5f, 0x03, - 0x98, 0x6e, 0x13, 0xa3, 0xd9, 0x69, 0xfa, 0x82, 0x6b, 0x99, 0x7f, 0x2a, 0xe0, 0xcd, 0x3e, 0xf5, - 0xfa, 0x3e, 0x66, 0xeb, 0x58, 0xfa, 0x02, 0x34, 0x60, 0x40, 0x22, 0xcc, 0xb8, 0xa1, 0x9d, 0x47, - 0x87, 0x96, 0x2c, 0x57, 0xba, 0x7f, 0xd9, 0x56, 0x5b, 0x3d, 0xe2, 0x63, 0xe7, 0xad, 0x97, 0xb1, - 0xb1, 0x51, 0x28, 0x09, 0x9a, 0xe9, 0x4a, 0xbe, 0xfa, 0x19, 0x68, 0x06, 0x3e, 0x66, 0xa7, 0xe4, - 0xc9, 0x78, 0x1c, 0x22, 0x4a, 0x3b, 0x37, 0xeb, 0x16, 0xd2, 0xf0, 0x80, 0x91, 0x01, 0x14, 0x00, - 0xd3, 0xad, 0x12, 0xaa, 0xd5, 0xda, 0x05, 0x2d, 0x69, 0x27, 0x2b, 0x93, 0xf9, 0xb7, 0xb0, 0xe8, - 0x44, 0x21, 0x7e, 0x3d, 0x16, 0x4f, 0x40, 0x6b, 0x18, 0x85, 0xf8, 0x24, 0x24, 0x41, 0xd5, 0xe4, - 0x51, 0x12, 0x1b, 0x1d, 0xc1, 0x49, 0x01, 0x83, 0xb3, 0x90, 0x04, 0x85, 0xcd, 0x3a, 0xe9, 0x2a, - 0xa3, 0xa9, 0xa9, 0xdc, 0xe8, 0xaf, 0x8a, 0xe8, 0xd2, 0x09, 0xc4, 0x1e, 0x7a, 0x32, 0x0e, 0xfc, - 0xb5, 0xfc, 0xbe, 0x0b, 0xde, 0x28, 0xb7, 0x68, 0x3b, 0x89, 0x8d, 0x5b, 0x02, 0x29, 0x3b, 0x47, - 0x84, 0xd5, 0x2e, 0xd8, 0x4e, 0x9b, 0x0a, 0xa6, 0xfa, 0xd2, 0xc7, 0x7e, 0x12, 0x1b, 0xed, 0xa2, - 0xdf, 0x78, 0xc8, 0x74, 0xb7, 0x30, 0x9a, 0xf1, 0x2c, 0xaa, 0x89, 0x77, 0x44, 0x3f, 0x17, 0x49, - 0xe6, 0xf9, 0xff, 0xa2, 0x80, 0xbd, 0x3e, 0xf5, 0x9e, 0x22, 0xc6, 0x7b, 0xb3, 0x8f, 0x18, 0x1c, - 0x43, 0x06, 0xd7, 0x31, 0xe1, 0x82, 0xad, 0x40, 0xd2, 0xe4, 0xb6, 0xdd, 0x2d, 0xb6, 0x0d, 0x9f, - 0xe7, 0xdb, 0x96, 0x69, 0x3b, 0x07, 0x72, 0xeb, 0xe4, 0x69, 0xcc, 0xc8, 0xa6, 0x9b, 0xeb, 0x54, - 0xb3, 0xbf, 0x0b, 0xde, 0xbe, 0x22, 0xc5, 0xdc, 0xc2, 0x1f, 0x37, 0x40, 0xbb, 0x4f, 0xbd, 0x13, - 0x12, 0x8e, 0xd0, 0x69, 0x08, 0x31, 0x3d, 0x43, 0xe1, 0xeb, 0x69, 0x3a, 0x17, 0xec, 0x31, 0x99, - 0xc0, 0x62, 0xe3, 0xdd, 0x4b, 0x62, 0xe3, 0x48, 0xf0, 0x32, 0x50, 0xad, 0xf9, 0xae, 0x22, 0xab, - 0x5f, 0x82, 0xdd, 0xec, 0x75, 0x71, 0x5e, 0x37, 0xb9, 0xa2, 0x9e, 0xc4, 0x86, 0x56, 0x53, 0x2c, - 0x9f, 0xd9, 0x45, 0x62, 0xb5, 0xae, 0x1a, 0xe8, 0xd4, 0xeb, 0x96, 0x17, 0xf5, 0x67, 0x85, 0xf7, - 0xfa, 0xd7, 0xd3, 0x31, 0x64, 0xe8, 0x2b, 0x3e, 0xca, 0xd5, 0xc7, 0x60, 0x1b, 0x46, 0x6c, 0x42, - 0x42, 0x9f, 0xcd, 0x65, 0x59, 0x3b, 0x7f, 0xfd, 0xfe, 0x70, 0x5f, 0x96, 0x4b, 0xae, 0xf1, 0x94, - 0x85, 0x3e, 0xf6, 0xdc, 0x02, 0xaa, 0x3a, 0xa0, 0x21, 0x2e, 0x03, 0x59, 0xe0, 0x77, 0xac, 0xeb, - 0x2e, 0x2b, 0x4b, 0xac, 0xe6, 0x6c, 0xa6, 0xb5, 0x76, 0x25, 0xf3, 0xf8, 0x76, 0x9a, 0x78, 0xa1, - 0x69, 0x1e, 0x82, 0x83, 0x5a, 0x7a, 0x59, 0xea, 0x8f, 0x7e, 0x6a, 0x80, 0x9b, 0x7d, 0xea, 0xa9, - 0xdf, 0x81, 0x9d, 0xf2, 0xe5, 0xf1, 0xc1, 0xf5, 0xab, 0x56, 0xe7, 0xbd, 0xf6, 0xd1, 0x3a, 0xe8, - 0xfc, 0x76, 0x78, 0x06, 0x36, 0xf9, 0x54, 0xbf, 0xbf, 0x94, 0x9d, 0xc2, 0xb4, 0x87, 0x2b, 0xc1, - 0xca, 0xea, 0x7c, 0xa0, 0x2e, 0x57, 0x4f, 0x61, 0x2b, 0xa8, 0x97, 0x27, 0x19, 0x2f, 0x57, 0x69, - 0x8a, 0xad, 0x50, 0xae, 0x02, 0xbd, 0x4a, 0xb9, 0x16, 0x87, 0x8f, 0xfa, 0xbd, 0x02, 0xda, 0x0b, - 0x93, 0xa7, 0xbb, 0x54, 0xaa, 0x4e, 0xd1, 0x3e, 0x5d, 0x9b, 0x92, 0xa7, 0x30, 0x03, 0xcd, 0xea, - 0xe0, 0xb0, 0x96, 0x6a, 0x55, 0xf0, 0xda, 0xe3, 0xf5, 0xf0, 0xf9, 0xc2, 0x0c, 0xdc, 0xaa, 0x1c, - 0xae, 0xe5, 0xbb, 0x55, 0x86, 0x6b, 0x1f, 0xaf, 0x05, 0xcf, 0x56, 0x75, 0xdc, 0x97, 0x17, 0xba, - 0xf2, 0xea, 0x42, 0x57, 0xfe, 0xbd, 0xd0, 0x95, 0x1f, 0x2f, 0xf5, 0x8d, 0x57, 0x97, 0xfa, 0xc6, - 0x3f, 0x97, 0xfa, 0xc6, 0x37, 0x9f, 0x78, 0x3e, 0x9b, 0x44, 0x43, 0x6b, 0x44, 0x02, 0xbb, 0x37, - 0xf1, 0x27, 0x11, 0x9c, 0x44, 0xb0, 0x37, 0x81, 0x3e, 0xb6, 0x47, 0xd9, 0xa3, 0xfd, 0xa2, 0xfa, - 0xa9, 0xc7, 0xe6, 0x53, 0x44, 0x87, 0x0d, 0xfe, 0xb9, 0xf6, 0xe1, 0xff, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x4c, 0xab, 0x43, 0x99, 0xaa, 0x0a, 0x00, 0x00, + // 961 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x41, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0x26, 0xa9, 0x49, 0x5e, 0x9a, 0x26, 0xd9, 0x84, 0xc6, 0xd9, 0xa6, 0xde, 0x68, 0x45, + 0x51, 0x8a, 0xa8, 0x57, 0x2e, 0x50, 0x41, 0x4e, 0xd4, 0x89, 0x22, 0x0e, 0x58, 0x42, 0x9b, 0x70, + 0x41, 0x95, 0xac, 0xb1, 0x77, 0xb2, 0x5e, 0xb9, 0x3b, 0x63, 0x66, 0xc6, 0x4d, 0x7d, 0x43, 0xfc, + 0x02, 0xae, 0x1c, 0x38, 0x20, 0xfe, 0x00, 0x07, 0xc4, 0x6f, 0xe8, 0x05, 0x29, 0x82, 0x0b, 0xa7, + 0x15, 0x4a, 0x0e, 0xdc, 0xfd, 0x0b, 0xd0, 0xce, 0xcc, 0xae, 0x77, 0xed, 0x10, 0xc7, 0xa7, 0x9e, + 0x92, 0x9d, 0xf7, 0x7d, 0xdf, 0xbc, 0xef, 0xcd, 0xbc, 0x37, 0x86, 0x47, 0x94, 0x47, 0x94, 0x87, + 0xdc, 0x15, 0xb4, 0x8b, 0xc9, 0x19, 0x6a, 0x0b, 0xca, 0x06, 0xee, 0xab, 0x5a, 0x0b, 0x0b, 0x54, + 0x73, 0xc5, 0xeb, 0x6a, 0x8f, 0x51, 0x41, 0xcd, 0x5d, 0x0d, 0xab, 0xe6, 0x61, 0x55, 0x0d, 0xb3, + 0xb6, 0x02, 0x1a, 0x50, 0x09, 0x74, 0x93, 0xff, 0x14, 0xc7, 0xaa, 0xb4, 0x25, 0xc9, 0x6d, 0x21, + 0x8e, 0x33, 0xc5, 0x36, 0x0d, 0xc9, 0x44, 0x9c, 0x74, 0xb3, 0x78, 0xf2, 0xa1, 0xe3, 0x8f, 0x6f, + 0x4c, 0xad, 0x87, 0x18, 0x8a, 0xb8, 0x86, 0x6e, 0x6b, 0xa9, 0x88, 0x07, 0xee, 0xab, 0x5a, 0xf2, + 0x47, 0x07, 0x76, 0x54, 0xa0, 0xa9, 0x92, 0x53, 0x1f, 0x2a, 0xe4, 0x0c, 0xe0, 0x5e, 0x83, 0x07, + 0x87, 0x0c, 0x23, 0x81, 0x8f, 0x30, 0xa1, 0x91, 0xf9, 0x18, 0x4a, 0x1c, 0x13, 0x1f, 0xb3, 0xb2, + 0xb1, 0x67, 0xec, 0x2f, 0xd7, 0x37, 0x86, 0xb1, 0xbd, 0x3a, 0x40, 0xd1, 0xcb, 0x03, 0x47, 0xad, + 0x3b, 0x9e, 0x06, 0x98, 0x2e, 0x2c, 0xf1, 0x7e, 0xcb, 0x4f, 0x68, 0xe5, 0x79, 0x09, 0xde, 0x1c, + 0xc6, 0xf6, 0x9a, 0x06, 0xeb, 0x88, 0xe3, 0x65, 0xa0, 0x83, 0x95, 0xef, 0xff, 0xfd, 0xf5, 0x03, + 0xcd, 0x76, 0x5e, 0xc0, 0xfd, 0xe2, 0xd6, 0x1e, 0xe6, 0x3d, 0x4a, 0x38, 0x36, 0xeb, 0xb0, 0x46, + 0xf0, 0x79, 0x53, 0x3a, 0x6e, 0x2a, 0x79, 0x95, 0x8b, 0x35, 0x8c, 0xed, 0xfb, 0x4a, 0x7e, 0x0c, + 0xe0, 0x78, 0xab, 0x04, 0x9f, 0x9f, 0x26, 0x0b, 0x52, 0xcb, 0xb9, 0x30, 0xc0, 0xcc, 0xe4, 0x4f, + 0x04, 0xea, 0xe2, 0x23, 0x46, 0x7b, 0xb3, 0xb8, 0x3b, 0x82, 0x12, 0x8a, 0x68, 0x9f, 0x88, 0xf2, + 0xc2, 0x9e, 0xb1, 0xbf, 0xf2, 0x74, 0xa7, 0xaa, 0x2b, 0x97, 0x1c, 0x65, 0x7a, 0xea, 0xd5, 0x43, + 0x1a, 0x92, 0xbc, 0x8a, 0xa2, 0x38, 0x9e, 0xe6, 0x9a, 0x36, 0xac, 0x70, 0x81, 0x98, 0x68, 0xb6, + 0x5e, 0xd2, 0x76, 0xb7, 0xbc, 0xb8, 0x67, 0xec, 0x2f, 0x78, 0x20, 0x97, 0xea, 0xc9, 0x8a, 0xf9, + 0x00, 0x96, 0x31, 0xf1, 0x75, 0xf8, 0x8e, 0x0c, 0x2f, 0x61, 0xe2, 0xcb, 0x60, 0xb1, 0x60, 0xbb, + 0x60, 0x4d, 0x3a, 0x4a, 0x8b, 0xe6, 0xfc, 0x61, 0xc0, 0x3b, 0x0d, 0x1e, 0x34, 0x42, 0x22, 0x66, + 0x71, 0xf9, 0x45, 0xe6, 0x72, 0x7e, 0x9a, 0xcb, 0x77, 0xdf, 0xc4, 0xf6, 0xdc, 0xff, 0x3b, 0xfd, + 0x1c, 0x56, 0xa3, 0x90, 0x88, 0x53, 0xfa, 0xdc, 0xf7, 0x19, 0xe6, 0x5c, 0x96, 0xad, 0x70, 0x66, + 0x49, 0xb8, 0x29, 0x68, 0x13, 0x29, 0x80, 0xe3, 0x15, 0x09, 0x45, 0xb7, 0x1b, 0xb0, 0xa6, 0xed, + 0x64, 0x16, 0xff, 0x52, 0x16, 0xeb, 0x7d, 0x46, 0xde, 0x8e, 0xc5, 0x63, 0x58, 0x6b, 0xf5, 0x19, + 0x39, 0x66, 0x34, 0x2a, 0x9a, 0xdc, 0x1d, 0xc6, 0x76, 0x59, 0x71, 0x12, 0x40, 0xf3, 0x8c, 0xd1, + 0x68, 0x64, 0x73, 0x9c, 0x74, 0x9d, 0xd1, 0xc4, 0x54, 0x66, 0xf4, 0x17, 0x43, 0xb5, 0x65, 0x07, + 0x91, 0x00, 0x3f, 0xf7, 0xa3, 0x70, 0x26, 0xbf, 0xef, 0xc3, 0x9d, 0x7c, 0x4f, 0xae, 0x0f, 0x63, + 0xfb, 0xae, 0x42, 0xea, 0x56, 0x51, 0x61, 0xb3, 0x06, 0xcb, 0x49, 0x17, 0xa1, 0x44, 0x5f, 0xfb, + 0xd8, 0x1a, 0xc6, 0xf6, 0xfa, 0xa8, 0xc1, 0x64, 0xc8, 0xf1, 0x96, 0x08, 0x3e, 0x97, 0x59, 0x14, + 0x13, 0x2f, 0xab, 0x06, 0x1e, 0x25, 0x99, 0xe5, 0xff, 0xb3, 0x01, 0x9b, 0x0d, 0x1e, 0x9c, 0x60, + 0x21, 0x9b, 0xb1, 0x81, 0x05, 0xf2, 0x91, 0x40, 0xb3, 0x98, 0xf0, 0x60, 0x29, 0xd2, 0x34, 0x7d, + 0x6c, 0x0f, 0x47, 0xc7, 0x46, 0xba, 0xd9, 0xb1, 0xa5, 0xda, 0xf5, 0x6d, 0x7d, 0x74, 0x7a, 0xfc, + 0xa4, 0x64, 0xc7, 0xcb, 0x74, 0x8a, 0xd9, 0x3f, 0x84, 0x07, 0xd7, 0xa4, 0x98, 0x59, 0xf8, 0x7d, + 0x1e, 0xd6, 0x1b, 0x3c, 0x38, 0xa6, 0xac, 0x8d, 0x4f, 0x19, 0x22, 0xfc, 0x0c, 0xb3, 0xb7, 0x73, + 0xe9, 0x3c, 0xd8, 0x14, 0x3a, 0x81, 0xc9, 0x8b, 0xb7, 0x37, 0x8c, 0xed, 0x5d, 0xc5, 0x4b, 0x41, + 0x63, 0x97, 0xef, 0x3a, 0xb2, 0xf9, 0x25, 0x6c, 0xa4, 0xcb, 0xa3, 0x7e, 0x5d, 0x94, 0x8a, 0x95, + 0x61, 0x6c, 0x5b, 0x63, 0x8a, 0xf9, 0x9e, 0x9d, 0x24, 0x16, 0xeb, 0x6a, 0x41, 0x79, 0xbc, 0x6e, + 0x59, 0x51, 0x7f, 0x32, 0xe4, 0x5d, 0xff, 0xba, 0xe7, 0x23, 0x81, 0xbf, 0x92, 0x6f, 0x97, 0xf9, + 0x0c, 0x96, 0x51, 0x5f, 0x74, 0x28, 0x0b, 0xc5, 0x40, 0x97, 0xb5, 0xfc, 0xe7, 0x6f, 0x4f, 0xb6, + 0x74, 0xb9, 0xf4, 0x1e, 0x27, 0x82, 0x85, 0x24, 0xf0, 0x46, 0x50, 0xb3, 0x0e, 0x25, 0xf5, 0xfa, + 0xe9, 0x02, 0xbf, 0x57, 0xbd, 0xe9, 0x75, 0xae, 0xaa, 0xdd, 0xea, 0x8b, 0x49, 0xad, 0x3d, 0xcd, + 0x3c, 0xb8, 0x97, 0x24, 0x3e, 0xd2, 0x74, 0x76, 0x60, 0x7b, 0x2c, 0xbd, 0x34, 0xf5, 0xa7, 0x3f, + 0x96, 0x60, 0xa1, 0xc1, 0x03, 0xf3, 0x5b, 0x58, 0xc9, 0xbf, 0x96, 0x1f, 0xde, 0xbc, 0x6b, 0xf1, + 0x81, 0xb3, 0x3e, 0x9e, 0x05, 0x9d, 0x3d, 0x87, 0x2f, 0x60, 0x51, 0x4e, 0xf5, 0x47, 0x53, 0xd9, + 0x09, 0xcc, 0x7a, 0x72, 0x2b, 0x58, 0x5e, 0x5d, 0x0e, 0xd4, 0xe9, 0xea, 0x09, 0xec, 0x16, 0xea, + 0xf9, 0x49, 0x26, 0xcb, 0x95, 0x9b, 0x62, 0xb7, 0x28, 0xd7, 0x08, 0x7d, 0x9b, 0x72, 0x4d, 0x0e, + 0x1f, 0xf3, 0x3b, 0x03, 0xd6, 0x27, 0x26, 0x4f, 0x6d, 0xaa, 0xd4, 0x38, 0xc5, 0xfa, 0x6c, 0x66, + 0x4a, 0x96, 0xc2, 0x39, 0xac, 0x16, 0x07, 0x47, 0x75, 0xaa, 0x56, 0x01, 0x6f, 0x3d, 0x9b, 0x0d, + 0x9f, 0x6d, 0x2c, 0xe0, 0x6e, 0xa1, 0xb9, 0xa6, 0x9f, 0x56, 0x1e, 0x6e, 0x7d, 0x32, 0x13, 0x3c, + 0xdd, 0xb5, 0xee, 0xbd, 0xb9, 0xac, 0x18, 0x17, 0x97, 0x15, 0xe3, 0x9f, 0xcb, 0x8a, 0xf1, 0xc3, + 0x55, 0x65, 0xee, 0xe2, 0xaa, 0x32, 0xf7, 0xf7, 0x55, 0x65, 0xee, 0x9b, 0x4f, 0x83, 0x50, 0x74, + 0xfa, 0xad, 0x6a, 0x9b, 0x46, 0xee, 0x61, 0x27, 0xec, 0xf4, 0x51, 0xa7, 0x8f, 0x0e, 0x3b, 0x28, + 0x24, 0x6e, 0x3b, 0xfd, 0x74, 0x5f, 0x17, 0x7f, 0xdb, 0x8a, 0x41, 0x0f, 0xf3, 0x56, 0x49, 0xfe, + 0x3e, 0xfd, 0xe8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x30, 0xc8, 0x97, 0x9b, 0x0b, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1183,6 +1297,81 @@ func (m *MsgCreateDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgCreateStakeDrop) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateStakeDrop) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateStakeDrop) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.EndBlock != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.EndBlock)) + i-- + dAtA[i] = 0x28 + } + if m.StartBlock != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.StartBlock)) + i-- + dAtA[i] = 0x20 + } + if m.Amount != nil { + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateStakeDropResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCreateStakeDropResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateStakeDropResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *MsgMint) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1634,6 +1823,38 @@ func (m *MsgCreateDenomResponse) Size() (n int) { return n } +func (m *MsgCreateStakeDrop) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Amount != nil { + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.StartBlock != 0 { + n += 1 + sovTx(uint64(m.StartBlock)) + } + if m.EndBlock != 0 { + n += 1 + sovTx(uint64(m.EndBlock)) + } + return n +} + +func (m *MsgCreateStakeDropResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgMint) Size() (n int) { if m == nil { return 0 @@ -2002,6 +2223,212 @@ func (m *MsgCreateDenomResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgCreateStakeDrop) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateStakeDrop: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateStakeDrop: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Amount == nil { + m.Amount = &types.Coin{} + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StartBlock", wireType) + } + m.StartBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.StartBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EndBlock", wireType) + } + m.EndBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EndBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCreateStakeDropResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCreateStakeDropResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateStakeDropResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgMint) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 9be3105e399ad0b8182eb19cc2393bbaea131899 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Wed, 23 Oct 2024 20:05:02 +0200 Subject: [PATCH 03/23] stakedrop creation implementation in progress --- app/app.go | 2 + proto/osmosis/tokenfactory/v1beta1/tx.proto | 6 +- x/tokenfactory/client/cli/tx.go | 50 +++++ x/tokenfactory/keeper/createstakedrop.go | 40 ++-- x/tokenfactory/keeper/keeper.go | 21 ++- x/tokenfactory/keeper/msg_server.go | 26 +++ x/tokenfactory/types/codec.go | 3 + x/tokenfactory/types/events.go | 2 + x/tokenfactory/types/msgs.go | 47 +++++ x/tokenfactory/types/tx.pb.go | 194 +++++++++++--------- 10 files changed, 289 insertions(+), 102 deletions(-) diff --git a/app/app.go b/app/app.go index bf7558f..55acb08 100644 --- a/app/app.go +++ b/app/app.go @@ -697,10 +697,12 @@ func New( app.TokenFactoryKeeper = tokenfactorykeeper.NewKeeper( appCodec, app.keys[tokenfactorytypes.StoreKey], + runtime.NewKVStoreService(keys[tokenfactorytypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.DistrKeeper, tokenFactoryCapabilities, + authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) diff --git a/proto/osmosis/tokenfactory/v1beta1/tx.proto b/proto/osmosis/tokenfactory/v1beta1/tx.proto index 8c2c390..f71a619 100755 --- a/proto/osmosis/tokenfactory/v1beta1/tx.proto +++ b/proto/osmosis/tokenfactory/v1beta1/tx.proto @@ -13,6 +13,7 @@ option go_package = "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types"; // Msg defines the tokefactory module's gRPC message service. service Msg { rpc CreateDenom(MsgCreateDenom) returns (MsgCreateDenomResponse); + rpc CreateStakeDrop(MsgCreateStakeDrop) returns (MsgCreateStakeDropResponse); rpc Mint(MsgMint) returns (MsgMintResponse); rpc Burn(MsgBurn) returns (MsgBurnResponse); rpc ChangeAdmin(MsgChangeAdmin) returns (MsgChangeAdminResponse); @@ -57,7 +58,10 @@ message MsgCreateStakeDrop { string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; //amount to stakedrop - cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.moretags) = "yaml:\"amount\""]; + cosmos.base.v1beta1.Coin amount = 3 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false + ]; int64 start_block = 4; int64 end_block = 5; diff --git a/x/tokenfactory/client/cli/tx.go b/x/tokenfactory/client/cli/tx.go index c507c03..b6d56a5 100644 --- a/x/tokenfactory/client/cli/tx.go +++ b/x/tokenfactory/client/cli/tx.go @@ -28,6 +28,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand( NewCreateDenomCmd(), + NewCreateStakedropCmd(), NewMintCmd(), NewMintToCmd(), NewBurnCmd(), @@ -72,6 +73,55 @@ func NewCreateDenomCmd() *cobra.Command { return cmd } +func NewCreateStakedropCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "create-stakedrop [amount] [startblock] [endblock] [flags]", + Short: "create a stakedrop for a token only for the token creator", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + txf, err := tx.NewFactoryCLI(clientCtx, cmd.Flags()) + if err != nil { + return err + } + + txf = txf.WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) + + amount, err := sdk.ParseCoinNormalized(args[0]) + + if err != nil { + return err + } + + startBlock, err := strconv.ParseInt(args[1], 10, 64) + if err != nil { + return err + } + + endBlock, err := strconv.ParseInt(args[2], 10, 64) + if err != nil { + return err + } + + msg := types.NewMsgCreateStakeDrop( + clientCtx.GetFromAddress().String(), + amount, + startBlock, + endBlock, + ) + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} + // NewMintCmd broadcast MsgMint func NewMintCmd() *cobra.Command { cmd := &cobra.Command{ diff --git a/x/tokenfactory/keeper/createstakedrop.go b/x/tokenfactory/keeper/createstakedrop.go index ae85a5d..44db5fd 100644 --- a/x/tokenfactory/keeper/createstakedrop.go +++ b/x/tokenfactory/keeper/createstakedrop.go @@ -1,13 +1,14 @@ package keeper import ( + "cosmossdk.io/collections" "cosmossdk.io/math" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k Keeper) CreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) error { - denom, err := k.validateCreateStakedrop(ctx, creatorAddr, amount, startBlock, endBlock) +func (k Keeper) CreateStakedropByDenom(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) error { + err := k.validateCreateStakedrop(ctx, creatorAddr, amount, startBlock, endBlock) if err != nil { return err } @@ -17,30 +18,47 @@ func (k Keeper) CreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk. return err } - err = k.createStakedropAfterValidation(ctx, creatorAddr, denom) + err = k.createStakedropAfterValidation(ctx, amount, startBlock, endBlock) return err } func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, startBlock uint64, endBlock uint64) error { + seq, err := k.getNextStakedropSequence(ctx) + if err != nil { + return err + } + amountPerBlock := amount.Amount.Quo(math.NewInt(int64(endBlock - startBlock))) + newStakedrop := types.Stakedrop{ + Amount: amount, + AmountPerBlock: sdk.NewCoin(amount.Denom, amountPerBlock), + StartBlock: int64(startBlock), + EndBlock: int64(endBlock), + } + key := collections.Join(startBlock, seq) + return k.ActiveStakedrop.Set(ctx, key, newStakedrop) + } -func (k Keeper) validateCreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) (string, error) { +func (k Keeper) validateCreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) error { //verify sender has created a subdenom (amount.Denom) - denom, err := types.GetTokenDenom(creatorAddr, amount.Denom) + creator, _, err := types.DeconstructDenom(amount.Denom) if err != nil { - return "", err + return err } - _, found := k.bankKeeper.GetDenomMetaData(ctx, denom) + if creator != creatorAddr { + return types.ErrInvalidCreator + } + _, found := k.bankKeeper.GetDenomMetaData(ctx, amount.Denom) if !found { - return "", types.ErrDenomDoesNotExist + return types.ErrDenomDoesNotExist } if ctx.BlockHeight() > int64(startBlock) || startBlock >= endBlock { - return "", types.ErrBadBlockParameters + return types.ErrBadBlockParameters } - return denom, nil + return nil } func (k Keeper) chargeForCreateStakedrop(ctx sdk.Context, creatorAddr string, startBlock uint64, endBlock uint64) (err error) { @@ -48,7 +66,7 @@ func (k Keeper) chargeForCreateStakedrop(ctx sdk.Context, creatorAddr string, st // if StakedropChargePerBlock is non-zero, transfer the tokens from the creator // account to community pool - if params.StakedropChargePerBlock.Amount.GT(math.NewInt(0)) { + if (params.StakedropChargePerBlock != sdk.Coin{} && params.StakedropChargePerBlock.Amount.GT(math.NewInt(0))) { accAddr, err := sdk.AccAddressFromBech32(creatorAddr) if err != nil { return err diff --git a/x/tokenfactory/keeper/keeper.go b/x/tokenfactory/keeper/keeper.go index 09a68c5..9137745 100644 --- a/x/tokenfactory/keeper/keeper.go +++ b/x/tokenfactory/keeper/keeper.go @@ -30,10 +30,10 @@ type ( // the address capable of executing a MsgUpdateParams message. Typically, this // should be the x/gov module account. - authority string - AirdropSequence collections.Sequence - ActiveAirdrop *collections.IndexedMap[collections.Pair[uint64, uint64], types.Stakedrop, StakedropIndexes] - FeeCollectorName string + authority string + StakedropSequence collections.Sequence + ActiveStakedrop *collections.IndexedMap[collections.Pair[uint64, uint64], types.Stakedrop, StakedropIndexes] + FeeCollectorName string } ) @@ -68,10 +68,10 @@ func NewKeeper( enabledCapabilities: enabledCapabilities, - authority: authority, - FeeCollectorName: feeCollectorName, - AirdropSequence: collections.NewSequence(sb, types.AirdropSequenceKey, "airdrop_sequence"), - ActiveAirdrop: collections.NewIndexedMap(sb, types.ActiveStakedropPrefix, "active_airdrop", collections.PairKeyCodec(collections.Uint64Key, collections.Uint64Key), codec.CollValue[types.Stakedrop](cdc), + authority: authority, + FeeCollectorName: feeCollectorName, + StakedropSequence: collections.NewSequence(sb, types.AirdropSequenceKey, "airdrop_sequence"), + ActiveStakedrop: collections.NewIndexedMap(sb, types.ActiveStakedropPrefix, "active_airdrop", collections.PairKeyCodec(collections.Uint64Key, collections.Uint64Key), codec.CollValue[types.Stakedrop](cdc), StakedropIndexes{ StakedropByDenom: indexes.NewMulti(sb, types.StakedropIndexKey, "stakedrop_by_denom", collections.StringKey, collections.PairKeyCodec(collections.Uint64Key, collections.Uint64Key), func(pk collections.Pair[uint64, uint64], value types.Stakedrop) (string, error) { return value.Amount.Denom, nil @@ -86,6 +86,11 @@ func NewKeeper( return k } +func (k Keeper) getNextStakedropSequence(ctx sdk.Context) (uint64, error) { + seq, err := k.StakedropSequence.Next(ctx) + return seq, err +} + // GetAuthority returns the x/mint module's authority. func (k Keeper) GetAuthority() string { return k.authority diff --git a/x/tokenfactory/keeper/msg_server.go b/x/tokenfactory/keeper/msg_server.go index e2c74d6..5a3ca27 100644 --- a/x/tokenfactory/keeper/msg_server.go +++ b/x/tokenfactory/keeper/msg_server.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "strconv" "cosmossdk.io/errors" @@ -190,6 +191,31 @@ func (server msgServer) ChangeAdmin(goCtx context.Context, msg *types.MsgChangeA return &types.MsgChangeAdminResponse{}, nil } +func (server msgServer) CreateStakeDrop(goCtx context.Context, msg *types.MsgCreateStakeDrop) (*types.MsgCreateStakeDropResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + authorityMetadata, err := server.Keeper.GetAuthorityMetadata(ctx, msg.Amount.Denom) + if err != nil { + return nil, err + } + + if msg.Sender != authorityMetadata.GetAdmin() { + return nil, types.ErrUnauthorized + } + err = server.Keeper.CreateStakedropByDenom(ctx, msg.Sender, msg.Amount, uint64(msg.StartBlock), uint64(msg.EndBlock)) + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.TypeMsgCreateStakeDrop, + sdk.NewAttribute(types.AttributeCreator, msg.Sender), + sdk.NewAttribute(types.AttributeAmount, msg.Amount.String()), + sdk.NewAttribute(types.AttributeStakedropStartBlock, strconv.FormatInt(msg.StartBlock, 10)), + sdk.NewAttribute(types.AttributeStakedropEndBlock, strconv.FormatInt(msg.EndBlock, 10)), + ), + }) + + return &types.MsgCreateStakeDropResponse{}, err +} + func (server msgServer) SetDenomMetadata(goCtx context.Context, msg *types.MsgSetDenomMetadata) (*types.MsgSetDenomMetadataResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) diff --git a/x/tokenfactory/types/codec.go b/x/tokenfactory/types/codec.go index edcec7c..21d4fcc 100644 --- a/x/tokenfactory/types/codec.go +++ b/x/tokenfactory/types/codec.go @@ -24,6 +24,7 @@ var ( const ( // Amino names createTFDenom = "osmosis/tokenfactory/create-denom" + createTFStakedrop = "osmosis/tokenfactory/create-stakedrop" mintTFDenom = "osmosis/tokenfactory/mint" burnTFDenom = "osmosis/tokenfactory/burn" forceTransferTFDenom = "osmosis/tokenfactory/force-transfer" @@ -56,6 +57,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &MsgForceTransfer{}, &MsgChangeAdmin{}, &MsgUpdateParams{}, + &MsgCreateStakeDrop{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } @@ -67,4 +69,5 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgForceTransfer{}, forceTransferTFDenom, nil) cdc.RegisterConcrete(&MsgChangeAdmin{}, changeAdminTFDenom, nil) cdc.RegisterConcrete(&MsgUpdateParams{}, updateTFparams, nil) + cdc.RegisterConcrete(&MsgCreateStakeDrop{}, createTFStakedrop, nil) } diff --git a/x/tokenfactory/types/events.go b/x/tokenfactory/types/events.go index 602e06f..0f20b59 100644 --- a/x/tokenfactory/types/events.go +++ b/x/tokenfactory/types/events.go @@ -15,4 +15,6 @@ const ( AttributeDenom = "denom" AttributeNewAdmin = "new_admin" AttributeDenomMetadata = "denom_metadata" + AttributeStakedropStartBlock = "starting block" + AttributeStakedropEndBlock = "ending block" ) diff --git a/x/tokenfactory/types/msgs.go b/x/tokenfactory/types/msgs.go index 5e5bead..b386471 100644 --- a/x/tokenfactory/types/msgs.go +++ b/x/tokenfactory/types/msgs.go @@ -16,6 +16,7 @@ const ( TypeMsgForceTransfer = "force_transfer" TypeMsgChangeAdmin = "change_admin" TypeMsgSetDenomMetadata = "set_denom_metadata" + TypeMsgCreateStakeDrop = "create_stakedrop" ) var _ sdk.Msg = &MsgCreateDenom{} @@ -53,6 +54,52 @@ func (m MsgCreateDenom) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{sender} } +var _ sdk.Msg = &MsgCreateStakeDrop{} + +// NewMsgCreateDenom creates a msg to create a new denom +func NewMsgCreateStakeDrop(sender string, amount sdk.Coin, startBlock int64, endBlock int64) *MsgCreateStakeDrop { + return &MsgCreateStakeDrop{ + Sender: sender, + Amount: amount, + StartBlock: startBlock, + EndBlock: endBlock, + } +} + +func (m MsgCreateStakeDrop) Route() string { return RouterKey } +func (m MsgCreateStakeDrop) Type() string { return TypeMsgCreateStakeDrop } +func (m MsgCreateStakeDrop) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(m.Sender) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid sender address (%s)", err) + } + + err = m.Amount.Validate() + if err != nil { + return err + } + + if m.StartBlock <= 0 || m.EndBlock <= 0 || m.StartBlock > m.EndBlock { + return ErrBadBlockParameters + } + + _, _, err = DeconstructDenom(m.Amount.Denom) + if err != nil { + return errorsmod.Wrap(ErrInvalidDenom, err.Error()) + } + + return nil +} + +func (m MsgCreateStakeDrop) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) +} + +func (m MsgCreateStakeDrop) GetSigners() []sdk.AccAddress { + sender, _ := sdk.AccAddressFromBech32(m.Sender) + return []sdk.AccAddress{sender} +} + var _ sdk.Msg = &MsgMint{} // NewMsgMint creates a message to mint tokens diff --git a/x/tokenfactory/types/tx.pb.go b/x/tokenfactory/types/tx.pb.go index 741af61..8c56492 100644 --- a/x/tokenfactory/types/tx.pb.go +++ b/x/tokenfactory/types/tx.pb.go @@ -145,9 +145,9 @@ func (m *MsgCreateDenomResponse) GetNewTokenDenom() string { type MsgCreateStakeDrop struct { Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` //amount to stakedrop - Amount *types.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty" yaml:"amount"` - StartBlock int64 `protobuf:"varint,4,opt,name=start_block,json=startBlock,proto3" json:"start_block,omitempty"` - EndBlock int64 `protobuf:"varint,5,opt,name=end_block,json=endBlock,proto3" json:"end_block,omitempty"` + Amount types.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount" yaml:"amount"` + StartBlock int64 `protobuf:"varint,4,opt,name=start_block,json=startBlock,proto3" json:"start_block,omitempty"` + EndBlock int64 `protobuf:"varint,5,opt,name=end_block,json=endBlock,proto3" json:"end_block,omitempty"` } func (m *MsgCreateStakeDrop) Reset() { *m = MsgCreateStakeDrop{} } @@ -190,11 +190,11 @@ func (m *MsgCreateStakeDrop) GetSender() string { return "" } -func (m *MsgCreateStakeDrop) GetAmount() *types.Coin { +func (m *MsgCreateStakeDrop) GetAmount() types.Coin { if m != nil { return m.Amount } - return nil + return types.Coin{} } func (m *MsgCreateStakeDrop) GetStartBlock() int64 { @@ -862,67 +862,68 @@ func init() { } var fileDescriptor_283b6c9a90a846b4 = []byte{ - // 961 bytes of a gzipped FileDescriptorProto + // 977 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0x26, 0xa9, 0x49, 0x5e, 0x9a, 0x26, 0xd9, 0x84, 0xc6, 0xd9, 0xa6, 0xde, 0x68, 0x45, - 0x51, 0x8a, 0xa8, 0x57, 0x2e, 0x50, 0x41, 0x4e, 0xd4, 0x89, 0x22, 0x0e, 0x58, 0x42, 0x9b, 0x70, - 0x41, 0x95, 0xac, 0xb1, 0x77, 0xb2, 0x5e, 0xb9, 0x3b, 0x63, 0x66, 0xc6, 0x4d, 0x7d, 0x43, 0xfc, - 0x02, 0xae, 0x1c, 0x38, 0x20, 0xfe, 0x00, 0x07, 0xc4, 0x6f, 0xe8, 0x05, 0x29, 0x82, 0x0b, 0xa7, - 0x15, 0x4a, 0x0e, 0xdc, 0xfd, 0x0b, 0xd0, 0xce, 0xcc, 0xae, 0x77, 0xed, 0x10, 0xc7, 0xa7, 0x9e, - 0x92, 0x9d, 0xf7, 0x7d, 0xdf, 0xbc, 0xef, 0xcd, 0xbc, 0x37, 0x86, 0x47, 0x94, 0x47, 0x94, 0x87, - 0xdc, 0x15, 0xb4, 0x8b, 0xc9, 0x19, 0x6a, 0x0b, 0xca, 0x06, 0xee, 0xab, 0x5a, 0x0b, 0x0b, 0x54, - 0x73, 0xc5, 0xeb, 0x6a, 0x8f, 0x51, 0x41, 0xcd, 0x5d, 0x0d, 0xab, 0xe6, 0x61, 0x55, 0x0d, 0xb3, - 0xb6, 0x02, 0x1a, 0x50, 0x09, 0x74, 0x93, 0xff, 0x14, 0xc7, 0xaa, 0xb4, 0x25, 0xc9, 0x6d, 0x21, - 0x8e, 0x33, 0xc5, 0x36, 0x0d, 0xc9, 0x44, 0x9c, 0x74, 0xb3, 0x78, 0xf2, 0xa1, 0xe3, 0x8f, 0x6f, - 0x4c, 0xad, 0x87, 0x18, 0x8a, 0xb8, 0x86, 0x6e, 0x6b, 0xa9, 0x88, 0x07, 0xee, 0xab, 0x5a, 0xf2, - 0x47, 0x07, 0x76, 0x54, 0xa0, 0xa9, 0x92, 0x53, 0x1f, 0x2a, 0xe4, 0x0c, 0xe0, 0x5e, 0x83, 0x07, - 0x87, 0x0c, 0x23, 0x81, 0x8f, 0x30, 0xa1, 0x91, 0xf9, 0x18, 0x4a, 0x1c, 0x13, 0x1f, 0xb3, 0xb2, - 0xb1, 0x67, 0xec, 0x2f, 0xd7, 0x37, 0x86, 0xb1, 0xbd, 0x3a, 0x40, 0xd1, 0xcb, 0x03, 0x47, 0xad, - 0x3b, 0x9e, 0x06, 0x98, 0x2e, 0x2c, 0xf1, 0x7e, 0xcb, 0x4f, 0x68, 0xe5, 0x79, 0x09, 0xde, 0x1c, - 0xc6, 0xf6, 0x9a, 0x06, 0xeb, 0x88, 0xe3, 0x65, 0xa0, 0x83, 0x95, 0xef, 0xff, 0xfd, 0xf5, 0x03, - 0xcd, 0x76, 0x5e, 0xc0, 0xfd, 0xe2, 0xd6, 0x1e, 0xe6, 0x3d, 0x4a, 0x38, 0x36, 0xeb, 0xb0, 0x46, - 0xf0, 0x79, 0x53, 0x3a, 0x6e, 0x2a, 0x79, 0x95, 0x8b, 0x35, 0x8c, 0xed, 0xfb, 0x4a, 0x7e, 0x0c, - 0xe0, 0x78, 0xab, 0x04, 0x9f, 0x9f, 0x26, 0x0b, 0x52, 0xcb, 0xb9, 0x30, 0xc0, 0xcc, 0xe4, 0x4f, - 0x04, 0xea, 0xe2, 0x23, 0x46, 0x7b, 0xb3, 0xb8, 0x3b, 0x82, 0x12, 0x8a, 0x68, 0x9f, 0x88, 0xf2, - 0xc2, 0x9e, 0xb1, 0xbf, 0xf2, 0x74, 0xa7, 0xaa, 0x2b, 0x97, 0x1c, 0x65, 0x7a, 0xea, 0xd5, 0x43, - 0x1a, 0x92, 0xbc, 0x8a, 0xa2, 0x38, 0x9e, 0xe6, 0x9a, 0x36, 0xac, 0x70, 0x81, 0x98, 0x68, 0xb6, - 0x5e, 0xd2, 0x76, 0xb7, 0xbc, 0xb8, 0x67, 0xec, 0x2f, 0x78, 0x20, 0x97, 0xea, 0xc9, 0x8a, 0xf9, - 0x00, 0x96, 0x31, 0xf1, 0x75, 0xf8, 0x8e, 0x0c, 0x2f, 0x61, 0xe2, 0xcb, 0x60, 0xb1, 0x60, 0xbb, - 0x60, 0x4d, 0x3a, 0x4a, 0x8b, 0xe6, 0xfc, 0x61, 0xc0, 0x3b, 0x0d, 0x1e, 0x34, 0x42, 0x22, 0x66, - 0x71, 0xf9, 0x45, 0xe6, 0x72, 0x7e, 0x9a, 0xcb, 0x77, 0xdf, 0xc4, 0xf6, 0xdc, 0xff, 0x3b, 0xfd, - 0x1c, 0x56, 0xa3, 0x90, 0x88, 0x53, 0xfa, 0xdc, 0xf7, 0x19, 0xe6, 0x5c, 0x96, 0xad, 0x70, 0x66, - 0x49, 0xb8, 0x29, 0x68, 0x13, 0x29, 0x80, 0xe3, 0x15, 0x09, 0x45, 0xb7, 0x1b, 0xb0, 0xa6, 0xed, - 0x64, 0x16, 0xff, 0x52, 0x16, 0xeb, 0x7d, 0x46, 0xde, 0x8e, 0xc5, 0x63, 0x58, 0x6b, 0xf5, 0x19, - 0x39, 0x66, 0x34, 0x2a, 0x9a, 0xdc, 0x1d, 0xc6, 0x76, 0x59, 0x71, 0x12, 0x40, 0xf3, 0x8c, 0xd1, - 0x68, 0x64, 0x73, 0x9c, 0x74, 0x9d, 0xd1, 0xc4, 0x54, 0x66, 0xf4, 0x17, 0x43, 0xb5, 0x65, 0x07, - 0x91, 0x00, 0x3f, 0xf7, 0xa3, 0x70, 0x26, 0xbf, 0xef, 0xc3, 0x9d, 0x7c, 0x4f, 0xae, 0x0f, 0x63, - 0xfb, 0xae, 0x42, 0xea, 0x56, 0x51, 0x61, 0xb3, 0x06, 0xcb, 0x49, 0x17, 0xa1, 0x44, 0x5f, 0xfb, - 0xd8, 0x1a, 0xc6, 0xf6, 0xfa, 0xa8, 0xc1, 0x64, 0xc8, 0xf1, 0x96, 0x08, 0x3e, 0x97, 0x59, 0x14, - 0x13, 0x2f, 0xab, 0x06, 0x1e, 0x25, 0x99, 0xe5, 0xff, 0xb3, 0x01, 0x9b, 0x0d, 0x1e, 0x9c, 0x60, - 0x21, 0x9b, 0xb1, 0x81, 0x05, 0xf2, 0x91, 0x40, 0xb3, 0x98, 0xf0, 0x60, 0x29, 0xd2, 0x34, 0x7d, - 0x6c, 0x0f, 0x47, 0xc7, 0x46, 0xba, 0xd9, 0xb1, 0xa5, 0xda, 0xf5, 0x6d, 0x7d, 0x74, 0x7a, 0xfc, - 0xa4, 0x64, 0xc7, 0xcb, 0x74, 0x8a, 0xd9, 0x3f, 0x84, 0x07, 0xd7, 0xa4, 0x98, 0x59, 0xf8, 0x7d, - 0x1e, 0xd6, 0x1b, 0x3c, 0x38, 0xa6, 0xac, 0x8d, 0x4f, 0x19, 0x22, 0xfc, 0x0c, 0xb3, 0xb7, 0x73, - 0xe9, 0x3c, 0xd8, 0x14, 0x3a, 0x81, 0xc9, 0x8b, 0xb7, 0x37, 0x8c, 0xed, 0x5d, 0xc5, 0x4b, 0x41, - 0x63, 0x97, 0xef, 0x3a, 0xb2, 0xf9, 0x25, 0x6c, 0xa4, 0xcb, 0xa3, 0x7e, 0x5d, 0x94, 0x8a, 0x95, - 0x61, 0x6c, 0x5b, 0x63, 0x8a, 0xf9, 0x9e, 0x9d, 0x24, 0x16, 0xeb, 0x6a, 0x41, 0x79, 0xbc, 0x6e, - 0x59, 0x51, 0x7f, 0x32, 0xe4, 0x5d, 0xff, 0xba, 0xe7, 0x23, 0x81, 0xbf, 0x92, 0x6f, 0x97, 0xf9, - 0x0c, 0x96, 0x51, 0x5f, 0x74, 0x28, 0x0b, 0xc5, 0x40, 0x97, 0xb5, 0xfc, 0xe7, 0x6f, 0x4f, 0xb6, - 0x74, 0xb9, 0xf4, 0x1e, 0x27, 0x82, 0x85, 0x24, 0xf0, 0x46, 0x50, 0xb3, 0x0e, 0x25, 0xf5, 0xfa, - 0xe9, 0x02, 0xbf, 0x57, 0xbd, 0xe9, 0x75, 0xae, 0xaa, 0xdd, 0xea, 0x8b, 0x49, 0xad, 0x3d, 0xcd, - 0x3c, 0xb8, 0x97, 0x24, 0x3e, 0xd2, 0x74, 0x76, 0x60, 0x7b, 0x2c, 0xbd, 0x34, 0xf5, 0xa7, 0x3f, - 0x96, 0x60, 0xa1, 0xc1, 0x03, 0xf3, 0x5b, 0x58, 0xc9, 0xbf, 0x96, 0x1f, 0xde, 0xbc, 0x6b, 0xf1, - 0x81, 0xb3, 0x3e, 0x9e, 0x05, 0x9d, 0x3d, 0x87, 0x2f, 0x60, 0x51, 0x4e, 0xf5, 0x47, 0x53, 0xd9, - 0x09, 0xcc, 0x7a, 0x72, 0x2b, 0x58, 0x5e, 0x5d, 0x0e, 0xd4, 0xe9, 0xea, 0x09, 0xec, 0x16, 0xea, - 0xf9, 0x49, 0x26, 0xcb, 0x95, 0x9b, 0x62, 0xb7, 0x28, 0xd7, 0x08, 0x7d, 0x9b, 0x72, 0x4d, 0x0e, - 0x1f, 0xf3, 0x3b, 0x03, 0xd6, 0x27, 0x26, 0x4f, 0x6d, 0xaa, 0xd4, 0x38, 0xc5, 0xfa, 0x6c, 0x66, - 0x4a, 0x96, 0xc2, 0x39, 0xac, 0x16, 0x07, 0x47, 0x75, 0xaa, 0x56, 0x01, 0x6f, 0x3d, 0x9b, 0x0d, - 0x9f, 0x6d, 0x2c, 0xe0, 0x6e, 0xa1, 0xb9, 0xa6, 0x9f, 0x56, 0x1e, 0x6e, 0x7d, 0x32, 0x13, 0x3c, - 0xdd, 0xb5, 0xee, 0xbd, 0xb9, 0xac, 0x18, 0x17, 0x97, 0x15, 0xe3, 0x9f, 0xcb, 0x8a, 0xf1, 0xc3, - 0x55, 0x65, 0xee, 0xe2, 0xaa, 0x32, 0xf7, 0xf7, 0x55, 0x65, 0xee, 0x9b, 0x4f, 0x83, 0x50, 0x74, - 0xfa, 0xad, 0x6a, 0x9b, 0x46, 0xee, 0x61, 0x27, 0xec, 0xf4, 0x51, 0xa7, 0x8f, 0x0e, 0x3b, 0x28, - 0x24, 0x6e, 0x3b, 0xfd, 0x74, 0x5f, 0x17, 0x7f, 0xdb, 0x8a, 0x41, 0x0f, 0xf3, 0x56, 0x49, 0xfe, - 0x3e, 0xfd, 0xe8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x30, 0xc8, 0x97, 0x9b, 0x0b, 0x00, + 0x14, 0xce, 0x26, 0x69, 0x9a, 0xbc, 0x34, 0x75, 0xb2, 0x09, 0x8d, 0xb3, 0x4d, 0xbd, 0xd1, 0x8a, + 0xa2, 0x14, 0x51, 0x2f, 0x2e, 0x50, 0x95, 0x9c, 0xe8, 0xa6, 0x8a, 0x38, 0x60, 0x09, 0x6d, 0xc2, + 0x05, 0x55, 0xb2, 0xc6, 0xde, 0xc9, 0x7a, 0xe5, 0xee, 0x8c, 0xd9, 0x19, 0x37, 0xf5, 0x01, 0x09, + 0xf1, 0x0b, 0x38, 0x72, 0xe1, 0x80, 0xf8, 0x03, 0x1c, 0x10, 0xbf, 0xa1, 0x17, 0xa4, 0x0a, 0x38, + 0x70, 0x5a, 0xa1, 0xe4, 0xc0, 0xdd, 0xbf, 0x00, 0xed, 0xcc, 0xec, 0xae, 0xd7, 0x8e, 0x62, 0x1b, + 0x0e, 0x39, 0x25, 0x3b, 0xef, 0xfb, 0xbe, 0x79, 0xdf, 0x7b, 0xf3, 0x66, 0x0c, 0xf7, 0x29, 0x0b, + 0x29, 0x0b, 0x98, 0xcd, 0x69, 0x07, 0x93, 0x53, 0xd4, 0xe2, 0x34, 0xea, 0xdb, 0x2f, 0x6b, 0x4d, + 0xcc, 0x51, 0xcd, 0xe6, 0xaf, 0xaa, 0xdd, 0x88, 0x72, 0xaa, 0xef, 0x2a, 0x58, 0x75, 0x18, 0x56, + 0x55, 0x30, 0x63, 0xcb, 0xa7, 0x3e, 0x15, 0x40, 0x3b, 0xf9, 0x4f, 0x72, 0x8c, 0x4a, 0x4b, 0x90, + 0xec, 0x26, 0x62, 0x38, 0x53, 0x6c, 0xd1, 0x80, 0x8c, 0xc5, 0x49, 0x27, 0x8b, 0x27, 0x1f, 0x2a, + 0xfe, 0xe0, 0xca, 0xd4, 0xba, 0x28, 0x42, 0x21, 0x53, 0xd0, 0x6d, 0x25, 0x15, 0x32, 0xdf, 0x7e, + 0x59, 0x4b, 0xfe, 0xa8, 0xc0, 0x8e, 0x0c, 0x34, 0x64, 0x72, 0xf2, 0x43, 0x86, 0xac, 0x3e, 0xdc, + 0xae, 0x33, 0xff, 0x30, 0xc2, 0x88, 0xe3, 0x67, 0x98, 0xd0, 0x50, 0x7f, 0x00, 0x4b, 0x0c, 0x13, + 0x0f, 0x47, 0x65, 0x6d, 0x4f, 0xdb, 0x5f, 0x71, 0x36, 0x06, 0xb1, 0xb9, 0xd6, 0x47, 0xe1, 0x8b, + 0x03, 0x4b, 0xae, 0x5b, 0xae, 0x02, 0xe8, 0x36, 0x2c, 0xb3, 0x5e, 0xd3, 0x4b, 0x68, 0xe5, 0x79, + 0x01, 0xde, 0x1c, 0xc4, 0x66, 0x49, 0x81, 0x55, 0xc4, 0x72, 0x33, 0xd0, 0xc1, 0xea, 0xb7, 0xff, + 0xfc, 0xfc, 0xae, 0x62, 0x5b, 0xcf, 0xe1, 0x4e, 0x71, 0x6b, 0x17, 0xb3, 0x2e, 0x25, 0x0c, 0xeb, + 0x0e, 0x94, 0x08, 0x3e, 0x6b, 0x08, 0xc7, 0x0d, 0x29, 0x2f, 0x73, 0x31, 0x06, 0xb1, 0x79, 0x47, + 0xca, 0x8f, 0x00, 0x2c, 0x77, 0x8d, 0xe0, 0xb3, 0x93, 0x64, 0x41, 0x68, 0x59, 0x7f, 0x6a, 0xa0, + 0x67, 0xf2, 0xc7, 0x1c, 0x75, 0xf0, 0xb3, 0x88, 0x76, 0x67, 0x71, 0xf7, 0x29, 0x2c, 0xa1, 0x90, + 0xf6, 0x08, 0x2f, 0x2f, 0xec, 0x69, 0xfb, 0xab, 0x8f, 0x76, 0xaa, 0xaa, 0x72, 0x49, 0x2b, 0xd3, + 0xae, 0x57, 0x0f, 0x69, 0x40, 0x9c, 0xb7, 0x5e, 0xc7, 0xe6, 0x5c, 0xae, 0x24, 0x69, 0x96, 0xab, + 0xf8, 0xba, 0x09, 0xab, 0x8c, 0xa3, 0x88, 0x37, 0x9a, 0x2f, 0x68, 0xab, 0x53, 0x5e, 0xdc, 0xd3, + 0xf6, 0x17, 0x5c, 0x10, 0x4b, 0x4e, 0xb2, 0xa2, 0xdf, 0x85, 0x15, 0x4c, 0x3c, 0x15, 0xbe, 0x21, + 0xc2, 0xcb, 0x98, 0x78, 0x22, 0x58, 0x2c, 0xda, 0x2e, 0x18, 0xe3, 0xae, 0xd2, 0xc2, 0x59, 0xbf, + 0x69, 0x70, 0xb3, 0xce, 0xfc, 0x7a, 0x40, 0xf8, 0x7f, 0x73, 0x3a, 0xff, 0x3f, 0x9d, 0x7e, 0x02, + 0x6b, 0x61, 0x40, 0xf8, 0x09, 0x7d, 0xea, 0x79, 0x11, 0x66, 0x4c, 0x94, 0xae, 0xd0, 0xb7, 0x24, + 0xdc, 0xe0, 0xb4, 0x81, 0x24, 0xc0, 0x72, 0x8b, 0x84, 0xa2, 0xdb, 0x0d, 0x28, 0x29, 0x3b, 0x99, + 0xc5, 0x3f, 0xa4, 0x45, 0xa7, 0x17, 0x91, 0xeb, 0xb1, 0x78, 0x04, 0xa5, 0x66, 0x2f, 0x22, 0x47, + 0x11, 0x0d, 0x8b, 0x26, 0x77, 0x07, 0xb1, 0x59, 0x96, 0x9c, 0x04, 0xd0, 0x38, 0x8d, 0x68, 0x98, + 0xdb, 0x1c, 0x25, 0x5d, 0x66, 0x34, 0x31, 0x95, 0x19, 0xfd, 0x49, 0x93, 0xa3, 0xd9, 0x46, 0xc4, + 0xc7, 0x4f, 0xbd, 0x30, 0x98, 0xc9, 0xef, 0x3b, 0x70, 0x63, 0x78, 0x2e, 0xd7, 0x07, 0xb1, 0x79, + 0x4b, 0x22, 0xd5, 0xb8, 0xc8, 0xb0, 0x5e, 0x83, 0x95, 0x64, 0x92, 0x50, 0xa2, 0xaf, 0x7c, 0x6c, + 0x0d, 0x62, 0x73, 0x3d, 0x1f, 0x32, 0x11, 0xb2, 0xdc, 0x65, 0x82, 0xcf, 0x44, 0x16, 0xc5, 0xc4, + 0xcb, 0x72, 0x88, 0xf3, 0x24, 0xb3, 0xfc, 0x7f, 0xd4, 0x60, 0xb3, 0xce, 0xfc, 0x63, 0xcc, 0xc5, + 0x40, 0xd6, 0x31, 0x47, 0x1e, 0xe2, 0x68, 0x16, 0x13, 0x2e, 0x2c, 0x87, 0x8a, 0xa6, 0xda, 0x76, + 0x2f, 0x6f, 0x1b, 0xe9, 0x64, 0x6d, 0x4b, 0xb5, 0x9d, 0x6d, 0xd5, 0x3a, 0x75, 0x05, 0xa5, 0x64, + 0xcb, 0xcd, 0x74, 0x8a, 0xd9, 0xdf, 0x83, 0xbb, 0x97, 0xa4, 0x98, 0x59, 0xf8, 0x75, 0x1e, 0xd6, + 0xeb, 0xcc, 0x3f, 0xa2, 0x51, 0x0b, 0x9f, 0x44, 0x88, 0xb0, 0x53, 0x1c, 0x5d, 0xcf, 0xa1, 0x73, + 0x61, 0x93, 0xab, 0x04, 0xc6, 0x0f, 0xde, 0xde, 0x20, 0x36, 0x77, 0x25, 0x2f, 0x05, 0x8d, 0x1c, + 0xbe, 0xcb, 0xc8, 0xfa, 0x67, 0xb0, 0x91, 0x2e, 0xe7, 0xf3, 0xba, 0x28, 0x14, 0x2b, 0x83, 0xd8, + 0x34, 0x46, 0x14, 0x87, 0x67, 0x76, 0x9c, 0x58, 0xac, 0xab, 0x01, 0xe5, 0xd1, 0xba, 0x65, 0x45, + 0xfd, 0x41, 0x13, 0x67, 0xfd, 0x8b, 0xae, 0x87, 0x38, 0xfe, 0x5c, 0xbc, 0x5f, 0xfa, 0x63, 0x58, + 0x41, 0x3d, 0xde, 0xa6, 0x51, 0xc0, 0xfb, 0xaa, 0xac, 0xe5, 0xdf, 0x7f, 0x79, 0xb8, 0xa5, 0xca, + 0xa5, 0xf6, 0x38, 0xe6, 0x51, 0x40, 0x7c, 0x37, 0x87, 0xea, 0x0e, 0x2c, 0xc9, 0x17, 0x50, 0x15, + 0xf8, 0xed, 0xea, 0x55, 0x2f, 0x74, 0x55, 0xee, 0xe6, 0x2c, 0x26, 0xb5, 0x76, 0x15, 0xf3, 0xe0, + 0x76, 0x92, 0x78, 0xae, 0x69, 0xed, 0xc0, 0xf6, 0x48, 0x7a, 0x69, 0xea, 0x8f, 0xbe, 0xbf, 0x09, + 0x0b, 0x75, 0xe6, 0xeb, 0x5f, 0xc1, 0xea, 0xf0, 0x8b, 0xf9, 0xde, 0xd5, 0xbb, 0x16, 0x1f, 0x39, + 0xe3, 0xc3, 0x59, 0xd0, 0xd9, 0x93, 0xf8, 0x35, 0x94, 0x46, 0x9f, 0xb2, 0xf7, 0xa7, 0x14, 0xca, + 0x18, 0xc6, 0x93, 0x59, 0x19, 0xd9, 0xf6, 0xcf, 0x61, 0x51, 0x3c, 0x2a, 0xf7, 0x27, 0x2a, 0x24, + 0x30, 0xe3, 0xe1, 0x54, 0xb0, 0x61, 0x75, 0x71, 0x9f, 0x4f, 0x56, 0x4f, 0x60, 0x53, 0xa8, 0x0f, + 0x5f, 0xa4, 0xa2, 0x5b, 0x43, 0x97, 0xe8, 0x14, 0xdd, 0xca, 0xd1, 0xd3, 0x74, 0x6b, 0xfc, 0xee, + 0xd3, 0xbf, 0xd1, 0x60, 0x7d, 0xec, 0xe2, 0xab, 0x4d, 0x94, 0x1a, 0xa5, 0x18, 0x1f, 0xcf, 0x4c, + 0xc9, 0x52, 0x38, 0x83, 0xb5, 0xe2, 0xbd, 0x55, 0x9d, 0xa8, 0x55, 0xc0, 0x1b, 0x8f, 0x67, 0xc3, + 0x67, 0x1b, 0x73, 0xb8, 0x55, 0x98, 0xed, 0xc9, 0xdd, 0x1a, 0x86, 0x1b, 0x1f, 0xcd, 0x04, 0x4f, + 0x77, 0x75, 0xdc, 0xd7, 0xe7, 0x15, 0xed, 0xcd, 0x79, 0x45, 0xfb, 0xfb, 0xbc, 0xa2, 0x7d, 0x77, + 0x51, 0x99, 0x7b, 0x73, 0x51, 0x99, 0xfb, 0xeb, 0xa2, 0x32, 0xf7, 0xe5, 0x13, 0x3f, 0xe0, 0xed, + 0x5e, 0xb3, 0xda, 0xa2, 0xa1, 0x7d, 0xd8, 0x0e, 0xda, 0x3d, 0xd4, 0xee, 0xa1, 0xc3, 0x36, 0x0a, + 0x88, 0xdd, 0x4a, 0x3f, 0xed, 0x57, 0xc5, 0x9f, 0xd7, 0xbc, 0xdf, 0xc5, 0xac, 0xb9, 0x24, 0x7e, + 0x22, 0x7f, 0xf0, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x6b, 0x6b, 0x24, 0x1e, 0x0c, 0x00, 0x00, } @@ -939,6 +940,7 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { CreateDenom(ctx context.Context, in *MsgCreateDenom, opts ...grpc.CallOption) (*MsgCreateDenomResponse, error) + CreateStakeDrop(ctx context.Context, in *MsgCreateStakeDrop, opts ...grpc.CallOption) (*MsgCreateStakeDropResponse, error) Mint(ctx context.Context, in *MsgMint, opts ...grpc.CallOption) (*MsgMintResponse, error) Burn(ctx context.Context, in *MsgBurn, opts ...grpc.CallOption) (*MsgBurnResponse, error) ChangeAdmin(ctx context.Context, in *MsgChangeAdmin, opts ...grpc.CallOption) (*MsgChangeAdminResponse, error) @@ -968,6 +970,15 @@ func (c *msgClient) CreateDenom(ctx context.Context, in *MsgCreateDenom, opts .. return out, nil } +func (c *msgClient) CreateStakeDrop(ctx context.Context, in *MsgCreateStakeDrop, opts ...grpc.CallOption) (*MsgCreateStakeDropResponse, error) { + out := new(MsgCreateStakeDropResponse) + err := c.cc.Invoke(ctx, "/osmosis.tokenfactory.v1beta1.Msg/CreateStakeDrop", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) Mint(ctx context.Context, in *MsgMint, opts ...grpc.CallOption) (*MsgMintResponse, error) { out := new(MsgMintResponse) err := c.cc.Invoke(ctx, "/osmosis.tokenfactory.v1beta1.Msg/Mint", in, out, opts...) @@ -1025,6 +1036,7 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts // MsgServer is the server API for Msg service. type MsgServer interface { CreateDenom(context.Context, *MsgCreateDenom) (*MsgCreateDenomResponse, error) + CreateStakeDrop(context.Context, *MsgCreateStakeDrop) (*MsgCreateStakeDropResponse, error) Mint(context.Context, *MsgMint) (*MsgMintResponse, error) Burn(context.Context, *MsgBurn) (*MsgBurnResponse, error) ChangeAdmin(context.Context, *MsgChangeAdmin) (*MsgChangeAdminResponse, error) @@ -1044,6 +1056,9 @@ type UnimplementedMsgServer struct { func (*UnimplementedMsgServer) CreateDenom(ctx context.Context, req *MsgCreateDenom) (*MsgCreateDenomResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateDenom not implemented") } +func (*UnimplementedMsgServer) CreateStakeDrop(ctx context.Context, req *MsgCreateStakeDrop) (*MsgCreateStakeDropResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateStakeDrop not implemented") +} func (*UnimplementedMsgServer) Mint(ctx context.Context, req *MsgMint) (*MsgMintResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Mint not implemented") } @@ -1085,6 +1100,24 @@ func _Msg_CreateDenom_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } +func _Msg_CreateStakeDrop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateStakeDrop) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateStakeDrop(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/osmosis.tokenfactory.v1beta1.Msg/CreateStakeDrop", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateStakeDrop(ctx, req.(*MsgCreateStakeDrop)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_Mint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgMint) if err := dec(in); err != nil { @@ -1201,6 +1234,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateDenom", Handler: _Msg_CreateDenom_Handler, }, + { + MethodName: "CreateStakeDrop", + Handler: _Msg_CreateStakeDrop_Handler, + }, { MethodName: "Mint", Handler: _Msg_Mint_Handler, @@ -1327,18 +1364,16 @@ func (m *MsgCreateStakeDrop) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x20 } - if m.Amount != nil { - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } - i-- - dAtA[i] = 0x1a + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Sender) > 0 { i -= len(m.Sender) copy(dAtA[i:], m.Sender) @@ -1833,10 +1868,8 @@ func (m *MsgCreateStakeDrop) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.Amount != nil { - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) if m.StartBlock != 0 { n += 1 + sovTx(uint64(m.StartBlock)) } @@ -2313,9 +2346,6 @@ func (m *MsgCreateStakeDrop) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Amount == nil { - m.Amount = &types.Coin{} - } if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } From 75cb6e77de3d226f4f550ccae67a287902c95e7a Mon Sep 17 00:00:00 2001 From: Victor118 Date: Fri, 25 Oct 2024 19:50:27 +0200 Subject: [PATCH 04/23] Distribution implementation in BeginBlock --- x/tokenfactory/abci.go | 54 ++++++++++++++++++++++++++++++++++++++++ x/tokenfactory/module.go | 6 ++++- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 x/tokenfactory/abci.go diff --git a/x/tokenfactory/abci.go b/x/tokenfactory/abci.go new file mode 100644 index 0000000..c45cea9 --- /dev/null +++ b/x/tokenfactory/abci.go @@ -0,0 +1,54 @@ +package tokenfactory + +import ( + "fmt" + + "cosmossdk.io/collections" + "cosmossdk.io/math" + "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/keeper" + "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// BeginBlocker +func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bankKeeper types.BankKeeper) error { + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyEndBlocker) + + rng := collections.NewPrefixUntilPairRange[uint64, uint64](uint64(ctx.BlockHeight())) + iter, err := k.ActiveStakedrop.Iterate(ctx, rng) + + if err != nil { + + return err + } + defer iter.Close() + + coinsToSend := sdk.NewCoins() + + for ; iter.Valid(); iter.Next() { + stakeDrop, err := iter.KeyValue() + if err != nil { + + return err + } + + if ctx.BlockHeight() >= stakeDrop.Value.StartBlock && ctx.BlockHeight() < (stakeDrop.Value.EndBlock) { + ctx.Logger().Error(fmt.Sprintf("Stakedrop %v %s in Block %d", stakeDrop.Value.AmountPerBlock.Amount, stakeDrop.Value.Amount.Denom, ctx.BlockHeight())) + coinsToSend = coinsToSend.Add(stakeDrop.Value.AmountPerBlock) + + } else if ctx.BlockHeight() == stakeDrop.Value.EndBlock { + restAmount := stakeDrop.Value.Amount.Amount.Sub(stakeDrop.Value.AmountPerBlock.Amount.Mul(math.NewInt(stakeDrop.Value.EndBlock - stakeDrop.Value.StartBlock))) + ctx.Logger().Error(fmt.Sprintf("Last Stakedrop %v in Block %d", restAmount, ctx.BlockHeight())) + coinsToSend = coinsToSend.Add(sdk.NewCoin(stakeDrop.Value.Amount.Denom, restAmount)) + + } else if ctx.BlockHeight() > stakeDrop.Value.EndBlock { + ctx.Logger().Error(fmt.Sprintf("Remove Stakedrop in Block %d", ctx.BlockHeight())) + k.ActiveStakedrop.Remove(ctx, stakeDrop.Key) + } + } + + bankKeeper.MintCoins(ctx, types.ModuleName, coinsToSend) + return bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.FeeCollectorName, sdk.NewCoins(coinsToSend...)) + +} diff --git a/x/tokenfactory/module.go b/x/tokenfactory/module.go index eaf204b..4a84934 100644 --- a/x/tokenfactory/module.go +++ b/x/tokenfactory/module.go @@ -187,7 +187,11 @@ func (AppModule) ConsensusVersion() uint64 { } // BeginBlock executes all ABCI BeginBlock logic respective to the tokenfactory module. -func (am AppModule) BeginBlock(_ sdk.Context) {} +// BeginBlock returns the begin blocker for the mint module. +func (am AppModule) BeginBlock(ctx context.Context) error { + sdkCtx := sdk.UnwrapSDKContext(ctx) + return BeginBlocker(sdkCtx, am.keeper, am.bankKeeper) +} // EndBlock executes all ABCI EndBlock logic respective to the tokenfactory module. It // returns no validator updates. From 90e05c4f535f97ded372d344552098e116de36e7 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Fri, 25 Oct 2024 19:51:28 +0200 Subject: [PATCH 05/23] Query stakedrop by denom implementation --- .../osmosis/tokenfactory/v1beta1/query.proto | 43 + x/tokenfactory/client/cli/query.go | 50 + x/tokenfactory/keeper/createstakedrop.go | 4 + x/tokenfactory/keeper/grpc_query.go | 51 + x/tokenfactory/keeper/msg_server.go | 1 - x/tokenfactory/types/expected_keepers.go | 1 + x/tokenfactory/types/query.pb.go | 1036 +++++++++++++++-- x/tokenfactory/types/query.pb.gw.go | 184 +++ 8 files changed, 1284 insertions(+), 86 deletions(-) diff --git a/proto/osmosis/tokenfactory/v1beta1/query.proto b/proto/osmosis/tokenfactory/v1beta1/query.proto index b46b402..9959711 100755 --- a/proto/osmosis/tokenfactory/v1beta1/query.proto +++ b/proto/osmosis/tokenfactory/v1beta1/query.proto @@ -5,7 +5,9 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "osmosis/tokenfactory/v1beta1/authorityMetadata.proto"; +import "osmosis/tokenfactory/v1beta1/stakedrop.proto"; import "osmosis/tokenfactory/v1beta1/params.proto"; +import "amino/amino.proto"; option go_package = "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types"; @@ -32,6 +34,18 @@ service Query { option (google.api.http).get = "/osmosis/tokenfactory/v1beta1/denoms_from_creator/{creator}"; } + + rpc StakeDrops(QueryStakeDropsRequest) + returns (QueryStakeDropsResponse) { + option (google.api.http).get = + "/osmosis/tokenfactory/v1beta1/stakedrops"; + } + + rpc StakeDropsFromDenom(QueryStakeDropFromDenomRequest) + returns (QueryStakeDropFromDenomResponse) { + option (google.api.http).get = + "/osmosis/tokenfactory/v1beta1/stakedrops_from_denom/{denom}"; + } } // QueryParamsRequest is the request type for the Query/Params RPC method. @@ -69,3 +83,32 @@ message QueryDenomsFromCreatorRequest { message QueryDenomsFromCreatorResponse { repeated string denoms = 1 [ (gogoproto.moretags) = "yaml:\"denoms\"" ]; } + +// QueryDenomsMetadataRequest is the request type for the Query/DenomsMetadata RPC method. +message QueryStakeDropsRequest { + // pagination defines an optional pagination for the request. + cosmos.base.query.v1beta1.PageRequest pagination = 1; +} + +// QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC +// method. +message QueryStakeDropsResponse { + // metadata provides the client information for all the registered tokens. + repeated Stakedrop stakedrops = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + + // pagination defines the pagination in the response. + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} + +// QueryDenomsFromCreatorRequest defines the request structure for the +// DenomsFromCreator gRPC query. +message QueryStakeDropFromDenomRequest { + string denom = 1 [ (gogoproto.moretags) = "yaml:\"denom\"" ]; +} + +// QueryDenomsFromCreatorRequest defines the response structure for the +// DenomsFromCreator gRPC query. +message QueryStakeDropFromDenomResponse { + repeated Stakedrop stakedrops = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} + diff --git a/x/tokenfactory/client/cli/query.go b/x/tokenfactory/client/cli/query.go index 2df7367..f5b0cea 100644 --- a/x/tokenfactory/client/cli/query.go +++ b/x/tokenfactory/client/cli/query.go @@ -26,6 +26,8 @@ func GetQueryCmd() *cobra.Command { GetParams(), GetCmdDenomAuthorityMetadata(), GetCmdDenomsFromCreator(), + GetCmdStakedrops(), + GetCmdStakedropsByDenom(), ) return cmd @@ -115,3 +117,51 @@ func GetCmdDenomsFromCreator() *cobra.Command { return cmd } + +func GetCmdStakedrops() *cobra.Command { + cmd := &cobra.Command{ + Use: "stakedrops [flags]", + Short: "Returns a list of all active and incoming stakedrops", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.StakeDrops(cmd.Context(), &types.QueryStakeDropsRequest{}) + if err != nil { + return err + } + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func GetCmdStakedropsByDenom() *cobra.Command { + cmd := &cobra.Command{ + Use: "stakedrops-by-denom [denom] [flags]", + Short: "Returns a list of all active and incoming stakedrops for a specific denom", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.StakeDropsFromDenom(cmd.Context(), &types.QueryStakeDropFromDenomRequest{Denom: args[0]}) + if err != nil { + return err + } + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/tokenfactory/keeper/createstakedrop.go b/x/tokenfactory/keeper/createstakedrop.go index 44db5fd..6f2e520 100644 --- a/x/tokenfactory/keeper/createstakedrop.go +++ b/x/tokenfactory/keeper/createstakedrop.go @@ -41,6 +41,10 @@ func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, } func (k Keeper) validateCreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) error { + // params := k.GetParams(ctx) + // if !isWhitelistedAddress(creatorAddr, params) { + // return types.ErrUnauthorized + // } //verify sender has created a subdenom (amount.Denom) creator, _, err := types.DeconstructDenom(amount.Denom) if err != nil { diff --git a/x/tokenfactory/keeper/grpc_query.go b/x/tokenfactory/keeper/grpc_query.go index 5a26610..508ca66 100644 --- a/x/tokenfactory/keeper/grpc_query.go +++ b/x/tokenfactory/keeper/grpc_query.go @@ -3,9 +3,11 @@ package keeper import ( "context" + "cosmossdk.io/collections" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + "github.com/cosmos/cosmos-sdk/types/query" ) var _ types.QueryServer = Keeper{} @@ -33,3 +35,52 @@ func (k Keeper) DenomsFromCreator(ctx context.Context, req *types.QueryDenomsFro denoms := k.GetDenomsFromCreator(sdkCtx, req.GetCreator()) return &types.QueryDenomsFromCreatorResponse{Denoms: denoms}, nil } + +func (k Keeper) StakeDrops(ctx context.Context, req *types.QueryStakeDropsRequest) (*types.QueryStakeDropsResponse, error) { + + if req.Pagination != nil { + stakedrops, pageResp, err := query.CollectionPaginate(ctx, k.ActiveStakedrop, req.Pagination, func(key collections.Pair[uint64, uint64], value types.Stakedrop) (types.Stakedrop, error) { + return value, nil + }) + + if err != nil { + + return nil, err + } + + return &types.QueryStakeDropsResponse{Stakedrops: stakedrops, Pagination: pageResp}, nil + } else { + iter, err := k.ActiveStakedrop.Iterate(ctx, nil) + if err != nil { + return nil, err + } + stakedrops, err := iter.Values() + if err != nil { + return nil, err + } + return &types.QueryStakeDropsResponse{Stakedrops: stakedrops, Pagination: nil}, nil + } + +} + +func (k Keeper) StakeDropsFromDenom(ctx context.Context, req *types.QueryStakeDropFromDenomRequest) (*types.QueryStakeDropFromDenomResponse, error) { + stakedropsByDenom := []types.Stakedrop{} + iter, err := k.ActiveStakedrop.Indexes.StakedropByDenom.MatchExact(ctx, req.Denom) + if err != nil { + return nil, err + } + for ; iter.Valid(); iter.Next() { + key, err := iter.PrimaryKey() + if err != nil { + return nil, err + } + stakedrop, err := k.ActiveStakedrop.Get(ctx, key) + if err != nil { + return nil, err + } + stakedropsByDenom = append(stakedropsByDenom, stakedrop) + } + + return &types.QueryStakeDropFromDenomResponse{Stakedrops: stakedropsByDenom}, nil + +} diff --git a/x/tokenfactory/keeper/msg_server.go b/x/tokenfactory/keeper/msg_server.go index 5a3ca27..61387d4 100644 --- a/x/tokenfactory/keeper/msg_server.go +++ b/x/tokenfactory/keeper/msg_server.go @@ -197,7 +197,6 @@ func (server msgServer) CreateStakeDrop(goCtx context.Context, msg *types.MsgCre if err != nil { return nil, err } - if msg.Sender != authorityMetadata.GetAdmin() { return nil, types.ErrUnauthorized } diff --git a/x/tokenfactory/types/expected_keepers.go b/x/tokenfactory/types/expected_keepers.go index a159a1b..c9abca3 100644 --- a/x/tokenfactory/types/expected_keepers.go +++ b/x/tokenfactory/types/expected_keepers.go @@ -17,6 +17,7 @@ type BankKeeper interface { SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error diff --git a/x/tokenfactory/types/query.pb.go b/x/tokenfactory/types/query.pb.go index 09dc064..ec25bd6 100644 --- a/x/tokenfactory/types/query.pb.go +++ b/x/tokenfactory/types/query.pb.go @@ -6,7 +6,8 @@ package types import ( context "context" fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/types/query" + query "github.com/cosmos/cosmos-sdk/types/query" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -297,6 +298,200 @@ func (m *QueryDenomsFromCreatorResponse) GetDenoms() []string { return nil } +// QueryDenomsMetadataRequest is the request type for the Query/DenomsMetadata RPC method. +type QueryStakeDropsRequest struct { + // pagination defines an optional pagination for the request. + Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryStakeDropsRequest) Reset() { *m = QueryStakeDropsRequest{} } +func (m *QueryStakeDropsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryStakeDropsRequest) ProtoMessage() {} +func (*QueryStakeDropsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_6f22013ad0f72e3f, []int{6} +} +func (m *QueryStakeDropsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryStakeDropsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryStakeDropsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryStakeDropsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryStakeDropsRequest.Merge(m, src) +} +func (m *QueryStakeDropsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryStakeDropsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryStakeDropsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryStakeDropsRequest proto.InternalMessageInfo + +func (m *QueryStakeDropsRequest) GetPagination() *query.PageRequest { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC +// method. +type QueryStakeDropsResponse struct { + // metadata provides the client information for all the registered tokens. + Stakedrops []Stakedrop `protobuf:"bytes,1,rep,name=stakedrops,proto3" json:"stakedrops"` + // pagination defines the pagination in the response. + Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (m *QueryStakeDropsResponse) Reset() { *m = QueryStakeDropsResponse{} } +func (m *QueryStakeDropsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryStakeDropsResponse) ProtoMessage() {} +func (*QueryStakeDropsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6f22013ad0f72e3f, []int{7} +} +func (m *QueryStakeDropsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryStakeDropsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryStakeDropsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryStakeDropsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryStakeDropsResponse.Merge(m, src) +} +func (m *QueryStakeDropsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryStakeDropsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryStakeDropsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryStakeDropsResponse proto.InternalMessageInfo + +func (m *QueryStakeDropsResponse) GetStakedrops() []Stakedrop { + if m != nil { + return m.Stakedrops + } + return nil +} + +func (m *QueryStakeDropsResponse) GetPagination() *query.PageResponse { + if m != nil { + return m.Pagination + } + return nil +} + +// QueryDenomsFromCreatorRequest defines the request structure for the +// DenomsFromCreator gRPC query. +type QueryStakeDropFromDenomRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty" yaml:"denom"` +} + +func (m *QueryStakeDropFromDenomRequest) Reset() { *m = QueryStakeDropFromDenomRequest{} } +func (m *QueryStakeDropFromDenomRequest) String() string { return proto.CompactTextString(m) } +func (*QueryStakeDropFromDenomRequest) ProtoMessage() {} +func (*QueryStakeDropFromDenomRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_6f22013ad0f72e3f, []int{8} +} +func (m *QueryStakeDropFromDenomRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryStakeDropFromDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryStakeDropFromDenomRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryStakeDropFromDenomRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryStakeDropFromDenomRequest.Merge(m, src) +} +func (m *QueryStakeDropFromDenomRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryStakeDropFromDenomRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryStakeDropFromDenomRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryStakeDropFromDenomRequest proto.InternalMessageInfo + +func (m *QueryStakeDropFromDenomRequest) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +// QueryDenomsFromCreatorRequest defines the response structure for the +// DenomsFromCreator gRPC query. +type QueryStakeDropFromDenomResponse struct { + Stakedrops []Stakedrop `protobuf:"bytes,1,rep,name=stakedrops,proto3" json:"stakedrops"` +} + +func (m *QueryStakeDropFromDenomResponse) Reset() { *m = QueryStakeDropFromDenomResponse{} } +func (m *QueryStakeDropFromDenomResponse) String() string { return proto.CompactTextString(m) } +func (*QueryStakeDropFromDenomResponse) ProtoMessage() {} +func (*QueryStakeDropFromDenomResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6f22013ad0f72e3f, []int{9} +} +func (m *QueryStakeDropFromDenomResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryStakeDropFromDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryStakeDropFromDenomResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryStakeDropFromDenomResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryStakeDropFromDenomResponse.Merge(m, src) +} +func (m *QueryStakeDropFromDenomResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryStakeDropFromDenomResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryStakeDropFromDenomResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryStakeDropFromDenomResponse proto.InternalMessageInfo + +func (m *QueryStakeDropFromDenomResponse) GetStakedrops() []Stakedrop { + if m != nil { + return m.Stakedrops + } + return nil +} + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "osmosis.tokenfactory.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "osmosis.tokenfactory.v1beta1.QueryParamsResponse") @@ -304,6 +499,10 @@ func init() { proto.RegisterType((*QueryDenomAuthorityMetadataResponse)(nil), "osmosis.tokenfactory.v1beta1.QueryDenomAuthorityMetadataResponse") proto.RegisterType((*QueryDenomsFromCreatorRequest)(nil), "osmosis.tokenfactory.v1beta1.QueryDenomsFromCreatorRequest") proto.RegisterType((*QueryDenomsFromCreatorResponse)(nil), "osmosis.tokenfactory.v1beta1.QueryDenomsFromCreatorResponse") + proto.RegisterType((*QueryStakeDropsRequest)(nil), "osmosis.tokenfactory.v1beta1.QueryStakeDropsRequest") + proto.RegisterType((*QueryStakeDropsResponse)(nil), "osmosis.tokenfactory.v1beta1.QueryStakeDropsResponse") + proto.RegisterType((*QueryStakeDropFromDenomRequest)(nil), "osmosis.tokenfactory.v1beta1.QueryStakeDropFromDenomRequest") + proto.RegisterType((*QueryStakeDropFromDenomResponse)(nil), "osmosis.tokenfactory.v1beta1.QueryStakeDropFromDenomResponse") } func init() { @@ -311,44 +510,56 @@ func init() { } var fileDescriptor_6f22013ad0f72e3f = []byte{ - // 579 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4f, 0x6f, 0xd3, 0x3e, - 0x18, 0xae, 0x7f, 0xbf, 0xad, 0x68, 0xe6, 0x8f, 0xa8, 0x99, 0x10, 0x54, 0x23, 0x05, 0x33, 0x4d, - 0x1d, 0x9a, 0x62, 0x3a, 0x76, 0x40, 0x0c, 0x04, 0x4d, 0x11, 0x1c, 0x60, 0x12, 0xe4, 0x06, 0x97, - 0xca, 0xed, 0xbc, 0x24, 0x62, 0x89, 0xb3, 0xd8, 0x41, 0x54, 0xd3, 0x2e, 0x1c, 0x38, 0x23, 0x71, - 0xe4, 0x3b, 0xf0, 0x39, 0x76, 0x9c, 0xb4, 0x0b, 0xa7, 0x0a, 0xb5, 0x13, 0x1f, 0xa0, 0x9f, 0x00, - 0xc5, 0x76, 0xc7, 0x46, 0x4a, 0x54, 0xe0, 0x54, 0xd7, 0x7e, 0x9e, 0xe7, 0x7d, 0x9e, 0xf7, 0x7d, - 0x15, 0x58, 0xe7, 0x22, 0xe4, 0x22, 0x10, 0x44, 0xf2, 0x37, 0x2c, 0xda, 0xa2, 0x5d, 0xc9, 0x93, - 0x1e, 0x79, 0xdb, 0xe8, 0x30, 0x49, 0x1b, 0x64, 0x27, 0x65, 0x49, 0xcf, 0x8e, 0x13, 0x2e, 0x39, - 0x5a, 0x30, 0x48, 0xfb, 0x24, 0xd2, 0x36, 0xc8, 0xea, 0xbc, 0xc7, 0x3d, 0xae, 0x80, 0x24, 0x3b, - 0x69, 0x4e, 0x75, 0xc1, 0xe3, 0xdc, 0xdb, 0x66, 0x84, 0xc6, 0x01, 0xa1, 0x51, 0xc4, 0x25, 0x95, - 0x01, 0x8f, 0x84, 0x79, 0xbd, 0xd5, 0x55, 0x92, 0xa4, 0x43, 0x05, 0xd3, 0xa5, 0x8e, 0x0b, 0xc7, - 0xd4, 0x0b, 0x22, 0x05, 0x36, 0xd8, 0xb5, 0x42, 0x9f, 0x34, 0x95, 0x3e, 0x4f, 0x02, 0xd9, 0xdb, - 0x60, 0x92, 0x6e, 0x52, 0x49, 0x0d, 0x6b, 0xb9, 0x90, 0x15, 0xd3, 0x84, 0x86, 0xc6, 0x0c, 0x9e, - 0x87, 0xe8, 0x65, 0x66, 0xe1, 0x85, 0xba, 0x74, 0xd9, 0x4e, 0xca, 0x84, 0xc4, 0xaf, 0xe0, 0xa5, - 0x53, 0xb7, 0x22, 0xe6, 0x91, 0x60, 0xc8, 0x81, 0x65, 0x4d, 0xbe, 0x02, 0xae, 0x83, 0xfa, 0xd9, - 0xd5, 0x45, 0xbb, 0xa8, 0x39, 0xb6, 0x66, 0x3b, 0x33, 0xfb, 0xfd, 0x5a, 0xc9, 0x35, 0x4c, 0xfc, - 0x1c, 0x62, 0x25, 0xfd, 0x98, 0x45, 0x3c, 0x6c, 0xfe, 0x1a, 0xc0, 0x18, 0x40, 0x4b, 0x70, 0x76, - 0x33, 0x03, 0xa8, 0x42, 0x73, 0xce, 0xc5, 0x51, 0xbf, 0x76, 0xae, 0x47, 0xc3, 0xed, 0x7b, 0x58, - 0x5d, 0x63, 0x57, 0x3f, 0xe3, 0x2f, 0x00, 0xde, 0x2c, 0x94, 0x33, 0xce, 0x3f, 0x00, 0x88, 0x8e, - 0xbb, 0xd5, 0x0e, 0xcd, 0xb3, 0x89, 0xb1, 0x56, 0x1c, 0x63, 0xb2, 0xb4, 0x73, 0x23, 0x8b, 0x35, - 0xea, 0xd7, 0xae, 0x6a, 0x5f, 0x79, 0x75, 0xec, 0x56, 0x72, 0x03, 0xc2, 0x1b, 0xf0, 0xda, 0x4f, - 0xbf, 0xe2, 0x49, 0xc2, 0xc3, 0x56, 0xc2, 0xa8, 0xe4, 0xc9, 0x38, 0xf9, 0x0a, 0x3c, 0xd3, 0xd5, - 0x37, 0x26, 0x3b, 0x1a, 0xf5, 0x6b, 0x17, 0x74, 0x0d, 0xf3, 0x80, 0xdd, 0x31, 0x04, 0x3f, 0x83, - 0xd6, 0xef, 0xe4, 0x4c, 0xf2, 0x65, 0x58, 0x56, 0xad, 0xca, 0x66, 0xf6, 0x7f, 0x7d, 0xce, 0xa9, - 0x8c, 0xfa, 0xb5, 0xf3, 0x27, 0x5a, 0x29, 0xb0, 0x6b, 0x00, 0xab, 0x47, 0x33, 0x70, 0x56, 0xa9, - 0xa1, 0xcf, 0x00, 0x96, 0xf5, 0xf4, 0xd0, 0xed, 0xe2, 0xe6, 0xe4, 0x97, 0xa7, 0xda, 0xf8, 0x03, - 0x86, 0x36, 0x89, 0x57, 0xde, 0x1f, 0x1e, 0x7d, 0xfa, 0x6f, 0x09, 0x2d, 0x92, 0x29, 0x36, 0x17, - 0x7d, 0x07, 0xf0, 0xf2, 0xe4, 0xa1, 0xa0, 0x47, 0x53, 0xd4, 0x2e, 0xdc, 0xbc, 0x6a, 0xf3, 0x1f, - 0x14, 0x4c, 0x9a, 0xa7, 0x2a, 0x4d, 0x13, 0x3d, 0x2c, 0x4e, 0xa3, 0xbb, 0x4e, 0x76, 0xd5, 0xef, - 0x1e, 0xc9, 0x2f, 0x10, 0x3a, 0x04, 0xb0, 0x92, 0x9b, 0x2c, 0x5a, 0x9f, 0xd6, 0xe1, 0x84, 0xf5, - 0xaa, 0xde, 0xff, 0x3b, 0xb2, 0x49, 0xd6, 0x52, 0xc9, 0x1e, 0xa0, 0xf5, 0x69, 0x92, 0xb5, 0xb7, - 0x12, 0x1e, 0xb6, 0xcd, 0xa6, 0x92, 0x5d, 0x73, 0xd8, 0x73, 0xdc, 0xfd, 0x81, 0x05, 0x0e, 0x06, - 0x16, 0xf8, 0x36, 0xb0, 0xc0, 0xc7, 0xa1, 0x55, 0x3a, 0x18, 0x5a, 0xa5, 0xaf, 0x43, 0xab, 0xf4, - 0xfa, 0xae, 0x17, 0x48, 0x3f, 0xed, 0xd8, 0x5d, 0x1e, 0x92, 0x96, 0x1f, 0xf8, 0x29, 0xf5, 0x53, - 0xda, 0xf2, 0x69, 0x10, 0x91, 0xee, 0xf8, 0x2f, 0x79, 0x77, 0xba, 0xa6, 0xec, 0xc5, 0x4c, 0x74, - 0xca, 0xea, 0x6b, 0x76, 0xe7, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0x30, 0x50, 0x2e, 0x2e, 0xd8, - 0x05, 0x00, 0x00, + // 776 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcf, 0x4f, 0x13, 0x41, + 0x14, 0xee, 0xa0, 0x94, 0x30, 0xa8, 0xb1, 0x03, 0x41, 0x6d, 0xb0, 0xd5, 0x91, 0x40, 0x21, 0x64, + 0x07, 0x10, 0x13, 0x23, 0x10, 0xa5, 0x25, 0x60, 0xa2, 0x24, 0xba, 0x9c, 0xf4, 0x82, 0xd3, 0x32, + 0xb4, 0x1b, 0xd8, 0x9d, 0x65, 0x77, 0x6a, 0x6c, 0x08, 0x17, 0x0f, 0x9e, 0x4d, 0x3c, 0xfa, 0x0f, + 0x98, 0x98, 0x18, 0x4f, 0xfe, 0x0d, 0x1c, 0x49, 0x38, 0xe8, 0xa9, 0x31, 0x60, 0xf4, 0xe2, 0xa9, + 0x7f, 0x81, 0xd9, 0x99, 0xe9, 0x2f, 0x0a, 0x6b, 0x8b, 0xf1, 0x02, 0x65, 0xe6, 0x7b, 0xdf, 0xfb, + 0xbe, 0xf7, 0xe6, 0x3d, 0x0a, 0x53, 0xdc, 0xb7, 0xb9, 0x6f, 0xf9, 0x44, 0xf0, 0x4d, 0xe6, 0x6c, + 0xd0, 0x9c, 0xe0, 0x5e, 0x89, 0xbc, 0x9c, 0xca, 0x32, 0x41, 0xa7, 0xc8, 0x76, 0x91, 0x79, 0x25, + 0xc3, 0xf5, 0xb8, 0xe0, 0x68, 0x48, 0x23, 0x8d, 0x46, 0xa4, 0xa1, 0x91, 0xf1, 0x81, 0x3c, 0xcf, + 0x73, 0x09, 0x24, 0xc1, 0x27, 0x15, 0x13, 0x1f, 0xca, 0x73, 0x9e, 0xdf, 0x62, 0x84, 0xba, 0x16, + 0xa1, 0x8e, 0xc3, 0x05, 0x15, 0x16, 0x77, 0x7c, 0x7d, 0x3b, 0x9e, 0x93, 0x94, 0x24, 0x4b, 0x7d, + 0xa6, 0x52, 0xd5, 0x12, 0xbb, 0x34, 0x6f, 0x39, 0x12, 0xac, 0xb1, 0x33, 0xa1, 0x3a, 0x69, 0x51, + 0x14, 0xb8, 0x67, 0x89, 0xd2, 0x0a, 0x13, 0x74, 0x9d, 0x0a, 0xaa, 0xa3, 0x26, 0x42, 0xa3, 0x7c, + 0x41, 0x37, 0xd9, 0xba, 0xc7, 0x5d, 0x8d, 0x1e, 0x0b, 0x45, 0xbb, 0xd4, 0xa3, 0x76, 0x55, 0x7a, + 0x8c, 0xda, 0x96, 0xc3, 0x89, 0xfc, 0xa9, 0x8e, 0xf0, 0x00, 0x44, 0x4f, 0x03, 0x0f, 0x4f, 0x24, + 0xce, 0x64, 0xdb, 0x45, 0xe6, 0x0b, 0xfc, 0x0c, 0xf6, 0x37, 0x9d, 0xfa, 0x2e, 0x77, 0x7c, 0x86, + 0xd2, 0x30, 0xaa, 0xf8, 0xae, 0x82, 0x1b, 0x20, 0xd5, 0x37, 0x3d, 0x6c, 0x84, 0x55, 0xd7, 0x50, + 0xd1, 0xe9, 0xf3, 0x7b, 0xe5, 0x64, 0xc4, 0xd4, 0x91, 0xf8, 0x31, 0xc4, 0x92, 0x7a, 0x91, 0x39, + 0xdc, 0x5e, 0x38, 0x5e, 0x01, 0x2d, 0x00, 0x8d, 0xc0, 0xee, 0xf5, 0x00, 0x20, 0x13, 0xf5, 0xa6, + 0x2f, 0x57, 0xca, 0xc9, 0x0b, 0x25, 0x6a, 0x6f, 0xdd, 0xc3, 0xf2, 0x18, 0x9b, 0xea, 0x1a, 0x7f, + 0x02, 0xf0, 0x56, 0x28, 0x9d, 0x56, 0xfe, 0x06, 0x40, 0x54, 0x2b, 0xf7, 0x9a, 0xad, 0xaf, 0xb5, + 0x8d, 0x99, 0x70, 0x1b, 0x27, 0x53, 0xa7, 0x6f, 0x06, 0xb6, 0x2a, 0xe5, 0xe4, 0x35, 0xa5, 0xab, + 0x95, 0x1d, 0x9b, 0xb1, 0x96, 0x0e, 0xe3, 0x15, 0x78, 0xbd, 0xae, 0xd7, 0x5f, 0xf2, 0xb8, 0x9d, + 0xf1, 0x18, 0x15, 0xdc, 0xab, 0x3a, 0x9f, 0x80, 0x3d, 0x39, 0x75, 0xa2, 0xbd, 0xa3, 0x4a, 0x39, + 0x79, 0x49, 0xe5, 0xd0, 0x17, 0xd8, 0xac, 0x42, 0xf0, 0x23, 0x98, 0x38, 0x8d, 0x4e, 0x3b, 0x1f, + 0x83, 0x51, 0x59, 0xaa, 0xa0, 0x67, 0xe7, 0x52, 0xbd, 0xe9, 0x58, 0xa5, 0x9c, 0xbc, 0xd8, 0x50, + 0x4a, 0x1f, 0x9b, 0x1a, 0x80, 0x5f, 0xc0, 0x41, 0x49, 0xb6, 0x1a, 0xbc, 0xb0, 0x45, 0x8f, 0xbb, + 0xd5, 0xf7, 0x80, 0x96, 0x20, 0xac, 0xbf, 0x6d, 0x5d, 0xb5, 0x11, 0x43, 0x0d, 0x82, 0x11, 0x0c, + 0x82, 0xa1, 0x66, 0xae, 0xde, 0xf9, 0x3c, 0xd3, 0xb1, 0x66, 0x43, 0x24, 0xfe, 0x02, 0xe0, 0x95, + 0x96, 0x14, 0x5a, 0xa8, 0x09, 0x61, 0xed, 0x69, 0x2b, 0xb1, 0x7d, 0xd3, 0xa3, 0xe1, 0x9d, 0x59, + 0xad, 0xe2, 0xd3, 0xbd, 0x41, 0x33, 0x3e, 0xfc, 0xfa, 0x3c, 0x0e, 0xcc, 0x06, 0x16, 0xb4, 0xdc, + 0xa4, 0xbb, 0x4b, 0xea, 0x1e, 0xfd, 0xab, 0x6e, 0x25, 0xa8, 0x49, 0xf8, 0x43, 0x5d, 0xe7, 0x9a, + 0xee, 0xa0, 0xd4, 0xb2, 0xe8, 0x9d, 0xbe, 0xd8, 0x22, 0x4c, 0x9e, 0xca, 0xf4, 0xff, 0x2a, 0x31, + 0xfd, 0xbb, 0x07, 0x76, 0xcb, 0xbc, 0xe8, 0x3d, 0x80, 0x51, 0x35, 0x99, 0x68, 0x32, 0x9c, 0xb4, + 0x75, 0x31, 0xc4, 0xa7, 0x3a, 0x88, 0x50, 0x6e, 0xf0, 0xc4, 0xeb, 0x83, 0x1f, 0xef, 0xba, 0x46, + 0xd0, 0x30, 0x69, 0x63, 0x51, 0xa1, 0x9f, 0x00, 0x0e, 0x9e, 0x3c, 0x70, 0xe8, 0x41, 0x1b, 0xb9, + 0x43, 0xb7, 0x4a, 0x7c, 0xe1, 0x1f, 0x18, 0xb4, 0x9b, 0x65, 0xe9, 0x66, 0x01, 0xdd, 0x0f, 0x77, + 0xa3, 0x26, 0x8a, 0xec, 0xc8, 0xdf, 0xbb, 0xa4, 0x75, 0x39, 0xa0, 0x03, 0x00, 0x63, 0x2d, 0x53, + 0x8b, 0x66, 0xdb, 0x55, 0x78, 0xc2, 0xea, 0x88, 0xcf, 0x9d, 0x2d, 0x58, 0x3b, 0xcb, 0x48, 0x67, + 0xf3, 0x68, 0xb6, 0x1d, 0x67, 0x6b, 0x1b, 0x1e, 0xb7, 0xd7, 0xf4, 0x16, 0x22, 0x3b, 0xfa, 0xc3, + 0x2e, 0xfa, 0x08, 0x20, 0xac, 0xcf, 0x36, 0x9a, 0x69, 0x43, 0x51, 0xcb, 0xb6, 0x89, 0xdf, 0xe9, + 0x30, 0x4a, 0x1b, 0x98, 0x94, 0x06, 0xc6, 0x51, 0x8a, 0xb4, 0xf7, 0xff, 0xd3, 0x47, 0x5f, 0x01, + 0xec, 0xaf, 0x13, 0xd5, 0x06, 0x11, 0xcd, 0x75, 0x22, 0xe0, 0xf8, 0x26, 0x88, 0xcf, 0x9f, 0x31, + 0xba, 0xb3, 0x3e, 0xd4, 0x6d, 0xa8, 0x5e, 0xc8, 0xbe, 0x54, 0x1f, 0x5c, 0xda, 0xdc, 0x3b, 0x4c, + 0x80, 0xfd, 0xc3, 0x04, 0xf8, 0x7e, 0x98, 0x00, 0x6f, 0x8f, 0x12, 0x91, 0xfd, 0xa3, 0x44, 0xe4, + 0xdb, 0x51, 0x22, 0xf2, 0xfc, 0x6e, 0xde, 0x12, 0x85, 0x62, 0xd6, 0xc8, 0x71, 0x9b, 0x64, 0x0a, + 0x56, 0xa1, 0x48, 0x0b, 0x45, 0x9a, 0x29, 0x50, 0xcb, 0x21, 0xb9, 0xea, 0x9f, 0xe4, 0x55, 0x73, + 0x4e, 0x51, 0x72, 0x99, 0x9f, 0x8d, 0xca, 0x6f, 0x0c, 0xb7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, + 0x56, 0x5b, 0x90, 0xf5, 0x7d, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -372,6 +583,8 @@ type QueryClient interface { // DenomsFromCreator defines a gRPC query method for fetching all // denominations created by a specific admin/creator. DenomsFromCreator(ctx context.Context, in *QueryDenomsFromCreatorRequest, opts ...grpc.CallOption) (*QueryDenomsFromCreatorResponse, error) + StakeDrops(ctx context.Context, in *QueryStakeDropsRequest, opts ...grpc.CallOption) (*QueryStakeDropsResponse, error) + StakeDropsFromDenom(ctx context.Context, in *QueryStakeDropFromDenomRequest, opts ...grpc.CallOption) (*QueryStakeDropFromDenomResponse, error) } type queryClient struct { @@ -409,6 +622,24 @@ func (c *queryClient) DenomsFromCreator(ctx context.Context, in *QueryDenomsFrom return out, nil } +func (c *queryClient) StakeDrops(ctx context.Context, in *QueryStakeDropsRequest, opts ...grpc.CallOption) (*QueryStakeDropsResponse, error) { + out := new(QueryStakeDropsResponse) + err := c.cc.Invoke(ctx, "/osmosis.tokenfactory.v1beta1.Query/StakeDrops", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) StakeDropsFromDenom(ctx context.Context, in *QueryStakeDropFromDenomRequest, opts ...grpc.CallOption) (*QueryStakeDropFromDenomResponse, error) { + out := new(QueryStakeDropFromDenomResponse) + err := c.cc.Invoke(ctx, "/osmosis.tokenfactory.v1beta1.Query/StakeDropsFromDenom", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Params defines a gRPC query method that returns the tokenfactory module's @@ -420,6 +651,8 @@ type QueryServer interface { // DenomsFromCreator defines a gRPC query method for fetching all // denominations created by a specific admin/creator. DenomsFromCreator(context.Context, *QueryDenomsFromCreatorRequest) (*QueryDenomsFromCreatorResponse, error) + StakeDrops(context.Context, *QueryStakeDropsRequest) (*QueryStakeDropsResponse, error) + StakeDropsFromDenom(context.Context, *QueryStakeDropFromDenomRequest) (*QueryStakeDropFromDenomResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -435,6 +668,12 @@ func (*UnimplementedQueryServer) DenomAuthorityMetadata(ctx context.Context, req func (*UnimplementedQueryServer) DenomsFromCreator(ctx context.Context, req *QueryDenomsFromCreatorRequest) (*QueryDenomsFromCreatorResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DenomsFromCreator not implemented") } +func (*UnimplementedQueryServer) StakeDrops(ctx context.Context, req *QueryStakeDropsRequest) (*QueryStakeDropsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StakeDrops not implemented") +} +func (*UnimplementedQueryServer) StakeDropsFromDenom(ctx context.Context, req *QueryStakeDropFromDenomRequest) (*QueryStakeDropFromDenomResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StakeDropsFromDenom not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -494,6 +733,42 @@ func _Query_DenomsFromCreator_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Query_StakeDrops_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryStakeDropsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).StakeDrops(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/osmosis.tokenfactory.v1beta1.Query/StakeDrops", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).StakeDrops(ctx, req.(*QueryStakeDropsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_StakeDropsFromDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryStakeDropFromDenomRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).StakeDropsFromDenom(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/osmosis.tokenfactory.v1beta1.Query/StakeDropsFromDenom", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).StakeDropsFromDenom(ctx, req.(*QueryStakeDropFromDenomRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "osmosis.tokenfactory.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -510,6 +785,14 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "DenomsFromCreator", Handler: _Query_DenomsFromCreator_Handler, }, + { + MethodName: "StakeDrops", + Handler: _Query_StakeDrops_Handler, + }, + { + MethodName: "StakeDropsFromDenom", + Handler: _Query_StakeDropsFromDenom_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "osmosis/tokenfactory/v1beta1/query.proto", @@ -696,6 +979,157 @@ func (m *QueryDenomsFromCreatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } +func (m *QueryStakeDropsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryStakeDropsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryStakeDropsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryStakeDropsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryStakeDropsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryStakeDropsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Pagination != nil { + { + size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Stakedrops) > 0 { + for iNdEx := len(m.Stakedrops) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Stakedrops[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryStakeDropFromDenomRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryStakeDropFromDenomRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryStakeDropFromDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryStakeDropFromDenomResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryStakeDropFromDenomResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryStakeDropFromDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Stakedrops) > 0 { + for iNdEx := len(m.Stakedrops) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Stakedrops[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -776,16 +1210,291 @@ func (m *QueryDenomsFromCreatorResponse) Size() (n int) { n += 1 + l + sovQuery(uint64(l)) } } - return n -} + return n +} + +func (m *QueryStakeDropsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryStakeDropsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Stakedrops) > 0 { + for _, e := range m.Stakedrops { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryStakeDropFromDenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryStakeDropFromDenomResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Stakedrops) > 0 { + for _, e := range m.Stakedrops { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryDenomAuthorityMetadataRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryDenomAuthorityMetadataRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDenomAuthorityMetadataRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil } -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDenomAuthorityMetadataResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -808,12 +1517,45 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDenomAuthorityMetadataResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDenomAuthorityMetadataResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthorityMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AuthorityMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -835,7 +1577,7 @@ func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { +func (m *QueryDenomsFromCreatorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -858,17 +1600,17 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDenomsFromCreatorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDenomsFromCreatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -878,24 +1620,23 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Creator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -918,7 +1659,7 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomAuthorityMetadataRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDenomsFromCreatorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -941,15 +1682,15 @@ func (m *QueryDenomAuthorityMetadataRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomAuthorityMetadataRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDenomsFromCreatorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomAuthorityMetadataRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDenomsFromCreatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denoms", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -977,7 +1718,7 @@ func (m *QueryDenomAuthorityMetadataRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Denom = string(dAtA[iNdEx:postIndex]) + m.Denoms = append(m.Denoms, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -1000,7 +1741,7 @@ func (m *QueryDenomAuthorityMetadataRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomAuthorityMetadataResponse) Unmarshal(dAtA []byte) error { +func (m *QueryStakeDropsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1023,15 +1764,15 @@ func (m *QueryDenomAuthorityMetadataResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomAuthorityMetadataResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryStakeDropsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomAuthorityMetadataResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryStakeDropsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthorityMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1058,7 +1799,10 @@ func (m *QueryDenomAuthorityMetadataResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AuthorityMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Pagination == nil { + m.Pagination = &query.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1083,7 +1827,7 @@ func (m *QueryDenomAuthorityMetadataResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomsFromCreatorRequest) Unmarshal(dAtA []byte) error { +func (m *QueryStakeDropsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1106,17 +1850,17 @@ func (m *QueryDenomsFromCreatorRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomsFromCreatorRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryStakeDropsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomsFromCreatorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryStakeDropsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Stakedrops", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -1126,23 +1870,61 @@ func (m *QueryDenomsFromCreatorRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Creator = string(dAtA[iNdEx:postIndex]) + m.Stakedrops = append(m.Stakedrops, Stakedrop{}) + if err := m.Stakedrops[len(m.Stakedrops)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pagination == nil { + m.Pagination = &query.PageResponse{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -1165,7 +1947,7 @@ func (m *QueryDenomsFromCreatorRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomsFromCreatorResponse) Unmarshal(dAtA []byte) error { +func (m *QueryStakeDropFromDenomRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1188,15 +1970,15 @@ func (m *QueryDenomsFromCreatorResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomsFromCreatorResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryStakeDropFromDenomRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomsFromCreatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryStakeDropFromDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denoms", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1224,7 +2006,91 @@ func (m *QueryDenomsFromCreatorResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Denoms = append(m.Denoms, string(dAtA[iNdEx:postIndex])) + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryStakeDropFromDenomResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryStakeDropFromDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryStakeDropFromDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Stakedrops", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Stakedrops = append(m.Stakedrops, Stakedrop{}) + if err := m.Stakedrops[len(m.Stakedrops)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/tokenfactory/types/query.pb.gw.go b/x/tokenfactory/types/query.pb.gw.go index 0b895e7..73bd364 100644 --- a/x/tokenfactory/types/query.pb.gw.go +++ b/x/tokenfactory/types/query.pb.gw.go @@ -159,6 +159,96 @@ func local_request_Query_DenomsFromCreator_0(ctx context.Context, marshaler runt } +var ( + filter_Query_StakeDrops_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_StakeDrops_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryStakeDropsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_StakeDrops_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.StakeDrops(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_StakeDrops_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryStakeDropsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_StakeDrops_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.StakeDrops(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_StakeDropsFromDenom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryStakeDropFromDenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["denom"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + } + + protoReq.Denom, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + } + + msg, err := client.StakeDropsFromDenom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_StakeDropsFromDenom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryStakeDropFromDenomRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["denom"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + } + + protoReq.Denom, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + } + + msg, err := server.StakeDropsFromDenom(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -234,6 +324,52 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_StakeDrops_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_StakeDrops_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_StakeDrops_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_StakeDropsFromDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_StakeDropsFromDenom_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_StakeDropsFromDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -335,6 +471,46 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_StakeDrops_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_StakeDrops_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_StakeDrops_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_StakeDropsFromDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_StakeDropsFromDenom_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_StakeDropsFromDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -344,6 +520,10 @@ var ( pattern_Query_DenomAuthorityMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"osmosis", "tokenfactory", "v1beta1", "denoms", "denom", "authority_metadata"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_DenomsFromCreator_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"osmosis", "tokenfactory", "v1beta1", "denoms_from_creator", "creator"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_StakeDrops_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"osmosis", "tokenfactory", "v1beta1", "stakedrops"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_StakeDropsFromDenom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"osmosis", "tokenfactory", "v1beta1", "stakedrops_from_denom", "denom"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -352,4 +532,8 @@ var ( forward_Query_DenomAuthorityMetadata_0 = runtime.ForwardResponseMessage forward_Query_DenomsFromCreator_0 = runtime.ForwardResponseMessage + + forward_Query_StakeDrops_0 = runtime.ForwardResponseMessage + + forward_Query_StakeDropsFromDenom_0 = runtime.ForwardResponseMessage ) From e3d6dc3c7d39503662a358af7d668502a56c9b8b Mon Sep 17 00:00:00 2001 From: Victor118 Date: Thu, 7 Nov 2024 18:37:34 +0100 Subject: [PATCH 06/23] Add stakedrop msg & queries to cosmwasm binding --- x/tokenfactory/bindings/message_plugin.go | 39 +++++++++++++++++++++++ x/tokenfactory/bindings/queries.go | 22 +++++++++++++ x/tokenfactory/bindings/query_plugin.go | 31 ++++++++++++++++-- x/tokenfactory/bindings/types/msg.go | 9 ++++++ x/tokenfactory/bindings/types/query.go | 21 +++++++++--- 5 files changed, 115 insertions(+), 7 deletions(-) diff --git a/x/tokenfactory/bindings/message_plugin.go b/x/tokenfactory/bindings/message_plugin.go index 0e5e58f..a09a48f 100644 --- a/x/tokenfactory/bindings/message_plugin.go +++ b/x/tokenfactory/bindings/message_plugin.go @@ -64,10 +64,49 @@ func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddre if contractMsg.ForceTransfer != nil { return m.forceTransfer(ctx, contractAddr, contractMsg.ForceTransfer) } + if contractMsg.CreateStakedrop != nil { + return m.createStakedrop(ctx, contractAddr, contractMsg.CreateStakedrop) + } } return m.wrapped.DispatchMsg(ctx, contractAddr, contractIBCPortID, msg) } +// createDenom creates a new token denom +func (m *CustomMessenger) createStakedrop(ctx sdk.Context, contractAddr sdk.AccAddress, createStakedrop *bindingstypes.CreateStakedrop) ([]sdk.Event, [][]byte, [][]*types.Any, error) { + bz, err := PerformCreateStakedrop(m.tokenFactory, m.bank, ctx, contractAddr, createStakedrop) + if err != nil { + return nil, nil, nil, errorsmod.Wrap(err, "perform create stakedrop") + } + // TODO: double check how this is all encoded to the contract + return nil, [][]byte{bz}, nil, nil +} + +// PerformCreateStakedrop is used with createStakedrop to create a stakedrop; validates the msgCreateStakedrop. +func PerformCreateStakedrop(f *tokenfactorykeeper.Keeper, b bankkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, createStakedrop *bindingstypes.CreateStakedrop) ([]byte, error) { + if createStakedrop == nil { + return nil, wasmvmtypes.InvalidRequest{Err: "create stakedrop null create stakedrop"} + } + + msgServer := tokenfactorykeeper.NewMsgServerImpl(*f) + + msgCreateStakedrop := tokenfactorytypes.NewMsgCreateStakeDrop(contractAddr.String(), sdk.NewCoin(createStakedrop.Denom, createStakedrop.Amount), createStakedrop.StartBlock, createStakedrop.EndBlock) + + if err := msgCreateStakedrop.ValidateBasic(); err != nil { + return nil, errorsmod.Wrap(err, "failed validating MsgCreateStakedrop") + } + + // Create denom + resp, err := msgServer.CreateStakeDrop( + ctx, + msgCreateStakedrop, + ) + if err != nil { + return nil, errorsmod.Wrap(err, "creating stakedrop") + } + + return resp.Marshal() +} + // createDenom creates a new token denom func (m *CustomMessenger) createDenom(ctx sdk.Context, contractAddr sdk.AccAddress, createDenom *bindingstypes.CreateDenom) ([]sdk.Event, [][]byte, [][]*types.Any, error) { bz, err := PerformCreateDenom(m.tokenFactory, m.bank, ctx, contractAddr, createDenom) diff --git a/x/tokenfactory/bindings/queries.go b/x/tokenfactory/bindings/queries.go index 100468c..4f8de7b 100644 --- a/x/tokenfactory/bindings/queries.go +++ b/x/tokenfactory/bindings/queries.go @@ -8,6 +8,7 @@ import ( bindingstypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/bindings/types" tokenfactorykeeper "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/keeper" + tftypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" ) type QueryPlugin struct { @@ -32,6 +33,27 @@ func (qp QueryPlugin) GetDenomAdmin(ctx sdk.Context, denom string) (*bindingstyp return &bindingstypes.AdminResponse{Admin: metadata.Admin}, nil } +// GetDenomAdmin is a query to get denom admin. +func (qp QueryPlugin) GetStakedropByDenom(ctx sdk.Context, denom string) (*bindingstypes.StakedropByDenomResponse, error) { + stakedropsByDenom := []tftypes.Stakedrop{} + iter, err := qp.tokenFactoryKeeper.ActiveStakedrop.Indexes.StakedropByDenom.MatchExact(ctx, denom) + if err != nil { + return nil, err + } + for ; iter.Valid(); iter.Next() { + key, err := iter.PrimaryKey() + if err != nil { + return nil, err + } + stakedrop, err := qp.tokenFactoryKeeper.ActiveStakedrop.Get(ctx, key) + if err != nil { + return nil, err + } + stakedropsByDenom = append(stakedropsByDenom, stakedrop) + } + return &bindingstypes.StakedropByDenomResponse{Stakedrops: stakedropsByDenom}, nil +} + func (qp QueryPlugin) GetDenomsByCreator(ctx sdk.Context, creator string) (*bindingstypes.DenomsByCreatorResponse, error) { // TODO: validate creator address denoms := qp.tokenFactoryKeeper.GetDenomsFromCreator(ctx, creator) diff --git a/x/tokenfactory/bindings/query_plugin.go b/x/tokenfactory/bindings/query_plugin.go index 28b4441..27c0759 100644 --- a/x/tokenfactory/bindings/query_plugin.go +++ b/x/tokenfactory/bindings/query_plugin.go @@ -8,9 +8,9 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - bindingstypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/bindings/types" + tftypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + sdk "github.com/cosmos/cosmos-sdk/types" ) // CustomQuerier dispatches custom CosmWasm bindings queries. @@ -92,6 +92,33 @@ func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessag return nil, fmt.Errorf("failed to JSON marshal ParamsResponse: %w", err) } + return bz, nil + case contractQuery.Stakedrop != nil: + stakedropsByDenom := []tftypes.Stakedrop{} + iter, err := qp.tokenFactoryKeeper.ActiveStakedrop.Indexes.StakedropByDenom.MatchExact(ctx, contractQuery.Stakedrop.Denom) + if err != nil { + return nil, err + } + for ; iter.Valid(); iter.Next() { + key, err := iter.PrimaryKey() + if err != nil { + return nil, err + } + stakedrop, err := qp.tokenFactoryKeeper.ActiveStakedrop.Get(ctx, key) + if err != nil { + return nil, err + } + stakedropsByDenom = append(stakedropsByDenom, stakedrop) + } + if err != nil { + return nil, err + } + + bz, err := json.Marshal(stakedropsByDenom) + if err != nil { + return nil, fmt.Errorf("failed to JSON marshal ParamsResponse: %w", err) + } + return bz, nil default: diff --git a/x/tokenfactory/bindings/types/msg.go b/x/tokenfactory/bindings/types/msg.go index 81d9a68..d219306 100644 --- a/x/tokenfactory/bindings/types/msg.go +++ b/x/tokenfactory/bindings/types/msg.go @@ -19,6 +19,15 @@ type TokenFactoryMsg struct { SetMetadata *SetMetadata `json:"set_metadata,omitempty"` /// Forces a transfer of tokens from one address to another. ForceTransfer *ForceTransfer `json:"force_transfer,omitempty"` + + CreateStakedrop *CreateStakedrop `json:"create_stakedrop,omitempty"` +} + +type CreateStakedrop struct { + Denom string `json:"denom"` + Amount math.Int `json:"amount"` + StartBlock int64 `json:"start_block"` + EndBlock int64 `json:"end_block"` } // CreateDenom creates a new factory denom, of denomination: diff --git a/x/tokenfactory/bindings/types/query.go b/x/tokenfactory/bindings/types/query.go index 60f0ac3..c3718a0 100644 --- a/x/tokenfactory/bindings/types/query.go +++ b/x/tokenfactory/bindings/types/query.go @@ -1,14 +1,17 @@ package types +import "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + // See https://github.com/CosmWasm/token-bindings/blob/main/packages/bindings/src/query.rs type TokenFactoryQuery struct { /// Given a subdenom minted by a contract via `OsmosisMsg::MintTokens`, /// returns the full denom as used by `BankMsg::Send`. - FullDenom *FullDenom `json:"full_denom,omitempty"` - Admin *DenomAdmin `json:"admin,omitempty"` - Metadata *GetMetadata `json:"metadata,omitempty"` - DenomsByCreator *DenomsByCreator `json:"denoms_by_creator,omitempty"` - Params *GetParams `json:"params,omitempty"` + FullDenom *FullDenom `json:"full_denom,omitempty"` + Admin *DenomAdmin `json:"admin,omitempty"` + Metadata *GetMetadata `json:"metadata,omitempty"` + DenomsByCreator *DenomsByCreator `json:"denoms_by_creator,omitempty"` + Params *GetParams `json:"params,omitempty"` + Stakedrop *StakedropByDenom `json:"stakedrop,omitempty"` } // query types @@ -22,6 +25,10 @@ type GetMetadata struct { Denom string `json:"denom"` } +type StakedropByDenom struct { + Denom string `json:"denom"` +} + type DenomAdmin struct { Denom string `json:"denom"` } @@ -38,6 +45,10 @@ type FullDenomResponse struct { Denom string `json:"denom"` } +type StakedropByDenomResponse struct { + Stakedrops []types.Stakedrop `json:"stakedrops"` +} + type AdminResponse struct { Admin string `json:"admin"` } From 51328c281b9fa1cf372f36ba0fc88394933b3fbf Mon Sep 17 00:00:00 2001 From: Victor118 Date: Fri, 8 Nov 2024 14:25:05 +0100 Subject: [PATCH 07/23] Fix tests --- x/tokenfactory/types/codec_test.go | 3 ++- x/tokenfactory/types/params.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x/tokenfactory/types/codec_test.go b/x/tokenfactory/types/codec_test.go index 7b82637..bee254b 100644 --- a/x/tokenfactory/types/codec_test.go +++ b/x/tokenfactory/types/codec_test.go @@ -23,12 +23,13 @@ func (suite *CodecTestSuite) TestRegisterInterfaces() { RegisterInterfaces(registry) impls := registry.ListImplementations(sdk.MsgInterfaceProtoName) - suite.Require().Equal(7, len(impls)) + suite.Require().Equal(8, len(impls)) suite.Require().ElementsMatch([]string{ "/osmosis.tokenfactory.v1beta1.MsgCreateDenom", "/osmosis.tokenfactory.v1beta1.MsgMint", "/osmosis.tokenfactory.v1beta1.MsgBurn", "/osmosis.tokenfactory.v1beta1.MsgChangeAdmin", + "/osmosis.tokenfactory.v1beta1.MsgCreateStakeDrop", "/osmosis.tokenfactory.v1beta1.MsgSetDenomMetadata", "/osmosis.tokenfactory.v1beta1.MsgForceTransfer", "/osmosis.tokenfactory.v1beta1.MsgUpdateParams", diff --git a/x/tokenfactory/types/params.go b/x/tokenfactory/types/params.go index 62045c9..3cee331 100644 --- a/x/tokenfactory/types/params.go +++ b/x/tokenfactory/types/params.go @@ -60,7 +60,7 @@ func validateStakedropChargePerBlock(i interface{}) error { if !ok { return fmt.Errorf("invalid parameter type: %T", i) } - if v.Validate() != nil { + if (v != sdk.Coin{} && v.Validate() != nil) { return fmt.Errorf("invalid denom stakedrop creation fee: %+v", i) } From 0bb4b597d496576cbda4fd0898688be6e0f83926 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Thu, 28 Nov 2024 09:35:07 +0100 Subject: [PATCH 08/23] Remove logs --- x/tokenfactory/abci.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/x/tokenfactory/abci.go b/x/tokenfactory/abci.go index c45cea9..40a1403 100644 --- a/x/tokenfactory/abci.go +++ b/x/tokenfactory/abci.go @@ -1,8 +1,6 @@ package tokenfactory import ( - "fmt" - "cosmossdk.io/collections" "cosmossdk.io/math" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/keeper" @@ -34,16 +32,12 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bankKeeper types.BankKeeper) } if ctx.BlockHeight() >= stakeDrop.Value.StartBlock && ctx.BlockHeight() < (stakeDrop.Value.EndBlock) { - ctx.Logger().Error(fmt.Sprintf("Stakedrop %v %s in Block %d", stakeDrop.Value.AmountPerBlock.Amount, stakeDrop.Value.Amount.Denom, ctx.BlockHeight())) coinsToSend = coinsToSend.Add(stakeDrop.Value.AmountPerBlock) } else if ctx.BlockHeight() == stakeDrop.Value.EndBlock { restAmount := stakeDrop.Value.Amount.Amount.Sub(stakeDrop.Value.AmountPerBlock.Amount.Mul(math.NewInt(stakeDrop.Value.EndBlock - stakeDrop.Value.StartBlock))) - ctx.Logger().Error(fmt.Sprintf("Last Stakedrop %v in Block %d", restAmount, ctx.BlockHeight())) coinsToSend = coinsToSend.Add(sdk.NewCoin(stakeDrop.Value.Amount.Denom, restAmount)) - } else if ctx.BlockHeight() > stakeDrop.Value.EndBlock { - ctx.Logger().Error(fmt.Sprintf("Remove Stakedrop in Block %d", ctx.BlockHeight())) k.ActiveStakedrop.Remove(ctx, stakeDrop.Key) } } From f1591c7dae16a25737f1cc139f14bb2fe56171ca Mon Sep 17 00:00:00 2001 From: Victor118 Date: Thu, 28 Nov 2024 09:36:38 +0100 Subject: [PATCH 09/23] Binding configuration for wasm contracts --- app/app.go | 2 +- x/tokenfactory/bindings/message_plugin.go | 49 +++++++++++++++++++++-- x/tokenfactory/bindings/query_plugin.go | 42 ++++++++++++++++++- x/tokenfactory/bindings/types/msg.go | 15 ++++++- x/tokenfactory/bindings/wasm.go | 12 +++++- x/tokenfactory/keeper/createdenom.go | 1 + 6 files changed, 112 insertions(+), 9 deletions(-) diff --git a/app/app.go b/app/app.go index 55acb08..c53225e 100644 --- a/app/app.go +++ b/app/app.go @@ -706,7 +706,7 @@ func New( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - tfOpts := tokenbindings.RegisterCustomPlugins(&app.BankKeeper, &app.TokenFactoryKeeper) + tfOpts := tokenbindings.RegisterCustomPlugins(app.GRPCQueryRouter(), appCodec, &app.BankKeeper, &app.TokenFactoryKeeper, &app.LiquidityKeeper) wasmOpts = append(wasmOpts, tfOpts...) wasmDir := filepath.Join(homePath, "data") diff --git a/x/tokenfactory/bindings/message_plugin.go b/x/tokenfactory/bindings/message_plugin.go index a09a48f..f86db3a 100644 --- a/x/tokenfactory/bindings/message_plugin.go +++ b/x/tokenfactory/bindings/message_plugin.go @@ -15,15 +15,18 @@ import ( bindingstypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/bindings/types" tokenfactorykeeper "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/keeper" tokenfactorytypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + liquiditykeeper "github.com/Victor118/liquidity/x/liquidity/keeper" + liquiditytypes "github.com/Victor118/liquidity/x/liquidity/types" ) // CustomMessageDecorator returns decorator for custom CosmWasm bindings messages -func CustomMessageDecorator(bank bankkeeper.Keeper, tokenFactory *tokenfactorykeeper.Keeper) func(wasmkeeper.Messenger) wasmkeeper.Messenger { +func CustomMessageDecorator(bank bankkeeper.Keeper, tokenFactory *tokenfactorykeeper.Keeper, liquidityKeeper *liquiditykeeper.Keeper) func(wasmkeeper.Messenger) wasmkeeper.Messenger { return func(old wasmkeeper.Messenger) wasmkeeper.Messenger { return &CustomMessenger{ wrapped: old, bank: bank, tokenFactory: tokenFactory, + liquidity: liquidityKeeper, } } } @@ -32,6 +35,7 @@ type CustomMessenger struct { wrapped wasmkeeper.Messenger bank bankkeeper.Keeper tokenFactory *tokenfactorykeeper.Keeper + liquidity *liquiditykeeper.Keeper } var _ wasmkeeper.Messenger = (*CustomMessenger)(nil) @@ -41,7 +45,7 @@ func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddre if msg.Custom != nil { // only handle the happy path where this is really creating / minting / swapping ... // leave everything else for the wrapped version - var contractMsg bindingstypes.TokenFactoryMsg + var contractMsg bindingstypes.WasmMsg if err := json.Unmarshal(msg.Custom, &contractMsg); err != nil { return nil, nil, nil, errorsmod.Wrap(err, "token factory msg") } @@ -67,11 +71,14 @@ func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddre if contractMsg.CreateStakedrop != nil { return m.createStakedrop(ctx, contractAddr, contractMsg.CreateStakedrop) } + if contractMsg.CreatePool != nil { + return m.createPool(ctx, contractAddr, contractMsg.CreatePool) + } } return m.wrapped.DispatchMsg(ctx, contractAddr, contractIBCPortID, msg) } -// createDenom creates a new token denom +// createDenom creates a stakedrop, an amount of tokens distributed to stakers over a range of block func (m *CustomMessenger) createStakedrop(ctx sdk.Context, contractAddr sdk.AccAddress, createStakedrop *bindingstypes.CreateStakedrop) ([]sdk.Event, [][]byte, [][]*types.Any, error) { bz, err := PerformCreateStakedrop(m.tokenFactory, m.bank, ctx, contractAddr, createStakedrop) if err != nil { @@ -107,6 +114,42 @@ func PerformCreateStakedrop(f *tokenfactorykeeper.Keeper, b bankkeeper.Keeper, c return resp.Marshal() } +// createDenom creates a new token denom +func (m *CustomMessenger) createPool(ctx sdk.Context, contractAddr sdk.AccAddress, createPool *bindingstypes.CreatePool) ([]sdk.Event, [][]byte, [][]*types.Any, error) { + bz, err := PerformCreatePool(m.liquidity, m.bank, ctx, contractAddr, createPool) + if err != nil { + return nil, nil, nil, errorsmod.Wrap(err, "perform create pool") + } + // TODO: double check how this is all encoded to the contract + return nil, [][]byte{bz}, nil, nil +} + +// PerformCreateStakedrop is used with createStakedrop to create a stakedrop; validates the msgCreateStakedrop. +func PerformCreatePool(f *liquiditykeeper.Keeper, b bankkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, createPool *bindingstypes.CreatePool) ([]byte, error) { + if createPool == nil { + return nil, wasmvmtypes.InvalidRequest{Err: "create stakedrop null create stakedrop"} + } + + msgServer := liquiditykeeper.NewMsgServerImpl(*f) + + msgCreatePool := liquiditytypes.NewMsgCreatePool(contractAddr, uint32(1), sdk.NewCoins(sdk.NewCoin(createPool.Denom1, createPool.Amount1), sdk.NewCoin(createPool.Denom2, createPool.Amount2))) + + if err := msgCreatePool.ValidateBasic(); err != nil { + return nil, errorsmod.Wrap(err, "failed validating MsgCreateStakedrop") + } + + // Create denom + resp, err := msgServer.CreatePool( + ctx, + msgCreatePool, + ) + if err != nil { + return nil, errorsmod.Wrap(err, "creating stakedrop") + } + + return resp.Marshal() +} + // createDenom creates a new token denom func (m *CustomMessenger) createDenom(ctx sdk.Context, contractAddr sdk.AccAddress, createDenom *bindingstypes.CreateDenom) ([]sdk.Event, [][]byte, [][]*types.Any, error) { bz, err := PerformCreateDenom(m.tokenFactory, m.bank, ctx, contractAddr, createDenom) diff --git a/x/tokenfactory/bindings/query_plugin.go b/x/tokenfactory/bindings/query_plugin.go index 27c0759..61a3c56 100644 --- a/x/tokenfactory/bindings/query_plugin.go +++ b/x/tokenfactory/bindings/query_plugin.go @@ -7,15 +7,22 @@ import ( wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types" errorsmod "cosmossdk.io/errors" - bindingstypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/bindings/types" tftypes "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" //nolint:staticcheck + ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + ibcchanneltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" ) // CustomQuerier dispatches custom CosmWasm bindings queries. func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessage) ([]byte, error) { return func(ctx sdk.Context, request json.RawMessage) ([]byte, error) { + ctx.Logger().Error("CustomQuerier ***************************************") var contractQuery bindingstypes.TokenFactoryQuery if err := json.Unmarshal(request, &contractQuery); err != nil { return nil, errorsmod.Wrap(err, "osmosis query") @@ -82,6 +89,7 @@ func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessag return bz, nil case contractQuery.Params != nil: + ctx.Logger().Error("CustomQuerier : PARAMS***************************************") res, err := qp.GetParams(ctx) if err != nil { return nil, err @@ -91,7 +99,8 @@ func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessag if err != nil { return nil, fmt.Errorf("failed to JSON marshal ParamsResponse: %w", err) } - + ctx.Logger().Error(fmt.Sprintf("EVERYTHING IS OK IN PARAMS *************************************** %+v ", res)) + ctx.Logger().Error(fmt.Sprintf("Serialized JSON: %s", string(bz))) return bz, nil case contractQuery.Stakedrop != nil: stakedropsByDenom := []tftypes.Stakedrop{} @@ -145,3 +154,32 @@ func ConvertSdkCoinToWasmCoin(coin sdk.Coin) wasmvmtypes.Coin { Amount: coin.Amount.String(), } } + +func AcceptedStargateQueries() wasmkeeper.AcceptedQueries { + return wasmkeeper.AcceptedQueries{ + // ibc + "/ibc.core.client.v1.Query/ClientState": &ibcclienttypes.QueryClientStateResponse{}, + "/ibc.core.client.v1.Query/ConsensusState": &ibcclienttypes.QueryConsensusStateResponse{}, + "/ibc.core.connection.v1.Query/Connection": &ibcconnectiontypes.QueryConnectionResponse{}, + "/ibc.core.channel.v1.Query/ChannelClientState": &ibcchanneltypes.QueryChannelClientStateResponse{}, + + // token factory + "/osmosis.tokenfactory.v1beta1.Query/Params": &tftypes.QueryParamsResponse{}, + "/osmosis.tokenfactory.v1beta1.Query/DenomAuthorityMetadata": &tftypes.QueryDenomAuthorityMetadataResponse{}, + "/osmosis.tokenfactory.v1beta1.Query/DenomsFromCreator": &tftypes.QueryDenomsFromCreatorResponse{}, + + // transfer + "/ibc.applications.transfer.v1.Query/DenomTrace": &ibctransfertypes.QueryDenomTraceResponse{}, + "/ibc.applications.transfer.v1.Query/EscrowAddress": &ibctransfertypes.QueryEscrowAddressResponse{}, + + // auth + "/cosmos.auth.v1beta1.Query/Account": &authtypes.QueryAccountResponse{}, + "/cosmos.auth.v1beta1.Query/Params": &authtypes.QueryParamsResponse{}, + + // bank + "/cosmos.bank.v1beta1.Query/Balance": &banktypes.QueryBalanceResponse{}, + "/cosmos.bank.v1beta1.Query/DenomMetadata": &banktypes.QueryDenomsMetadataResponse{}, + "/cosmos.bank.v1beta1.Query/Params": &banktypes.QueryParamsResponse{}, + "/cosmos.bank.v1beta1.Query/SupplyOf": &banktypes.QuerySupplyOfResponse{}, + } +} diff --git a/x/tokenfactory/bindings/types/msg.go b/x/tokenfactory/bindings/types/msg.go index d219306..df9bf54 100644 --- a/x/tokenfactory/bindings/types/msg.go +++ b/x/tokenfactory/bindings/types/msg.go @@ -2,7 +2,7 @@ package types import "cosmossdk.io/math" -type TokenFactoryMsg struct { +type WasmMsg struct { /// Contracts can create denoms, namespaced under the contract's address. /// A contract may create any number of independent sub-denoms. CreateDenom *CreateDenom `json:"create_denom,omitempty"` @@ -21,6 +21,8 @@ type TokenFactoryMsg struct { ForceTransfer *ForceTransfer `json:"force_transfer,omitempty"` CreateStakedrop *CreateStakedrop `json:"create_stakedrop,omitempty"` + + CreatePool *CreatePool `json:"create_pool,omitempty"` } type CreateStakedrop struct { @@ -71,3 +73,14 @@ type ForceTransfer struct { FromAddress string `json:"from_address"` ToAddress string `json:"to_address"` } + +// Message for liquidity module +// TODO binding folder should be extracted from tokenfactory module +type CreatePool struct { + PoolCreatorAddress string `json:"denom"` + PoolTypeId uint32 `json:"pool_type_id"` + Amount1 math.Int `json:"amount1"` + Denom1 string `json:"denom1"` + Amount2 math.Int `json:"amount2"` + Denom2 string `json:"denom2"` +} diff --git a/x/tokenfactory/bindings/wasm.go b/x/tokenfactory/bindings/wasm.go index d209c79..99bc88d 100644 --- a/x/tokenfactory/bindings/wasm.go +++ b/x/tokenfactory/bindings/wasm.go @@ -2,23 +2,31 @@ package bindings import ( wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/baseapp" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" tokenfactorykeeper "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/keeper" + liquiditykeeper "github.com/Victor118/liquidity/x/liquidity/keeper" ) func RegisterCustomPlugins( + grpcRouter *baseapp.GRPCQueryRouter, + appCodec codec.Codec, bank bankkeeper.Keeper, tokenFactory *tokenfactorykeeper.Keeper, + liquidity *liquiditykeeper.Keeper, ) []wasmkeeper.Option { wasmQueryPlugin := NewQueryPlugin(bank, tokenFactory) queryPluginOpt := wasmkeeper.WithQueryPlugins(&wasmkeeper.QueryPlugins{ - Custom: CustomQuerier(wasmQueryPlugin), + Custom: CustomQuerier(wasmQueryPlugin), + Stargate: wasmkeeper.AcceptListStargateQuerier(AcceptedStargateQueries(), grpcRouter, appCodec), + Grpc: wasmkeeper.AcceptListGrpcQuerier(AcceptedStargateQueries(), grpcRouter, appCodec), }) messengerDecoratorOpt := wasmkeeper.WithMessageHandlerDecorator( - CustomMessageDecorator(bank, tokenFactory), + CustomMessageDecorator(bank, tokenFactory, liquidity), ) return []wasmkeeper.Option{ diff --git a/x/tokenfactory/keeper/createdenom.go b/x/tokenfactory/keeper/createdenom.go index 3823b44..97d2dbc 100644 --- a/x/tokenfactory/keeper/createdenom.go +++ b/x/tokenfactory/keeper/createdenom.go @@ -9,6 +9,7 @@ import ( // ConvertToBaseToken converts a fee amount in a whitelisted fee token to the base fee token amount func (k Keeper) CreateDenom(ctx sdk.Context, creatorAddr string, subdenom string) (newTokenDenom string, err error) { + denom, err := k.validateCreateDenom(ctx, creatorAddr, subdenom) if err != nil { return "", err From 787df247699ef692c51d36b15dca90660252750e Mon Sep 17 00:00:00 2001 From: Victor118 Date: Fri, 29 Nov 2024 13:33:51 +0100 Subject: [PATCH 10/23] Add direct swap in wasm binding --- x/tokenfactory/bindings/message_plugin.go | 39 +++++++++++++++++++++++ x/tokenfactory/bindings/types/msg.go | 17 +++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/x/tokenfactory/bindings/message_plugin.go b/x/tokenfactory/bindings/message_plugin.go index f86db3a..55ecea7 100644 --- a/x/tokenfactory/bindings/message_plugin.go +++ b/x/tokenfactory/bindings/message_plugin.go @@ -74,6 +74,9 @@ func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddre if contractMsg.CreatePool != nil { return m.createPool(ctx, contractAddr, contractMsg.CreatePool) } + if contractMsg.DirectSwap != nil { + return m.directSwap(ctx, contractAddr, contractMsg.DirectSwap) + } } return m.wrapped.DispatchMsg(ctx, contractAddr, contractIBCPortID, msg) } @@ -114,6 +117,42 @@ func PerformCreateStakedrop(f *tokenfactorykeeper.Keeper, b bankkeeper.Keeper, c return resp.Marshal() } +// createDenom creates a new token denom +func (m *CustomMessenger) directSwap(ctx sdk.Context, contractAddr sdk.AccAddress, directSwap *bindingstypes.DirectSwap) ([]sdk.Event, [][]byte, [][]*types.Any, error) { + bz, err := PerformDirectSwap(m.liquidity, m.bank, ctx, contractAddr, directSwap) + if err != nil { + return nil, nil, nil, errorsmod.Wrap(err, "perform create pool") + } + // TODO: double check how this is all encoded to the contract + return nil, [][]byte{bz}, nil, nil +} + +// PerformCreateStakedrop is used with createStakedrop to create a stakedrop; validates the msgCreateStakedrop. +func PerformDirectSwap(f *liquiditykeeper.Keeper, b bankkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, directSwap *bindingstypes.DirectSwap) ([]byte, error) { + if directSwap == nil { + return nil, wasmvmtypes.InvalidRequest{Err: "direct swap null direct swap"} + } + + msgServer := liquiditykeeper.NewMsgServerImpl(*f) + + msgDirectSwap := liquiditytypes.NewMsgDirectSwap(contractAddr, directSwap.PoolId, 1, directSwap.OfferCoin, directSwap.DemandCoinDenom, directSwap.OrderPrice) + + if err := msgDirectSwap.ValidateBasic(); err != nil { + return nil, errorsmod.Wrap(err, "failed validating MsgCreateStakedrop") + } + + // Create denom + resp, err := msgServer.DirectSwap( + ctx, + msgDirectSwap, + ) + if err != nil { + return nil, errorsmod.Wrap(err, "creating stakedrop") + } + + return resp.Marshal() +} + // createDenom creates a new token denom func (m *CustomMessenger) createPool(ctx sdk.Context, contractAddr sdk.AccAddress, createPool *bindingstypes.CreatePool) ([]sdk.Event, [][]byte, [][]*types.Any, error) { bz, err := PerformCreatePool(m.liquidity, m.bank, ctx, contractAddr, createPool) diff --git a/x/tokenfactory/bindings/types/msg.go b/x/tokenfactory/bindings/types/msg.go index df9bf54..d423fa1 100644 --- a/x/tokenfactory/bindings/types/msg.go +++ b/x/tokenfactory/bindings/types/msg.go @@ -1,6 +1,9 @@ package types -import "cosmossdk.io/math" +import ( + "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/types" +) type WasmMsg struct { /// Contracts can create denoms, namespaced under the contract's address. @@ -23,6 +26,8 @@ type WasmMsg struct { CreateStakedrop *CreateStakedrop `json:"create_stakedrop,omitempty"` CreatePool *CreatePool `json:"create_pool,omitempty"` + + DirectSwap *DirectSwap `json:"direct_swap,omitempty"` } type CreateStakedrop struct { @@ -84,3 +89,13 @@ type CreatePool struct { Amount2 math.Int `json:"amount2"` Denom2 string `json:"denom2"` } + +type DirectSwap struct { + SwapRequesterAddress string `json:"swap_requester_address"` + PoolId uint64 `json:"pool_id"` + SwapTypeId uint32 `json:"swap_type_id"` + OfferCoin types.Coin `json:"offer_coin"` + DemandCoinDenom string `json:"demand_coin_denom"` + OfferCoinFee types.Coin `json:"offer_coin_fee"` + OrderPrice math.LegacyDec `json:"order_price"` +} From 8522997a2ceb68cf1369c61b6d4bf4df1796acf4 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Wed, 4 Dec 2024 14:28:25 +0100 Subject: [PATCH 11/23] New liquidity module version and binding fix --- go.mod | 4 ++-- go.sum | 4 ++-- x/tokenfactory/bindings/message_plugin.go | 2 ++ x/tokenfactory/bindings/types/types.go | 1 + 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 1881ff5..bcdea35 100644 --- a/go.mod +++ b/go.mod @@ -33,6 +33,7 @@ require ( require ( cosmossdk.io/api v0.7.5 cosmossdk.io/client/v2 v2.0.0-beta.1 + cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.4.1 @@ -45,7 +46,7 @@ require ( cosmossdk.io/x/nft v0.1.1 cosmossdk.io/x/tx v0.13.4 cosmossdk.io/x/upgrade v0.1.4 - github.com/Victor118/liquidity v1.7.1 + github.com/Victor118/liquidity v1.7.3 github.com/cometbft/cometbft v0.38.11 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 v8.0.0-20240808203856-57803750a140 @@ -60,7 +61,6 @@ require ( cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect - cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/depinject v1.0.0 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect diff --git a/go.sum b/go.sum index fca8943..bd1879e 100644 --- a/go.sum +++ b/go.sum @@ -240,8 +240,8 @@ github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/Victor118/liquidity v1.7.1 h1:SMMUciOFAPVo/o0PDKpMiZ7CKYGO24QTLe/FLSfujsc= -github.com/Victor118/liquidity v1.7.1/go.mod h1:RRGlMTp7z3AKiwbsc9pu4g0hn/UpEyuCrtp3fmzHlGI= +github.com/Victor118/liquidity v1.7.3 h1:wqdVmo9CCZycitjAO7o7M61U0ErKZnsP8HT25+hnfOo= +github.com/Victor118/liquidity v1.7.3/go.mod h1:RRGlMTp7z3AKiwbsc9pu4g0hn/UpEyuCrtp3fmzHlGI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= diff --git a/x/tokenfactory/bindings/message_plugin.go b/x/tokenfactory/bindings/message_plugin.go index 55ecea7..1331f37 100644 --- a/x/tokenfactory/bindings/message_plugin.go +++ b/x/tokenfactory/bindings/message_plugin.go @@ -466,6 +466,7 @@ func WasmMetadataToSdk(metadata bindingstypes.Metadata) banktypes.Metadata { Name: metadata.Name, Symbol: metadata.Symbol, DenomUnits: denoms, + URI: metadata.Uri, } } @@ -485,5 +486,6 @@ func SdkMetadataToWasm(metadata banktypes.Metadata) *bindingstypes.Metadata { Name: metadata.Name, Symbol: metadata.Symbol, DenomUnits: denoms, + Uri: metadata.URI, } } diff --git a/x/tokenfactory/bindings/types/types.go b/x/tokenfactory/bindings/types/types.go index 4eeeed9..b3ea921 100644 --- a/x/tokenfactory/bindings/types/types.go +++ b/x/tokenfactory/bindings/types/types.go @@ -17,6 +17,7 @@ type Metadata struct { // Symbol is the token symbol usually shown on exchanges (eg: ATOM). // This can be the same as the display. Symbol string `json:"symbol"` + Uri string `json:"uri"` } type DenomUnit struct { From 2368b688d22e5e061c35c939d7d1febdd91f24dc Mon Sep 17 00:00:00 2001 From: Victor118 Date: Wed, 11 Dec 2024 20:00:59 +0100 Subject: [PATCH 12/23] Fix proto file --- proto/osmosis/tokenfactory/v1beta1/tx.proto | 6 +- x/tokenfactory/types/tx.pb.go | 143 ++++++++++---------- 2 files changed, 74 insertions(+), 75 deletions(-) diff --git a/proto/osmosis/tokenfactory/v1beta1/tx.proto b/proto/osmosis/tokenfactory/v1beta1/tx.proto index f71a619..59f9f74 100755 --- a/proto/osmosis/tokenfactory/v1beta1/tx.proto +++ b/proto/osmosis/tokenfactory/v1beta1/tx.proto @@ -58,13 +58,13 @@ message MsgCreateStakeDrop { string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; //amount to stakedrop - cosmos.base.v1beta1.Coin amount = 3 [ + cosmos.base.v1beta1.Coin amount = 2 [ (gogoproto.moretags) = "yaml:\"amount\"", (gogoproto.nullable) = false ]; - int64 start_block = 4; - int64 end_block = 5; + int64 start_block = 3; + int64 end_block = 4; } message MsgCreateStakeDropResponse {} diff --git a/x/tokenfactory/types/tx.pb.go b/x/tokenfactory/types/tx.pb.go index 8c56492..724721d 100644 --- a/x/tokenfactory/types/tx.pb.go +++ b/x/tokenfactory/types/tx.pb.go @@ -145,9 +145,9 @@ func (m *MsgCreateDenomResponse) GetNewTokenDenom() string { type MsgCreateStakeDrop struct { Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"` //amount to stakedrop - Amount types.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount" yaml:"amount"` - StartBlock int64 `protobuf:"varint,4,opt,name=start_block,json=startBlock,proto3" json:"start_block,omitempty"` - EndBlock int64 `protobuf:"varint,5,opt,name=end_block,json=endBlock,proto3" json:"end_block,omitempty"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"` + StartBlock int64 `protobuf:"varint,3,opt,name=start_block,json=startBlock,proto3" json:"start_block,omitempty"` + EndBlock int64 `protobuf:"varint,4,opt,name=end_block,json=endBlock,proto3" json:"end_block,omitempty"` } func (m *MsgCreateStakeDrop) Reset() { *m = MsgCreateStakeDrop{} } @@ -862,69 +862,68 @@ func init() { } var fileDescriptor_283b6c9a90a846b4 = []byte{ - // 977 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0x26, 0x69, 0x9a, 0xbc, 0x34, 0x75, 0xb2, 0x09, 0x8d, 0xb3, 0x4d, 0xbd, 0xd1, 0x8a, - 0xa2, 0x14, 0x51, 0x2f, 0x2e, 0x50, 0x95, 0x9c, 0xe8, 0xa6, 0x8a, 0x38, 0x60, 0x09, 0x6d, 0xc2, - 0x05, 0x55, 0xb2, 0xc6, 0xde, 0xc9, 0x7a, 0xe5, 0xee, 0x8c, 0xd9, 0x19, 0x37, 0xf5, 0x01, 0x09, - 0xf1, 0x0b, 0x38, 0x72, 0xe1, 0x80, 0xf8, 0x03, 0x1c, 0x10, 0xbf, 0xa1, 0x17, 0xa4, 0x0a, 0x38, - 0x70, 0x5a, 0xa1, 0xe4, 0xc0, 0xdd, 0xbf, 0x00, 0xed, 0xcc, 0xec, 0xae, 0xd7, 0x8e, 0x62, 0x1b, - 0x0e, 0x39, 0x25, 0x3b, 0xef, 0xfb, 0xbe, 0x79, 0xdf, 0x7b, 0xf3, 0x66, 0x0c, 0xf7, 0x29, 0x0b, - 0x29, 0x0b, 0x98, 0xcd, 0x69, 0x07, 0x93, 0x53, 0xd4, 0xe2, 0x34, 0xea, 0xdb, 0x2f, 0x6b, 0x4d, - 0xcc, 0x51, 0xcd, 0xe6, 0xaf, 0xaa, 0xdd, 0x88, 0x72, 0xaa, 0xef, 0x2a, 0x58, 0x75, 0x18, 0x56, - 0x55, 0x30, 0x63, 0xcb, 0xa7, 0x3e, 0x15, 0x40, 0x3b, 0xf9, 0x4f, 0x72, 0x8c, 0x4a, 0x4b, 0x90, - 0xec, 0x26, 0x62, 0x38, 0x53, 0x6c, 0xd1, 0x80, 0x8c, 0xc5, 0x49, 0x27, 0x8b, 0x27, 0x1f, 0x2a, - 0xfe, 0xe0, 0xca, 0xd4, 0xba, 0x28, 0x42, 0x21, 0x53, 0xd0, 0x6d, 0x25, 0x15, 0x32, 0xdf, 0x7e, - 0x59, 0x4b, 0xfe, 0xa8, 0xc0, 0x8e, 0x0c, 0x34, 0x64, 0x72, 0xf2, 0x43, 0x86, 0xac, 0x3e, 0xdc, - 0xae, 0x33, 0xff, 0x30, 0xc2, 0x88, 0xe3, 0x67, 0x98, 0xd0, 0x50, 0x7f, 0x00, 0x4b, 0x0c, 0x13, - 0x0f, 0x47, 0x65, 0x6d, 0x4f, 0xdb, 0x5f, 0x71, 0x36, 0x06, 0xb1, 0xb9, 0xd6, 0x47, 0xe1, 0x8b, - 0x03, 0x4b, 0xae, 0x5b, 0xae, 0x02, 0xe8, 0x36, 0x2c, 0xb3, 0x5e, 0xd3, 0x4b, 0x68, 0xe5, 0x79, - 0x01, 0xde, 0x1c, 0xc4, 0x66, 0x49, 0x81, 0x55, 0xc4, 0x72, 0x33, 0xd0, 0xc1, 0xea, 0xb7, 0xff, - 0xfc, 0xfc, 0xae, 0x62, 0x5b, 0xcf, 0xe1, 0x4e, 0x71, 0x6b, 0x17, 0xb3, 0x2e, 0x25, 0x0c, 0xeb, - 0x0e, 0x94, 0x08, 0x3e, 0x6b, 0x08, 0xc7, 0x0d, 0x29, 0x2f, 0x73, 0x31, 0x06, 0xb1, 0x79, 0x47, - 0xca, 0x8f, 0x00, 0x2c, 0x77, 0x8d, 0xe0, 0xb3, 0x93, 0x64, 0x41, 0x68, 0x59, 0x7f, 0x6a, 0xa0, - 0x67, 0xf2, 0xc7, 0x1c, 0x75, 0xf0, 0xb3, 0x88, 0x76, 0x67, 0x71, 0xf7, 0x29, 0x2c, 0xa1, 0x90, - 0xf6, 0x08, 0x2f, 0x2f, 0xec, 0x69, 0xfb, 0xab, 0x8f, 0x76, 0xaa, 0xaa, 0x72, 0x49, 0x2b, 0xd3, - 0xae, 0x57, 0x0f, 0x69, 0x40, 0x9c, 0xb7, 0x5e, 0xc7, 0xe6, 0x5c, 0xae, 0x24, 0x69, 0x96, 0xab, - 0xf8, 0xba, 0x09, 0xab, 0x8c, 0xa3, 0x88, 0x37, 0x9a, 0x2f, 0x68, 0xab, 0x53, 0x5e, 0xdc, 0xd3, - 0xf6, 0x17, 0x5c, 0x10, 0x4b, 0x4e, 0xb2, 0xa2, 0xdf, 0x85, 0x15, 0x4c, 0x3c, 0x15, 0xbe, 0x21, - 0xc2, 0xcb, 0x98, 0x78, 0x22, 0x58, 0x2c, 0xda, 0x2e, 0x18, 0xe3, 0xae, 0xd2, 0xc2, 0x59, 0xbf, - 0x69, 0x70, 0xb3, 0xce, 0xfc, 0x7a, 0x40, 0xf8, 0x7f, 0x73, 0x3a, 0xff, 0x3f, 0x9d, 0x7e, 0x02, - 0x6b, 0x61, 0x40, 0xf8, 0x09, 0x7d, 0xea, 0x79, 0x11, 0x66, 0x4c, 0x94, 0xae, 0xd0, 0xb7, 0x24, - 0xdc, 0xe0, 0xb4, 0x81, 0x24, 0xc0, 0x72, 0x8b, 0x84, 0xa2, 0xdb, 0x0d, 0x28, 0x29, 0x3b, 0x99, - 0xc5, 0x3f, 0xa4, 0x45, 0xa7, 0x17, 0x91, 0xeb, 0xb1, 0x78, 0x04, 0xa5, 0x66, 0x2f, 0x22, 0x47, - 0x11, 0x0d, 0x8b, 0x26, 0x77, 0x07, 0xb1, 0x59, 0x96, 0x9c, 0x04, 0xd0, 0x38, 0x8d, 0x68, 0x98, - 0xdb, 0x1c, 0x25, 0x5d, 0x66, 0x34, 0x31, 0x95, 0x19, 0xfd, 0x49, 0x93, 0xa3, 0xd9, 0x46, 0xc4, - 0xc7, 0x4f, 0xbd, 0x30, 0x98, 0xc9, 0xef, 0x3b, 0x70, 0x63, 0x78, 0x2e, 0xd7, 0x07, 0xb1, 0x79, - 0x4b, 0x22, 0xd5, 0xb8, 0xc8, 0xb0, 0x5e, 0x83, 0x95, 0x64, 0x92, 0x50, 0xa2, 0xaf, 0x7c, 0x6c, - 0x0d, 0x62, 0x73, 0x3d, 0x1f, 0x32, 0x11, 0xb2, 0xdc, 0x65, 0x82, 0xcf, 0x44, 0x16, 0xc5, 0xc4, - 0xcb, 0x72, 0x88, 0xf3, 0x24, 0xb3, 0xfc, 0x7f, 0xd4, 0x60, 0xb3, 0xce, 0xfc, 0x63, 0xcc, 0xc5, - 0x40, 0xd6, 0x31, 0x47, 0x1e, 0xe2, 0x68, 0x16, 0x13, 0x2e, 0x2c, 0x87, 0x8a, 0xa6, 0xda, 0x76, - 0x2f, 0x6f, 0x1b, 0xe9, 0x64, 0x6d, 0x4b, 0xb5, 0x9d, 0x6d, 0xd5, 0x3a, 0x75, 0x05, 0xa5, 0x64, - 0xcb, 0xcd, 0x74, 0x8a, 0xd9, 0xdf, 0x83, 0xbb, 0x97, 0xa4, 0x98, 0x59, 0xf8, 0x75, 0x1e, 0xd6, - 0xeb, 0xcc, 0x3f, 0xa2, 0x51, 0x0b, 0x9f, 0x44, 0x88, 0xb0, 0x53, 0x1c, 0x5d, 0xcf, 0xa1, 0x73, - 0x61, 0x93, 0xab, 0x04, 0xc6, 0x0f, 0xde, 0xde, 0x20, 0x36, 0x77, 0x25, 0x2f, 0x05, 0x8d, 0x1c, - 0xbe, 0xcb, 0xc8, 0xfa, 0x67, 0xb0, 0x91, 0x2e, 0xe7, 0xf3, 0xba, 0x28, 0x14, 0x2b, 0x83, 0xd8, - 0x34, 0x46, 0x14, 0x87, 0x67, 0x76, 0x9c, 0x58, 0xac, 0xab, 0x01, 0xe5, 0xd1, 0xba, 0x65, 0x45, - 0xfd, 0x41, 0x13, 0x67, 0xfd, 0x8b, 0xae, 0x87, 0x38, 0xfe, 0x5c, 0xbc, 0x5f, 0xfa, 0x63, 0x58, - 0x41, 0x3d, 0xde, 0xa6, 0x51, 0xc0, 0xfb, 0xaa, 0xac, 0xe5, 0xdf, 0x7f, 0x79, 0xb8, 0xa5, 0xca, - 0xa5, 0xf6, 0x38, 0xe6, 0x51, 0x40, 0x7c, 0x37, 0x87, 0xea, 0x0e, 0x2c, 0xc9, 0x17, 0x50, 0x15, - 0xf8, 0xed, 0xea, 0x55, 0x2f, 0x74, 0x55, 0xee, 0xe6, 0x2c, 0x26, 0xb5, 0x76, 0x15, 0xf3, 0xe0, - 0x76, 0x92, 0x78, 0xae, 0x69, 0xed, 0xc0, 0xf6, 0x48, 0x7a, 0x69, 0xea, 0x8f, 0xbe, 0xbf, 0x09, - 0x0b, 0x75, 0xe6, 0xeb, 0x5f, 0xc1, 0xea, 0xf0, 0x8b, 0xf9, 0xde, 0xd5, 0xbb, 0x16, 0x1f, 0x39, - 0xe3, 0xc3, 0x59, 0xd0, 0xd9, 0x93, 0xf8, 0x35, 0x94, 0x46, 0x9f, 0xb2, 0xf7, 0xa7, 0x14, 0xca, - 0x18, 0xc6, 0x93, 0x59, 0x19, 0xd9, 0xf6, 0xcf, 0x61, 0x51, 0x3c, 0x2a, 0xf7, 0x27, 0x2a, 0x24, - 0x30, 0xe3, 0xe1, 0x54, 0xb0, 0x61, 0x75, 0x71, 0x9f, 0x4f, 0x56, 0x4f, 0x60, 0x53, 0xa8, 0x0f, - 0x5f, 0xa4, 0xa2, 0x5b, 0x43, 0x97, 0xe8, 0x14, 0xdd, 0xca, 0xd1, 0xd3, 0x74, 0x6b, 0xfc, 0xee, - 0xd3, 0xbf, 0xd1, 0x60, 0x7d, 0xec, 0xe2, 0xab, 0x4d, 0x94, 0x1a, 0xa5, 0x18, 0x1f, 0xcf, 0x4c, - 0xc9, 0x52, 0x38, 0x83, 0xb5, 0xe2, 0xbd, 0x55, 0x9d, 0xa8, 0x55, 0xc0, 0x1b, 0x8f, 0x67, 0xc3, - 0x67, 0x1b, 0x73, 0xb8, 0x55, 0x98, 0xed, 0xc9, 0xdd, 0x1a, 0x86, 0x1b, 0x1f, 0xcd, 0x04, 0x4f, - 0x77, 0x75, 0xdc, 0xd7, 0xe7, 0x15, 0xed, 0xcd, 0x79, 0x45, 0xfb, 0xfb, 0xbc, 0xa2, 0x7d, 0x77, - 0x51, 0x99, 0x7b, 0x73, 0x51, 0x99, 0xfb, 0xeb, 0xa2, 0x32, 0xf7, 0xe5, 0x13, 0x3f, 0xe0, 0xed, - 0x5e, 0xb3, 0xda, 0xa2, 0xa1, 0x7d, 0xd8, 0x0e, 0xda, 0x3d, 0xd4, 0xee, 0xa1, 0xc3, 0x36, 0x0a, - 0x88, 0xdd, 0x4a, 0x3f, 0xed, 0x57, 0xc5, 0x9f, 0xd7, 0xbc, 0xdf, 0xc5, 0xac, 0xb9, 0x24, 0x7e, - 0x22, 0x7f, 0xf0, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x6b, 0x6b, 0x24, 0x1e, 0x0c, 0x00, - 0x00, + // 970 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xc1, 0x6e, 0xdb, 0x46, + 0x13, 0x36, 0x63, 0xff, 0x8e, 0x3d, 0x8e, 0x23, 0x9b, 0xf6, 0x1f, 0xcb, 0x8c, 0x23, 0x1a, 0x44, + 0x53, 0x24, 0x45, 0x43, 0x56, 0x69, 0x1b, 0xa4, 0x3e, 0x35, 0x74, 0x60, 0xf4, 0x50, 0x01, 0x05, + 0xed, 0x5e, 0x8a, 0x00, 0xc2, 0x4a, 0x5c, 0x53, 0x84, 0xc2, 0x5d, 0x95, 0xbb, 0x8a, 0xa3, 0x43, + 0x81, 0xa2, 0x4f, 0xd0, 0x63, 0x2f, 0x3d, 0x14, 0x7d, 0x81, 0x1e, 0x8a, 0x3e, 0x43, 0x2e, 0x05, + 0x82, 0xb6, 0x87, 0x9e, 0x88, 0xc2, 0x3e, 0xf4, 0xae, 0x27, 0x28, 0xb8, 0xbb, 0x24, 0x45, 0xc9, + 0xb0, 0xa4, 0x93, 0x4f, 0x36, 0x77, 0xbe, 0xef, 0xdb, 0xf9, 0x66, 0x76, 0x76, 0x05, 0xf7, 0x29, + 0x8b, 0x28, 0x0b, 0x99, 0xc3, 0x69, 0x17, 0x93, 0x53, 0xd4, 0xe6, 0x34, 0x1e, 0x38, 0xaf, 0xea, + 0x2d, 0xcc, 0x51, 0xdd, 0xe1, 0xaf, 0xed, 0x5e, 0x4c, 0x39, 0xd5, 0xf7, 0x14, 0xcc, 0x1e, 0x85, + 0xd9, 0x0a, 0x66, 0x6c, 0x07, 0x34, 0xa0, 0x02, 0xe8, 0xa4, 0xff, 0x49, 0x8e, 0x51, 0x6b, 0x0b, + 0x92, 0xd3, 0x42, 0x0c, 0xe7, 0x8a, 0x6d, 0x1a, 0x92, 0x89, 0x38, 0xe9, 0xe6, 0xf1, 0xf4, 0x43, + 0xc5, 0x1f, 0x5e, 0x99, 0x5a, 0x0f, 0xc5, 0x28, 0x62, 0x0a, 0xba, 0xa3, 0xa4, 0x22, 0x16, 0x38, + 0xaf, 0xea, 0xe9, 0x1f, 0x15, 0xd8, 0x95, 0x81, 0xa6, 0x4c, 0x4e, 0x7e, 0xc8, 0x90, 0x35, 0x80, + 0xdb, 0x0d, 0x16, 0x1c, 0xc6, 0x18, 0x71, 0xfc, 0x1c, 0x13, 0x1a, 0xe9, 0x0f, 0x61, 0x99, 0x61, + 0xe2, 0xe3, 0xb8, 0xaa, 0xed, 0x6b, 0x0f, 0x56, 0xdd, 0xcd, 0x61, 0x62, 0xae, 0x0f, 0x50, 0xf4, + 0xf2, 0xc0, 0x92, 0xeb, 0x96, 0xa7, 0x00, 0xba, 0x03, 0x2b, 0xac, 0xdf, 0xf2, 0x53, 0x5a, 0xf5, + 0x86, 0x00, 0x6f, 0x0d, 0x13, 0xb3, 0xa2, 0xc0, 0x2a, 0x62, 0x79, 0x39, 0xe8, 0x60, 0xed, 0xbb, + 0x7f, 0x7f, 0x79, 0x4f, 0xb1, 0xad, 0x17, 0x70, 0xa7, 0xbc, 0xb5, 0x87, 0x59, 0x8f, 0x12, 0x86, + 0x75, 0x17, 0x2a, 0x04, 0x9f, 0x35, 0x85, 0xe3, 0xa6, 0x94, 0x97, 0xb9, 0x18, 0xc3, 0xc4, 0xbc, + 0x23, 0xe5, 0xc7, 0x00, 0x96, 0xb7, 0x4e, 0xf0, 0xd9, 0x49, 0xba, 0x20, 0xb4, 0xac, 0xbf, 0x34, + 0xd0, 0x73, 0xf9, 0x63, 0x8e, 0xba, 0xf8, 0x79, 0x4c, 0x7b, 0xf3, 0xb8, 0xfb, 0x0c, 0x96, 0x51, + 0x44, 0xfb, 0x84, 0x0b, 0x6f, 0x6b, 0x8f, 0x77, 0x6d, 0x55, 0xb9, 0xb4, 0x95, 0x59, 0xd7, 0xed, + 0x43, 0x1a, 0x12, 0xf7, 0xff, 0x6f, 0x12, 0x73, 0xa1, 0x50, 0x92, 0x34, 0xcb, 0x53, 0x7c, 0xdd, + 0x84, 0x35, 0xc6, 0x51, 0xcc, 0x9b, 0xad, 0x97, 0xb4, 0xdd, 0xad, 0x2e, 0xee, 0x6b, 0x0f, 0x16, + 0x3d, 0x10, 0x4b, 0x6e, 0xba, 0xa2, 0xdf, 0x85, 0x55, 0x4c, 0x7c, 0x15, 0x5e, 0x12, 0xe1, 0x15, + 0x4c, 0x7c, 0x11, 0x2c, 0x17, 0x6d, 0x0f, 0x8c, 0x49, 0x57, 0x59, 0xe1, 0xac, 0xdf, 0x35, 0xb8, + 0xd9, 0x60, 0x41, 0x23, 0x24, 0xfc, 0x7a, 0x9c, 0x7e, 0x0a, 0xeb, 0x51, 0x48, 0xf8, 0x09, 0x7d, + 0xe6, 0xfb, 0x31, 0x66, 0x4c, 0x78, 0x2d, 0xf5, 0x2d, 0x0d, 0x37, 0x39, 0x6d, 0x22, 0x09, 0xb0, + 0xbc, 0x32, 0xa1, 0xec, 0x76, 0x13, 0x2a, 0xca, 0x4e, 0x6e, 0xf1, 0x4f, 0x69, 0xd1, 0xed, 0xc7, + 0xe4, 0x7a, 0x2c, 0x1e, 0x41, 0xa5, 0xd5, 0x8f, 0xc9, 0x51, 0x4c, 0xa3, 0xb2, 0xc9, 0xbd, 0x61, + 0x62, 0x56, 0x25, 0x27, 0x05, 0x34, 0x4f, 0x63, 0x1a, 0x15, 0x36, 0xc7, 0x49, 0x97, 0x19, 0x4d, + 0x4d, 0xe5, 0x46, 0x7f, 0xd6, 0xe4, 0x68, 0x76, 0x10, 0x09, 0xf0, 0x33, 0x3f, 0x0a, 0xe7, 0xf2, + 0xfb, 0x2e, 0xfc, 0x6f, 0x74, 0x2e, 0x37, 0x86, 0x89, 0x79, 0x4b, 0x22, 0xd5, 0xb8, 0xc8, 0xb0, + 0x5e, 0x87, 0xd5, 0x74, 0x92, 0x50, 0xaa, 0xaf, 0x7c, 0x6c, 0x0f, 0x13, 0x73, 0xa3, 0x18, 0x32, + 0x11, 0xb2, 0xbc, 0x15, 0x82, 0xcf, 0x44, 0x16, 0xe5, 0xc4, 0xab, 0x72, 0x88, 0x8b, 0x24, 0xf3, + 0xfc, 0x7f, 0xd2, 0x60, 0xab, 0xc1, 0x82, 0x63, 0xcc, 0xc5, 0x40, 0x36, 0x30, 0x47, 0x3e, 0xe2, + 0x68, 0x1e, 0x13, 0x1e, 0xac, 0x44, 0x8a, 0xa6, 0xda, 0x76, 0xaf, 0x68, 0x1b, 0xe9, 0xe6, 0x6d, + 0xcb, 0xb4, 0xdd, 0x1d, 0xd5, 0x3a, 0x75, 0x05, 0x65, 0x64, 0xcb, 0xcb, 0x75, 0xca, 0xd9, 0xdf, + 0x83, 0xbb, 0x97, 0xa4, 0x98, 0x5b, 0xf8, 0xed, 0x06, 0x6c, 0x34, 0x58, 0x70, 0x44, 0xe3, 0x36, + 0x3e, 0x89, 0x11, 0x61, 0xa7, 0x38, 0xbe, 0x9e, 0x43, 0xe7, 0xc1, 0x16, 0x57, 0x09, 0x4c, 0x1e, + 0xbc, 0xfd, 0x61, 0x62, 0xee, 0x49, 0x5e, 0x06, 0x1a, 0x3b, 0x7c, 0x97, 0x91, 0xf5, 0xcf, 0x61, + 0x33, 0x5b, 0x2e, 0xe6, 0x75, 0x49, 0x28, 0xd6, 0x86, 0x89, 0x69, 0x8c, 0x29, 0x8e, 0xce, 0xec, + 0x24, 0xb1, 0x5c, 0x57, 0x03, 0xaa, 0xe3, 0x75, 0xcb, 0x8b, 0xfa, 0xa3, 0x26, 0xce, 0xfa, 0x97, + 0x3d, 0x1f, 0x71, 0xfc, 0x85, 0x78, 0xbf, 0xf4, 0x27, 0xb0, 0x8a, 0xfa, 0xbc, 0x43, 0xe3, 0x90, + 0x0f, 0x54, 0x59, 0xab, 0x7f, 0xfc, 0xfa, 0x68, 0x5b, 0x95, 0x4b, 0xed, 0x71, 0xcc, 0xe3, 0x90, + 0x04, 0x5e, 0x01, 0xd5, 0x5d, 0x58, 0x96, 0x2f, 0xa0, 0x2a, 0xf0, 0x3b, 0xf6, 0x55, 0x2f, 0xb4, + 0x2d, 0x77, 0x73, 0x97, 0xd2, 0x5a, 0x7b, 0x8a, 0x79, 0x70, 0x3b, 0x4d, 0xbc, 0xd0, 0xb4, 0x76, + 0x61, 0x67, 0x2c, 0xbd, 0x2c, 0xf5, 0xc7, 0x3f, 0xdc, 0x84, 0xc5, 0x06, 0x0b, 0xf4, 0xaf, 0x61, + 0x6d, 0xf4, 0xc5, 0x7c, 0xff, 0xea, 0x5d, 0xcb, 0x8f, 0x9c, 0xf1, 0xd1, 0x3c, 0xe8, 0xfc, 0x49, + 0xfc, 0x06, 0x2a, 0xe3, 0x4f, 0xd9, 0x07, 0x33, 0x0a, 0xe5, 0x0c, 0xe3, 0xe9, 0xbc, 0x8c, 0x7c, + 0xfb, 0x17, 0xb0, 0x24, 0x1e, 0x95, 0xfb, 0x53, 0x15, 0x52, 0x98, 0xf1, 0x68, 0x26, 0xd8, 0xa8, + 0xba, 0xb8, 0xcf, 0xa7, 0xab, 0xa7, 0xb0, 0x19, 0xd4, 0x47, 0x2f, 0x52, 0xd1, 0xad, 0x91, 0x4b, + 0x74, 0x86, 0x6e, 0x15, 0xe8, 0x59, 0xba, 0x35, 0x79, 0xf7, 0xe9, 0xdf, 0x6a, 0xb0, 0x31, 0x71, + 0xf1, 0xd5, 0xa7, 0x4a, 0x8d, 0x53, 0x8c, 0x4f, 0xe6, 0xa6, 0xe4, 0x29, 0x9c, 0xc1, 0x7a, 0xf9, + 0xde, 0xb2, 0xa7, 0x6a, 0x95, 0xf0, 0xc6, 0x93, 0xf9, 0xf0, 0xf9, 0xc6, 0x1c, 0x6e, 0x95, 0x66, + 0x7b, 0x7a, 0xb7, 0x46, 0xe1, 0xc6, 0xc7, 0x73, 0xc1, 0xb3, 0x5d, 0x5d, 0xef, 0xcd, 0x79, 0x4d, + 0x7b, 0x7b, 0x5e, 0xd3, 0xfe, 0x39, 0xaf, 0x69, 0xdf, 0x5f, 0xd4, 0x16, 0xde, 0x5e, 0xd4, 0x16, + 0xfe, 0xbe, 0xa8, 0x2d, 0x7c, 0xf5, 0x34, 0x08, 0x79, 0xa7, 0xdf, 0xb2, 0xdb, 0x34, 0x72, 0x0e, + 0x3b, 0x61, 0xa7, 0x8f, 0x3a, 0x7d, 0x74, 0xd8, 0x41, 0x21, 0x71, 0xda, 0xd9, 0xa7, 0xf3, 0xba, + 0xfc, 0xf3, 0x9a, 0x0f, 0x7a, 0x98, 0xb5, 0x96, 0xc5, 0x4f, 0xe4, 0x0f, 0xff, 0x0b, 0x00, 0x00, + 0xff, 0xff, 0x23, 0x57, 0x9e, 0x45, 0x1e, 0x0c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1357,12 +1356,12 @@ func (m *MsgCreateStakeDrop) MarshalToSizedBuffer(dAtA []byte) (int, error) { if m.EndBlock != 0 { i = encodeVarintTx(dAtA, i, uint64(m.EndBlock)) i-- - dAtA[i] = 0x28 + dAtA[i] = 0x20 } if m.StartBlock != 0 { i = encodeVarintTx(dAtA, i, uint64(m.StartBlock)) i-- - dAtA[i] = 0x20 + dAtA[i] = 0x18 } { size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) @@ -1373,7 +1372,7 @@ func (m *MsgCreateStakeDrop) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTx(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x12 if len(m.Sender) > 0 { i -= len(m.Sender) copy(dAtA[i:], m.Sender) @@ -2317,7 +2316,7 @@ func (m *MsgCreateStakeDrop) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) } @@ -2350,7 +2349,7 @@ func (m *MsgCreateStakeDrop) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field StartBlock", wireType) } @@ -2369,7 +2368,7 @@ func (m *MsgCreateStakeDrop) Unmarshal(dAtA []byte) error { break } } - case 5: + case 4: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field EndBlock", wireType) } From e9a3b330ed2fa66f00340778e1f6f6d563c4b208 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Wed, 11 Dec 2024 20:37:56 +0100 Subject: [PATCH 13/23] upgrade liquidity module to v1.7.4 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bcdea35..d4b8008 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( cosmossdk.io/x/nft v0.1.1 cosmossdk.io/x/tx v0.13.4 cosmossdk.io/x/upgrade v0.1.4 - github.com/Victor118/liquidity v1.7.3 + github.com/Victor118/liquidity v1.7.4 github.com/cometbft/cometbft v0.38.11 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 v8.0.0-20240808203856-57803750a140 diff --git a/go.sum b/go.sum index bd1879e..f6a6ffb 100644 --- a/go.sum +++ b/go.sum @@ -240,8 +240,8 @@ github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/Victor118/liquidity v1.7.3 h1:wqdVmo9CCZycitjAO7o7M61U0ErKZnsP8HT25+hnfOo= -github.com/Victor118/liquidity v1.7.3/go.mod h1:RRGlMTp7z3AKiwbsc9pu4g0hn/UpEyuCrtp3fmzHlGI= +github.com/Victor118/liquidity v1.7.4 h1:eldmDDAac4KS3mwp6tvUyZwQhuvT4dBmg/faR/eXntY= +github.com/Victor118/liquidity v1.7.4/go.mod h1:RRGlMTp7z3AKiwbsc9pu4g0hn/UpEyuCrtp3fmzHlGI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= From 46d3503e63e24638e922831e1f01d275b109210a Mon Sep 17 00:00:00 2001 From: Victor118 Date: Tue, 17 Dec 2024 16:21:44 +0100 Subject: [PATCH 14/23] Bump liquidity version to 1.7.7 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d4b8008..ed91390 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( cosmossdk.io/x/nft v0.1.1 cosmossdk.io/x/tx v0.13.4 cosmossdk.io/x/upgrade v0.1.4 - github.com/Victor118/liquidity v1.7.4 + github.com/Victor118/liquidity v1.7.7 github.com/cometbft/cometbft v0.38.11 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 v8.0.0-20240808203856-57803750a140 diff --git a/go.sum b/go.sum index f6a6ffb..8a5ca8f 100644 --- a/go.sum +++ b/go.sum @@ -240,8 +240,8 @@ github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/Victor118/liquidity v1.7.4 h1:eldmDDAac4KS3mwp6tvUyZwQhuvT4dBmg/faR/eXntY= -github.com/Victor118/liquidity v1.7.4/go.mod h1:RRGlMTp7z3AKiwbsc9pu4g0hn/UpEyuCrtp3fmzHlGI= +github.com/Victor118/liquidity v1.7.7 h1:sHW4qR2FxJiM9P7ReKCOL3IZHDM+bx+OVWuWAbZ5+Fg= +github.com/Victor118/liquidity v1.7.7/go.mod h1:RRGlMTp7z3AKiwbsc9pu4g0hn/UpEyuCrtp3fmzHlGI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= From 489095d2458430847807736f470d7d1c5b0a9a8f Mon Sep 17 00:00:00 2001 From: Victor118 Date: Sun, 22 Dec 2024 23:07:03 +0100 Subject: [PATCH 15/23] Adding possiblity to stakedrop bond denom --- x/tokenfactory/abci.go | 38 ++++++++++++++++++++--- x/tokenfactory/bindings/message_plugin.go | 2 ++ x/tokenfactory/keeper/createstakedrop.go | 13 ++++++-- x/tokenfactory/keeper/msg_server.go | 20 +++++++----- x/tokenfactory/types/msgs.go | 11 +++++-- 5 files changed, 68 insertions(+), 16 deletions(-) diff --git a/x/tokenfactory/abci.go b/x/tokenfactory/abci.go index 40a1403..ef6038d 100644 --- a/x/tokenfactory/abci.go +++ b/x/tokenfactory/abci.go @@ -3,10 +3,12 @@ package tokenfactory import ( "cosmossdk.io/collections" "cosmossdk.io/math" + "github.com/ChihuahuaChain/chihuahua/app/params" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/keeper" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) // BeginBlocker @@ -23,6 +25,7 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bankKeeper types.BankKeeper) defer iter.Close() coinsToSend := sdk.NewCoins() + nativeCoinToSend := sdk.NewCoin(params.BondDenom, math.NewInt(0)) for ; iter.Valid(); iter.Next() { stakeDrop, err := iter.KeyValue() @@ -32,17 +35,44 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bankKeeper types.BankKeeper) } if ctx.BlockHeight() >= stakeDrop.Value.StartBlock && ctx.BlockHeight() < (stakeDrop.Value.EndBlock) { - coinsToSend = coinsToSend.Add(stakeDrop.Value.AmountPerBlock) + if stakeDrop.Value.Amount.Denom == params.BondDenom { + nativeCoinToSend = nativeCoinToSend.Add(stakeDrop.Value.AmountPerBlock) + } else { + coinsToSend = coinsToSend.Add(stakeDrop.Value.AmountPerBlock) + } } else if ctx.BlockHeight() == stakeDrop.Value.EndBlock { restAmount := stakeDrop.Value.Amount.Amount.Sub(stakeDrop.Value.AmountPerBlock.Amount.Mul(math.NewInt(stakeDrop.Value.EndBlock - stakeDrop.Value.StartBlock))) - coinsToSend = coinsToSend.Add(sdk.NewCoin(stakeDrop.Value.Amount.Denom, restAmount)) + if stakeDrop.Value.Amount.Denom == params.BondDenom { + + } else { + coinsToSend = coinsToSend.Add(sdk.NewCoin(stakeDrop.Value.Amount.Denom, restAmount)) + } + } else if ctx.BlockHeight() > stakeDrop.Value.EndBlock { k.ActiveStakedrop.Remove(ctx, stakeDrop.Key) } } + if !coinsToSend.Empty() { + bankKeeper.MintCoins(ctx, types.ModuleName, coinsToSend) + err = bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.FeeCollectorName, sdk.NewCoins(coinsToSend...)) + if err != nil { + return err + } + } + if nativeCoinToSend.Amount.IsPositive() { + spendableAmount := bankKeeper.GetBalance(ctx, authtypes.NewModuleAddress(types.ModuleName), params.BondDenom) + if spendableAmount.IsLT(nativeCoinToSend) { + nativeCoinToSend = spendableAmount + } + if nativeCoinToSend.IsPositive() { + err = bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.FeeCollectorName, sdk.NewCoins(nativeCoinToSend)) + if err != nil { + return err + } + } - bankKeeper.MintCoins(ctx, types.ModuleName, coinsToSend) - return bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.FeeCollectorName, sdk.NewCoins(coinsToSend...)) + } + return nil } diff --git a/x/tokenfactory/bindings/message_plugin.go b/x/tokenfactory/bindings/message_plugin.go index 1331f37..b8b0c04 100644 --- a/x/tokenfactory/bindings/message_plugin.go +++ b/x/tokenfactory/bindings/message_plugin.go @@ -42,6 +42,7 @@ var _ wasmkeeper.Messenger = (*CustomMessenger)(nil) // DispatchMsg executes on the contractMsg. func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Event, [][]byte, [][]*types.Any, error) { + ctx.Logger().Error("Dispatching custom message", "contract", contractAddr, "msg", msg) if msg.Custom != nil { // only handle the happy path where this is really creating / minting / swapping ... // leave everything else for the wrapped version @@ -244,6 +245,7 @@ func (m *CustomMessenger) mintTokens(ctx sdk.Context, contractAddr sdk.AccAddres // PerformMint used with mintTokens to validate the mint message and mint through token factory. func PerformMint(f *tokenfactorykeeper.Keeper, b bankkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, mint *bindingstypes.MintTokens) error { + ctx.Logger().Error("PERFORM MINT ", "contract", contractAddr, "msg", mint) if mint == nil { return wasmvmtypes.InvalidRequest{Err: "mint token null mint"} } diff --git a/x/tokenfactory/keeper/createstakedrop.go b/x/tokenfactory/keeper/createstakedrop.go index 6f2e520..de7a890 100644 --- a/x/tokenfactory/keeper/createstakedrop.go +++ b/x/tokenfactory/keeper/createstakedrop.go @@ -3,6 +3,7 @@ package keeper import ( "cosmossdk.io/collections" "cosmossdk.io/math" + "github.com/ChihuahuaChain/chihuahua/app/params" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -18,16 +19,21 @@ func (k Keeper) CreateStakedropByDenom(ctx sdk.Context, creatorAddr string, amou return err } - err = k.createStakedropAfterValidation(ctx, amount, startBlock, endBlock) + err = k.createStakedropAfterValidation(ctx, amount, creatorAddr, startBlock, endBlock) return err } -func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, startBlock uint64, endBlock uint64) error { +func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, creatorAddr string, startBlock uint64, endBlock uint64) error { seq, err := k.getNextStakedropSequence(ctx) if err != nil { return err } + if amount.Denom == params.BondDenom { + //native token, we can mint it so sender need to send it to module account + sender := sdk.MustAccAddressFromBech32(creatorAddr) + k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, types.ModuleName, sdk.NewCoins(amount)) + } amountPerBlock := amount.Amount.Quo(math.NewInt(int64(endBlock - startBlock))) newStakedrop := types.Stakedrop{ Amount: amount, @@ -46,6 +52,9 @@ func (k Keeper) validateCreateStakedrop(ctx sdk.Context, creatorAddr string, amo // return types.ErrUnauthorized // } //verify sender has created a subdenom (amount.Denom) + if params.BondDenom == amount.Denom { + return nil + } creator, _, err := types.DeconstructDenom(amount.Denom) if err != nil { return err diff --git a/x/tokenfactory/keeper/msg_server.go b/x/tokenfactory/keeper/msg_server.go index 61387d4..9f0f26a 100644 --- a/x/tokenfactory/keeper/msg_server.go +++ b/x/tokenfactory/keeper/msg_server.go @@ -9,6 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/ChihuahuaChain/chihuahua/app/params" "github.com/ChihuahuaChain/chihuahua/x/tokenfactory/types" ) @@ -192,15 +193,20 @@ func (server msgServer) ChangeAdmin(goCtx context.Context, msg *types.MsgChangeA } func (server msgServer) CreateStakeDrop(goCtx context.Context, msg *types.MsgCreateStakeDrop) (*types.MsgCreateStakeDropResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) - authorityMetadata, err := server.Keeper.GetAuthorityMetadata(ctx, msg.Amount.Denom) - if err != nil { - return nil, err + ctx.Logger().Error("CreateStakeDrop", "msg", msg) + if msg.Amount.Denom != params.BondDenom { + authorityMetadata, err := server.Keeper.GetAuthorityMetadata(ctx, msg.Amount.Denom) + if err != nil { + return nil, err + } + if msg.Sender != authorityMetadata.GetAdmin() { + return nil, types.ErrUnauthorized + } } - if msg.Sender != authorityMetadata.GetAdmin() { - return nil, types.ErrUnauthorized - } - err = server.Keeper.CreateStakedropByDenom(ctx, msg.Sender, msg.Amount, uint64(msg.StartBlock), uint64(msg.EndBlock)) + + err := server.Keeper.CreateStakedropByDenom(ctx, msg.Sender, msg.Amount, uint64(msg.StartBlock), uint64(msg.EndBlock)) ctx.EventManager().EmitEvents(sdk.Events{ sdk.NewEvent( diff --git a/x/tokenfactory/types/msgs.go b/x/tokenfactory/types/msgs.go index b386471..05fb331 100644 --- a/x/tokenfactory/types/msgs.go +++ b/x/tokenfactory/types/msgs.go @@ -4,6 +4,7 @@ import ( errorsmod "cosmossdk.io/errors" "cosmossdk.io/math" + "github.com/ChihuahuaChain/chihuahua/app/params" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -83,9 +84,13 @@ func (m MsgCreateStakeDrop) ValidateBasic() error { return ErrBadBlockParameters } - _, _, err = DeconstructDenom(m.Amount.Denom) - if err != nil { - return errorsmod.Wrap(ErrInvalidDenom, err.Error()) + if m.Amount.Denom == params.BondDenom { + return nil + } else { + _, _, err = DeconstructDenom(m.Amount.Denom) + if err != nil { + return errorsmod.Wrap(ErrInvalidDenom, err.Error()) + } } return nil From f9bfb63d32af758f1bec800273221afb1b51b4c0 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Mon, 23 Dec 2024 19:29:56 +0100 Subject: [PATCH 16/23] Only whitelisted address can create stakedrop --- x/tokenfactory/keeper/createstakedrop.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/x/tokenfactory/keeper/createstakedrop.go b/x/tokenfactory/keeper/createstakedrop.go index de7a890..168b79d 100644 --- a/x/tokenfactory/keeper/createstakedrop.go +++ b/x/tokenfactory/keeper/createstakedrop.go @@ -47,14 +47,15 @@ func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, } func (k Keeper) validateCreateStakedrop(ctx sdk.Context, creatorAddr string, amount sdk.Coin, startBlock uint64, endBlock uint64) error { - // params := k.GetParams(ctx) - // if !isWhitelistedAddress(creatorAddr, params) { - // return types.ErrUnauthorized - // } - //verify sender has created a subdenom (amount.Denom) + moduleParams := k.GetParams(ctx) + if !isWhitelistedAddress(creatorAddr, moduleParams) { + return types.ErrUnauthorized + } + if params.BondDenom == amount.Denom { return nil } + //verify sender has created a subdenom (amount.Denom) creator, _, err := types.DeconstructDenom(amount.Denom) if err != nil { return err From e504bc9ae2a776f52f760903f83855e49c3e3b69 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Mon, 23 Dec 2024 19:30:16 +0100 Subject: [PATCH 17/23] Remove some debug messages --- x/tokenfactory/bindings/message_plugin.go | 3 +-- x/tokenfactory/bindings/query_plugin.go | 5 +---- x/tokenfactory/keeper/msg_server.go | 1 - 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/x/tokenfactory/bindings/message_plugin.go b/x/tokenfactory/bindings/message_plugin.go index b8b0c04..806a4be 100644 --- a/x/tokenfactory/bindings/message_plugin.go +++ b/x/tokenfactory/bindings/message_plugin.go @@ -42,7 +42,7 @@ var _ wasmkeeper.Messenger = (*CustomMessenger)(nil) // DispatchMsg executes on the contractMsg. func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Event, [][]byte, [][]*types.Any, error) { - ctx.Logger().Error("Dispatching custom message", "contract", contractAddr, "msg", msg) + if msg.Custom != nil { // only handle the happy path where this is really creating / minting / swapping ... // leave everything else for the wrapped version @@ -245,7 +245,6 @@ func (m *CustomMessenger) mintTokens(ctx sdk.Context, contractAddr sdk.AccAddres // PerformMint used with mintTokens to validate the mint message and mint through token factory. func PerformMint(f *tokenfactorykeeper.Keeper, b bankkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, mint *bindingstypes.MintTokens) error { - ctx.Logger().Error("PERFORM MINT ", "contract", contractAddr, "msg", mint) if mint == nil { return wasmvmtypes.InvalidRequest{Err: "mint token null mint"} } diff --git a/x/tokenfactory/bindings/query_plugin.go b/x/tokenfactory/bindings/query_plugin.go index 61a3c56..78248e2 100644 --- a/x/tokenfactory/bindings/query_plugin.go +++ b/x/tokenfactory/bindings/query_plugin.go @@ -22,7 +22,6 @@ import ( // CustomQuerier dispatches custom CosmWasm bindings queries. func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessage) ([]byte, error) { return func(ctx sdk.Context, request json.RawMessage) ([]byte, error) { - ctx.Logger().Error("CustomQuerier ***************************************") var contractQuery bindingstypes.TokenFactoryQuery if err := json.Unmarshal(request, &contractQuery); err != nil { return nil, errorsmod.Wrap(err, "osmosis query") @@ -89,7 +88,7 @@ func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessag return bz, nil case contractQuery.Params != nil: - ctx.Logger().Error("CustomQuerier : PARAMS***************************************") + res, err := qp.GetParams(ctx) if err != nil { return nil, err @@ -99,8 +98,6 @@ func CustomQuerier(qp *QueryPlugin) func(ctx sdk.Context, request json.RawMessag if err != nil { return nil, fmt.Errorf("failed to JSON marshal ParamsResponse: %w", err) } - ctx.Logger().Error(fmt.Sprintf("EVERYTHING IS OK IN PARAMS *************************************** %+v ", res)) - ctx.Logger().Error(fmt.Sprintf("Serialized JSON: %s", string(bz))) return bz, nil case contractQuery.Stakedrop != nil: stakedropsByDenom := []tftypes.Stakedrop{} diff --git a/x/tokenfactory/keeper/msg_server.go b/x/tokenfactory/keeper/msg_server.go index 9f0f26a..5297ab5 100644 --- a/x/tokenfactory/keeper/msg_server.go +++ b/x/tokenfactory/keeper/msg_server.go @@ -195,7 +195,6 @@ func (server msgServer) ChangeAdmin(goCtx context.Context, msg *types.MsgChangeA func (server msgServer) CreateStakeDrop(goCtx context.Context, msg *types.MsgCreateStakeDrop) (*types.MsgCreateStakeDropResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - ctx.Logger().Error("CreateStakeDrop", "msg", msg) if msg.Amount.Denom != params.BondDenom { authorityMetadata, err := server.Keeper.GetAuthorityMetadata(ctx, msg.Amount.Denom) if err != nil { From d2af322604fccc2cede3abb4198baf4af22892f3 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Mon, 23 Dec 2024 19:55:22 +0100 Subject: [PATCH 18/23] Fix LINT --- x/tokenfactory/abci.go | 13 ++++++++++--- x/tokenfactory/keeper/createstakedrop.go | 5 ++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/x/tokenfactory/abci.go b/x/tokenfactory/abci.go index ef6038d..ef74e19 100644 --- a/x/tokenfactory/abci.go +++ b/x/tokenfactory/abci.go @@ -44,17 +44,24 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bankKeeper types.BankKeeper) } else if ctx.BlockHeight() == stakeDrop.Value.EndBlock { restAmount := stakeDrop.Value.Amount.Amount.Sub(stakeDrop.Value.AmountPerBlock.Amount.Mul(math.NewInt(stakeDrop.Value.EndBlock - stakeDrop.Value.StartBlock))) if stakeDrop.Value.Amount.Denom == params.BondDenom { - + nativeCoinToSend = nativeCoinToSend.Add(sdk.NewCoin(stakeDrop.Value.Amount.Denom, restAmount)) } else { coinsToSend = coinsToSend.Add(sdk.NewCoin(stakeDrop.Value.Amount.Denom, restAmount)) } } else if ctx.BlockHeight() > stakeDrop.Value.EndBlock { - k.ActiveStakedrop.Remove(ctx, stakeDrop.Key) + err = k.ActiveStakedrop.Remove(ctx, stakeDrop.Key) + if err != nil { + + ctx.Logger().Error("failed to remove stakedrop", "error", err) + } } } if !coinsToSend.Empty() { - bankKeeper.MintCoins(ctx, types.ModuleName, coinsToSend) + err = bankKeeper.MintCoins(ctx, types.ModuleName, coinsToSend) + if err != nil { + return err + } err = bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.FeeCollectorName, sdk.NewCoins(coinsToSend...)) if err != nil { return err diff --git a/x/tokenfactory/keeper/createstakedrop.go b/x/tokenfactory/keeper/createstakedrop.go index 168b79d..9056bac 100644 --- a/x/tokenfactory/keeper/createstakedrop.go +++ b/x/tokenfactory/keeper/createstakedrop.go @@ -32,7 +32,10 @@ func (k Keeper) createStakedropAfterValidation(ctx sdk.Context, amount sdk.Coin, if amount.Denom == params.BondDenom { //native token, we can mint it so sender need to send it to module account sender := sdk.MustAccAddressFromBech32(creatorAddr) - k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, types.ModuleName, sdk.NewCoins(amount)) + err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, types.ModuleName, sdk.NewCoins(amount)) + if err != nil { + return err + } } amountPerBlock := amount.Amount.Quo(math.NewInt(int64(endBlock - startBlock))) newStakedrop := types.Stakedrop{ From 6436a41506bb30feb3cca31589443fe3cec2d1e2 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Sun, 29 Dec 2024 15:40:43 +0100 Subject: [PATCH 19/23] Readme update --- x/tokenfactory/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/x/tokenfactory/README.md b/x/tokenfactory/README.md index 7d6644e..e56a1cc 100644 --- a/x/tokenfactory/README.md +++ b/x/tokenfactory/README.md @@ -110,6 +110,32 @@ message MsgChangeAdmin { } ``` +### CreateStakeDrop + +A stakedrop is a way to drop tokenfactory's token or uhuahua to huahua stakers +It will distribute an amount of tokens between start_block and end_block +If it's a token from tokenfactory only creator will be able to create a stakedrop, amount of token will be minted +If it's huahua token, stakedrop creator huahua amount will be sent to module to be distributed then to stakers + +Only whitelisted address will be able to create stakedrop + +```go +message MsgCreateStakeDrop { + option (cosmos.msg.v1.signer) = "sender"; + + string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ]; + //amount to stakedrop + cosmos.base.v1beta1.Coin amount = 2 [ + (gogoproto.moretags) = "yaml:\"amount\"", + (gogoproto.nullable) = false + ]; + + int64 start_block = 3; + int64 end_block = 4; +} + +``` + **State Modifications:** - Check that sender of the message is the admin of denom From 433c363ef6fe8a9ebe021a17af8ec29ae66218ae Mon Sep 17 00:00:00 2001 From: Victor118 Date: Sun, 29 Dec 2024 15:43:08 +0100 Subject: [PATCH 20/23] Adding some "new line" --- x/tokenfactory/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/tokenfactory/README.md b/x/tokenfactory/README.md index e56a1cc..811d5cd 100644 --- a/x/tokenfactory/README.md +++ b/x/tokenfactory/README.md @@ -112,9 +112,9 @@ message MsgChangeAdmin { ### CreateStakeDrop -A stakedrop is a way to drop tokenfactory's token or uhuahua to huahua stakers -It will distribute an amount of tokens between start_block and end_block -If it's a token from tokenfactory only creator will be able to create a stakedrop, amount of token will be minted +A stakedrop is a way to drop tokenfactory's token or uhuahua to huahua stakers +It will distribute an amount of tokens between start_block and end_block +If it's a token from tokenfactory only creator will be able to create a stakedrop, amount of token will be minted If it's huahua token, stakedrop creator huahua amount will be sent to module to be distributed then to stakers Only whitelisted address will be able to create stakedrop From 58a6344903bcb495128a08cc5159d9fbb404e989 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Sun, 29 Dec 2024 15:45:01 +0100 Subject: [PATCH 21/23] Fix readme --- x/tokenfactory/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/tokenfactory/README.md b/x/tokenfactory/README.md index 811d5cd..c8ac458 100644 --- a/x/tokenfactory/README.md +++ b/x/tokenfactory/README.md @@ -115,9 +115,9 @@ message MsgChangeAdmin { A stakedrop is a way to drop tokenfactory's token or uhuahua to huahua stakers It will distribute an amount of tokens between start_block and end_block If it's a token from tokenfactory only creator will be able to create a stakedrop, amount of token will be minted -If it's huahua token, stakedrop creator huahua amount will be sent to module to be distributed then to stakers +If it's huahua token, stakedrop huahua amount will be sent to module to be distributed then to stakers -Only whitelisted address will be able to create stakedrop +Only whitelisted address in tokenfactory params will be able to create stakedrop ```go message MsgCreateStakeDrop { From 9b3f0d096026fcbfda4bddf01908f219dc271ddc Mon Sep 17 00:00:00 2001 From: Victor118 Date: Tue, 7 Jan 2025 14:54:45 +0100 Subject: [PATCH 22/23] bump cosmos sdk to 0.50.11, wamd to 0.53.2 and wasmvm to 2.2.1 --- go.mod | 69 ++++++++++++++-------------- go.sum | 142 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 107 insertions(+), 104 deletions(-) diff --git a/go.mod b/go.mod index ed91390..73b84c4 100644 --- a/go.mod +++ b/go.mod @@ -3,21 +3,21 @@ module github.com/ChihuahuaChain/chihuahua go 1.22 require ( - github.com/CosmWasm/wasmd v0.53.0 - github.com/CosmWasm/wasmvm/v2 v2.1.3 + github.com/CosmWasm/wasmd v0.53.2 + github.com/CosmWasm/wasmvm/v2 v2.2.1 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.9 + github.com/cosmos/cosmos-sdk v0.50.11 github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/gogoproto v1.7.0 - github.com/cosmos/iavl v1.2.0 // indirect - github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/cosmos/iavl v1.2.2 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/golang/protobuf v1.5.4 github.com/google/gofuzz v1.2.0 // indirect github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.20.0 + github.com/prometheus/client_golang v1.20.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.7.0 github.com/spf13/cobra v1.8.1 @@ -26,42 +26,42 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/terra-money/alliance v0.4.3 google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/grpc v1.64.1 + google.golang.org/grpc v1.67.1 gopkg.in/yaml.v2 v2.4.0 ) require ( - cosmossdk.io/api v0.7.5 + cosmossdk.io/api v0.7.6 cosmossdk.io/client/v2 v2.0.0-beta.1 cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.4.1 - cosmossdk.io/math v1.3.0 - cosmossdk.io/store v1.1.0 + cosmossdk.io/math v1.4.0 + cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/circuit v0.1.1 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 cosmossdk.io/x/nft v0.1.1 - cosmossdk.io/x/tx v0.13.4 + cosmossdk.io/x/tx v0.13.7 cosmossdk.io/x/upgrade v0.1.4 github.com/Victor118/liquidity v1.7.7 - github.com/cometbft/cometbft v0.38.11 - github.com/cosmos/cosmos-db v1.0.2 + github.com/cometbft/cometbft v0.38.12 + github.com/cosmos/cosmos-db v1.1.0 github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 v8.0.0-20240808203856-57803750a140 github.com/cosmos/ibc-go/modules/capability v1.0.1 github.com/cosmos/ibc-go/v8 v8.4.0 github.com/spf13/viper v1.19.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 ) require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect - cosmossdk.io/depinject v1.0.0 // indirect + cosmossdk.io/depinject v1.1.0 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -72,15 +72,16 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/bits-and-blooms/bitset v1.8.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.11.0 // indirect @@ -98,7 +99,7 @@ require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/distribution/reference v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/emicklei/dot v1.6.1 // indirect + github.com/emicklei/dot v1.6.2 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect @@ -111,11 +112,11 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -123,7 +124,7 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/handlers v1.5.2 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -171,7 +172,7 @@ require ( github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/cors v1.8.3 // indirect + github.com/rs/cors v1.11.1 // indirect github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -185,7 +186,7 @@ require ( github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.8 // indirect + go.etcd.io/bbolt v1.3.10 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect @@ -193,18 +194,18 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.25.0 // indirect + golang.org/x/crypto v0.27.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.23.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/go.sum b/go.sum index 8a5ca8f..8ee178c 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -182,24 +182,24 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= -cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= +cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= -cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= +cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= +cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= -cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= +cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= +cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= @@ -210,8 +210,8 @@ cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= cosmossdk.io/x/nft v0.1.1 h1:pslAVS8P5NkW080+LWOamInjDcq+v2GSCo+BjN9sxZ8= cosmossdk.io/x/nft v0.1.1/go.mod h1:Kac6F6y2gsKvoxU+fy8uvxRTi4BIhLOor2zgCNQwVgY= -cosmossdk.io/x/tx v0.13.4 h1:Eg0PbJgeO0gM8p5wx6xa0fKR7hIV6+8lC56UrsvSo0Y= -cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= +cosmossdk.io/x/tx v0.13.7 h1:8WSk6B/OHJLYjiZeMKhq7DK7lHDMyK0UfDbBMxVmeOI= +cosmossdk.io/x/tx v0.13.7/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -223,10 +223,10 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25 github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CosmWasm/wasmd v0.53.0 h1:kdaoAi20bIb4VCsxw9pRaT2g5PpIp82Wqrr9DRVN9ao= -github.com/CosmWasm/wasmd v0.53.0/go.mod h1:FJl/aWjdpGof3usAMFQpDe07Rkx77PUzp0cygFMOvtw= -github.com/CosmWasm/wasmvm/v2 v2.1.3 h1:CSJTauZqkHyb9yic6JVYCjiGUgxI2MJV2QzfSu8m49c= -github.com/CosmWasm/wasmvm/v2 v2.1.3/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= +github.com/CosmWasm/wasmd v0.53.2 h1:c3MQjeQq+r+Zj2rPeW+c9kJmTevuNnZOIkiiCP/3bg4= +github.com/CosmWasm/wasmd v0.53.2/go.mod h1:gP10E56tuToU5rsZR7vZLBL5ssW2mie6KN/WrQLG7/I= +github.com/CosmWasm/wasmvm/v2 v2.2.1 h1:cmOnM+TDfUl2VRugeo1eJBw4U/Lw0WLviuQHKSo9DVQ= +github.com/CosmWasm/wasmvm/v2 v2.2.1/go.mod h1:bMhLQL4Yp9CzJi9A83aR7VO9wockOsSlZbT4ztOl6bg= github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= @@ -278,10 +278,10 @@ github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2 github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= -github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= @@ -326,19 +326,21 @@ github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOG github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.11 h1:6bNDUB8/xq4uYonYwIfGc9OqK1ZH4NkdaMmR1LZIJqk= -github.com/cometbft/cometbft v0.38.11/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= +github.com/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= +github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8= github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -351,12 +353,12 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= -github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-db v1.1.0 h1:KLHNVQ73h7vawXTpj9UJ7ZR2IXv51tsEHkQJJ9EBDzI= +github.com/cosmos/cosmos-db v1.1.0/go.mod h1:t7c4A6cfGdpUwwVxrQ0gQLeRQqGUBJu0yvE4F/26REg= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.50.9 h1:gt2usjz0H0qW6KwAxWw7ZJ3XU8uDwmhN+hYG3nTLeSg= -github.com/cosmos/cosmos-sdk v0.50.9/go.mod h1:TMH6wpoYBcg7Cp5BEg8fneLr+8XloNQkf2MRNF9V6JE= +github.com/cosmos/cosmos-sdk v0.50.11 h1:LxR1aAc8kixdrs3itO+3a44sFoc+vjxVAOyPFx22yjk= +github.com/cosmos/cosmos-sdk v0.50.11/go.mod h1:gt14Meok2IDCjbDtjwkbUcgVNEpUBDN/4hg9cCUtLgw= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= @@ -364,8 +366,8 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= -github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= -github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= +github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 v8.0.0-20240808203856-57803750a140 h1:yqadjjAAhzmcpROM8BvV0EKK20ALH9rKhFgDgSn4LfA= github.com/cosmos/ibc-apps/modules/ibc-hooks/v8 v8.0.0-20240808203856-57803750a140/go.mod h1:9+Z14xz3Y+5uEn5i1CvLcDN1aTthEhYUdI7pphySkY8= github.com/cosmos/ibc-go/modules/apps/callbacks v0.2.1-0.20231113120333-342c00b0f8bd h1:Lx+/5dZ/nN6qPXP2Ofog6u1fmlkCFA1ElcOconnofEM= @@ -374,8 +376,8 @@ github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9s github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= github.com/cosmos/ibc-go/v8 v8.4.0 h1:K2PfX0AZ+1XKZytHGEMuSjQXG/MZshPb83RSTQt2+cE= github.com/cosmos/ibc-go/v8 v8.4.0/go.mod h1:zh6x1osR0hNvEcFrC/lhGD08sMfQmr9wHVvZ/mRWMCs= -github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= -github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= @@ -425,8 +427,8 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= -github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -514,8 +516,8 @@ github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0 github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -558,8 +560,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -639,8 +641,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= @@ -902,8 +904,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.20.0 h1:jBzTZ7B099Rg24tny+qngoynol8LtVYlA2bqx3vEloI= -github.com/prometheus/client_golang v1.20.0/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= +github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -944,8 +946,8 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= -github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -1055,8 +1057,8 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= +go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1108,8 +1110,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1210,8 +1212,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1237,8 +1239,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1253,8 +1255,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1352,13 +1354,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1369,8 +1371,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1617,10 +1619,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f h1:cUMEy+8oS78BWIH9OWazBkzbr090Od9tWBNtZHkOhf0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240930140551-af27646dc61f/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1662,8 +1664,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1680,8 +1682,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 422888ad47acddfe13dd214212ae7590c6eb0927 Mon Sep 17 00:00:00 2001 From: Victor118 Date: Tue, 7 Jan 2025 15:00:51 +0100 Subject: [PATCH 23/23] Upgrade wasmvm in Dockerfile --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7907a4c..ba4345e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,10 +13,10 @@ COPY . . # For more details see https://github.com/CosmWasm/wasmvm#builds-of-libwasmvm ARG ARCH=x86_64 # See https://github.com/CosmWasm/wasmvm/releases -ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.1.2/libwasmvm_muslc.aarch64.a /lib/libwasmvm_muslc.aarch64.a -ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.1.2/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.x86_64.a -RUN sha256sum /lib/libwasmvm_muslc.aarch64.a | grep 0881c5b463e89e229b06370e9e2961aec0a5c636772d5142c68d351564464a66 -RUN sha256sum /lib/libwasmvm_muslc.x86_64.a | grep 58e1f6bfa89ee390cb9abc69a5bc126029a497fe09dd399f38a82d0d86fe95ef +ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.2.1/libwasmvm_muslc.aarch64.a /lib/libwasmvm_muslc.aarch64.a +ADD https://github.com/CosmWasm/wasmvm/releases/download/v2.2.1/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.x86_64.a +RUN sha256sum /lib/libwasmvm_muslc.aarch64.a | grep ba6cb5db6b14a265c8556326c045880908db9b1d2ffb5d4aa9f09ac09b24cecc +RUN sha256sum /lib/libwasmvm_muslc.x86_64.a | grep b3bd755efac0ff39c01b59b8110f961c48aa3eb93588071d7a628270cc1f2326 RUN cp /lib/libwasmvm_muslc.${ARCH}.a /lib/libwasmvm_muslc.a ENV PACKAGES curl make git libc-dev bash gcc linux-headers eudev-dev python3