From ac9e0b4ea9cf42bfa5715443dd8a9a4d7fafef7d Mon Sep 17 00:00:00 2001 From: sheldon <997166273@qq.com> Date: Tue, 29 Nov 2022 18:33:18 +0800 Subject: [PATCH 01/11] add adr 2981 --- .../adr-2981-nft-royalty-standard .md | 279 ++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 docs/architecture/adr-2981-nft-royalty-standard .md diff --git a/docs/architecture/adr-2981-nft-royalty-standard .md b/docs/architecture/adr-2981-nft-royalty-standard .md new file mode 100644 index 00000000..12b68349 --- /dev/null +++ b/docs/architecture/adr-2981-nft-royalty-standard .md @@ -0,0 +1,279 @@ +# ADR 2981: NFT Royalty Standard + +## Changelog + +* 2022-10-19: Initial Draft + +## Status + +DRAFT + +## Abstract + +This ADR describes the ability to signal the royalty amount to the NFT creator or rights holder each time an NFT is sold or resold. This is for NFT marketplaces that want to support ongoing funding for artists and other NFT creators. Royalty payments must be voluntary, because transfer mechanisms like `transfer()` include `NFT` transfers between wallets, and executing them does not always mean that a transaction has occurred. Markets and individuals implement this standard by using `royalInfo()` to retrieve royalty payment information that specifies how much to pay to which address for a given sale price. The exact mechanism for paying and notifying recipients will be defined in a future EIP. This ERC should be considered a minimal, fuel-efficient building block for further innovation in NFT royalties. This standard is fully compliant with `EIP-2981`. + +## Context + +At present, `x/nft` is based on `ERC-721`, which only contains basic functions. `irismod/moudles/nft` is an NFT application based on `x/nft`. However, in some cases, many developers may want certain features, such as using a common royalty interface, and users and artists also want to see a place to query or set royalties. And royalties are not only applied to `ERC-721`, if we have another token in the future, we can also use the current standard, so a common royalty protocol interface is beneficial to the whole ecology. + +## Decision + +We decided to implement a standardized method of retrieving royalty payment information for non-fungible tokens (NFTs) or other tokens to enable universal support for royalty payments for all NFT market and ecosystem participants. + +We decided to extend the `irismod/moudles/nft` module to add the following features: + +- Store the royalty information of the token +- Stores royalty information for the series the token is in (`denom` in `irismod/moudles/nft`) +- Expose the `Keeper` interface, which is convenient for the application room to refer to this module, which is used to set royalties, delete royalties and obtain royalties information; +- Expose the external `Message` interface for users to set the royalty information of the created token or series. +- Query the royalty information of the token/series + +### Royalty + +Royalty is a general method of obtaining royalty information, so no other factor should be included + +- royaltyInfo: -- The structure in which the royalty information is kept. + +### Types + +#### RoyaltyInfo + +We define a generic model `RoyaltyInfo` as follows. + +``` +message RoyaltyInfo { + string address = 1; + string royalty_fraction = 2; +}; +``` + +- `address`:is the recipient address of `RoyaltyInfo`; required +- `royalty_fraction`:is the royalty numerator for `RoyaltyInfo` (royalty rate = numerator/denominator); required + +### Storage + +The royalty module needs to store two styles in total:`{class_id}/{key_name}` + +e g: + +1. `{class_id}/default --->RoyaltyInfo(Bytes)`:Stores default royalties set by class (global within class) +2. `{class_id}/{token_id} --->RoyaltyInfo(Bytes)`:Store royalty information of an NFT under a class + +### `Keeper` Interface + +``` +type Keeper interface { + + // FeeDenominator returns the denominator of the fee + FeeDenominator(ctx sdk.Context) (feeNumerator *big.Int) + + // RoyaltyInfo returns the royalty information of a token under a class + RoyaltyInfo(ctx sdk.Context, classId string, tokenId string, salePrice *big.Int) (address string, royaltyAmount *big.Int) + // DefaultRoyaltyInfo returns the default royalty information of a class + DefaultRoyaltyInfo(ctx sdk.Context, classId string) (address string, feeNumerator *big.Int) + // TokenRoyaltyInfo returns the royalty information of a token under a class + TokenRoyaltyInfo(ctx sdk.Context, classId string, tokenId string) (address string, feeNumerator *big.Int) + + // SetDefaultRoyaltyInfo sets the default royalty information of a class + SetDefaultRoyalty(ctx sdk.Context, classId string, receiver string, feeNumerator *big.Int) error + // SetTokenRoyaltyInfo sets the royalty information of a token under a class + SetTokenRoyalty(ctx sdk.Context, classId string, tokenId string, receiver string, feeNumerator *big.Int) error + // DeleteTokenRoyaltyInfo deletes the royalty information of a token under a class + ResetTokenRoyalty(ctx sdk.Context, classId string, tokenId string) error + // DeleteDefaultRoyaltyInfo deletes the default royalty information of a class + DeleteDefaultRoyalty(ctx sdk.Context, classId string) error +} +``` + +The approximate logic of royalty information calculation is as follows: + +``` +// RoyaltyInfo returns the royalty information of a token under a class +func (k Keeper) RoyaltyInfo(ctx sdk.Context, classId string, tokenId string, salePrice *big.Int) (address string, royaltyAmount *big.Int) { + address, feeNumerator := k.TokenRoyaltyInfo(ctx, classId, tokenId) + + if address == "" { + address, feeNumerator = k.DefaultRoyaltyInfo(ctx, classId) + } + royaltyAmount = salePrice.Mul(salePrice, feeNumerator).Quo(salePrice, k.FeeDenominator(ctx)) + return +} +``` + + + +### `Msg` Service + +``` +service Msg { + rpc SetDefaultRoyalty(MsgSetDefaultRoyalty) returns (MsgSetDefaultRoyaltyResponse); + rpc SetTokenRoyalty(MsgSetTokenRoyalty) returns (MsgSetTokenRoyaltyResponse); + rpc ResetTokenRoyalty(MsgResetTokenRoyalty) returns (MsgResetTokenRoyaltyResponse); + rpc DeleteDefaultRoyalty(MsgDeleteDefaultRoyalty) returns (MsgDeleteDefaultRoyaltyResponse); +} + +message MsgSetDefaultRoyalty { + string class_id = 1; + string receiver = 2; + string fee_numerator = 3; + + string sender = 4; +} +message MsgSetDefaultRoyaltyResponse {} + +message MsgSetTokenRoyalty { + string class_id = 1; + string token_id= 2; + string receiver = 3; + string fee_numerator = 4; + + string sender = 5; +} +message MsgSetTokenRoyaltyResponse {} + +message MsgResetTokenRoyalty { + string class_id = 1; + string token_id= 2; + + string sender = 3; +} +message MsgResetTokenRoyaltyResponse {} + +message MsgDeleteDefaultRoyalty { + string class_id = 1; + + string sender = 2; +} +message MsgDeleteDefaultRoyaltyResponse {} + + + +``` + +The implementation outline of the server is as follows: + +``` +type msgServer struct { + k Keeper +} + +func (m msgServer) SetDefaultRoyalty(goCtx context.Context, msg *types.MsgSetDefaultRoyalty) (*types.MsgSetDefaultRoyaltyResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + // check current ownership + assertEqual(msg.Sender, m.k.GetOwnerFromClass(msg.ClassId)) + + // set default royalty info for a classId + m.k.SetDefaultRoyalty(ctx, msg.ClassId) + return &types.MsgSetDefaultRoyaltyResponse, nil +} + +func (m msgServer) SetTokenRoyalty(goCtx context.Context, msg *types.MsgSetTokenRoyalty) (*types.MsgSetTokenRoyaltyResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + // check current ownership + assertEqual(msg.Sender, m.k.GetOwnerFromToken(msg.ClassId, msg.TokenId)) + + // set royalty info for a token + m.k.SetTokenRoyalty(ctx, msg.ClassId, msg.TokenId) + return &types.MsgSetTokenRoyaltyResponse, nil +} + +func (m msgServer) ResetTokenRoyalty(goCtx context.Context, msg *types.MsgResetTokenRoyalty) (*types.MsgResetTokenRoyaltyResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + // check current ownership + assertEqual(msg.Sender, m.k.GetOwnerFromToken(msg.ClassId, msg.TokenId)) + + // reset royalty info for a token + m.k.ResetTokenRoyalty(ctx, msg.ClassId, msg.TokenId) + return &types.MsgResetTokenRoyaltyResponse, nil +} + +func (m msgServer) DeleteDefaultRoyalty(goCtx context.Context, msg *types.MsgDeleteDefaultRoyalty) (*types.MsgDeleteDefaultRoyaltyResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + // check current ownership + assertEqual(msg.Sender, m.k.GetOwnerFromClass(msg.ClassId)) + + // delete default royalty info for a class + m.k.DeleteDefaultRoyalty(ctx, msg.ClassId, msg.TokenId) + return &types.MsgDeleteDefaultRoyaltyResponse, nil +} + +``` + + + +query method: + +``` + +service Query { + rpc FeeDenominator(MsgFeeDenominatorRequest) returns (MsgFeeDenominatorResponse); + rpc RoyaltyInfo(MsgRoyaltyInfoRequest) returns (MsgRoyaltyInfoResponse); + rpc DefaultRoyaltyInfo(MsgDefaultRoyaltyInfoRequest) returns (MsgDefaultRoyaltyInfoResponse); + rpc TokenRoyaltyInfo(MsgTokenRoyaltyInfoRequest) returns (MsgTokenRoyaltyInfoResponse); +} + +message MsgFeeDenominatorRequest { +} +message MsgFeeDenominatorResponse { + uint64 royalty_fraction = 1; +} + +message MsgRoyaltyInfoRequest { + string class = 1; + string token_id = 2; + uint64 sale_price = 3; +} +message MsgRoyaltyInfoResponse { + string reciver = 1; + uint64 royalty_amount = 2; +} + +message MsgDefaultRoyaltyInfoRequest { + string class_id = 1; +} +message MsgDefaultRoyaltyInfoResponse { + string reciver = 1; + uint64 royalty_fraction = 2; +} + +message MsgTokenRoyaltyInfoRequest { + string class_id = 1; + string token_id = 2; +} +message MsgTokenRoyaltyInfoResponse { + string reciver = 1; + uint64 royalty_fraction = 2; +} + + + +``` + + + +## Consequences + +### Backwards Compatibility + +No backwards incompatibility. + +### Positive + +- NFT Royalty Standard on Cosmos Hub. + +### Negative + +None + +### Neutral + +None + +## Further Discussions + + + + + +## References + From 61bc7a0a35ceb8cb97d8b46ed9d9e3d98241a400 Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Thu, 1 Dec 2022 14:51:03 +0800 Subject: [PATCH 02/11] only export htlc with state=open (#327) --- modules/htlc/genesis.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/htlc/genesis.go b/modules/htlc/genesis.go index 1f725c0e..a50052b5 100644 --- a/modules/htlc/genesis.go +++ b/modules/htlc/genesis.go @@ -100,7 +100,9 @@ func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { k.IterateHTLCs( ctx, func(_ tmbytes.HexBytes, h types.HTLC) (stop bool) { - htlcs = append(htlcs, h) + if h.State == types.Open { + htlcs = append(htlcs, h) + } return false }, ) From 1cd65caf24bb89565c8ef4a19829651a426f339b Mon Sep 17 00:00:00 2001 From: sheldon <997166273@qq.com> Date: Fri, 16 Dec 2022 17:04:32 +0800 Subject: [PATCH 03/11] Complete the first version of eip-2981 --- modules/mt/types/tx.pb.go | 17 +- modules/nft/keeper/grpc_query_royalty.go | 61 + modules/nft/keeper/royalty.go | 90 + modules/nft/types/errors.go | 4 + modules/nft/types/keys.go | 30 + modules/nft/types/nft.pb.go | 122 +- modules/nft/types/query.pb.go | 2638 +++++++++++++++++---- modules/nft/types/royalty.pb.go | 392 ++++ modules/nft/types/tx.pb.go | 2668 ++++++++++++++++++---- proto/nft/nft.proto | 3 + proto/nft/query.proto | 48 +- proto/nft/royalty.proto | 18 + proto/nft/tx.proto | 64 + 13 files changed, 5287 insertions(+), 868 deletions(-) create mode 100644 modules/nft/keeper/grpc_query_royalty.go create mode 100644 modules/nft/keeper/royalty.go create mode 100644 modules/nft/types/royalty.pb.go create mode 100644 proto/nft/royalty.proto diff --git a/modules/mt/types/tx.pb.go b/modules/mt/types/tx.pb.go index 4631a428..44a3eb7c 100644 --- a/modules/mt/types/tx.pb.go +++ b/modules/mt/types/tx.pb.go @@ -7,16 +7,15 @@ import ( bytes "bytes" context "context" fmt "fmt" - io "io" - math "math" - math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -70,7 +69,7 @@ func (m *MsgIssueDenom) XXX_DiscardUnknown() { var xxx_messageInfo_MsgIssueDenom proto.InternalMessageInfo -// MsgIssueDenomResponse defines the Msg/SaveDenom response type. +// MsgIssueDenomResponse defines the Msg/IssueDenom response type. type MsgIssueDenomResponse struct { } @@ -792,7 +791,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) IssueDenom(ctx context.Context, in *MsgIssueDenom, opts ...grpc.CallOption) (*MsgIssueDenomResponse, error) { out := new(MsgIssueDenomResponse) - err := c.cc.Invoke(ctx, "/irismod.mt.Msg/SaveDenom", in, out, opts...) + err := c.cc.Invoke(ctx, "/irismod.mt.Msg/IssueDenom", in, out, opts...) if err != nil { return nil, err } @@ -866,7 +865,7 @@ type UnimplementedMsgServer struct { } func (*UnimplementedMsgServer) IssueDenom(ctx context.Context, req *MsgIssueDenom) (*MsgIssueDenomResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SaveDenom not implemented") + return nil, status.Errorf(codes.Unimplemented, "method IssueDenom not implemented") } func (*UnimplementedMsgServer) TransferDenom(ctx context.Context, req *MsgTransferDenom) (*MsgTransferDenomResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TransferDenom not implemented") @@ -898,7 +897,7 @@ func _Msg_IssueDenom_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/irismod.mt.Msg/SaveDenom", + FullMethod: "/irismod.mt.Msg/IssueDenom", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).IssueDenom(ctx, req.(*MsgIssueDenom)) @@ -1001,7 +1000,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "SaveDenom", + MethodName: "IssueDenom", Handler: _Msg_IssueDenom_Handler, }, { diff --git a/modules/nft/keeper/grpc_query_royalty.go b/modules/nft/keeper/grpc_query_royalty.go new file mode 100644 index 00000000..df6fd791 --- /dev/null +++ b/modules/nft/keeper/grpc_query_royalty.go @@ -0,0 +1,61 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/irisnet/irismod/modules/nft/types" +) + +// Royalty info + +// FeeDenominator queries the FeeDenominator +func (k Keeper) FeeDenominator(c context.Context, request *types.MsgFeeDenominatorRequest) (*types.MsgFeeDenominatorResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + feeDenominator := k.GetFeeDenominator(ctx) + return &types.MsgFeeDenominatorResponse{RoyaltyFraction: feeDenominator}, nil +} + +// RoyaltyInfo queries the RoyaltyInfo for the class of token +func (k Keeper) RoyaltyInfo(c context.Context, request *types.MsgRoyaltyInfoRequest) (*types.MsgRoyaltyInfoResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + if len(request.ClassId) == 0 { + return nil, types.ErrEmptyClassId + } + receiver, amount := k.GetRoyaltyInfo(ctx, request.ClassId, request.TokenId, request.SalePrice) + return &types.MsgRoyaltyInfoResponse{ + Receiver: receiver, + RoyaltyAmount: amount, + }, nil + +} + +// DefaultRoyaltyInfo queries the default royalty info for the class +func (k Keeper) DefaultRoyaltyInfo(c context.Context, request *types.MsgDefaultRoyaltyInfoRequest) (*types.MsgDefaultRoyaltyInfoResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + if len(request.ClassId) == 0 { + return nil, types.ErrEmptyClassId + } + receiver, amount := k.GetDefaultRoyaltyInfo(ctx, request.ClassId) + return &types.MsgDefaultRoyaltyInfoResponse{ + Receiver: receiver, + RoyaltyFraction: amount, + }, nil +} + +// TokenRoyaltyInfo queries the royalty info for the class of a token +func (k Keeper) TokenRoyaltyInfo(c context.Context, request *types.MsgTokenRoyaltyInfoRequest) (*types.MsgTokenRoyaltyInfoResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + if len(request.ClassId) == 0 { + return nil, types.ErrEmptyClassId + } + if len(request.TokenId) == 0 { + return nil, types.ErrEmptyTokenId + } + receiver, amount := k.GetTokenRoyaltyInfo(ctx, request.ClassId, request.TokenId) + return &types.MsgTokenRoyaltyInfoResponse{ + Receiver: receiver, + RoyaltyFraction: amount, + }, nil +} diff --git a/modules/nft/keeper/royalty.go b/modules/nft/keeper/royalty.go new file mode 100644 index 00000000..9175ed83 --- /dev/null +++ b/modules/nft/keeper/royalty.go @@ -0,0 +1,90 @@ +package keeper + +import ( + "math/big" + + "github.com/irisnet/irismod/modules/nft/types" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const DefaultFeeDenominator = 10000 + +// GetFeeDenominator returns the denominator of the fee +func (k Keeper) GetFeeDenominator(ctx sdk.Context) (feeNumerator sdkmath.Uint) { + feeNumerator = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(DefaultFeeDenominator)) + return +} + +// GetRoyaltyInfo returns the royalty information of a token under a class +func (k Keeper) GetRoyaltyInfo(ctx sdk.Context, classId string, tokenId string, salePrice sdkmath.Uint) (receiver string, royaltyAmount sdkmath.Uint) { + receiver, feeNumerator := k.GetTokenRoyaltyInfo(ctx, classId, tokenId) + if len(receiver) == 0 { + receiver, feeNumerator = k.GetDefaultRoyaltyInfo(ctx, classId) + } + royaltyAmount = salePrice.Mul(feeNumerator).Quo(k.GetFeeDenominator(ctx)) + return +} + +// GetDefaultRoyaltyInfo returns the default royalty information of a class +func (k Keeper) GetDefaultRoyaltyInfo(ctx sdk.Context, classId string) (address string, royaltyAmount sdkmath.Uint) { + store := ctx.KVStore(k.storeKey) + bz := store.Get(types.KeyDefaultRoyalty(classId)) + if len(bz) == 0 { + return "", sdkmath.Uint{} + } + royaltyInfo := types.RoyaltyInfo{} + k.cdc.MustMarshalJSON(&royaltyInfo) + return royaltyInfo.Address, royaltyInfo.RoyaltyFraction +} + +// GetTokenRoyaltyInfo returns the royalty information of a token under a class +func (k Keeper) GetTokenRoyaltyInfo(ctx sdk.Context, classId string, tokenId string) (address string, royaltyAmount sdkmath.Uint) { + store := ctx.KVStore(k.storeKey) + bz := store.Get(types.KeyTokenRoyalty(classId, tokenId)) + if len(bz) == 0 { + return "", sdkmath.Uint{} + } + royaltyInfo := types.RoyaltyInfo{} + k.cdc.MustMarshalJSON(&royaltyInfo) + return royaltyInfo.Address, royaltyInfo.RoyaltyFraction +} + +// SetDefaultRoyalty sets the default royalty information of a class +func (k Keeper) SetDefaultRoyalty(ctx sdk.Context, classId string, receiver string, feeNumerator sdkmath.Uint) { + store := ctx.KVStore(k.storeKey) + + royaltyInfo := types.RoyaltyInfo{ + Address: receiver, + RoyaltyFraction: feeNumerator, + } + + bz := k.cdc.MustMarshal(&royaltyInfo) + store.Set(types.KeyDefaultRoyalty(classId), bz) +} + +// SetTokenRoyalty sets the royalty information of a token under a class +func (k Keeper) SetTokenRoyalty(ctx sdk.Context, classId string, tokenId string, receiver string, feeNumerator sdkmath.Uint) { + store := ctx.KVStore(k.storeKey) + + royaltyInfo := types.RoyaltyInfo{ + Address: receiver, + RoyaltyFraction: feeNumerator, + } + + bz := k.cdc.MustMarshal(&royaltyInfo) + store.Set(types.KeyTokenRoyalty(classId, tokenId), bz) +} + +// ResetTokenRoyalty deletes the royalty information of a token under a class +func (k Keeper) ResetTokenRoyalty(ctx sdk.Context, classId string, tokenId string) { + store := ctx.KVStore(k.storeKey) + store.Delete(types.KeyTokenRoyalty(classId, tokenId)) +} + +// DeleteDefaultRoyalty deletes the default royalty information of a class +func (k Keeper) DeleteDefaultRoyalty(ctx sdk.Context, classId string) { + store := ctx.KVStore(k.storeKey) + store.Delete(types.KeyDefaultRoyalty(classId)) +} diff --git a/modules/nft/types/errors.go b/modules/nft/types/errors.go index e5f77082..cf468fd3 100644 --- a/modules/nft/types/errors.go +++ b/modules/nft/types/errors.go @@ -1,6 +1,7 @@ package types import ( + errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) @@ -15,4 +16,7 @@ var ( ErrInvalidDenom = sdkerrors.Register(ModuleName, 16, "invalid denom") ErrInvalidTokenID = sdkerrors.Register(ModuleName, 17, "invalid nft id") ErrInvalidTokenURI = sdkerrors.Register(ModuleName, 18, "invalid nft uri") + + ErrEmptyClassId = errorsmod.Register(ModuleName, 21, "class id can't be empty") + ErrEmptyTokenId = errorsmod.Register(ModuleName, 22, "token id can't be empty") ) diff --git a/modules/nft/types/keys.go b/modules/nft/types/keys.go index d1b6fcda..cd46ed0a 100644 --- a/modules/nft/types/keys.go +++ b/modules/nft/types/keys.go @@ -13,3 +13,33 @@ const ( // RouterKey is the message route for the NFT module RouterKey = ModuleName ) + +// RoyaltyKey +var ( + PrefixFeeDenominator = []byte{0x01} + PrefixDefaultRoyalty = []byte{0x02} + PrefixTokenRoyalty = []byte{0x03} + delimiter = []byte("/") +) + +func KeyFeeDenominator(classId string) []byte { + key := append(PrefixFeeDenominator, delimiter...) + return append(key, []byte(classId)...) +} + +func KeyDefaultRoyalty(classId string) []byte { + key := append(PrefixDefaultRoyalty, delimiter...) + return append(key, []byte(classId)...) +} + +func KeyTokenRoyalty(classId string, tokenId string) []byte { + key := append(PrefixTokenRoyalty, delimiter...) + if len(classId) > 0 { + key = append(key, []byte(classId)...) + key = append(key, delimiter...) + } + if len(classId) > 0 && len(tokenId) > 0 { + key = append(key, []byte(tokenId)...) + } + return key +} diff --git a/modules/nft/types/nft.pb.go b/modules/nft/types/nft.pb.go index db8953af..df09b28b 100644 --- a/modules/nft/types/nft.pb.go +++ b/modules/nft/types/nft.pb.go @@ -158,6 +158,8 @@ type DenomMetadata struct { MintRestricted bool `protobuf:"varint,3,opt,name=mint_restricted,json=mintRestricted,proto3" json:"mint_restricted,omitempty"` UpdateRestricted bool `protobuf:"varint,4,opt,name=update_restricted,json=updateRestricted,proto3" json:"update_restricted,omitempty"` Data string `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` + // royalty options + RoyaltyEnabled bool `protobuf:"varint,6,opt,name=royalty_enabled,json=royaltyEnabled,proto3" json:"royalty_enabled,omitempty"` } func (m *DenomMetadata) Reset() { *m = DenomMetadata{} } @@ -323,47 +325,49 @@ func init() { func init() { proto.RegisterFile("nft/nft.proto", fileDescriptor_fe8ab7e15b7f0646) } var fileDescriptor_fe8ab7e15b7f0646 = []byte{ - // 635 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, - 0x10, 0x8e, 0x1d, 0xa7, 0x4e, 0xc6, 0x4d, 0xdb, 0x7f, 0xff, 0x08, 0xb9, 0x1c, 0xec, 0x2a, 0x42, - 0xa2, 0x12, 0x28, 0x11, 0x45, 0xe2, 0x50, 0x6e, 0xa6, 0xaa, 0x08, 0x12, 0x45, 0xb2, 0xca, 0x85, - 0x4b, 0xb4, 0xf5, 0x6e, 0x9a, 0x15, 0xb1, 0x37, 0xda, 0xdd, 0xa8, 0x2a, 0x2f, 0x01, 0x12, 0x2f, - 0xc0, 0x2b, 0x20, 0xf1, 0x10, 0x3d, 0xf6, 0xc8, 0x29, 0x82, 0xf4, 0xc2, 0xb9, 0x4f, 0x80, 0xbc, - 0x6b, 0x07, 0x47, 0x01, 0xa9, 0xb7, 0x99, 0x6f, 0xbe, 0xdd, 0xf9, 0xe6, 0x1b, 0x7b, 0xa1, 0x9d, - 0x8d, 0x54, 0x3f, 0x1b, 0xa9, 0xde, 0x54, 0x70, 0xc5, 0x91, 0xc7, 0x04, 0x93, 0x29, 0x27, 0xbd, - 0x6c, 0xa4, 0xee, 0x77, 0xce, 0xf9, 0x39, 0xd7, 0x78, 0x3f, 0x8f, 0x0c, 0xa5, 0xfb, 0xd9, 0x02, - 0x37, 0xc2, 0x92, 0x9e, 0x1c, 0x9f, 0xa2, 0x2d, 0xb0, 0x19, 0xf1, 0xad, 0x3d, 0x6b, 0xbf, 0x15, - 0xdb, 0x8c, 0x20, 0x04, 0x4e, 0x86, 0x53, 0xea, 0xdb, 0x1a, 0xd1, 0x31, 0xda, 0x85, 0xfa, 0x4c, - 0x30, 0xbf, 0x9e, 0x43, 0x91, 0xbb, 0x98, 0x87, 0xf5, 0xb7, 0xf1, 0x20, 0xce, 0xb1, 0x9c, 0x4e, - 0xb0, 0xc2, 0xbe, 0x63, 0xe8, 0x79, 0x8c, 0x3a, 0xd0, 0xe0, 0x17, 0x19, 0x15, 0x7e, 0x43, 0x83, - 0x26, 0x41, 0xbb, 0xd0, 0x9c, 0x09, 0x36, 0x1c, 0x63, 0x39, 0xf6, 0x37, 0x74, 0xc1, 0x9d, 0x09, - 0xf6, 0x12, 0xcb, 0xf1, 0xa1, 0xf3, 0xeb, 0x4b, 0x68, 0x75, 0x9f, 0x83, 0x77, 0x72, 0x7c, 0xfa, - 0x9a, 0x2a, 0xac, 0x6f, 0x29, 0x85, 0x58, 0x15, 0x21, 0x65, 0x37, 0xfb, 0x4f, 0xb7, 0xe2, 0xf0, - 0x37, 0x1b, 0x1a, 0x47, 0x34, 0xe3, 0xe9, 0x9d, 0x06, 0xba, 0x07, 0x1b, 0x32, 0x19, 0xd3, 0x14, - 0x9b, 0x99, 0xe2, 0x22, 0x43, 0x3e, 0xb8, 0x89, 0xa0, 0x58, 0x71, 0x51, 0x0c, 0x54, 0xa6, 0xfa, - 0xc4, 0x65, 0x7a, 0xc6, 0x27, 0xc5, 0x50, 0x45, 0x86, 0x1e, 0xc2, 0x76, 0xca, 0x32, 0x35, 0x14, - 0x54, 0x2a, 0xc1, 0x12, 0x45, 0x89, 0x1e, 0xae, 0x19, 0x6f, 0xe5, 0x70, 0xbc, 0x44, 0xd1, 0x23, - 0xf8, 0x6f, 0x36, 0x25, 0x58, 0xd1, 0x2a, 0xd5, 0xd5, 0xd4, 0x1d, 0x53, 0xa8, 0x90, 0xf7, 0xc0, - 0x23, 0x54, 0x26, 0x82, 0x4d, 0x15, 0xe3, 0x99, 0xdf, 0xd4, 0x2d, 0xab, 0x10, 0xda, 0x31, 0x2b, - 0x69, 0xe9, 0x8a, 0xde, 0x44, 0xd5, 0x5f, 0x58, 0xf1, 0x77, 0x69, 0x9b, 0xb7, 0x66, 0xdb, 0x57, - 0x0b, 0xda, 0xda, 0xb6, 0xa5, 0xed, 0x15, 0x0b, 0xac, 0x75, 0x0b, 0x8c, 0x69, 0xf6, 0x8a, 0x69, - 0x7f, 0xb1, 0xa0, 0x7e, 0x77, 0x0b, 0x9c, 0x7f, 0x58, 0x50, 0x6a, 0x6e, 0xac, 0x69, 0xbe, 0x80, - 0xcd, 0xc1, 0xd1, 0x0b, 0x3e, 0x99, 0xd0, 0x44, 0x5b, 0xd1, 0x83, 0x26, 0xc9, 0x47, 0x18, 0x96, - 0x6b, 0x8f, 0xfe, 0xbf, 0x9d, 0x87, 0xdb, 0x97, 0x38, 0x9d, 0x1c, 0x76, 0xcb, 0x4a, 0x37, 0x76, - 0x75, 0x38, 0x20, 0xe8, 0x09, 0xb4, 0x14, 0x7f, 0x4f, 0xb3, 0x21, 0x23, 0xd2, 0xb7, 0xf7, 0xea, - 0xfb, 0xad, 0xa8, 0x73, 0x3b, 0x0f, 0x77, 0xcc, 0x81, 0x65, 0xa9, 0x1b, 0x37, 0x75, 0x3c, 0x20, - 0xb2, 0x68, 0xfc, 0xd1, 0x82, 0xc6, 0x1b, 0xfd, 0x2d, 0xfb, 0xe0, 0x62, 0x42, 0x04, 0x95, 0xb2, - 0x34, 0xa9, 0x48, 0xd1, 0x08, 0xb6, 0x18, 0x19, 0x26, 0x4b, 0x75, 0xa6, 0x83, 0x77, 0xb0, 0xdb, - 0xab, 0xfc, 0x96, 0xbd, 0xaa, 0xfe, 0xe8, 0xc1, 0xd5, 0x3c, 0xac, 0x2d, 0xe6, 0x61, 0xbb, 0x8a, - 0xca, 0xdb, 0x79, 0xe8, 0x19, 0x45, 0x8c, 0x24, 0xb2, 0x1b, 0xb7, 0x19, 0xa9, 0x54, 0x0b, 0x45, - 0x1f, 0x00, 0x56, 0x8c, 0x68, 0xe8, 0x19, 0xb5, 0x26, 0xef, 0x00, 0xad, 0xb4, 0xd4, 0x5b, 0x8e, - 0x9c, 0xbc, 0x57, 0x6c, 0x68, 0xe8, 0x19, 0x38, 0xd9, 0x48, 0x95, 0x0a, 0x3b, 0x2b, 0xf4, 0xe2, - 0x79, 0x88, 0x36, 0x0b, 0x71, 0xce, 0xc9, 0xf1, 0xa9, 0x8c, 0x35, 0xdf, 0xf4, 0x8e, 0x5e, 0x5d, - 0xfd, 0x0c, 0x6a, 0x57, 0x8b, 0xc0, 0xba, 0x5e, 0x04, 0xd6, 0x8f, 0x45, 0x60, 0x7d, 0xba, 0x09, - 0x6a, 0xd7, 0x37, 0x41, 0xed, 0xfb, 0x4d, 0x50, 0x7b, 0xf7, 0xf8, 0x9c, 0xa9, 0xf1, 0xec, 0xac, - 0x97, 0xf0, 0xb4, 0x9f, 0xdf, 0x9b, 0x51, 0xd5, 0x2f, 0xee, 0xef, 0xa7, 0x9c, 0xcc, 0x26, 0x54, - 0xe6, 0x6f, 0x56, 0x5f, 0x5d, 0x4e, 0xa9, 0x3c, 0xdb, 0xd0, 0xef, 0xd2, 0xd3, 0xdf, 0x01, 0x00, - 0x00, 0xff, 0xff, 0x4a, 0x49, 0x33, 0x49, 0xcb, 0x04, 0x00, 0x00, + // 657 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6a, 0xdb, 0x4a, + 0x14, 0xb5, 0x64, 0x39, 0xb2, 0xaf, 0xe2, 0x24, 0x6f, 0x9e, 0x79, 0x28, 0x6f, 0x21, 0x05, 0x53, + 0x48, 0xa0, 0xc5, 0xa6, 0x29, 0x74, 0x91, 0xee, 0xd4, 0x34, 0xd4, 0x85, 0xa6, 0x20, 0xd2, 0x4d, + 0x37, 0x66, 0xac, 0x19, 0xc7, 0x43, 0x25, 0x8d, 0xd1, 0x8c, 0x09, 0xee, 0x4f, 0xb4, 0xd0, 0x1f, + 0xe8, 0x47, 0xf4, 0x23, 0xb2, 0xcc, 0xb2, 0x74, 0x61, 0x5a, 0x67, 0xd3, 0x75, 0xbe, 0xa0, 0x68, + 0x34, 0x72, 0x64, 0xd2, 0x42, 0x76, 0xf7, 0x9e, 0x7b, 0x66, 0xee, 0xb9, 0x47, 0x57, 0x03, 0xed, + 0x74, 0x2c, 0xfb, 0xe9, 0x58, 0xf6, 0xa6, 0x19, 0x97, 0x1c, 0x39, 0x2c, 0x63, 0x22, 0xe1, 0xa4, + 0x97, 0x8e, 0xe5, 0xff, 0x9d, 0x73, 0x7e, 0xce, 0x15, 0xde, 0xcf, 0xa3, 0x82, 0xd2, 0xfd, 0x6c, + 0x80, 0x1d, 0x60, 0x41, 0x4f, 0x4f, 0xce, 0xd0, 0x16, 0x98, 0x8c, 0xb8, 0xc6, 0x9e, 0x71, 0xd0, + 0x0a, 0x4d, 0x46, 0x10, 0x02, 0x2b, 0xc5, 0x09, 0x75, 0x4d, 0x85, 0xa8, 0x18, 0xed, 0x42, 0x7d, + 0x96, 0x31, 0xb7, 0x9e, 0x43, 0x81, 0xbd, 0x5c, 0xf8, 0xf5, 0xb7, 0xe1, 0x20, 0xcc, 0xb1, 0x9c, + 0x4e, 0xb0, 0xc4, 0xae, 0x55, 0xd0, 0xf3, 0x18, 0x75, 0xa0, 0xc1, 0x2f, 0x52, 0x9a, 0xb9, 0x0d, + 0x05, 0x16, 0x09, 0xda, 0x85, 0xe6, 0x2c, 0x63, 0xc3, 0x09, 0x16, 0x13, 0x77, 0x43, 0x15, 0xec, + 0x59, 0xc6, 0x5e, 0x62, 0x31, 0x39, 0xb2, 0x7e, 0x7d, 0xf1, 0x8d, 0xee, 0x33, 0x70, 0x4e, 0x4f, + 0xce, 0x5e, 0x53, 0x89, 0xd5, 0x2d, 0xa5, 0x10, 0xa3, 0x22, 0xa4, 0xec, 0x66, 0xde, 0x76, 0xd3, + 0x87, 0xbf, 0x9a, 0xd0, 0x38, 0xa6, 0x29, 0x4f, 0xee, 0x35, 0xd0, 0x7f, 0xb0, 0x21, 0xa2, 0x09, + 0x4d, 0x70, 0x31, 0x53, 0xa8, 0x33, 0xe4, 0x82, 0x1d, 0x65, 0x14, 0x4b, 0x9e, 0xe9, 0x81, 0xca, + 0x54, 0x9d, 0x98, 0x27, 0x23, 0x1e, 0xeb, 0xa1, 0x74, 0x86, 0xf6, 0x61, 0x3b, 0x61, 0xa9, 0x1c, + 0x66, 0x54, 0xc8, 0x8c, 0x45, 0x92, 0x12, 0x35, 0x5c, 0x33, 0xdc, 0xca, 0xe1, 0x70, 0x85, 0xa2, + 0x87, 0xf0, 0xcf, 0x6c, 0x4a, 0xb0, 0xa4, 0x55, 0xaa, 0xad, 0xa8, 0x3b, 0x45, 0xa1, 0x42, 0xde, + 0x03, 0x87, 0x50, 0x11, 0x65, 0x6c, 0x2a, 0x19, 0x4f, 0xdd, 0xa6, 0x6a, 0x59, 0x85, 0xd0, 0x4e, + 0xf1, 0x49, 0x5a, 0xaa, 0xa2, 0xbe, 0x44, 0xd5, 0x5f, 0x58, 0xf3, 0x77, 0x65, 0x9b, 0x73, 0xc7, + 0xb6, 0xef, 0x06, 0xb4, 0x95, 0x6d, 0x2b, 0xdb, 0x2b, 0x16, 0x18, 0x77, 0x2d, 0x28, 0x4c, 0x33, + 0xd7, 0x4c, 0xfb, 0x83, 0x05, 0xf5, 0xfb, 0x5b, 0x60, 0xfd, 0xc5, 0x82, 0x52, 0x73, 0xa3, 0xb2, + 0x58, 0xfb, 0xb0, 0x9d, 0xf1, 0x39, 0x8e, 0xe5, 0x7c, 0x48, 0x53, 0x3c, 0x8a, 0x6f, 0xcd, 0xd6, + 0xf0, 0x8b, 0x02, 0xd5, 0xc3, 0x5d, 0xc0, 0xe6, 0xe0, 0xf8, 0x39, 0x8f, 0x63, 0x1a, 0x29, 0xcf, + 0x7a, 0xd0, 0x24, 0xf9, 0xac, 0xc3, 0x72, 0x3f, 0x82, 0x7f, 0x6f, 0x16, 0xfe, 0xf6, 0x1c, 0x27, + 0xf1, 0x51, 0xb7, 0xac, 0x74, 0x43, 0x5b, 0x85, 0x03, 0x82, 0x1e, 0x43, 0x4b, 0xf2, 0xf7, 0x34, + 0x1d, 0x32, 0x22, 0x5c, 0x73, 0xaf, 0x7e, 0xd0, 0x0a, 0x3a, 0x37, 0x0b, 0x7f, 0xa7, 0x38, 0xb0, + 0x2a, 0x75, 0xc3, 0xa6, 0x8a, 0x07, 0x44, 0xe8, 0xc6, 0x1f, 0x0d, 0x68, 0xbc, 0x51, 0x4b, 0xef, + 0x82, 0x8d, 0x09, 0xc9, 0xa8, 0x10, 0xa5, 0x9b, 0x3a, 0x45, 0x63, 0xd8, 0x62, 0x64, 0x18, 0xad, + 0xd4, 0x15, 0x1d, 0x9c, 0xc3, 0xdd, 0x5e, 0xe5, 0xff, 0xed, 0x55, 0xf5, 0x07, 0x0f, 0x2e, 0x17, + 0x7e, 0x6d, 0xb9, 0xf0, 0xdb, 0x55, 0x54, 0xdc, 0x2c, 0x7c, 0xa7, 0x50, 0xc4, 0x48, 0x24, 0xba, + 0x61, 0x9b, 0x91, 0x4a, 0x55, 0x2b, 0xfa, 0x00, 0xb0, 0x66, 0x44, 0x43, 0xcd, 0xa8, 0x34, 0x39, + 0x87, 0x68, 0xad, 0xa5, 0x5a, 0x87, 0xc0, 0xca, 0x7b, 0x85, 0x05, 0x0d, 0x3d, 0x05, 0x2b, 0x1d, + 0xcb, 0x52, 0x61, 0x67, 0x8d, 0xae, 0xdf, 0x91, 0x60, 0x53, 0x8b, 0xb3, 0x4e, 0x4f, 0xce, 0x44, + 0xa8, 0xf8, 0x45, 0xef, 0xe0, 0xd5, 0xe5, 0x4f, 0xaf, 0x76, 0xb9, 0xf4, 0x8c, 0xab, 0xa5, 0x67, + 0xfc, 0x58, 0x7a, 0xc6, 0xa7, 0x6b, 0xaf, 0x76, 0x75, 0xed, 0xd5, 0xbe, 0x5d, 0x7b, 0xb5, 0x77, + 0x8f, 0xce, 0x99, 0x9c, 0xcc, 0x46, 0xbd, 0x88, 0x27, 0xfd, 0xfc, 0xde, 0x94, 0xca, 0xbe, 0xbe, + 0xbf, 0x9f, 0x70, 0x32, 0x8b, 0xa9, 0xc8, 0x1f, 0xb7, 0xbe, 0x9c, 0x4f, 0xa9, 0x18, 0x6d, 0xa8, + 0x07, 0xec, 0xc9, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x09, 0x71, 0x4c, 0xf4, 0x04, 0x00, + 0x00, } func (this *BaseNFT) Equal(that interface{}) bool { @@ -520,6 +524,9 @@ func (this *DenomMetadata) Equal(that interface{}) bool { if this.Data != that1.Data { return false } + if this.RoyaltyEnabled != that1.RoyaltyEnabled { + return false + } return true } func (this *IDCollection) Equal(that interface{}) bool { @@ -846,6 +853,16 @@ func (m *DenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.RoyaltyEnabled { + i-- + if m.RoyaltyEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -1156,6 +1173,9 @@ func (m *DenomMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovNft(uint64(l)) } + if m.RoyaltyEnabled { + n += 2 + } return n } @@ -2119,6 +2139,26 @@ func (m *DenomMetadata) Unmarshal(dAtA []byte) error { } m.Data = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RoyaltyEnabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipNft(dAtA[iNdEx:]) diff --git a/modules/nft/types/query.pb.go b/modules/nft/types/query.pb.go index 3c8f197f..54d3cbcf 100644 --- a/modules/nft/types/query.pb.go +++ b/modules/nft/types/query.pb.go @@ -5,6 +5,7 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" @@ -641,6 +642,363 @@ func (m *QueryNFTResponse) GetNFT() *BaseNFT { return nil } +type MsgFeeDenominatorRequest struct { +} + +func (m *MsgFeeDenominatorRequest) Reset() { *m = MsgFeeDenominatorRequest{} } +func (m *MsgFeeDenominatorRequest) String() string { return proto.CompactTextString(m) } +func (*MsgFeeDenominatorRequest) ProtoMessage() {} +func (*MsgFeeDenominatorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{12} +} +func (m *MsgFeeDenominatorRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgFeeDenominatorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgFeeDenominatorRequest.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 *MsgFeeDenominatorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgFeeDenominatorRequest.Merge(m, src) +} +func (m *MsgFeeDenominatorRequest) XXX_Size() int { + return m.Size() +} +func (m *MsgFeeDenominatorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgFeeDenominatorRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgFeeDenominatorRequest proto.InternalMessageInfo + +type MsgFeeDenominatorResponse struct { + RoyaltyFraction cosmossdk_io_math.Uint `protobuf:"bytes,1,opt,name=royalty_fraction,json=royaltyFraction,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_fraction"` +} + +func (m *MsgFeeDenominatorResponse) Reset() { *m = MsgFeeDenominatorResponse{} } +func (m *MsgFeeDenominatorResponse) String() string { return proto.CompactTextString(m) } +func (*MsgFeeDenominatorResponse) ProtoMessage() {} +func (*MsgFeeDenominatorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{13} +} +func (m *MsgFeeDenominatorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgFeeDenominatorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgFeeDenominatorResponse.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 *MsgFeeDenominatorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgFeeDenominatorResponse.Merge(m, src) +} +func (m *MsgFeeDenominatorResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgFeeDenominatorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgFeeDenominatorResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgFeeDenominatorResponse proto.InternalMessageInfo + +type MsgRoyaltyInfoRequest struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + SalePrice cosmossdk_io_math.Uint `protobuf:"bytes,3,opt,name=sale_price,json=salePrice,proto3,customtype=cosmossdk.io/math.Uint" json:"sale_price"` +} + +func (m *MsgRoyaltyInfoRequest) Reset() { *m = MsgRoyaltyInfoRequest{} } +func (m *MsgRoyaltyInfoRequest) String() string { return proto.CompactTextString(m) } +func (*MsgRoyaltyInfoRequest) ProtoMessage() {} +func (*MsgRoyaltyInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{14} +} +func (m *MsgRoyaltyInfoRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRoyaltyInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRoyaltyInfoRequest.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 *MsgRoyaltyInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRoyaltyInfoRequest.Merge(m, src) +} +func (m *MsgRoyaltyInfoRequest) XXX_Size() int { + return m.Size() +} +func (m *MsgRoyaltyInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRoyaltyInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRoyaltyInfoRequest proto.InternalMessageInfo + +func (m *MsgRoyaltyInfoRequest) GetClassId() string { + if m != nil { + return m.ClassId + } + return "" +} + +func (m *MsgRoyaltyInfoRequest) GetTokenId() string { + if m != nil { + return m.TokenId + } + return "" +} + +type MsgRoyaltyInfoResponse struct { + Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` + RoyaltyAmount cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=royalty_amount,json=royaltyAmount,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_amount"` +} + +func (m *MsgRoyaltyInfoResponse) Reset() { *m = MsgRoyaltyInfoResponse{} } +func (m *MsgRoyaltyInfoResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRoyaltyInfoResponse) ProtoMessage() {} +func (*MsgRoyaltyInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{15} +} +func (m *MsgRoyaltyInfoResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRoyaltyInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRoyaltyInfoResponse.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 *MsgRoyaltyInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRoyaltyInfoResponse.Merge(m, src) +} +func (m *MsgRoyaltyInfoResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRoyaltyInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRoyaltyInfoResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRoyaltyInfoResponse proto.InternalMessageInfo + +func (m *MsgRoyaltyInfoResponse) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + +type MsgDefaultRoyaltyInfoRequest struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` +} + +func (m *MsgDefaultRoyaltyInfoRequest) Reset() { *m = MsgDefaultRoyaltyInfoRequest{} } +func (m *MsgDefaultRoyaltyInfoRequest) String() string { return proto.CompactTextString(m) } +func (*MsgDefaultRoyaltyInfoRequest) ProtoMessage() {} +func (*MsgDefaultRoyaltyInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{16} +} +func (m *MsgDefaultRoyaltyInfoRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDefaultRoyaltyInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDefaultRoyaltyInfoRequest.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 *MsgDefaultRoyaltyInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDefaultRoyaltyInfoRequest.Merge(m, src) +} +func (m *MsgDefaultRoyaltyInfoRequest) XXX_Size() int { + return m.Size() +} +func (m *MsgDefaultRoyaltyInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDefaultRoyaltyInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDefaultRoyaltyInfoRequest proto.InternalMessageInfo + +func (m *MsgDefaultRoyaltyInfoRequest) GetClassId() string { + if m != nil { + return m.ClassId + } + return "" +} + +type MsgDefaultRoyaltyInfoResponse struct { + Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` + RoyaltyFraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=royalty_fraction,json=royaltyFraction,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_fraction"` +} + +func (m *MsgDefaultRoyaltyInfoResponse) Reset() { *m = MsgDefaultRoyaltyInfoResponse{} } +func (m *MsgDefaultRoyaltyInfoResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDefaultRoyaltyInfoResponse) ProtoMessage() {} +func (*MsgDefaultRoyaltyInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{17} +} +func (m *MsgDefaultRoyaltyInfoResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDefaultRoyaltyInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDefaultRoyaltyInfoResponse.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 *MsgDefaultRoyaltyInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDefaultRoyaltyInfoResponse.Merge(m, src) +} +func (m *MsgDefaultRoyaltyInfoResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDefaultRoyaltyInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDefaultRoyaltyInfoResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDefaultRoyaltyInfoResponse proto.InternalMessageInfo + +func (m *MsgDefaultRoyaltyInfoResponse) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + +type MsgTokenRoyaltyInfoRequest struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` +} + +func (m *MsgTokenRoyaltyInfoRequest) Reset() { *m = MsgTokenRoyaltyInfoRequest{} } +func (m *MsgTokenRoyaltyInfoRequest) String() string { return proto.CompactTextString(m) } +func (*MsgTokenRoyaltyInfoRequest) ProtoMessage() {} +func (*MsgTokenRoyaltyInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{18} +} +func (m *MsgTokenRoyaltyInfoRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTokenRoyaltyInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTokenRoyaltyInfoRequest.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 *MsgTokenRoyaltyInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTokenRoyaltyInfoRequest.Merge(m, src) +} +func (m *MsgTokenRoyaltyInfoRequest) XXX_Size() int { + return m.Size() +} +func (m *MsgTokenRoyaltyInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTokenRoyaltyInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTokenRoyaltyInfoRequest proto.InternalMessageInfo + +func (m *MsgTokenRoyaltyInfoRequest) GetClassId() string { + if m != nil { + return m.ClassId + } + return "" +} + +func (m *MsgTokenRoyaltyInfoRequest) GetTokenId() string { + if m != nil { + return m.TokenId + } + return "" +} + +type MsgTokenRoyaltyInfoResponse struct { + Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` + RoyaltyFraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=royalty_fraction,json=royaltyFraction,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_fraction"` +} + +func (m *MsgTokenRoyaltyInfoResponse) Reset() { *m = MsgTokenRoyaltyInfoResponse{} } +func (m *MsgTokenRoyaltyInfoResponse) String() string { return proto.CompactTextString(m) } +func (*MsgTokenRoyaltyInfoResponse) ProtoMessage() {} +func (*MsgTokenRoyaltyInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ce02d034d3adf2e9, []int{19} +} +func (m *MsgTokenRoyaltyInfoResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTokenRoyaltyInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTokenRoyaltyInfoResponse.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 *MsgTokenRoyaltyInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTokenRoyaltyInfoResponse.Merge(m, src) +} +func (m *MsgTokenRoyaltyInfoResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgTokenRoyaltyInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTokenRoyaltyInfoResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTokenRoyaltyInfoResponse proto.InternalMessageInfo + +func (m *MsgTokenRoyaltyInfoResponse) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + func init() { proto.RegisterType((*QuerySupplyRequest)(nil), "irismod.nft.QuerySupplyRequest") proto.RegisterType((*QuerySupplyResponse)(nil), "irismod.nft.QuerySupplyResponse") @@ -654,61 +1012,87 @@ func init() { proto.RegisterType((*QueryDenomsResponse)(nil), "irismod.nft.QueryDenomsResponse") proto.RegisterType((*QueryNFTRequest)(nil), "irismod.nft.QueryNFTRequest") proto.RegisterType((*QueryNFTResponse)(nil), "irismod.nft.QueryNFTResponse") + proto.RegisterType((*MsgFeeDenominatorRequest)(nil), "irismod.nft.MsgFeeDenominatorRequest") + proto.RegisterType((*MsgFeeDenominatorResponse)(nil), "irismod.nft.MsgFeeDenominatorResponse") + proto.RegisterType((*MsgRoyaltyInfoRequest)(nil), "irismod.nft.MsgRoyaltyInfoRequest") + proto.RegisterType((*MsgRoyaltyInfoResponse)(nil), "irismod.nft.MsgRoyaltyInfoResponse") + proto.RegisterType((*MsgDefaultRoyaltyInfoRequest)(nil), "irismod.nft.MsgDefaultRoyaltyInfoRequest") + proto.RegisterType((*MsgDefaultRoyaltyInfoResponse)(nil), "irismod.nft.MsgDefaultRoyaltyInfoResponse") + proto.RegisterType((*MsgTokenRoyaltyInfoRequest)(nil), "irismod.nft.MsgTokenRoyaltyInfoRequest") + proto.RegisterType((*MsgTokenRoyaltyInfoResponse)(nil), "irismod.nft.MsgTokenRoyaltyInfoResponse") } func init() { proto.RegisterFile("nft/query.proto", fileDescriptor_ce02d034d3adf2e9) } var fileDescriptor_ce02d034d3adf2e9 = []byte{ - // 772 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x4f, 0x13, 0x41, - 0x1c, 0xed, 0xb4, 0xb4, 0xe0, 0xa0, 0x01, 0xa6, 0x08, 0xb5, 0xe2, 0xb6, 0x59, 0xfe, 0x8a, 0xb8, - 0x2b, 0x78, 0x30, 0xf1, 0xe0, 0xa1, 0x98, 0x1a, 0x2e, 0xa0, 0x95, 0x13, 0x31, 0x31, 0xdb, 0x76, - 0x5a, 0x1a, 0xbb, 0x33, 0x4b, 0x67, 0x56, 0xd3, 0x10, 0x62, 0x62, 0xbc, 0x9a, 0x90, 0x78, 0xf4, - 0x93, 0xf8, 0x0d, 0x38, 0x92, 0x78, 0xd0, 0x53, 0x63, 0x8a, 0x9f, 0x80, 0x4f, 0x60, 0x76, 0x66, - 0x96, 0xee, 0xba, 0x2d, 0x98, 0x86, 0xdb, 0xee, 0xce, 0x9b, 0xf7, 0xde, 0xbc, 0xdf, 0xfc, 0x7e, - 0x59, 0x38, 0x41, 0x6a, 0xdc, 0x3c, 0x70, 0x71, 0xab, 0x6d, 0x38, 0x2d, 0xca, 0x29, 0x1a, 0x6f, - 0xb4, 0x1a, 0xcc, 0xa6, 0x55, 0x83, 0xd4, 0x78, 0x76, 0xba, 0x4e, 0xeb, 0x54, 0x7c, 0x37, 0xbd, - 0x27, 0x09, 0xc9, 0xce, 0xd5, 0x29, 0xad, 0x37, 0xb1, 0x69, 0x39, 0x0d, 0xd3, 0x22, 0x84, 0x72, - 0x8b, 0x37, 0x28, 0x61, 0x6a, 0xf5, 0x96, 0xc7, 0x48, 0x6a, 0x5c, 0xbd, 0xae, 0x56, 0x28, 0xb3, - 0x29, 0x33, 0xcb, 0x16, 0xc3, 0x52, 0xc8, 0x7c, 0xbf, 0x5e, 0xc6, 0xdc, 0x5a, 0x37, 0x1d, 0xab, - 0xde, 0x20, 0x62, 0xaf, 0xc4, 0xea, 0x7b, 0x10, 0xbd, 0xf2, 0x10, 0xaf, 0x5d, 0xc7, 0x69, 0xb6, - 0x4b, 0xf8, 0xc0, 0xc5, 0x8c, 0x23, 0x03, 0x8e, 0x55, 0x31, 0xa1, 0xf6, 0xdb, 0x46, 0x35, 0x03, - 0xf2, 0x60, 0xe5, 0x46, 0x21, 0x7d, 0xde, 0xc9, 0x4d, 0xb4, 0x2d, 0xbb, 0xf9, 0x54, 0xf7, 0x57, - 0xf4, 0xd2, 0xa8, 0x78, 0xdc, 0xaa, 0xa2, 0x69, 0x98, 0xa4, 0x1f, 0x08, 0x6e, 0x65, 0xe2, 0x1e, - 0xb8, 0x24, 0x5f, 0xf4, 0x87, 0x30, 0x1d, 0xe2, 0x66, 0x0e, 0x25, 0x0c, 0xa3, 0x19, 0x98, 0xb2, - 0x6c, 0xea, 0x12, 0x2e, 0xa8, 0x47, 0x4a, 0xea, 0x4d, 0xff, 0x0e, 0xe0, 0xac, 0xc0, 0x6f, 0x17, - 0x77, 0xd9, 0x4e, 0x6d, 0xc7, 0xe3, 0x18, 0xd6, 0xd0, 0x52, 0xc8, 0x50, 0x61, 0xf2, 0xbc, 0x93, - 0xbb, 0x29, 0xc1, 0xd2, 0x9a, 0xb2, 0x88, 0x8a, 0x10, 0xf6, 0x22, 0xc9, 0x24, 0xf2, 0x60, 0x65, - 0x7c, 0x63, 0xc9, 0x90, 0xf9, 0x19, 0x5e, 0x7e, 0x86, 0x2c, 0x94, 0xca, 0xcf, 0x78, 0x69, 0xd5, - 0xb1, 0xf2, 0x54, 0x0a, 0xec, 0xd4, 0xbf, 0x00, 0x98, 0x89, 0x7a, 0x57, 0x07, 0x5e, 0xf1, 0xcd, - 0x00, 0xc1, 0x8f, 0x8c, 0x40, 0xbd, 0x0d, 0x09, 0x55, 0x76, 0x5e, 0x84, 0xec, 0xc4, 0x05, 0x7c, - 0xf9, 0x4a, 0x3b, 0x52, 0x26, 0xe4, 0xe7, 0x18, 0xc0, 0x19, 0xe1, 0x67, 0x93, 0x36, 0x9b, 0xb8, - 0xe2, 0x7d, 0x1b, 0x36, 0xca, 0x62, 0x1f, 0x4f, 0xc3, 0x44, 0xf4, 0xcd, 0x2f, 0x6f, 0xd0, 0x92, - 0x4a, 0xe8, 0x09, 0x84, 0x95, 0x8b, 0xaf, 0x2a, 0xa6, 0xd9, 0x50, 0x4c, 0x81, 0x4d, 0x01, 0xe8, - 0xf5, 0x05, 0xb6, 0x09, 0xa7, 0x84, 0xb9, 0xe7, 0xde, 0xa9, 0x87, 0x8c, 0x4a, 0x7f, 0xa6, 0x9a, - 0x49, 0x91, 0xf4, 0xca, 0x2f, 0x00, 0x7d, 0xcb, 0x2f, 0xa1, 0x12, 0xa0, 0xbf, 0x09, 0xee, 0x67, - 0xbe, 0x8b, 0x70, 0x01, 0xc0, 0xd0, 0x05, 0x38, 0x06, 0xaa, 0x1f, 0x7d, 0x7a, 0xe5, 0xef, 0x11, - 0x4c, 0x09, 0x79, 0x96, 0x01, 0xf9, 0x44, 0x7f, 0x83, 0x85, 0x91, 0x93, 0x4e, 0x2e, 0x56, 0x52, - 0xb8, 0xeb, 0x4b, 0xfd, 0x00, 0x4e, 0xf8, 0x5d, 0x33, 0xec, 0xf5, 0x34, 0xe0, 0x18, 0xa7, 0xef, - 0x30, 0xf1, 0xf0, 0xf1, 0x7f, 0xf1, 0xfe, 0x8a, 0x5e, 0x1a, 0x15, 0x8f, 0x5b, 0x55, 0x7d, 0x13, - 0x4e, 0xf6, 0x24, 0x55, 0x02, 0x26, 0x4c, 0x90, 0x1a, 0x57, 0xd1, 0x4e, 0x87, 0x8e, 0x5f, 0xb0, - 0x18, 0xde, 0x2e, 0xee, 0x16, 0x46, 0xbb, 0x9d, 0x5c, 0xc2, 0xdb, 0xe3, 0x21, 0x37, 0x7e, 0x26, - 0x61, 0x52, 0xb0, 0xa0, 0x8f, 0x30, 0x25, 0xc7, 0x1b, 0xca, 0x85, 0xf6, 0x45, 0x87, 0x6a, 0x36, - 0x3f, 0x18, 0x20, 0x7d, 0xe8, 0x1b, 0x9f, 0x7e, 0xfc, 0xf9, 0x1a, 0x5f, 0x43, 0xab, 0xa6, 0x42, - 0x7a, 0x43, 0xdd, 0xec, 0x5d, 0x77, 0x66, 0x1e, 0xfa, 0x09, 0x1c, 0x99, 0x4c, 0xca, 0xba, 0x70, - 0x3c, 0x30, 0x73, 0xd0, 0x42, 0x54, 0x24, 0x3a, 0x4e, 0xb3, 0x8b, 0x57, 0xa0, 0x94, 0x9f, 0x3b, - 0xc2, 0x4f, 0x1a, 0x4d, 0x85, 0xfc, 0x90, 0x1a, 0x67, 0xe8, 0x33, 0x80, 0xb0, 0xd7, 0x93, 0x68, - 0x3e, 0x4a, 0x18, 0x99, 0x3c, 0xd9, 0x85, 0xcb, 0x41, 0x4a, 0xf4, 0x81, 0x10, 0x5d, 0x44, 0xf3, - 0xff, 0x11, 0x02, 0x72, 0x60, 0x52, 0x5c, 0x50, 0xa4, 0x45, 0xb9, 0x83, 0xad, 0x9c, 0xcd, 0x0d, - 0x5c, 0x57, 0xb2, 0x4b, 0x42, 0x36, 0x8f, 0xb4, 0x90, 0xac, 0xbc, 0xf0, 0x41, 0xc5, 0x7d, 0x98, - 0x92, 0xfd, 0x83, 0x06, 0x51, 0xb2, 0x4b, 0x0a, 0x1e, 0x6e, 0x3d, 0xfd, 0xae, 0x10, 0xbd, 0x8d, - 0xd2, 0x7d, 0x44, 0x11, 0x83, 0xde, 0x85, 0x43, 0x73, 0x7d, 0x6b, 0xe5, 0x6b, 0xdc, 0x1b, 0xb0, - 0xaa, 0x04, 0x4c, 0x21, 0x70, 0x1f, 0x2d, 0x47, 0x2a, 0x18, 0xbc, 0x4a, 0x87, 0x7e, 0x9f, 0x1c, - 0x15, 0x8a, 0x27, 0x5d, 0x0d, 0x9c, 0x76, 0x35, 0xf0, 0xbb, 0xab, 0x81, 0xe3, 0x33, 0x2d, 0x76, - 0x7a, 0xa6, 0xc5, 0x7e, 0x9d, 0x69, 0xb1, 0xbd, 0xb5, 0x7a, 0x83, 0xef, 0xbb, 0x65, 0xa3, 0x42, - 0x6d, 0x41, 0x46, 0x30, 0xbf, 0x20, 0xb5, 0x69, 0xd5, 0x6d, 0x62, 0x26, 0xc8, 0x79, 0xdb, 0xc1, - 0xac, 0x9c, 0x12, 0xbf, 0x17, 0x8f, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x30, 0x83, 0x65, 0x31, - 0xed, 0x08, 0x00, 0x00, + // 1065 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x5f, 0x4f, 0xdb, 0x56, + 0x14, 0xc7, 0xa1, 0x40, 0x38, 0xac, 0x85, 0x5e, 0x28, 0x0d, 0x2e, 0x4d, 0x22, 0xd3, 0x02, 0x65, + 0x9d, 0xbd, 0xb2, 0x87, 0x69, 0x93, 0x36, 0x69, 0xa1, 0xcb, 0x94, 0x07, 0xda, 0xce, 0x63, 0x7b, + 0xa8, 0x26, 0x21, 0x93, 0x5c, 0x1b, 0x0b, 0xc7, 0x37, 0xe4, 0xde, 0x74, 0x8a, 0x50, 0x35, 0x69, + 0xaa, 0xf6, 0xb4, 0x49, 0x48, 0x7b, 0xdc, 0x27, 0xd9, 0x37, 0xe8, 0x63, 0xa5, 0xbd, 0x4c, 0x7b, + 0x88, 0x26, 0xe8, 0x27, 0xe8, 0x27, 0x98, 0xee, 0x1f, 0x27, 0x76, 0x9c, 0x10, 0x16, 0xa1, 0xbd, + 0xe5, 0xfa, 0xfe, 0xce, 0xf9, 0xfd, 0xee, 0xef, 0xf8, 0x9e, 0xe3, 0xc0, 0x7c, 0xe8, 0x32, 0xeb, + 0xb8, 0x85, 0x9b, 0x6d, 0xb3, 0xd1, 0x24, 0x8c, 0xa0, 0x39, 0xbf, 0xe9, 0xd3, 0x3a, 0xa9, 0x99, + 0xa1, 0xcb, 0xf4, 0x25, 0x8f, 0x78, 0x44, 0x3c, 0xb7, 0xf8, 0x2f, 0x09, 0xd1, 0x57, 0x3d, 0x42, + 0xbc, 0x00, 0x5b, 0x4e, 0xc3, 0xb7, 0x9c, 0x30, 0x24, 0xcc, 0x61, 0x3e, 0x09, 0xa9, 0xda, 0xbd, + 0xce, 0x33, 0x86, 0x2e, 0x53, 0xcb, 0xad, 0x2a, 0xa1, 0x75, 0x42, 0xad, 0x03, 0x87, 0x62, 0x49, + 0x64, 0xbd, 0x78, 0x74, 0x80, 0x99, 0xf3, 0xc8, 0x6a, 0x38, 0x9e, 0x1f, 0x8a, 0x58, 0x89, 0x35, + 0x9e, 0x03, 0xfa, 0x9a, 0x23, 0xbe, 0x69, 0x35, 0x1a, 0x41, 0xdb, 0xc6, 0xc7, 0x2d, 0x4c, 0x19, + 0x32, 0x21, 0x5b, 0xc3, 0x21, 0xa9, 0xef, 0xfb, 0xb5, 0x9c, 0x56, 0xd4, 0x36, 0x67, 0x4b, 0x8b, + 0xef, 0x3a, 0x85, 0xf9, 0xb6, 0x53, 0x0f, 0x3e, 0x35, 0xa2, 0x1d, 0xc3, 0x9e, 0x11, 0x3f, 0x2b, + 0x35, 0xb4, 0x04, 0x53, 0xe4, 0x87, 0x10, 0x37, 0x73, 0x19, 0x0e, 0xb6, 0xe5, 0xc2, 0xf8, 0x00, + 0x16, 0x13, 0xb9, 0x69, 0x83, 0x84, 0x14, 0xa3, 0x65, 0x98, 0x76, 0xea, 0xa4, 0x15, 0x32, 0x91, + 0xfa, 0x9a, 0xad, 0x56, 0xc6, 0x1f, 0x1a, 0xdc, 0x16, 0xf8, 0x27, 0xe5, 0x3d, 0xfa, 0xd4, 0x7d, + 0xca, 0x73, 0x8c, 0x2b, 0x68, 0x3d, 0x21, 0xa8, 0xb4, 0xf0, 0xae, 0x53, 0x78, 0x4f, 0x82, 0xa5, + 0x34, 0x25, 0x11, 0x95, 0x01, 0x7a, 0x96, 0xe4, 0x26, 0x8b, 0xda, 0xe6, 0xdc, 0xf6, 0xba, 0x29, + 0xfd, 0x33, 0xb9, 0x7f, 0xa6, 0x2c, 0x94, 0xf2, 0xcf, 0x7c, 0xe6, 0x78, 0x58, 0x69, 0xb2, 0x63, + 0x91, 0xc6, 0xaf, 0x1a, 0xe4, 0xd2, 0xda, 0xd5, 0x81, 0x37, 0x23, 0x31, 0x9a, 0xc8, 0x8f, 0xcc, + 0x58, 0xbd, 0x4d, 0x09, 0x55, 0x72, 0xbe, 0x4a, 0xc8, 0xc9, 0x08, 0xf8, 0xc6, 0x48, 0x39, 0x92, + 0x26, 0xa1, 0xe7, 0x54, 0x83, 0x65, 0xa1, 0x67, 0x87, 0x04, 0x01, 0xae, 0xf2, 0x67, 0xe3, 0x5a, + 0x59, 0x1e, 0xa0, 0x69, 0x1c, 0x8b, 0x7e, 0x8f, 0xca, 0x1b, 0x97, 0xa4, 0x1c, 0xfa, 0x18, 0xa0, + 0xda, 0x7d, 0xaa, 0x6c, 0xba, 0x9d, 0xb0, 0x29, 0x16, 0x14, 0x83, 0x5e, 0x9d, 0x61, 0x3b, 0x70, + 0x53, 0x88, 0x7b, 0xcc, 0x4f, 0x3d, 0xa6, 0x55, 0xc6, 0xe7, 0xea, 0x32, 0xa9, 0x24, 0xbd, 0xf2, + 0x0b, 0xc0, 0xc0, 0xf2, 0x4b, 0xa8, 0x04, 0x18, 0xdf, 0xc7, 0xe3, 0x69, 0xa4, 0x22, 0x59, 0x00, + 0x6d, 0xec, 0x02, 0x9c, 0x6a, 0xea, 0x3e, 0x46, 0xe9, 0x95, 0xbe, 0x0f, 0x61, 0x5a, 0xd0, 0xd3, + 0x9c, 0x56, 0x9c, 0x1c, 0x2c, 0xb0, 0x74, 0xed, 0x75, 0xa7, 0x30, 0x61, 0x2b, 0xdc, 0xd5, 0xb9, + 0x7e, 0x0c, 0xf3, 0xd1, 0xad, 0x19, 0xf7, 0xf5, 0x34, 0x21, 0xcb, 0xc8, 0x11, 0x0e, 0x39, 0x3e, + 0xd3, 0x8f, 0x8f, 0x76, 0x0c, 0x7b, 0x46, 0xfc, 0xac, 0xd4, 0x8c, 0x1d, 0x58, 0xe8, 0x51, 0x2a, + 0x07, 0x2c, 0x98, 0x0c, 0x5d, 0xa6, 0xac, 0x5d, 0x4a, 0x1c, 0xbf, 0xe4, 0x50, 0xfc, 0xa4, 0xbc, + 0x57, 0x9a, 0x39, 0xeb, 0x14, 0x26, 0x79, 0x0c, 0x47, 0x1a, 0x3a, 0xe4, 0x76, 0xa9, 0x57, 0xc6, + 0x58, 0xb8, 0xc3, 0x4f, 0x43, 0xa2, 0x56, 0x65, 0xb8, 0xb0, 0x32, 0x60, 0x4f, 0x31, 0x55, 0x60, + 0xa1, 0x49, 0xda, 0x4e, 0xc0, 0xda, 0xfb, 0x6e, 0xd3, 0xe9, 0xbd, 0xee, 0xb3, 0xa5, 0x3c, 0x77, + 0xf8, 0xef, 0x4e, 0x61, 0x59, 0xda, 0x48, 0x6b, 0x47, 0xa6, 0x4f, 0xac, 0xba, 0xc3, 0x0e, 0xcd, + 0x6f, 0xfd, 0x90, 0xd9, 0xf3, 0x2a, 0xae, 0xac, 0xc2, 0x8c, 0x5f, 0x34, 0xb8, 0xb5, 0x4b, 0x3d, + 0x5b, 0x3e, 0xae, 0x84, 0x2e, 0x89, 0x2c, 0x5c, 0x81, 0x6c, 0x35, 0x70, 0x28, 0xed, 0x5a, 0x68, + 0xcf, 0x88, 0x75, 0xa5, 0xc6, 0xb7, 0x92, 0x6e, 0x75, 0x8d, 0x41, 0x9f, 0x01, 0x50, 0x27, 0xc0, + 0xfb, 0x8d, 0xa6, 0x5f, 0xc5, 0xa2, 0x15, 0x8e, 0x16, 0x35, 0xcb, 0x23, 0x9e, 0xf1, 0x00, 0xe3, + 0x04, 0x96, 0xfb, 0xd5, 0xa8, 0x33, 0xeb, 0x90, 0x6d, 0xe2, 0x2a, 0xf6, 0x5f, 0xa8, 0x0e, 0x38, + 0x6b, 0x77, 0xd7, 0xe8, 0x4b, 0xb8, 0x11, 0xf9, 0xa1, 0x66, 0x42, 0xe6, 0x52, 0xc4, 0xd7, 0x55, + 0xd4, 0x17, 0x72, 0x74, 0x7c, 0x02, 0xab, 0xbb, 0xd4, 0x7b, 0x8c, 0x5d, 0xa7, 0x15, 0xb0, 0xff, + 0xe4, 0x88, 0xf1, 0xb3, 0x06, 0x77, 0x87, 0xc4, 0x5e, 0x42, 0xff, 0xa0, 0x7a, 0x66, 0xc6, 0xab, + 0xa7, 0x0d, 0xfa, 0x2e, 0xf5, 0xf6, 0x78, 0x35, 0xae, 0xaa, 0xa6, 0xc6, 0x2b, 0x0d, 0xee, 0x0c, + 0x4c, 0xfa, 0xbf, 0x1e, 0x6d, 0xfb, 0x6d, 0x16, 0xa6, 0xc4, 0xa5, 0x43, 0x3f, 0xc2, 0xb4, 0xfc, + 0x1a, 0x40, 0x85, 0xc4, 0x35, 0x4b, 0x7f, 0x83, 0xe8, 0xc5, 0xe1, 0x00, 0xa9, 0xde, 0xd8, 0xfe, + 0xe9, 0xcf, 0xb7, 0xbf, 0x65, 0x1e, 0xa2, 0x2d, 0x4b, 0x21, 0xf9, 0x37, 0x90, 0xd5, 0x9b, 0x0e, + 0xd4, 0x3a, 0x89, 0x1a, 0xc6, 0x4b, 0x8b, 0x4a, 0xda, 0x16, 0xcc, 0xc5, 0x46, 0x34, 0xba, 0x97, + 0x26, 0x49, 0x7f, 0x7d, 0xe8, 0xf7, 0x47, 0xa0, 0x94, 0x9e, 0x15, 0xa1, 0x67, 0x11, 0xdd, 0x4c, + 0xe8, 0x09, 0x5d, 0x46, 0xd1, 0x2b, 0x0d, 0xa0, 0x37, 0xc2, 0xd0, 0x5a, 0x3a, 0x61, 0x6a, 0x50, + 0xeb, 0xf7, 0x2e, 0x06, 0x29, 0xd2, 0xf7, 0x05, 0xe9, 0x7d, 0xb4, 0x76, 0x09, 0x13, 0x50, 0x03, + 0xa6, 0x44, 0x57, 0x42, 0xf9, 0x74, 0xee, 0xf8, 0xe4, 0xd3, 0x0b, 0x43, 0xf7, 0x15, 0xed, 0xba, + 0xa0, 0x2d, 0xa2, 0x7c, 0x82, 0x56, 0xce, 0x87, 0x38, 0xe3, 0x21, 0x4c, 0xcb, 0x71, 0x83, 0x86, + 0xa5, 0xa4, 0x17, 0x14, 0x3c, 0x39, 0xa9, 0x8c, 0x3b, 0x82, 0xf4, 0x16, 0x5a, 0x1c, 0x40, 0x8a, + 0x28, 0xf0, 0xfe, 0x8c, 0x56, 0x07, 0xd6, 0x2a, 0xe2, 0xb8, 0x3b, 0x64, 0x57, 0x11, 0x58, 0x82, + 0xe0, 0x01, 0xda, 0x48, 0x55, 0x30, 0xfe, 0x2a, 0x9d, 0x44, 0xd7, 0xed, 0x25, 0xda, 0x87, 0x1b, + 0xc9, 0x4e, 0x8f, 0x92, 0xef, 0xca, 0xb0, 0x29, 0xa1, 0xaf, 0x8f, 0x82, 0xa9, 0x1b, 0xfa, 0x1d, + 0xcc, 0xc5, 0x2e, 0x2e, 0x32, 0xfa, 0xc3, 0xd2, 0xad, 0x42, 0x5f, 0xbb, 0x10, 0xa3, 0xf2, 0x1e, + 0x01, 0x4a, 0xb7, 0x3c, 0xf4, 0xa0, 0x3f, 0x74, 0x68, 0x4b, 0xd5, 0xb7, 0x2e, 0x03, 0x55, 0x64, + 0x18, 0x16, 0xfa, 0x5b, 0x10, 0xda, 0xe8, 0x8f, 0x1f, 0xd2, 0xf9, 0xf4, 0xcd, 0xd1, 0x40, 0x49, + 0x53, 0x2a, 0xbf, 0x3e, 0xcb, 0x6b, 0x6f, 0xce, 0xf2, 0xda, 0x3f, 0x67, 0x79, 0xed, 0xf4, 0x3c, + 0x3f, 0xf1, 0xe6, 0x3c, 0x3f, 0xf1, 0xd7, 0x79, 0x7e, 0xe2, 0xf9, 0x43, 0xcf, 0x67, 0x87, 0xad, + 0x03, 0xb3, 0x4a, 0xea, 0xa2, 0xb2, 0x21, 0x66, 0xdd, 0x0a, 0xd7, 0x49, 0xad, 0x15, 0x60, 0x2a, + 0x2a, 0xcd, 0xda, 0x0d, 0x4c, 0x0f, 0xa6, 0xc5, 0x5f, 0xa3, 0x8f, 0xfe, 0x0d, 0x00, 0x00, 0xff, + 0xff, 0xfa, 0x61, 0x5c, 0x23, 0xa9, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -735,6 +1119,15 @@ type QueryClient interface { Denoms(ctx context.Context, in *QueryDenomsRequest, opts ...grpc.CallOption) (*QueryDenomsResponse, error) // NFT queries the NFT for the given denom and token ID NFT(ctx context.Context, in *QueryNFTRequest, opts ...grpc.CallOption) (*QueryNFTResponse, error) + // Royalty + // FeeDenominator queries the FeeDenominator + FeeDenominator(ctx context.Context, in *MsgFeeDenominatorRequest, opts ...grpc.CallOption) (*MsgFeeDenominatorResponse, error) + // RoyaltyInfo queries the RoyaltyInfo for the class of token + RoyaltyInfo(ctx context.Context, in *MsgRoyaltyInfoRequest, opts ...grpc.CallOption) (*MsgRoyaltyInfoResponse, error) + // DefaultRoyaltyInfo queries the default royalty info for the class + DefaultRoyaltyInfo(ctx context.Context, in *MsgDefaultRoyaltyInfoRequest, opts ...grpc.CallOption) (*MsgDefaultRoyaltyInfoResponse, error) + // TokenRoyaltyInfo queries the royalty info for the class of a token + TokenRoyaltyInfo(ctx context.Context, in *MsgTokenRoyaltyInfoRequest, opts ...grpc.CallOption) (*MsgTokenRoyaltyInfoResponse, error) } type queryClient struct { @@ -799,6 +1192,42 @@ func (c *queryClient) NFT(ctx context.Context, in *QueryNFTRequest, opts ...grpc return out, nil } +func (c *queryClient) FeeDenominator(ctx context.Context, in *MsgFeeDenominatorRequest, opts ...grpc.CallOption) (*MsgFeeDenominatorResponse, error) { + out := new(MsgFeeDenominatorResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Query/FeeDenominator", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) RoyaltyInfo(ctx context.Context, in *MsgRoyaltyInfoRequest, opts ...grpc.CallOption) (*MsgRoyaltyInfoResponse, error) { + out := new(MsgRoyaltyInfoResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Query/RoyaltyInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) DefaultRoyaltyInfo(ctx context.Context, in *MsgDefaultRoyaltyInfoRequest, opts ...grpc.CallOption) (*MsgDefaultRoyaltyInfoResponse, error) { + out := new(MsgDefaultRoyaltyInfoResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Query/DefaultRoyaltyInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenRoyaltyInfo(ctx context.Context, in *MsgTokenRoyaltyInfoRequest, opts ...grpc.CallOption) (*MsgTokenRoyaltyInfoResponse, error) { + out := new(MsgTokenRoyaltyInfoResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Query/TokenRoyaltyInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Supply queries the total supply of a given denom or owner @@ -813,6 +1242,15 @@ type QueryServer interface { Denoms(context.Context, *QueryDenomsRequest) (*QueryDenomsResponse, error) // NFT queries the NFT for the given denom and token ID NFT(context.Context, *QueryNFTRequest) (*QueryNFTResponse, error) + // Royalty + // FeeDenominator queries the FeeDenominator + FeeDenominator(context.Context, *MsgFeeDenominatorRequest) (*MsgFeeDenominatorResponse, error) + // RoyaltyInfo queries the RoyaltyInfo for the class of token + RoyaltyInfo(context.Context, *MsgRoyaltyInfoRequest) (*MsgRoyaltyInfoResponse, error) + // DefaultRoyaltyInfo queries the default royalty info for the class + DefaultRoyaltyInfo(context.Context, *MsgDefaultRoyaltyInfoRequest) (*MsgDefaultRoyaltyInfoResponse, error) + // TokenRoyaltyInfo queries the royalty info for the class of a token + TokenRoyaltyInfo(context.Context, *MsgTokenRoyaltyInfoRequest) (*MsgTokenRoyaltyInfoResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -837,6 +1275,18 @@ func (*UnimplementedQueryServer) Denoms(ctx context.Context, req *QueryDenomsReq func (*UnimplementedQueryServer) NFT(ctx context.Context, req *QueryNFTRequest) (*QueryNFTResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NFT not implemented") } +func (*UnimplementedQueryServer) FeeDenominator(ctx context.Context, req *MsgFeeDenominatorRequest) (*MsgFeeDenominatorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method FeeDenominator not implemented") +} +func (*UnimplementedQueryServer) RoyaltyInfo(ctx context.Context, req *MsgRoyaltyInfoRequest) (*MsgRoyaltyInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RoyaltyInfo not implemented") +} +func (*UnimplementedQueryServer) DefaultRoyaltyInfo(ctx context.Context, req *MsgDefaultRoyaltyInfoRequest) (*MsgDefaultRoyaltyInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DefaultRoyaltyInfo not implemented") +} +func (*UnimplementedQueryServer) TokenRoyaltyInfo(ctx context.Context, req *MsgTokenRoyaltyInfoRequest) (*MsgTokenRoyaltyInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenRoyaltyInfo not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -950,24 +1400,96 @@ func _Query_NFT_Handler(srv interface{}, ctx context.Context, dec func(interface return interceptor(ctx, in, info, handler) } -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "irismod.nft.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Supply", - Handler: _Query_Supply_Handler, - }, - { - MethodName: "NFTsOfOwner", - Handler: _Query_NFTsOfOwner_Handler, - }, - { - MethodName: "Collection", - Handler: _Query_Collection_Handler, - }, - { - MethodName: "Denom", +func _Query_FeeDenominator_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgFeeDenominatorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).FeeDenominator(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Query/FeeDenominator", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).FeeDenominator(ctx, req.(*MsgFeeDenominatorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_RoyaltyInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRoyaltyInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).RoyaltyInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Query/RoyaltyInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).RoyaltyInfo(ctx, req.(*MsgRoyaltyInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_DefaultRoyaltyInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDefaultRoyaltyInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).DefaultRoyaltyInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Query/DefaultRoyaltyInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).DefaultRoyaltyInfo(ctx, req.(*MsgDefaultRoyaltyInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenRoyaltyInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTokenRoyaltyInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenRoyaltyInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Query/TokenRoyaltyInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenRoyaltyInfo(ctx, req.(*MsgTokenRoyaltyInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "irismod.nft.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Supply", + Handler: _Query_Supply_Handler, + }, + { + MethodName: "NFTsOfOwner", + Handler: _Query_NFTsOfOwner_Handler, + }, + { + MethodName: "Collection", + Handler: _Query_Collection_Handler, + }, + { + MethodName: "Denom", Handler: _Query_Denom_Handler, }, { @@ -978,6 +1500,22 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "NFT", Handler: _Query_NFT_Handler, }, + { + MethodName: "FeeDenominator", + Handler: _Query_FeeDenominator_Handler, + }, + { + MethodName: "RoyaltyInfo", + Handler: _Query_RoyaltyInfo_Handler, + }, + { + MethodName: "DefaultRoyaltyInfo", + Handler: _Query_DefaultRoyaltyInfo_Handler, + }, + { + MethodName: "TokenRoyaltyInfo", + Handler: _Query_TokenRoyaltyInfo_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "nft/query.proto", @@ -1454,135 +1992,425 @@ func (m *QueryNFTResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *MsgFeeDenominatorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *QuerySupplyRequest) Size() (n int) { - if m == nil { - return 0 - } + +func (m *MsgFeeDenominatorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgFeeDenominatorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.DenomId) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.Owner) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n + return len(dAtA) - i, nil } -func (m *QuerySupplyResponse) Size() (n int) { - if m == nil { - return 0 +func (m *MsgFeeDenominatorResponse) 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 *MsgFeeDenominatorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgFeeDenominatorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Amount != 0 { - n += 1 + sovQuery(uint64(m.Amount)) + { + size := m.RoyaltyFraction.Size() + i -= size + if _, err := m.RoyaltyFraction.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) } - return n + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil } -func (m *QueryNFTsOfOwnerRequest) Size() (n int) { - if m == nil { - return 0 +func (m *MsgRoyaltyInfoRequest) 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 *MsgRoyaltyInfoRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRoyaltyInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.DenomId) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + { + size := m.SalePrice.Size() + i -= size + if _, err := m.SalePrice.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) } - l = len(m.Owner) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + i-- + dAtA[i] = 0x1a + if len(m.TokenId) > 0 { + i -= len(m.TokenId) + copy(dAtA[i:], m.TokenId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.TokenId))) + i-- + dAtA[i] = 0x12 } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryNFTsOfOwnerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Owner != nil { - l = m.Owner.Size() - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) +func (m *MsgRoyaltyInfoResponse) 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 n + return dAtA[:n], nil } -func (m *QueryCollectionRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DenomId) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n +func (m *MsgRoyaltyInfoResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryCollectionResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *MsgRoyaltyInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Collection != nil { - l = m.Collection.Size() - n += 1 + l + sovQuery(uint64(l)) - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + { + size := m.RoyaltyAmount.Size() + i -= size + if _, err := m.RoyaltyAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryDenomRequest) Size() (n int) { - if m == nil { - return 0 +func (m *MsgDefaultRoyaltyInfoRequest) 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 *MsgDefaultRoyaltyInfoRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDefaultRoyaltyInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.DenomId) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryDenomResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *MsgDefaultRoyaltyInfoResponse) 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 *MsgDefaultRoyaltyInfoResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDefaultRoyaltyInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.RoyaltyFraction.Size() + i -= size + if _, err := m.RoyaltyFraction.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgTokenRoyaltyInfoRequest) 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 *MsgTokenRoyaltyInfoRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTokenRoyaltyInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TokenId) > 0 { + i -= len(m.TokenId) + copy(dAtA[i:], m.TokenId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.TokenId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgTokenRoyaltyInfoResponse) 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 *MsgTokenRoyaltyInfoResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTokenRoyaltyInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.RoyaltyFraction.Size() + i -= size + if _, err := m.RoyaltyFraction.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QuerySupplyRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DenomId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QuerySupplyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Amount != 0 { + n += 1 + sovQuery(uint64(m.Amount)) + } + return n +} + +func (m *QueryNFTsOfOwnerRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DenomId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryNFTsOfOwnerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Owner != nil { + l = m.Owner.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 *QueryCollectionRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DenomId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryCollectionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Collection != nil { + l = m.Collection.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 *QueryDenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DenomId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryDenomResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Denom != nil { @@ -1654,44 +2482,158 @@ func (m *QueryNFTResponse) Size() (n int) { return n } -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func (m *MsgFeeDenominatorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n } -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + +func (m *MsgFeeDenominatorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.RoyaltyFraction.Size() + n += 1 + l + sovQuery(uint64(l)) + return n } -func (m *QuerySupplyRequest) 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: QuerySupplyRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QuerySupplyRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + +func (m *MsgRoyaltyInfoRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.TokenId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = m.SalePrice.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *MsgRoyaltyInfoResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = m.RoyaltyAmount.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *MsgDefaultRoyaltyInfoRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *MsgDefaultRoyaltyInfoResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = m.RoyaltyFraction.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *MsgTokenRoyaltyInfoRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.TokenId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *MsgTokenRoyaltyInfoResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = m.RoyaltyFraction.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 *QuerySupplyRequest) 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: QuerySupplyRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QuerySupplyRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1735,23 +2677,772 @@ func (m *QuerySupplyRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + 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.Owner = 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 *QuerySupplyResponse) 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: QuerySupplyResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QuerySupplyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + m.Amount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Amount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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 *QueryNFTsOfOwnerRequest) 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: QueryNFTsOfOwnerRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNFTsOfOwnerRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", 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.DenomId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Owner", 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.Owner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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.PageRequest{} + } + if err := m.Pagination.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 *QueryNFTsOfOwnerResponse) 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: QueryNFTsOfOwnerResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryNFTsOfOwnerResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Owner", 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.Owner == nil { + m.Owner = &Owner{} + } + if err := m.Owner.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 + 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 *QueryCollectionRequest) 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: QueryCollectionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCollectionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", 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.DenomId = string(dAtA[iNdEx:postIndex]) + 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.PageRequest{} + } + if err := m.Pagination.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 *QueryCollectionResponse) 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: QueryCollectionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCollectionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Collection", 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.Collection == nil { + m.Collection = &Collection{} + } + if err := m.Collection.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 + 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 *QueryDenomRequest) 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: QueryDenomRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", 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.DenomId = 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 *QueryDenomResponse) 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: QueryDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDenomResponse: 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 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 } } - 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.Owner = string(dAtA[iNdEx:postIndex]) + if m.Denom == nil { + m.Denom = &Denom{} + } + if err := m.Denom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -1774,7 +3465,7 @@ func (m *QuerySupplyRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QuerySupplyResponse) Unmarshal(dAtA []byte) error { +func (m *QueryDenomsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1797,17 +3488,17 @@ func (m *QuerySupplyResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QuerySupplyResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDenomsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QuerySupplyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDenomsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } - m.Amount = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -1817,11 +3508,28 @@ func (m *QuerySupplyResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Amount |= uint64(b&0x7F) << shift + 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.PageRequest{} + } + if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1843,7 +3551,7 @@ func (m *QuerySupplyResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNFTsOfOwnerRequest) Unmarshal(dAtA []byte) error { +func (m *QueryDenomsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1866,17 +3574,17 @@ func (m *QueryNFTsOfOwnerRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNFTsOfOwnerRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryDenomsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNFTsOfOwnerRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryDenomsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denoms", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -1886,57 +3594,27 @@ func (m *QueryNFTsOfOwnerRequest) 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.DenomId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Owner", 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.Denoms = append(m.Denoms, Denom{}) + if err := m.Denoms[len(m.Denoms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Owner = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) } @@ -1966,7 +3644,7 @@ func (m *QueryNFTsOfOwnerRequest) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Pagination == nil { - m.Pagination = &query.PageRequest{} + m.Pagination = &query.PageResponse{} } if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1993,7 +3671,7 @@ func (m *QueryNFTsOfOwnerRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNFTsOfOwnerResponse) Unmarshal(dAtA []byte) error { +func (m *QueryNFTRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2016,17 +3694,17 @@ func (m *QueryNFTsOfOwnerResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNFTsOfOwnerResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryNFTRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNFTsOfOwnerResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryNFTRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2036,33 +3714,29 @@ func (m *QueryNFTsOfOwnerResponse) 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 m.Owner == nil { - m.Owner = &Owner{} - } - if err := m.Owner.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2072,27 +3746,23 @@ func (m *QueryNFTsOfOwnerResponse) 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 m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.TokenId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2115,7 +3785,7 @@ func (m *QueryNFTsOfOwnerResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryCollectionRequest) Unmarshal(dAtA []byte) error { +func (m *QueryNFTResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2138,17 +3808,17 @@ func (m *QueryCollectionRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCollectionRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryNFTResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCollectionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NFT", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2158,29 +3828,133 @@ func (m *QueryCollectionRequest) 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.DenomId = string(dAtA[iNdEx:postIndex]) + if m.NFT == nil { + m.NFT = &BaseNFT{} + } + if err := m.NFT.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + 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 *MsgFeeDenominatorRequest) 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: MsgFeeDenominatorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgFeeDenominatorRequest: 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 *MsgFeeDenominatorResponse) 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: MsgFeeDenominatorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgFeeDenominatorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyFraction", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2190,25 +3964,23 @@ func (m *QueryCollectionRequest) 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 m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RoyaltyFraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2233,7 +4005,7 @@ func (m *QueryCollectionRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryCollectionResponse) Unmarshal(dAtA []byte) error { +func (m *MsgRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2256,17 +4028,17 @@ func (m *QueryCollectionResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryCollectionResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRoyaltyInfoRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryCollectionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRoyaltyInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Collection", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2276,33 +4048,29 @@ func (m *QueryCollectionResponse) 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 m.Collection == nil { - m.Collection = &Collection{} - } - if err := m.Collection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2312,25 +4080,55 @@ func (m *QueryCollectionResponse) 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 m.Pagination == nil { - m.Pagination = &query.PageResponse{} + m.TokenId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SalePrice", wireType) } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + 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 + } + if err := m.SalePrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2355,7 +4153,7 @@ func (m *QueryCollectionResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomRequest) Unmarshal(dAtA []byte) error { +func (m *MsgRoyaltyInfoResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2378,15 +4176,15 @@ func (m *QueryDenomRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomRequest: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRoyaltyInfoResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRoyaltyInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2414,63 +4212,13 @@ func (m *QueryDenomRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DenomId = string(dAtA[iNdEx:postIndex]) + m.Receiver = 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 *QueryDenomResponse) 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: QueryDenomResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyAmount", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2480,25 +4228,23 @@ func (m *QueryDenomResponse) 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 m.Denom == nil { - m.Denom = &Denom{} - } - if err := m.Denom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RoyaltyAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2523,7 +4269,7 @@ func (m *QueryDenomResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomsRequest) Unmarshal(dAtA []byte) error { +func (m *MsgDefaultRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2546,17 +4292,17 @@ func (m *QueryDenomsRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomsRequest: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDefaultRoyaltyInfoRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDefaultRoyaltyInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2566,27 +4312,23 @@ func (m *QueryDenomsRequest) 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 m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2609,7 +4351,7 @@ func (m *QueryDenomsRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDenomsResponse) Unmarshal(dAtA []byte) error { +func (m *MsgDefaultRoyaltyInfoResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2632,17 +4374,17 @@ func (m *QueryDenomsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDenomsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDefaultRoyaltyInfoResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDenomsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDefaultRoyaltyInfoResponse: 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 Receiver", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2652,31 +4394,29 @@ func (m *QueryDenomsResponse) 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 } - m.Denoms = append(m.Denoms, Denom{}) - if err := m.Denoms[len(m.Denoms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Receiver = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyFraction", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2686,25 +4426,23 @@ func (m *QueryDenomsResponse) 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 m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RoyaltyFraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2729,7 +4467,7 @@ func (m *QueryDenomsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNFTRequest) Unmarshal(dAtA []byte) error { +func (m *MsgTokenRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2752,15 +4490,15 @@ func (m *QueryNFTRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNFTRequest: wiretype end group for non-group") + return fmt.Errorf("proto: MsgTokenRoyaltyInfoRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNFTRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgTokenRoyaltyInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2788,7 +4526,7 @@ func (m *QueryNFTRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DenomId = string(dAtA[iNdEx:postIndex]) + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -2843,7 +4581,7 @@ func (m *QueryNFTRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryNFTResponse) Unmarshal(dAtA []byte) error { +func (m *MsgTokenRoyaltyInfoResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2866,17 +4604,17 @@ func (m *QueryNFTResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryNFTResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgTokenRoyaltyInfoResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgTokenRoyaltyInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NFT", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -2886,25 +4624,55 @@ func (m *QueryNFTResponse) 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 m.NFT == nil { - m.NFT = &BaseNFT{} + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyFraction", wireType) } - if err := m.NFT.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + 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 + } + if err := m.RoyaltyFraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/modules/nft/types/royalty.pb.go b/modules/nft/types/royalty.pb.go new file mode 100644 index 00000000..a6350f52 --- /dev/null +++ b/modules/nft/types/royalty.pb.go @@ -0,0 +1,392 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: nft/royalty.proto + +package types + +import ( + cosmossdk_io_math "cosmossdk.io/math" + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + _ "github.com/regen-network/cosmos-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 RoyaltyInfo struct { + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + RoyaltyFraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=royalty_fraction,json=royaltyFraction,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_fraction"` +} + +func (m *RoyaltyInfo) Reset() { *m = RoyaltyInfo{} } +func (m *RoyaltyInfo) String() string { return proto.CompactTextString(m) } +func (*RoyaltyInfo) ProtoMessage() {} +func (*RoyaltyInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_80c34aacedb01c5b, []int{0} +} +func (m *RoyaltyInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoyaltyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoyaltyInfo.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 *RoyaltyInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoyaltyInfo.Merge(m, src) +} +func (m *RoyaltyInfo) XXX_Size() int { + return m.Size() +} +func (m *RoyaltyInfo) XXX_DiscardUnknown() { + xxx_messageInfo_RoyaltyInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_RoyaltyInfo proto.InternalMessageInfo + +func init() { + proto.RegisterType((*RoyaltyInfo)(nil), "irismod.nft.RoyaltyInfo") +} + +func init() { proto.RegisterFile("nft/royalty.proto", fileDescriptor_80c34aacedb01c5b) } + +var fileDescriptor_80c34aacedb01c5b = []byte{ + // 270 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x50, 0xbb, 0x4e, 0xc3, 0x40, + 0x10, 0xf4, 0x21, 0x04, 0xc2, 0x29, 0x00, 0x0b, 0x21, 0x93, 0xe2, 0x8c, 0xa8, 0x28, 0x90, 0x57, + 0x11, 0x1d, 0x65, 0x0a, 0xa4, 0x50, 0x5a, 0xa2, 0xa1, 0x89, 0xce, 0xf6, 0xd9, 0x39, 0x11, 0xdf, + 0x46, 0xbe, 0x0d, 0xc2, 0x7f, 0xc1, 0x27, 0xf0, 0x39, 0x2e, 0x53, 0x22, 0x8a, 0x08, 0xec, 0x86, + 0xcf, 0x40, 0xce, 0x5d, 0xba, 0x9d, 0x9d, 0x99, 0x7d, 0x8c, 0x7f, 0xae, 0x0b, 0x82, 0x1a, 0x1b, + 0xb1, 0xa4, 0x26, 0x5e, 0xd5, 0x48, 0x18, 0x8c, 0x54, 0xad, 0x4c, 0x85, 0x79, 0xac, 0x0b, 0x1a, + 0x5f, 0x94, 0x58, 0xe2, 0xae, 0x0f, 0x43, 0x65, 0x25, 0x63, 0x9e, 0xa1, 0xa9, 0xd0, 0x40, 0x2a, + 0x8c, 0x84, 0xb7, 0x49, 0x2a, 0x49, 0x4c, 0x20, 0x43, 0xa5, 0x1d, 0x7f, 0x65, 0xf9, 0xb9, 0x35, + 0x5a, 0x60, 0xa9, 0x9b, 0x77, 0x7f, 0x94, 0xd8, 0x75, 0x33, 0x5d, 0x60, 0x10, 0xfa, 0xc7, 0x22, + 0xcf, 0x6b, 0x69, 0x4c, 0xc8, 0xae, 0xd9, 0xed, 0x49, 0xb2, 0x87, 0xc1, 0xcc, 0x3f, 0x73, 0x77, + 0xcd, 0x8b, 0x5a, 0x64, 0xa4, 0x50, 0x87, 0x07, 0x83, 0x64, 0xca, 0xdb, 0x6d, 0xe4, 0x7d, 0x6f, + 0xa3, 0x4b, 0x3b, 0xd8, 0xe4, 0xaf, 0xb1, 0x42, 0xa8, 0x04, 0x2d, 0xe2, 0x67, 0xa5, 0x29, 0x39, + 0x75, 0xbe, 0x47, 0x67, 0x7b, 0x38, 0xfc, 0xfb, 0x8c, 0xd8, 0xf4, 0xa9, 0xfd, 0xe5, 0x5e, 0xdb, + 0x71, 0xb6, 0xe9, 0x38, 0xfb, 0xe9, 0x38, 0xfb, 0xe8, 0xb9, 0xb7, 0xe9, 0xb9, 0xf7, 0xd5, 0x73, + 0xef, 0xe5, 0xae, 0x54, 0xb4, 0x58, 0xa7, 0x71, 0x86, 0x15, 0x0c, 0x01, 0x68, 0x49, 0xe0, 0x82, + 0x80, 0x0a, 0xf3, 0xf5, 0x52, 0x1a, 0x18, 0xb2, 0xa2, 0x66, 0x25, 0x4d, 0x7a, 0xb4, 0x7b, 0xe6, + 0xfe, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x56, 0x4b, 0xb9, 0x3f, 0x01, 0x00, 0x00, +} + +func (this *RoyaltyInfo) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*RoyaltyInfo) + if !ok { + that2, ok := that.(RoyaltyInfo) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Address != that1.Address { + return false + } + if !this.RoyaltyFraction.Equal(that1.RoyaltyFraction) { + return false + } + return true +} +func (m *RoyaltyInfo) 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 *RoyaltyInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RoyaltyInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.RoyaltyFraction.Size() + i -= size + if _, err := m.RoyaltyFraction.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRoyalty(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintRoyalty(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintRoyalty(dAtA []byte, offset int, v uint64) int { + offset -= sovRoyalty(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *RoyaltyInfo) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovRoyalty(uint64(l)) + } + l = m.RoyaltyFraction.Size() + n += 1 + l + sovRoyalty(uint64(l)) + return n +} + +func sovRoyalty(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozRoyalty(x uint64) (n int) { + return sovRoyalty(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *RoyaltyInfo) 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 ErrIntOverflowRoyalty + } + 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: RoyaltyInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoyaltyInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRoyalty + } + 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 ErrInvalidLengthRoyalty + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRoyalty + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyFraction", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRoyalty + } + 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 ErrInvalidLengthRoyalty + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRoyalty + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoyaltyFraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRoyalty(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRoyalty + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipRoyalty(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, ErrIntOverflowRoyalty + } + 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, ErrIntOverflowRoyalty + } + 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, ErrIntOverflowRoyalty + } + 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, ErrInvalidLengthRoyalty + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupRoyalty + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthRoyalty + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthRoyalty = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowRoyalty = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupRoyalty = fmt.Errorf("proto: unexpected end of group") +) diff --git a/modules/nft/types/tx.pb.go b/modules/nft/types/tx.pb.go index 01772340..8ea9628d 100644 --- a/modules/nft/types/tx.pb.go +++ b/modules/nft/types/tx.pb.go @@ -6,16 +6,15 @@ package types import ( context "context" fmt "fmt" - io "io" - math "math" - math_bits "math/bits" - _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -42,6 +41,7 @@ type MsgIssueDenom struct { Uri string `protobuf:"bytes,9,opt,name=uri,proto3" json:"uri,omitempty"` UriHash string `protobuf:"bytes,10,opt,name=uri_hash,json=uriHash,proto3" json:"uri_hash,omitempty"` Data string `protobuf:"bytes,11,opt,name=data,proto3" json:"data,omitempty"` + RoyaltyEnabled bool `protobuf:"varint,12,opt,name=royalty_enabled,json=royaltyEnabled,proto3" json:"royalty_enabled,omitempty"` } func (m *MsgIssueDenom) Reset() { *m = MsgIssueDenom{} } @@ -77,7 +77,7 @@ func (m *MsgIssueDenom) XXX_DiscardUnknown() { var xxx_messageInfo_MsgIssueDenom proto.InternalMessageInfo -// MsgIssueDenomResponse defines the Msg/SaveDenom response type. +// MsgIssueDenomResponse defines the Msg/IssueDenom response type. type MsgIssueDenomResponse struct { } @@ -240,7 +240,7 @@ func (m *MsgEditNFT) XXX_DiscardUnknown() { var xxx_messageInfo_MsgEditNFT proto.InternalMessageInfo -// MsgEditNFTResponse defines the Msg/UpdateNFT response type. +// MsgEditNFTResponse defines the Msg/EditNFT response type. type MsgEditNFTResponse struct { } @@ -322,7 +322,7 @@ func (m *MsgMintNFT) XXX_DiscardUnknown() { var xxx_messageInfo_MsgMintNFT proto.InternalMessageInfo -// MsgMintNFTResponse defines the Msg/SaveNFT response type. +// MsgMintNFTResponse defines the Msg/MintNFT response type. type MsgMintNFTResponse struct { } @@ -399,7 +399,7 @@ func (m *MsgBurnNFT) XXX_DiscardUnknown() { var xxx_messageInfo_MsgBurnNFT proto.InternalMessageInfo -// MsgBurnNFTResponse defines the Msg/RemoveNFT response type. +// MsgBurnNFTResponse defines the Msg/BurnNFT response type. type MsgBurnNFTResponse struct { } @@ -514,6 +514,313 @@ func (m *MsgTransferDenomResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgTransferDenomResponse proto.InternalMessageInfo +// Royalty Request and Response +// MsgSetDefaultRoyalty defines an SDK message for set default royalty for class. +type MsgSetDefaultRoyalty struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"receiver,omitempty"` + FeeNumerator string `protobuf:"bytes,3,opt,name=fee_numerator,json=feeNumerator,proto3" json:"fee_numerator,omitempty"` + Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (m *MsgSetDefaultRoyalty) Reset() { *m = MsgSetDefaultRoyalty{} } +func (m *MsgSetDefaultRoyalty) String() string { return proto.CompactTextString(m) } +func (*MsgSetDefaultRoyalty) ProtoMessage() {} +func (*MsgSetDefaultRoyalty) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{12} +} +func (m *MsgSetDefaultRoyalty) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetDefaultRoyalty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetDefaultRoyalty.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 *MsgSetDefaultRoyalty) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetDefaultRoyalty.Merge(m, src) +} +func (m *MsgSetDefaultRoyalty) XXX_Size() int { + return m.Size() +} +func (m *MsgSetDefaultRoyalty) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetDefaultRoyalty.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetDefaultRoyalty proto.InternalMessageInfo + +type MsgSetDefaultRoyaltyResponse struct { +} + +func (m *MsgSetDefaultRoyaltyResponse) Reset() { *m = MsgSetDefaultRoyaltyResponse{} } +func (m *MsgSetDefaultRoyaltyResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetDefaultRoyaltyResponse) ProtoMessage() {} +func (*MsgSetDefaultRoyaltyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{13} +} +func (m *MsgSetDefaultRoyaltyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetDefaultRoyaltyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetDefaultRoyaltyResponse.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 *MsgSetDefaultRoyaltyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetDefaultRoyaltyResponse.Merge(m, src) +} +func (m *MsgSetDefaultRoyaltyResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetDefaultRoyaltyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetDefaultRoyaltyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetDefaultRoyaltyResponse proto.InternalMessageInfo + +// MsgSetTokenRoyalty defines an SDK message for set royalty for class of token. +type MsgSetTokenRoyalty struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` + FeeNumerator string `protobuf:"bytes,4,opt,name=fee_numerator,json=feeNumerator,proto3" json:"fee_numerator,omitempty"` + Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (m *MsgSetTokenRoyalty) Reset() { *m = MsgSetTokenRoyalty{} } +func (m *MsgSetTokenRoyalty) String() string { return proto.CompactTextString(m) } +func (*MsgSetTokenRoyalty) ProtoMessage() {} +func (*MsgSetTokenRoyalty) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{14} +} +func (m *MsgSetTokenRoyalty) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetTokenRoyalty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetTokenRoyalty.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 *MsgSetTokenRoyalty) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetTokenRoyalty.Merge(m, src) +} +func (m *MsgSetTokenRoyalty) XXX_Size() int { + return m.Size() +} +func (m *MsgSetTokenRoyalty) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetTokenRoyalty.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetTokenRoyalty proto.InternalMessageInfo + +type MsgSetTokenRoyaltyResponse struct { +} + +func (m *MsgSetTokenRoyaltyResponse) Reset() { *m = MsgSetTokenRoyaltyResponse{} } +func (m *MsgSetTokenRoyaltyResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetTokenRoyaltyResponse) ProtoMessage() {} +func (*MsgSetTokenRoyaltyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{15} +} +func (m *MsgSetTokenRoyaltyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetTokenRoyaltyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetTokenRoyaltyResponse.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 *MsgSetTokenRoyaltyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetTokenRoyaltyResponse.Merge(m, src) +} +func (m *MsgSetTokenRoyaltyResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetTokenRoyaltyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetTokenRoyaltyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetTokenRoyaltyResponse proto.InternalMessageInfo + +// MsgResetTokenRoyalty defines an SDK message for reset royalty for class of token. +type MsgResetTokenRoyalty struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + Sender string `protobuf:"bytes,3,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (m *MsgResetTokenRoyalty) Reset() { *m = MsgResetTokenRoyalty{} } +func (m *MsgResetTokenRoyalty) String() string { return proto.CompactTextString(m) } +func (*MsgResetTokenRoyalty) ProtoMessage() {} +func (*MsgResetTokenRoyalty) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{16} +} +func (m *MsgResetTokenRoyalty) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgResetTokenRoyalty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgResetTokenRoyalty.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 *MsgResetTokenRoyalty) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgResetTokenRoyalty.Merge(m, src) +} +func (m *MsgResetTokenRoyalty) XXX_Size() int { + return m.Size() +} +func (m *MsgResetTokenRoyalty) XXX_DiscardUnknown() { + xxx_messageInfo_MsgResetTokenRoyalty.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgResetTokenRoyalty proto.InternalMessageInfo + +type MsgResetTokenRoyaltyResponse struct { +} + +func (m *MsgResetTokenRoyaltyResponse) Reset() { *m = MsgResetTokenRoyaltyResponse{} } +func (m *MsgResetTokenRoyaltyResponse) String() string { return proto.CompactTextString(m) } +func (*MsgResetTokenRoyaltyResponse) ProtoMessage() {} +func (*MsgResetTokenRoyaltyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{17} +} +func (m *MsgResetTokenRoyaltyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgResetTokenRoyaltyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgResetTokenRoyaltyResponse.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 *MsgResetTokenRoyaltyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgResetTokenRoyaltyResponse.Merge(m, src) +} +func (m *MsgResetTokenRoyaltyResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgResetTokenRoyaltyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgResetTokenRoyaltyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgResetTokenRoyaltyResponse proto.InternalMessageInfo + +// MsgDeleteDefaultRoyalty defines an SDK message for delete royalty for class. +type MsgDeleteDefaultRoyalty struct { + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + Sender string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (m *MsgDeleteDefaultRoyalty) Reset() { *m = MsgDeleteDefaultRoyalty{} } +func (m *MsgDeleteDefaultRoyalty) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteDefaultRoyalty) ProtoMessage() {} +func (*MsgDeleteDefaultRoyalty) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{18} +} +func (m *MsgDeleteDefaultRoyalty) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteDefaultRoyalty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteDefaultRoyalty.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 *MsgDeleteDefaultRoyalty) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteDefaultRoyalty.Merge(m, src) +} +func (m *MsgDeleteDefaultRoyalty) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteDefaultRoyalty) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteDefaultRoyalty.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteDefaultRoyalty proto.InternalMessageInfo + +type MsgDeleteDefaultRoyaltyResponse struct { +} + +func (m *MsgDeleteDefaultRoyaltyResponse) Reset() { *m = MsgDeleteDefaultRoyaltyResponse{} } +func (m *MsgDeleteDefaultRoyaltyResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteDefaultRoyaltyResponse) ProtoMessage() {} +func (*MsgDeleteDefaultRoyaltyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_09d30374d974e015, []int{19} +} +func (m *MsgDeleteDefaultRoyaltyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteDefaultRoyaltyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteDefaultRoyaltyResponse.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 *MsgDeleteDefaultRoyaltyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteDefaultRoyaltyResponse.Merge(m, src) +} +func (m *MsgDeleteDefaultRoyaltyResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteDefaultRoyaltyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteDefaultRoyaltyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteDefaultRoyaltyResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgIssueDenom)(nil), "irismod.nft.MsgIssueDenom") proto.RegisterType((*MsgIssueDenomResponse)(nil), "irismod.nft.MsgIssueDenomResponse") @@ -527,53 +834,76 @@ func init() { proto.RegisterType((*MsgBurnNFTResponse)(nil), "irismod.nft.MsgBurnNFTResponse") proto.RegisterType((*MsgTransferDenom)(nil), "irismod.nft.MsgTransferDenom") proto.RegisterType((*MsgTransferDenomResponse)(nil), "irismod.nft.MsgTransferDenomResponse") + proto.RegisterType((*MsgSetDefaultRoyalty)(nil), "irismod.nft.MsgSetDefaultRoyalty") + proto.RegisterType((*MsgSetDefaultRoyaltyResponse)(nil), "irismod.nft.MsgSetDefaultRoyaltyResponse") + proto.RegisterType((*MsgSetTokenRoyalty)(nil), "irismod.nft.MsgSetTokenRoyalty") + proto.RegisterType((*MsgSetTokenRoyaltyResponse)(nil), "irismod.nft.MsgSetTokenRoyaltyResponse") + proto.RegisterType((*MsgResetTokenRoyalty)(nil), "irismod.nft.MsgResetTokenRoyalty") + proto.RegisterType((*MsgResetTokenRoyaltyResponse)(nil), "irismod.nft.MsgResetTokenRoyaltyResponse") + proto.RegisterType((*MsgDeleteDefaultRoyalty)(nil), "irismod.nft.MsgDeleteDefaultRoyalty") + proto.RegisterType((*MsgDeleteDefaultRoyaltyResponse)(nil), "irismod.nft.MsgDeleteDefaultRoyaltyResponse") } func init() { proto.RegisterFile("nft/tx.proto", fileDescriptor_09d30374d974e015) } var fileDescriptor_09d30374d974e015 = []byte{ - // 653 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x55, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0x8e, 0xe3, 0x36, 0x3f, 0x13, 0xfa, 0xc3, 0x52, 0xda, 0x6d, 0x00, 0xa7, 0x0a, 0x42, 0x54, - 0x02, 0x25, 0x12, 0xdc, 0x7a, 0x0c, 0x3f, 0xa2, 0x88, 0x80, 0x64, 0xb5, 0x17, 0x0e, 0x54, 0x6e, - 0x76, 0xeb, 0x2c, 0xaa, 0xd7, 0xd1, 0xee, 0x5a, 0xa2, 0x6f, 0xc1, 0x23, 0xf0, 0x1c, 0x3c, 0x41, - 0xc5, 0xa9, 0x47, 0x4e, 0x15, 0xa4, 0x12, 0x42, 0x1c, 0x79, 0x02, 0xe4, 0xb5, 0x9d, 0xac, 0x9d, - 0xa6, 0x27, 0x0e, 0x88, 0xdb, 0xee, 0xf7, 0x4d, 0x66, 0xe6, 0xfb, 0x66, 0x33, 0x86, 0x6b, 0xfc, - 0x48, 0x75, 0xd5, 0x87, 0xce, 0x48, 0x84, 0x2a, 0x44, 0x0d, 0x26, 0x98, 0x0c, 0x42, 0xd2, 0xe1, - 0x47, 0xaa, 0xb9, 0xe6, 0x87, 0x7e, 0xa8, 0xf1, 0x6e, 0x7c, 0x4a, 0x42, 0xda, 0x9f, 0xcb, 0xb0, - 0xd4, 0x97, 0xfe, 0xae, 0x94, 0x11, 0x7d, 0x4a, 0x79, 0x18, 0xa0, 0x65, 0x28, 0x33, 0x82, 0xad, - 0x2d, 0x6b, 0xbb, 0xee, 0x96, 0x19, 0x41, 0x08, 0x16, 0xb8, 0x17, 0x50, 0x5c, 0xd6, 0x88, 0x3e, - 0xa3, 0x75, 0xa8, 0xc8, 0xc1, 0x90, 0x06, 0x1e, 0xb6, 0x35, 0x9a, 0xde, 0x34, 0x4e, 0x39, 0xa1, - 0x02, 0x2f, 0xa4, 0xb8, 0xbe, 0x69, 0xfc, 0x24, 0x38, 0x0c, 0x8f, 0xf1, 0x62, 0x8a, 0xeb, 0x1b, - 0xba, 0x0f, 0x2b, 0x01, 0xe3, 0xea, 0x40, 0x50, 0xa9, 0x04, 0x1b, 0x28, 0x4a, 0x70, 0x65, 0xcb, - 0xda, 0xae, 0xb9, 0xcb, 0x31, 0xec, 0x4e, 0x50, 0xf4, 0x00, 0xae, 0x47, 0x23, 0xe2, 0x29, 0x6a, - 0x86, 0x56, 0x75, 0xe8, 0x6a, 0x42, 0x18, 0xc1, 0x5b, 0xd0, 0x20, 0x54, 0x0e, 0x04, 0x1b, 0x29, - 0x16, 0x72, 0x5c, 0xd3, 0x25, 0x4d, 0x08, 0xad, 0x82, 0x1d, 0x09, 0x86, 0xeb, 0x9a, 0x89, 0x8f, - 0x68, 0x13, 0x6a, 0x91, 0x60, 0x07, 0x43, 0x4f, 0x0e, 0x31, 0x68, 0xb8, 0x1a, 0x09, 0xf6, 0xc2, - 0x93, 0xc3, 0xd8, 0x00, 0xe2, 0x29, 0x0f, 0x37, 0x12, 0x03, 0xe2, 0xf3, 0xce, 0xc2, 0xcf, 0x4f, - 0x2d, 0xab, 0xbd, 0x01, 0x37, 0x73, 0xde, 0xb9, 0x54, 0x8e, 0x42, 0x2e, 0x69, 0xfb, 0x97, 0x05, - 0xcb, 0x7d, 0xe9, 0xef, 0x09, 0x8f, 0xcb, 0x23, 0x2a, 0x5e, 0x3f, 0xdf, 0x9b, 0xb1, 0xb5, 0x03, - 0x35, 0x12, 0xff, 0xe6, 0x80, 0x91, 0xc4, 0xda, 0xde, 0x8d, 0xdf, 0xe7, 0xad, 0x95, 0x13, 0x2f, - 0x38, 0xde, 0x69, 0x67, 0x4c, 0xdb, 0xad, 0xea, 0xe3, 0xee, 0x74, 0x0c, 0xb6, 0x31, 0x86, 0xcd, - 0x44, 0x86, 0xf6, 0xba, 0x57, 0x1d, 0x9f, 0xb7, 0xec, 0x7d, 0x77, 0x37, 0xd1, 0x93, 0x35, 0xbd, - 0x38, 0x6d, 0xda, 0x98, 0x4e, 0x25, 0x37, 0x9d, 0xdb, 0x50, 0x17, 0x74, 0xc0, 0x46, 0x8c, 0x72, - 0xa5, 0x4d, 0xad, 0xbb, 0x53, 0x20, 0xe7, 0x4c, 0x2d, 0xe7, 0x4c, 0xea, 0x02, 0x86, 0xf5, 0xbc, - 0xd6, 0x89, 0x0d, 0xa7, 0x16, 0x40, 0x5f, 0xfa, 0xcf, 0x08, 0x53, 0xff, 0xb8, 0x05, 0xa6, 0xc8, - 0xea, 0x65, 0x22, 0xd7, 0x00, 0x4d, 0x95, 0x4c, 0x04, 0xfe, 0x48, 0x04, 0xf6, 0x19, 0x57, 0xff, - 0xf7, 0x8c, 0x13, 0xf9, 0xa9, 0xce, 0x89, 0xfc, 0xf7, 0x5a, 0x7d, 0x2f, 0x12, 0xfc, 0x6f, 0xa8, - 0x9f, 0xb6, 0x6e, 0x9b, 0xad, 0xe7, 0x3a, 0x48, 0x6b, 0x4d, 0x3a, 0x78, 0x07, 0xab, 0xc6, 0xdb, - 0xbb, 0x7c, 0x81, 0x4d, 0xf3, 0x96, 0xe7, 0x5b, 0x62, 0x17, 0x2c, 0x49, 0xab, 0x36, 0x01, 0x17, - 0xf3, 0x67, 0xb5, 0x1f, 0x7d, 0xb1, 0xc1, 0xee, 0x4b, 0x1f, 0xbd, 0x02, 0x30, 0xd6, 0x67, 0xb3, - 0x63, 0x2c, 0xdd, 0x4e, 0x6e, 0x3d, 0x34, 0xdb, 0xf3, 0xb9, 0x2c, 0x2b, 0x7a, 0x02, 0xd5, 0xec, - 0x39, 0x6d, 0x14, 0xc3, 0x53, 0xa2, 0xd9, 0x9a, 0x43, 0x98, 0x49, 0xb2, 0x3f, 0xdd, 0x4c, 0x92, - 0x94, 0x98, 0x4d, 0x52, 0x78, 0xdc, 0xe8, 0x0d, 0x34, 0xcc, 0x05, 0x76, 0xab, 0x18, 0x6f, 0x90, - 0xcd, 0xbb, 0x57, 0x90, 0x66, 0x57, 0xd9, 0x5b, 0x99, 0xe9, 0x2a, 0x25, 0x66, 0xbb, 0x2a, 0x4c, - 0x1c, 0xed, 0xc3, 0x52, 0x7e, 0xdc, 0x77, 0xe6, 0x95, 0x4e, 0x3c, 0xbf, 0x77, 0x25, 0x9d, 0xa5, - 0xed, 0xbd, 0x3c, 0xfd, 0xee, 0x94, 0x4e, 0xc7, 0x8e, 0x75, 0x36, 0x76, 0xac, 0x6f, 0x63, 0xc7, - 0xfa, 0x78, 0xe1, 0x94, 0xce, 0x2e, 0x9c, 0xd2, 0xd7, 0x0b, 0xa7, 0xf4, 0xf6, 0xa1, 0xcf, 0xd4, - 0x30, 0x3a, 0xec, 0x0c, 0xc2, 0xa0, 0x1b, 0xa7, 0xe3, 0x54, 0x75, 0xd3, 0xb4, 0xdd, 0x20, 0x24, - 0xd1, 0x31, 0x95, 0x5d, 0xfd, 0xe5, 0x3d, 0x19, 0x51, 0x79, 0x58, 0xd1, 0x9f, 0xd6, 0xc7, 0x7f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x33, 0x0c, 0x0e, 0x8d, 0x07, 0x00, 0x00, + // 896 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0x4f, 0x6f, 0xe3, 0x44, + 0x14, 0xaf, 0x93, 0x36, 0x49, 0x5f, 0xff, 0xee, 0x50, 0xb6, 0xae, 0x29, 0x49, 0x37, 0x0b, 0xda, + 0x45, 0xac, 0x12, 0x09, 0x6e, 0x7b, 0x2c, 0x5d, 0x44, 0x11, 0x59, 0x24, 0x6f, 0xf7, 0x02, 0x12, + 0x91, 0x1b, 0xbf, 0x38, 0xb3, 0xc4, 0xe3, 0x68, 0x66, 0x8c, 0xc8, 0xb7, 0xd8, 0x8f, 0xc0, 0x95, + 0x6f, 0xd2, 0xe3, 0x1e, 0xe1, 0xb2, 0x82, 0x56, 0x42, 0x88, 0x23, 0x9f, 0x00, 0x79, 0xfc, 0x27, + 0x63, 0x3b, 0x6e, 0x7b, 0xe8, 0x01, 0xed, 0x6d, 0xe6, 0xf7, 0x9e, 0xdf, 0xfb, 0xfd, 0x7e, 0x33, + 0x7e, 0x36, 0x6c, 0xb2, 0xb1, 0xec, 0xcb, 0x9f, 0x7b, 0x33, 0x1e, 0xc8, 0x80, 0x6c, 0x50, 0x4e, + 0x85, 0x1f, 0xb8, 0x3d, 0x36, 0x96, 0xd6, 0x9e, 0x17, 0x78, 0x81, 0xc2, 0xfb, 0xd1, 0x2a, 0x4e, + 0xe9, 0x5e, 0xd5, 0x60, 0x6b, 0x20, 0xbc, 0x53, 0x21, 0x42, 0x3c, 0x41, 0x16, 0xf8, 0x64, 0x1b, + 0x6a, 0xd4, 0x35, 0x8d, 0x23, 0xe3, 0xf1, 0xba, 0x5d, 0xa3, 0x2e, 0x21, 0xb0, 0xca, 0x1c, 0x1f, + 0xcd, 0x9a, 0x42, 0xd4, 0x9a, 0xdc, 0x87, 0x86, 0x18, 0x4d, 0xd0, 0x77, 0xcc, 0xba, 0x42, 0x93, + 0x9d, 0xc2, 0x91, 0xb9, 0xc8, 0xcd, 0xd5, 0x04, 0x57, 0x3b, 0x85, 0xcf, 0xfd, 0xf3, 0x60, 0x6a, + 0xae, 0x25, 0xb8, 0xda, 0x91, 0x47, 0xb0, 0xe3, 0x53, 0x26, 0x87, 0x1c, 0x85, 0xe4, 0x74, 0x24, + 0xd1, 0x35, 0x1b, 0x47, 0xc6, 0xe3, 0x96, 0xbd, 0x1d, 0xc1, 0x76, 0x86, 0x92, 0x4f, 0xe1, 0x5e, + 0x38, 0x73, 0x1d, 0x89, 0x7a, 0x6a, 0x53, 0xa5, 0xee, 0xc6, 0x01, 0x2d, 0xf9, 0x08, 0x36, 0x5c, + 0x14, 0x23, 0x4e, 0x67, 0x92, 0x06, 0xcc, 0x6c, 0xa9, 0x96, 0x3a, 0x44, 0x76, 0xa1, 0x1e, 0x72, + 0x6a, 0xae, 0xab, 0x48, 0xb4, 0x24, 0x07, 0xd0, 0x0a, 0x39, 0x1d, 0x4e, 0x1c, 0x31, 0x31, 0x41, + 0xc1, 0xcd, 0x90, 0xd3, 0xaf, 0x1c, 0x31, 0x89, 0x0c, 0x70, 0x1d, 0xe9, 0x98, 0x1b, 0xb1, 0x01, + 0xd1, 0x3a, 0x22, 0xce, 0x83, 0xb9, 0x33, 0x95, 0xf3, 0x21, 0x32, 0xe7, 0x7c, 0x8a, 0xae, 0xb9, + 0x19, 0x13, 0x4f, 0xe0, 0x67, 0x31, 0xfa, 0x74, 0xf5, 0xef, 0x5f, 0x3a, 0x46, 0x77, 0x1f, 0xde, + 0xcf, 0x99, 0x6c, 0xa3, 0x98, 0x05, 0x4c, 0x60, 0xf7, 0x1f, 0x03, 0xb6, 0x07, 0xc2, 0x3b, 0xe3, + 0x0e, 0x13, 0x63, 0xe4, 0xcf, 0xbf, 0x3c, 0x2b, 0xf9, 0xdf, 0x83, 0x96, 0x1b, 0x3d, 0x33, 0xa4, + 0x6e, 0x7c, 0x06, 0xc7, 0xef, 0xfd, 0xfb, 0xb6, 0xb3, 0x33, 0x77, 0xfc, 0xe9, 0xd3, 0x6e, 0x1a, + 0xe9, 0xda, 0x4d, 0xb5, 0x3c, 0x5d, 0x9c, 0x57, 0x5d, 0x3b, 0xaf, 0x83, 0x58, 0xaf, 0x3a, 0x94, + 0xe3, 0xe6, 0xe5, 0xdb, 0x4e, 0xfd, 0xa5, 0x7d, 0x1a, 0x0b, 0x4f, 0xd5, 0xad, 0x69, 0xea, 0x16, + 0xc7, 0xd8, 0xc8, 0x1d, 0xe3, 0x21, 0xac, 0x73, 0x1c, 0xd1, 0x19, 0x45, 0x26, 0x95, 0xfb, 0xeb, + 0xf6, 0x02, 0xc8, 0x59, 0xd8, 0xca, 0x59, 0x98, 0xb8, 0x60, 0xc2, 0xfd, 0xbc, 0xd6, 0xcc, 0x86, + 0x0b, 0x03, 0x60, 0x20, 0xbc, 0x67, 0x2e, 0x95, 0xff, 0x73, 0x0b, 0x74, 0x91, 0xcd, 0x65, 0x22, + 0xf7, 0x80, 0x2c, 0x94, 0x64, 0x02, 0xff, 0x8a, 0x05, 0x0e, 0x28, 0x93, 0xef, 0xf6, 0x19, 0xc7, + 0xf2, 0x13, 0x9d, 0x99, 0xfc, 0x57, 0x4a, 0xfd, 0x71, 0xc8, 0xd9, 0x5d, 0xa8, 0x5f, 0x50, 0xaf, + 0xeb, 0xd4, 0x73, 0x0c, 0x92, 0x5e, 0x19, 0x83, 0x1f, 0x60, 0x57, 0xbb, 0x7b, 0xcb, 0x27, 0xdd, + 0xa2, 0x6e, 0xad, 0xda, 0x92, 0x7a, 0xc1, 0x92, 0xa4, 0xab, 0x05, 0x66, 0xb1, 0x7e, 0xd6, 0xfb, + 0xb5, 0x01, 0x7b, 0x03, 0xe1, 0xbd, 0x40, 0x79, 0x82, 0x63, 0x27, 0x9c, 0x4a, 0x3b, 0x9e, 0x11, + 0x91, 0x9b, 0xa3, 0xa9, 0x23, 0xc4, 0x30, 0xa3, 0xd1, 0x54, 0xfb, 0x53, 0x97, 0x58, 0xd0, 0xe2, + 0x38, 0x42, 0xfa, 0x53, 0xc6, 0x26, 0xdb, 0x93, 0x87, 0xb0, 0x35, 0x46, 0x1c, 0xb2, 0xd0, 0x47, + 0xee, 0xc8, 0x20, 0xb5, 0x61, 0x73, 0x8c, 0xf8, 0x3c, 0xc5, 0xaa, 0x46, 0x71, 0x42, 0xb7, 0x0d, + 0x87, 0xcb, 0x18, 0x65, 0x94, 0x7f, 0x35, 0x94, 0x8b, 0x2f, 0x50, 0x9e, 0x05, 0x3f, 0x22, 0xbb, + 0x05, 0xe1, 0x03, 0x68, 0xc9, 0x28, 0x35, 0x3b, 0x44, 0xbb, 0xa9, 0xf6, 0x05, 0x2d, 0xf5, 0x9b, + 0xb4, 0xac, 0x5e, 0xab, 0x65, 0x6d, 0x89, 0x96, 0x43, 0xb0, 0xca, 0x54, 0xb5, 0xab, 0x17, 0x79, + 0x6f, 0xa3, 0xb8, 0x13, 0x29, 0xd7, 0x5f, 0xbd, 0xd8, 0xd5, 0x52, 0xaf, 0x8c, 0x8b, 0x0d, 0xfb, + 0x03, 0xe1, 0x9d, 0xe0, 0x14, 0x25, 0xde, 0xfe, 0x2a, 0x54, 0x5c, 0xcb, 0xa4, 0xe7, 0x03, 0xe8, + 0x54, 0xd4, 0x4c, 0xdb, 0x7e, 0xf6, 0x7b, 0x03, 0xea, 0x03, 0xe1, 0x91, 0x6f, 0x00, 0xb4, 0xef, + 0xbc, 0xd5, 0xd3, 0xfe, 0x0e, 0x7a, 0xb9, 0xcf, 0x93, 0xd5, 0xad, 0x8e, 0xa5, 0x55, 0xc9, 0x17, + 0xd0, 0x4c, 0xc7, 0xd9, 0x7e, 0x31, 0x3d, 0x09, 0x58, 0x9d, 0x8a, 0x80, 0x5e, 0x24, 0x1d, 0xfa, + 0xa5, 0x22, 0x49, 0xa0, 0x5c, 0xa4, 0x30, 0x5c, 0xc9, 0xb7, 0xb0, 0xa1, 0x7f, 0x40, 0x3f, 0x28, + 0xe6, 0x6b, 0x41, 0xeb, 0xe1, 0x35, 0x41, 0x9d, 0x55, 0x3a, 0xab, 0x4a, 0xac, 0x92, 0x40, 0x99, + 0x55, 0x61, 0xe2, 0x90, 0x97, 0xb0, 0x95, 0x1f, 0x37, 0x1f, 0x56, 0xb5, 0x8e, 0x3d, 0xff, 0xf8, + 0xda, 0x70, 0x56, 0xd6, 0x81, 0x7b, 0xe5, 0x41, 0xf2, 0xa0, 0xf8, 0x6c, 0x29, 0xc5, 0xfa, 0xe4, + 0xc6, 0x94, 0xac, 0xc5, 0xf7, 0xb0, 0x53, 0x7c, 0xf1, 0x3b, 0x4b, 0x9e, 0xd6, 0x13, 0xac, 0x47, + 0x37, 0x24, 0xe8, 0xfc, 0xcb, 0x2f, 0x63, 0x89, 0x7f, 0x29, 0xa5, 0xcc, 0xbf, 0xf2, 0x35, 0x23, + 0xaf, 0x60, 0x6f, 0xe9, 0x3b, 0xf6, 0x51, 0xb1, 0xc4, 0xb2, 0x2c, 0xeb, 0xc9, 0x6d, 0xb2, 0xd2, + 0x5e, 0xc7, 0x5f, 0x5f, 0xfc, 0xd9, 0x5e, 0xb9, 0xb8, 0x6c, 0x1b, 0x6f, 0x2e, 0xdb, 0xc6, 0x1f, + 0x97, 0x6d, 0xe3, 0xf5, 0x55, 0x7b, 0xe5, 0xcd, 0x55, 0x7b, 0xe5, 0xb7, 0xab, 0xf6, 0xca, 0x77, + 0x4f, 0x3c, 0x2a, 0x27, 0xe1, 0x79, 0x6f, 0x14, 0xf8, 0xfd, 0xa8, 0x2a, 0x43, 0xd9, 0x4f, 0xaa, + 0xf7, 0xfd, 0xc0, 0x0d, 0xa7, 0x28, 0xfa, 0xea, 0x8f, 0x7d, 0x3e, 0x43, 0x71, 0xde, 0x50, 0xbf, + 0xe4, 0x9f, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x90, 0xb5, 0xec, 0x3f, 0xc5, 0x0b, 0x00, 0x00, } func (this *MsgIssueDenom) Equal(that interface{}) bool { @@ -628,6 +958,9 @@ func (this *MsgIssueDenom) Equal(that interface{}) bool { if this.Data != that1.Data { return false } + if this.RoyaltyEnabled != that1.RoyaltyEnabled { + return false + } return true } func (this *MsgTransferNFT) Equal(that interface{}) bool { @@ -822,66 +1155,201 @@ func (this *MsgTransferDenom) Equal(that interface{}) bool { } return true } - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// MsgClient is the client API for Msg service. -// -// 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 { - // IssueDenom defines a method for issue a denom. - IssueDenom(ctx context.Context, in *MsgIssueDenom, opts ...grpc.CallOption) (*MsgIssueDenomResponse, error) - // MintNFT defines a method for mint a new nft - MintNFT(ctx context.Context, in *MsgMintNFT, opts ...grpc.CallOption) (*MsgMintNFTResponse, error) - // RefundHTLC defines a method for editing a nft. - EditNFT(ctx context.Context, in *MsgEditNFT, opts ...grpc.CallOption) (*MsgEditNFTResponse, error) - // TransferNFT defines a method for transferring a nft. - TransferNFT(ctx context.Context, in *MsgTransferNFT, opts ...grpc.CallOption) (*MsgTransferNFTResponse, error) - // BurnNFT defines a method for burning a nft. - BurnNFT(ctx context.Context, in *MsgBurnNFT, opts ...grpc.CallOption) (*MsgBurnNFTResponse, error) - // TransferDenom defines a method for transferring a denom. - TransferDenom(ctx context.Context, in *MsgTransferDenom, opts ...grpc.CallOption) (*MsgTransferDenomResponse, error) -} - -type msgClient struct { - cc grpc1.ClientConn -} - -func NewMsgClient(cc grpc1.ClientConn) MsgClient { - return &msgClient{cc} -} - -func (c *msgClient) IssueDenom(ctx context.Context, in *MsgIssueDenom, opts ...grpc.CallOption) (*MsgIssueDenomResponse, error) { - out := new(MsgIssueDenomResponse) - err := c.cc.Invoke(ctx, "/irismod.nft.Msg/SaveDenom", in, out, opts...) - if err != nil { - return nil, err +func (this *MsgSetDefaultRoyalty) Equal(that interface{}) bool { + if that == nil { + return this == nil } - return out, nil -} -func (c *msgClient) MintNFT(ctx context.Context, in *MsgMintNFT, opts ...grpc.CallOption) (*MsgMintNFTResponse, error) { - out := new(MsgMintNFTResponse) - err := c.cc.Invoke(ctx, "/irismod.nft.Msg/SaveNFT", in, out, opts...) - if err != nil { - return nil, err + that1, ok := that.(*MsgSetDefaultRoyalty) + if !ok { + that2, ok := that.(MsgSetDefaultRoyalty) + if ok { + that1 = &that2 + } else { + return false + } } - return out, nil -} - -func (c *msgClient) EditNFT(ctx context.Context, in *MsgEditNFT, opts ...grpc.CallOption) (*MsgEditNFTResponse, error) { - out := new(MsgEditNFTResponse) - err := c.cc.Invoke(ctx, "/irismod.nft.Msg/UpdateNFT", in, out, opts...) - if err != nil { - return nil, err + if that1 == nil { + return this == nil + } else if this == nil { + return false } - return out, nil + if this.ClassId != that1.ClassId { + return false + } + if this.Receiver != that1.Receiver { + return false + } + if this.FeeNumerator != that1.FeeNumerator { + return false + } + if this.Sender != that1.Sender { + return false + } + return true +} +func (this *MsgSetTokenRoyalty) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgSetTokenRoyalty) + if !ok { + that2, ok := that.(MsgSetTokenRoyalty) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ClassId != that1.ClassId { + return false + } + if this.TokenId != that1.TokenId { + return false + } + if this.Receiver != that1.Receiver { + return false + } + if this.FeeNumerator != that1.FeeNumerator { + return false + } + if this.Sender != that1.Sender { + return false + } + return true +} +func (this *MsgResetTokenRoyalty) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgResetTokenRoyalty) + if !ok { + that2, ok := that.(MsgResetTokenRoyalty) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ClassId != that1.ClassId { + return false + } + if this.TokenId != that1.TokenId { + return false + } + if this.Sender != that1.Sender { + return false + } + return true +} +func (this *MsgDeleteDefaultRoyalty) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgDeleteDefaultRoyalty) + if !ok { + that2, ok := that.(MsgDeleteDefaultRoyalty) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ClassId != that1.ClassId { + return false + } + if this.Sender != that1.Sender { + return false + } + return true +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// 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 { + // IssueDenom defines a method for issue a denom. + IssueDenom(ctx context.Context, in *MsgIssueDenom, opts ...grpc.CallOption) (*MsgIssueDenomResponse, error) + // MintNFT defines a method for mint a new nft + MintNFT(ctx context.Context, in *MsgMintNFT, opts ...grpc.CallOption) (*MsgMintNFTResponse, error) + // RefundHTLC defines a method for editing a nft. + EditNFT(ctx context.Context, in *MsgEditNFT, opts ...grpc.CallOption) (*MsgEditNFTResponse, error) + // TransferNFT defines a method for transferring a nft. + TransferNFT(ctx context.Context, in *MsgTransferNFT, opts ...grpc.CallOption) (*MsgTransferNFTResponse, error) + // BurnNFT defines a method for burning a nft. + BurnNFT(ctx context.Context, in *MsgBurnNFT, opts ...grpc.CallOption) (*MsgBurnNFTResponse, error) + // TransferDenom defines a method for transferring a denom. + TransferDenom(ctx context.Context, in *MsgTransferDenom, opts ...grpc.CallOption) (*MsgTransferDenomResponse, error) + // royalty service + // SetDefaultRoyalty defines a method for set a default royalty for class. + SetDefaultRoyalty(ctx context.Context, in *MsgSetDefaultRoyalty, opts ...grpc.CallOption) (*MsgSetDefaultRoyaltyResponse, error) + // SetTokenRoyalty defines a method for set royalty for token. + SetTokenRoyalty(ctx context.Context, in *MsgSetTokenRoyalty, opts ...grpc.CallOption) (*MsgSetTokenRoyaltyResponse, error) + // ResetTokenRoyalty defines a method for reset royalty for token. + ResetTokenRoyalty(ctx context.Context, in *MsgResetTokenRoyalty, opts ...grpc.CallOption) (*MsgResetTokenRoyaltyResponse, error) + // DeleteDefaultRoyalty defines a method for delete default royalty for class. + DeleteDefaultRoyalty(ctx context.Context, in *MsgDeleteDefaultRoyalty, opts ...grpc.CallOption) (*MsgDeleteDefaultRoyaltyResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) IssueDenom(ctx context.Context, in *MsgIssueDenom, opts ...grpc.CallOption) (*MsgIssueDenomResponse, error) { + out := new(MsgIssueDenomResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/IssueDenom", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) MintNFT(ctx context.Context, in *MsgMintNFT, opts ...grpc.CallOption) (*MsgMintNFTResponse, error) { + out := new(MsgMintNFTResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/MintNFT", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) EditNFT(ctx context.Context, in *MsgEditNFT, opts ...grpc.CallOption) (*MsgEditNFTResponse, error) { + out := new(MsgEditNFTResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/EditNFT", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } func (c *msgClient) TransferNFT(ctx context.Context, in *MsgTransferNFT, opts ...grpc.CallOption) (*MsgTransferNFTResponse, error) { @@ -895,7 +1363,7 @@ func (c *msgClient) TransferNFT(ctx context.Context, in *MsgTransferNFT, opts .. func (c *msgClient) BurnNFT(ctx context.Context, in *MsgBurnNFT, opts ...grpc.CallOption) (*MsgBurnNFTResponse, error) { out := new(MsgBurnNFTResponse) - err := c.cc.Invoke(ctx, "/irismod.nft.Msg/RemoveNFT", in, out, opts...) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/BurnNFT", in, out, opts...) if err != nil { return nil, err } @@ -911,6 +1379,42 @@ func (c *msgClient) TransferDenom(ctx context.Context, in *MsgTransferDenom, opt return out, nil } +func (c *msgClient) SetDefaultRoyalty(ctx context.Context, in *MsgSetDefaultRoyalty, opts ...grpc.CallOption) (*MsgSetDefaultRoyaltyResponse, error) { + out := new(MsgSetDefaultRoyaltyResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/SetDefaultRoyalty", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetTokenRoyalty(ctx context.Context, in *MsgSetTokenRoyalty, opts ...grpc.CallOption) (*MsgSetTokenRoyaltyResponse, error) { + out := new(MsgSetTokenRoyaltyResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/SetTokenRoyalty", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ResetTokenRoyalty(ctx context.Context, in *MsgResetTokenRoyalty, opts ...grpc.CallOption) (*MsgResetTokenRoyaltyResponse, error) { + out := new(MsgResetTokenRoyaltyResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/ResetTokenRoyalty", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteDefaultRoyalty(ctx context.Context, in *MsgDeleteDefaultRoyalty, opts ...grpc.CallOption) (*MsgDeleteDefaultRoyaltyResponse, error) { + out := new(MsgDeleteDefaultRoyaltyResponse) + err := c.cc.Invoke(ctx, "/irismod.nft.Msg/DeleteDefaultRoyalty", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // IssueDenom defines a method for issue a denom. @@ -925,6 +1429,15 @@ type MsgServer interface { BurnNFT(context.Context, *MsgBurnNFT) (*MsgBurnNFTResponse, error) // TransferDenom defines a method for transferring a denom. TransferDenom(context.Context, *MsgTransferDenom) (*MsgTransferDenomResponse, error) + // royalty service + // SetDefaultRoyalty defines a method for set a default royalty for class. + SetDefaultRoyalty(context.Context, *MsgSetDefaultRoyalty) (*MsgSetDefaultRoyaltyResponse, error) + // SetTokenRoyalty defines a method for set royalty for token. + SetTokenRoyalty(context.Context, *MsgSetTokenRoyalty) (*MsgSetTokenRoyaltyResponse, error) + // ResetTokenRoyalty defines a method for reset royalty for token. + ResetTokenRoyalty(context.Context, *MsgResetTokenRoyalty) (*MsgResetTokenRoyaltyResponse, error) + // DeleteDefaultRoyalty defines a method for delete default royalty for class. + DeleteDefaultRoyalty(context.Context, *MsgDeleteDefaultRoyalty) (*MsgDeleteDefaultRoyaltyResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -932,23 +1445,35 @@ type UnimplementedMsgServer struct { } func (*UnimplementedMsgServer) IssueDenom(ctx context.Context, req *MsgIssueDenom) (*MsgIssueDenomResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SaveDenom not implemented") + return nil, status.Errorf(codes.Unimplemented, "method IssueDenom not implemented") } func (*UnimplementedMsgServer) MintNFT(ctx context.Context, req *MsgMintNFT) (*MsgMintNFTResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SaveNFT not implemented") + return nil, status.Errorf(codes.Unimplemented, "method MintNFT not implemented") } func (*UnimplementedMsgServer) EditNFT(ctx context.Context, req *MsgEditNFT) (*MsgEditNFTResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateNFT not implemented") + return nil, status.Errorf(codes.Unimplemented, "method EditNFT not implemented") } func (*UnimplementedMsgServer) TransferNFT(ctx context.Context, req *MsgTransferNFT) (*MsgTransferNFTResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TransferNFT not implemented") } func (*UnimplementedMsgServer) BurnNFT(ctx context.Context, req *MsgBurnNFT) (*MsgBurnNFTResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveNFT not implemented") + return nil, status.Errorf(codes.Unimplemented, "method BurnNFT not implemented") } func (*UnimplementedMsgServer) TransferDenom(ctx context.Context, req *MsgTransferDenom) (*MsgTransferDenomResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TransferDenom not implemented") } +func (*UnimplementedMsgServer) SetDefaultRoyalty(ctx context.Context, req *MsgSetDefaultRoyalty) (*MsgSetDefaultRoyaltyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetDefaultRoyalty not implemented") +} +func (*UnimplementedMsgServer) SetTokenRoyalty(ctx context.Context, req *MsgSetTokenRoyalty) (*MsgSetTokenRoyaltyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetTokenRoyalty not implemented") +} +func (*UnimplementedMsgServer) ResetTokenRoyalty(ctx context.Context, req *MsgResetTokenRoyalty) (*MsgResetTokenRoyaltyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResetTokenRoyalty not implemented") +} +func (*UnimplementedMsgServer) DeleteDefaultRoyalty(ctx context.Context, req *MsgDeleteDefaultRoyalty) (*MsgDeleteDefaultRoyaltyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteDefaultRoyalty not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -964,7 +1489,7 @@ func _Msg_IssueDenom_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/irismod.nft.Msg/SaveDenom", + FullMethod: "/irismod.nft.Msg/IssueDenom", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).IssueDenom(ctx, req.(*MsgIssueDenom)) @@ -982,7 +1507,7 @@ func _Msg_MintNFT_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/irismod.nft.Msg/SaveNFT", + FullMethod: "/irismod.nft.Msg/MintNFT", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).MintNFT(ctx, req.(*MsgMintNFT)) @@ -1000,7 +1525,7 @@ func _Msg_EditNFT_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/irismod.nft.Msg/UpdateNFT", + FullMethod: "/irismod.nft.Msg/EditNFT", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).EditNFT(ctx, req.(*MsgEditNFT)) @@ -1036,7 +1561,7 @@ func _Msg_BurnNFT_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/irismod.nft.Msg/RemoveNFT", + FullMethod: "/irismod.nft.Msg/BurnNFT", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).BurnNFT(ctx, req.(*MsgBurnNFT)) @@ -1062,20 +1587,92 @@ func _Msg_TransferDenom_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _Msg_SetDefaultRoyalty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetDefaultRoyalty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetDefaultRoyalty(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Msg/SetDefaultRoyalty", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetDefaultRoyalty(ctx, req.(*MsgSetDefaultRoyalty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetTokenRoyalty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetTokenRoyalty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetTokenRoyalty(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Msg/SetTokenRoyalty", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetTokenRoyalty(ctx, req.(*MsgSetTokenRoyalty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ResetTokenRoyalty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgResetTokenRoyalty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ResetTokenRoyalty(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Msg/ResetTokenRoyalty", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ResetTokenRoyalty(ctx, req.(*MsgResetTokenRoyalty)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteDefaultRoyalty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeleteDefaultRoyalty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteDefaultRoyalty(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/irismod.nft.Msg/DeleteDefaultRoyalty", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteDefaultRoyalty(ctx, req.(*MsgDeleteDefaultRoyalty)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "irismod.nft.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "SaveDenom", + MethodName: "IssueDenom", Handler: _Msg_IssueDenom_Handler, }, { - MethodName: "SaveNFT", + MethodName: "MintNFT", Handler: _Msg_MintNFT_Handler, }, { - MethodName: "UpdateNFT", + MethodName: "EditNFT", Handler: _Msg_EditNFT_Handler, }, { @@ -1083,13 +1680,29 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Handler: _Msg_TransferNFT_Handler, }, { - MethodName: "RemoveNFT", + MethodName: "BurnNFT", Handler: _Msg_BurnNFT_Handler, }, { MethodName: "TransferDenom", Handler: _Msg_TransferDenom_Handler, }, + { + MethodName: "SetDefaultRoyalty", + Handler: _Msg_SetDefaultRoyalty_Handler, + }, + { + MethodName: "SetTokenRoyalty", + Handler: _Msg_SetTokenRoyalty_Handler, + }, + { + MethodName: "ResetTokenRoyalty", + Handler: _Msg_ResetTokenRoyalty_Handler, + }, + { + MethodName: "DeleteDefaultRoyalty", + Handler: _Msg_DeleteDefaultRoyalty_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "nft/tx.proto", @@ -1115,6 +1728,16 @@ func (m *MsgIssueDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.RoyaltyEnabled { + i-- + if m.RoyaltyEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x60 + } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -1657,26 +2280,308 @@ func (m *MsgTransferDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *MsgSetDefaultRoyalty) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *MsgIssueDenom) Size() (n int) { - if m == nil { - return 0 - } + +func (m *MsgSetDefaultRoyalty) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetDefaultRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + 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] = 0x22 + } + if len(m.FeeNumerator) > 0 { + i -= len(m.FeeNumerator) + copy(dAtA[i:], m.FeeNumerator) + i = encodeVarintTx(dAtA, i, uint64(len(m.FeeNumerator))) + i-- + dAtA[i] = 0x1a + } + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x12 + } + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetDefaultRoyaltyResponse) 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 *MsgSetDefaultRoyaltyResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetDefaultRoyaltyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgSetTokenRoyalty) 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 *MsgSetTokenRoyalty) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetTokenRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + 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] = 0x2a + } + if len(m.FeeNumerator) > 0 { + i -= len(m.FeeNumerator) + copy(dAtA[i:], m.FeeNumerator) + i = encodeVarintTx(dAtA, i, uint64(len(m.FeeNumerator))) + i-- + dAtA[i] = 0x22 + } + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintTx(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } + if len(m.TokenId) > 0 { + i -= len(m.TokenId) + copy(dAtA[i:], m.TokenId) + i = encodeVarintTx(dAtA, i, uint64(len(m.TokenId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetTokenRoyaltyResponse) 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 *MsgSetTokenRoyaltyResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetTokenRoyaltyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgResetTokenRoyalty) 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 *MsgResetTokenRoyalty) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgResetTokenRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + 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] = 0x1a + } + if len(m.TokenId) > 0 { + i -= len(m.TokenId) + copy(dAtA[i:], m.TokenId) + i = encodeVarintTx(dAtA, i, uint64(len(m.TokenId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgResetTokenRoyaltyResponse) 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 *MsgResetTokenRoyaltyResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgResetTokenRoyaltyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDeleteDefaultRoyalty) 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 *MsgDeleteDefaultRoyalty) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteDefaultRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + 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] = 0x12 + } + if len(m.ClassId) > 0 { + i -= len(m.ClassId) + copy(dAtA[i:], m.ClassId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteDefaultRoyaltyResponse) 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 *MsgDeleteDefaultRoyaltyResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteDefaultRoyaltyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgIssueDenom) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) } l = len(m.Name) if l > 0 { @@ -1716,6 +2621,9 @@ func (m *MsgIssueDenom) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.RoyaltyEnabled { + n += 2 + } return n } @@ -1934,13 +2842,945 @@ func (m *MsgTransferDenomResponse) Size() (n int) { return n } -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func (m *MsgSetDefaultRoyalty) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.FeeNumerator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n } -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + +func (m *MsgSetDefaultRoyaltyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgSetTokenRoyalty) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.TokenId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.FeeNumerator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgSetTokenRoyaltyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgResetTokenRoyalty) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.TokenId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgResetTokenRoyaltyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDeleteDefaultRoyalty) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClassId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgDeleteDefaultRoyaltyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgIssueDenom) 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: MsgIssueDenom: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgIssueDenom: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", 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.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schema", 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.Schema = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + 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 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Symbol", 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.Symbol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MintRestricted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MintRestricted = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateRestricted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UpdateRestricted = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", 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.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", 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.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UriHash", 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.UriHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", 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.Data = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RoyaltyEnabled = bool(v != 0) + 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 *MsgIssueDenomResponse) 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: MsgIssueDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgIssueDenomResponse: 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 *MsgTransferNFT) 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: MsgTransferNFT: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTransferNFT: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", 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.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", 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.DenomId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field URI", 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.URI = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", 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.Data = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + 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 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Recipient", 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.Recipient = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UriHash", 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.UriHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + 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 *MsgTransferNFTResponse) 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: MsgTransferNFTResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTransferNFTResponse: 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 *MsgIssueDenom) Unmarshal(dAtA []byte) error { +func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1963,10 +3803,10 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgIssueDenom: wiretype end group for non-group") + return fmt.Errorf("proto: MsgEditNFT: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgIssueDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgEditNFT: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2003,7 +3843,7 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2031,11 +3871,11 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2063,11 +3903,11 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Schema = string(dAtA[iNdEx:postIndex]) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field URI", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2095,11 +3935,11 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Sender = string(dAtA[iNdEx:postIndex]) + m.URI = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2127,83 +3967,11 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Symbol = string(dAtA[iNdEx:postIndex]) + m.Data = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MintRestricted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.MintRestricted = bool(v != 0) - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateRestricted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.UpdateRestricted = bool(v != 0) - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", 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.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2231,9 +3999,9 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Uri = string(dAtA[iNdEx:postIndex]) + m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 10: + case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field UriHash", wireType) } @@ -2265,38 +4033,6 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { } m.UriHash = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", 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.Data = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -2318,7 +4054,7 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgIssueDenomResponse) Unmarshal(dAtA []byte) error { +func (m *MsgEditNFTResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2341,10 +4077,10 @@ func (m *MsgIssueDenomResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgIssueDenomResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgEditNFTResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgIssueDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgEditNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -2368,7 +4104,7 @@ func (m *MsgIssueDenomResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTransferNFT) Unmarshal(dAtA []byte) error { +func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2391,10 +4127,10 @@ func (m *MsgTransferNFT) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTransferNFT: wiretype end group for non-group") + return fmt.Errorf("proto: MsgMintNFT: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTransferNFT: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgMintNFT: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2674,7 +4410,7 @@ func (m *MsgTransferNFT) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTransferNFTResponse) Unmarshal(dAtA []byte) error { +func (m *MsgMintNFTResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2697,10 +4433,10 @@ func (m *MsgTransferNFTResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTransferNFTResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgMintNFTResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTransferNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgMintNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -2724,7 +4460,7 @@ func (m *MsgTransferNFTResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { +func (m *MsgBurnNFT) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2747,10 +4483,10 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgEditNFT: wiretype end group for non-group") + return fmt.Errorf("proto: MsgBurnNFT: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgEditNFT: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgBurnNFT: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2819,7 +4555,7 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2847,43 +4583,111 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URI", 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 - } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgBurnNFTResponse) 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: MsgBurnNFTResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBurnNFTResponse: 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 postIndex > l { + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgTransferDenom) 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 } - m.URI = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: + 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: MsgTransferDenom: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTransferDenom: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2911,9 +4715,9 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } @@ -2945,9 +4749,9 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 7: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UriHash", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Recipient", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2975,7 +4779,7 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.UriHash = string(dAtA[iNdEx:postIndex]) + m.Recipient = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2998,7 +4802,7 @@ func (m *MsgEditNFT) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgEditNFTResponse) Unmarshal(dAtA []byte) error { +func (m *MsgTransferDenomResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3021,10 +4825,10 @@ func (m *MsgEditNFTResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgEditNFTResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgTransferDenomResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgEditNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgTransferDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3048,7 +4852,7 @@ func (m *MsgEditNFTResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { +func (m *MsgSetDefaultRoyalty) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3071,15 +4875,15 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgMintNFT: wiretype end group for non-group") + return fmt.Errorf("proto: MsgSetDefaultRoyalty: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgMintNFT: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgSetDefaultRoyalty: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3107,11 +4911,11 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3139,11 +4943,11 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DenomId = string(dAtA[iNdEx:postIndex]) + m.Receiver = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FeeNumerator", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3171,11 +4975,11 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.FeeNumerator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URI", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3203,11 +5007,111 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.URI = string(dAtA[iNdEx:postIndex]) + m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + 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 *MsgSetDefaultRoyaltyResponse) 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: MsgSetDefaultRoyaltyResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetDefaultRoyaltyResponse: 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 *MsgSetTokenRoyalty) 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: MsgSetTokenRoyalty: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetTokenRoyalty: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3235,11 +5139,11 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = string(dAtA[iNdEx:postIndex]) + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3267,11 +5171,11 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Sender = string(dAtA[iNdEx:postIndex]) + m.TokenId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 7: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Recipient", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3299,11 +5203,11 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Recipient = string(dAtA[iNdEx:postIndex]) + m.Receiver = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 8: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UriHash", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FeeNumerator", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3331,7 +5235,39 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.UriHash = string(dAtA[iNdEx:postIndex]) + m.FeeNumerator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + 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 default: iNdEx = preIndex @@ -3354,7 +5290,7 @@ func (m *MsgMintNFT) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgMintNFTResponse) Unmarshal(dAtA []byte) error { +func (m *MsgSetTokenRoyaltyResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3377,10 +5313,10 @@ func (m *MsgMintNFTResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgMintNFTResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgSetTokenRoyaltyResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgMintNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgSetTokenRoyaltyResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3404,7 +5340,7 @@ func (m *MsgMintNFTResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgBurnNFT) Unmarshal(dAtA []byte) error { +func (m *MsgResetTokenRoyalty) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3427,15 +5363,15 @@ func (m *MsgBurnNFT) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgBurnNFT: wiretype end group for non-group") + return fmt.Errorf("proto: MsgResetTokenRoyalty: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBurnNFT: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgResetTokenRoyalty: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3463,11 +5399,11 @@ func (m *MsgBurnNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3495,7 +5431,7 @@ func (m *MsgBurnNFT) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.DenomId = string(dAtA[iNdEx:postIndex]) + m.TokenId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -3550,7 +5486,7 @@ func (m *MsgBurnNFT) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgBurnNFTResponse) Unmarshal(dAtA []byte) error { +func (m *MsgResetTokenRoyaltyResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3573,10 +5509,10 @@ func (m *MsgBurnNFTResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgBurnNFTResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgResetTokenRoyaltyResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBurnNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgResetTokenRoyaltyResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3600,7 +5536,7 @@ func (m *MsgBurnNFTResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTransferDenom) Unmarshal(dAtA []byte) error { +func (m *MsgDeleteDefaultRoyalty) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3623,15 +5559,15 @@ func (m *MsgTransferDenom) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTransferDenom: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDeleteDefaultRoyalty: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTransferDenom: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDeleteDefaultRoyalty: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3659,7 +5595,7 @@ func (m *MsgTransferDenom) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -3693,38 +5629,6 @@ func (m *MsgTransferDenom) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Recipient", 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.Recipient = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -3746,7 +5650,7 @@ func (m *MsgTransferDenom) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTransferDenomResponse) Unmarshal(dAtA []byte) error { +func (m *MsgDeleteDefaultRoyaltyResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3769,10 +5673,10 @@ func (m *MsgTransferDenomResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTransferDenomResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDeleteDefaultRoyaltyResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTransferDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDeleteDefaultRoyaltyResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/proto/nft/nft.proto b/proto/nft/nft.proto index c1163cce..00fea8a2 100644 --- a/proto/nft/nft.proto +++ b/proto/nft/nft.proto @@ -50,6 +50,9 @@ message DenomMetadata { bool mint_restricted = 3; bool update_restricted = 4; string data = 5; + + // royalty options + bool royalty_enabled = 6; } // IDCollection defines a type of collection with specified ID diff --git a/proto/nft/query.proto b/proto/nft/query.proto index 912d5d8b..b313b74f 100644 --- a/proto/nft/query.proto +++ b/proto/nft/query.proto @@ -39,6 +39,19 @@ service Query { rpc NFT(QueryNFTRequest) returns (QueryNFTResponse) { option (google.api.http).get = "/irismod/nft/nfts/{denom_id}/{token_id}"; } + + // Royalty + // FeeDenominator queries the FeeDenominator + rpc FeeDenominator(MsgFeeDenominatorRequest) returns (MsgFeeDenominatorResponse); + + // RoyaltyInfo queries the RoyaltyInfo for the class of token + rpc RoyaltyInfo(MsgRoyaltyInfoRequest) returns (MsgRoyaltyInfoResponse); + + // DefaultRoyaltyInfo queries the default royalty info for the class + rpc DefaultRoyaltyInfo(MsgDefaultRoyaltyInfoRequest) returns (MsgDefaultRoyaltyInfoResponse); + + // TokenRoyaltyInfo queries the royalty info for the class of a token + rpc TokenRoyaltyInfo(MsgTokenRoyaltyInfoRequest) returns (MsgTokenRoyaltyInfoResponse); } // QuerySupplyRequest is the request type for the Query/HTLC RPC method @@ -109,4 +122,37 @@ message QueryNFTRequest { } // QueryNFTResponse is the response type for the Query/NFT RPC method -message QueryNFTResponse { BaseNFT nft = 1 [ (gogoproto.customname) = "NFT" ]; } \ No newline at end of file +message QueryNFTResponse { BaseNFT nft = 1 [ (gogoproto.customname) = "NFT" ]; } + +message MsgFeeDenominatorRequest { +} +message MsgFeeDenominatorResponse { + string royalty_fraction = 1 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} + +message MsgRoyaltyInfoRequest { + string class_id = 1; + string token_id = 2; + string sale_price = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} +message MsgRoyaltyInfoResponse { + string receiver = 1; + string royalty_amount = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} + +message MsgDefaultRoyaltyInfoRequest { + string class_id = 1; +} +message MsgDefaultRoyaltyInfoResponse { + string receiver = 1; + string royalty_fraction = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} + +message MsgTokenRoyaltyInfoRequest { + string class_id = 1; + string token_id = 2; +} +message MsgTokenRoyaltyInfoResponse { + string receiver = 1; + string royalty_fraction = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} diff --git a/proto/nft/royalty.proto b/proto/nft/royalty.proto new file mode 100644 index 00000000..f904fa60 --- /dev/null +++ b/proto/nft/royalty.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +package irismod.nft; + +import "gogoproto/gogo.proto"; +import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; + +option go_package = "github.com/irisnet/irismod/modules/nft/types"; +option (gogoproto.goproto_getters_all) = false; + + +message RoyaltyInfo { + option (gogoproto.equal) = true; + + string address = 1; + string royalty_fraction = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; + +}; \ No newline at end of file diff --git a/proto/nft/tx.proto b/proto/nft/tx.proto index a4a49282..429b2dd1 100644 --- a/proto/nft/tx.proto +++ b/proto/nft/tx.proto @@ -25,6 +25,19 @@ service Msg { // TransferDenom defines a method for transferring a denom. rpc TransferDenom(MsgTransferDenom) returns (MsgTransferDenomResponse); + + // royalty service + // SetDefaultRoyalty defines a method for set a default royalty for class. + rpc SetDefaultRoyalty(MsgSetDefaultRoyalty) returns (MsgSetDefaultRoyaltyResponse); + + // SetTokenRoyalty defines a method for set royalty for token. + rpc SetTokenRoyalty(MsgSetTokenRoyalty) returns (MsgSetTokenRoyaltyResponse); + + // ResetTokenRoyalty defines a method for reset royalty for token. + rpc ResetTokenRoyalty(MsgResetTokenRoyalty) returns (MsgResetTokenRoyaltyResponse); + + // DeleteDefaultRoyalty defines a method for delete default royalty for class. + rpc DeleteDefaultRoyalty(MsgDeleteDefaultRoyalty) returns (MsgDeleteDefaultRoyaltyResponse); } // MsgIssueDenom defines an SDK message for creating a new denom. @@ -42,6 +55,8 @@ message MsgIssueDenom { string uri = 9; string uri_hash = 10; string data = 11; + + bool royalty_enabled = 12; } // MsgIssueDenomResponse defines the Msg/IssueDenom response type. @@ -120,3 +135,52 @@ message MsgTransferDenom { // MsgTransferDenomResponse defines the Msg/TransferDenom response type. message MsgTransferDenomResponse {} + +// Royalty Request and Response +// MsgSetDefaultRoyalty defines an SDK message for set default royalty for class. +message MsgSetDefaultRoyalty { + option (gogoproto.equal) = true; + + string class_id = 1; + string receiver = 2; + string fee_numerator = 3; + + string sender = 4; +} + +message MsgSetDefaultRoyaltyResponse {} + +// MsgSetTokenRoyalty defines an SDK message for set royalty for class of token. +message MsgSetTokenRoyalty { + option (gogoproto.equal) = true; + + string class_id = 1; + string token_id= 2; + string receiver = 3; + string fee_numerator = 4; + + string sender = 5; +} + +message MsgSetTokenRoyaltyResponse {} + +// MsgResetTokenRoyalty defines an SDK message for reset royalty for class of token. +message MsgResetTokenRoyalty { + option (gogoproto.equal) = true; + + string class_id = 1; + string token_id= 2; + + string sender = 3; +} +message MsgResetTokenRoyaltyResponse {} + +// MsgDeleteDefaultRoyalty defines an SDK message for delete royalty for class. +message MsgDeleteDefaultRoyalty { + option (gogoproto.equal) = true; + + string class_id = 1; + + string sender = 2; +} +message MsgDeleteDefaultRoyaltyResponse {} \ No newline at end of file From bca91eb892db1fc8d5ad393541f285f9ccf03b04 Mon Sep 17 00:00:00 2001 From: sheldon <997166273@qq.com> Date: Mon, 19 Dec 2022 18:08:36 +0800 Subject: [PATCH 04/11] modify proto file --- modules/nft/keeper/grpc_query.go | 53 ++++ modules/nft/keeper/grpc_query_royalty.go | 61 ----- modules/nft/keeper/msg_server.go | 113 ++++++++ modules/nft/keeper/royalty.go | 280 +++++++++++++++---- modules/nft/keeper/royalty_test.go | 1 + modules/nft/types/errors.go | 4 +- modules/nft/types/events.go | 7 + modules/nft/types/nft.pb.go | 122 +++------ modules/nft/types/query.pb.go | 238 ++++++++--------- modules/nft/types/royalty.pb.go | 293 ++++++++++++++++++-- modules/nft/types/royalty_msg.go | 192 +++++++++++++ modules/nft/types/tx.pb.go | 327 ++++++++++------------- proto/nft/nft.proto | 3 - proto/nft/query.proto | 11 +- proto/nft/royalty.proto | 13 +- proto/nft/tx.proto | 18 +- 16 files changed, 1185 insertions(+), 551 deletions(-) delete mode 100644 modules/nft/keeper/grpc_query_royalty.go create mode 100644 modules/nft/keeper/royalty_test.go create mode 100644 modules/nft/types/royalty_msg.go diff --git a/modules/nft/keeper/grpc_query.go b/modules/nft/keeper/grpc_query.go index dbcb8701..fecec101 100644 --- a/modules/nft/keeper/grpc_query.go +++ b/modules/nft/keeper/grpc_query.go @@ -177,3 +177,56 @@ func (k Keeper) NFT(c context.Context, request *types.QueryNFTRequest) (*types.Q return &types.QueryNFTResponse{NFT: &baseNFT}, nil } + +// Royalty query + +// FeeDenominator queries the FeeDenominator +func (k Keeper) FeeDenominator(c context.Context, request *types.MsgFeeDenominatorRequest) (*types.MsgFeeDenominatorResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + feeDenominator := k.GetFeeDenominator(ctx) + return &types.MsgFeeDenominatorResponse{RoyaltyFraction: feeDenominator}, nil +} + +// RoyaltyInfo queries the RoyaltyInfo for the class of token +func (k Keeper) RoyaltyInfo(c context.Context, request *types.MsgRoyaltyInfoRequest) (*types.MsgRoyaltyInfoResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + receiver, amount, err := k.GetRoyaltyInfo(ctx, request.DenomId, request.NftId, request.SalePrice) + + if err != nil { + return nil, err + } + + return &types.MsgRoyaltyInfoResponse{ + Receiver: receiver, + RoyaltyAmount: amount, + }, nil + +} + +// DefaultRoyaltyInfo queries the default royalty info for the class +func (k Keeper) DefaultRoyaltyInfo(c context.Context, request *types.MsgDefaultRoyaltyInfoRequest) (*types.MsgDefaultRoyaltyInfoResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + receiver, amount, err := k.GetDefaultRoyaltyInfo(ctx, request.DenomId) + if err != nil { + return nil, err + } + return &types.MsgDefaultRoyaltyInfoResponse{ + Receiver: receiver, + RoyaltyFraction: amount, + }, nil +} + +// TokenRoyaltyInfo queries the royalty info for the class of a token +func (k Keeper) TokenRoyaltyInfo(c context.Context, request *types.MsgTokenRoyaltyInfoRequest) (*types.MsgTokenRoyaltyInfoResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + receiver, amount, err := k.GetTokenRoyaltyInfo(ctx, request.DenomId, request.NftId) + if err != nil { + return nil, err + } + return &types.MsgTokenRoyaltyInfoResponse{ + Receiver: receiver, + RoyaltyFraction: amount, + }, nil +} diff --git a/modules/nft/keeper/grpc_query_royalty.go b/modules/nft/keeper/grpc_query_royalty.go deleted file mode 100644 index df6fd791..00000000 --- a/modules/nft/keeper/grpc_query_royalty.go +++ /dev/null @@ -1,61 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/irisnet/irismod/modules/nft/types" -) - -// Royalty info - -// FeeDenominator queries the FeeDenominator -func (k Keeper) FeeDenominator(c context.Context, request *types.MsgFeeDenominatorRequest) (*types.MsgFeeDenominatorResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - feeDenominator := k.GetFeeDenominator(ctx) - return &types.MsgFeeDenominatorResponse{RoyaltyFraction: feeDenominator}, nil -} - -// RoyaltyInfo queries the RoyaltyInfo for the class of token -func (k Keeper) RoyaltyInfo(c context.Context, request *types.MsgRoyaltyInfoRequest) (*types.MsgRoyaltyInfoResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - if len(request.ClassId) == 0 { - return nil, types.ErrEmptyClassId - } - receiver, amount := k.GetRoyaltyInfo(ctx, request.ClassId, request.TokenId, request.SalePrice) - return &types.MsgRoyaltyInfoResponse{ - Receiver: receiver, - RoyaltyAmount: amount, - }, nil - -} - -// DefaultRoyaltyInfo queries the default royalty info for the class -func (k Keeper) DefaultRoyaltyInfo(c context.Context, request *types.MsgDefaultRoyaltyInfoRequest) (*types.MsgDefaultRoyaltyInfoResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - if len(request.ClassId) == 0 { - return nil, types.ErrEmptyClassId - } - receiver, amount := k.GetDefaultRoyaltyInfo(ctx, request.ClassId) - return &types.MsgDefaultRoyaltyInfoResponse{ - Receiver: receiver, - RoyaltyFraction: amount, - }, nil -} - -// TokenRoyaltyInfo queries the royalty info for the class of a token -func (k Keeper) TokenRoyaltyInfo(c context.Context, request *types.MsgTokenRoyaltyInfoRequest) (*types.MsgTokenRoyaltyInfoResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - if len(request.ClassId) == 0 { - return nil, types.ErrEmptyClassId - } - if len(request.TokenId) == 0 { - return nil, types.ErrEmptyTokenId - } - receiver, amount := k.GetTokenRoyaltyInfo(ctx, request.ClassId, request.TokenId) - return &types.MsgTokenRoyaltyInfoResponse{ - Receiver: receiver, - RoyaltyFraction: amount, - }, nil -} diff --git a/modules/nft/keeper/msg_server.go b/modules/nft/keeper/msg_server.go index c5679261..ba0c5ade 100644 --- a/modules/nft/keeper/msg_server.go +++ b/modules/nft/keeper/msg_server.go @@ -242,3 +242,116 @@ func (k Keeper) TransferDenom(goCtx context.Context, msg *types.MsgTransferDenom return &types.MsgTransferDenomResponse{}, nil } + +// Royalty MsgServer + +func (k Keeper) SetDefaultRoyalty(goCtx context.Context, msg *types.MsgSetDefaultRoyalty) (*types.MsgSetDefaultRoyaltyResponse, error) { + sender, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return nil, err + } + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.SaveDefaultRoyalty(ctx, msg.DenomId, msg.Receiver, msg.FeeNumerator, sender); err != nil { + return nil, err + } + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeSetDefaultRoyalty, + sdk.NewAttribute(types.AttributeKeyDenomID, msg.DenomId), + sdk.NewAttribute(types.AttributeKeySender, msg.Sender), + ), + sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), + ), + }) + + return &types.MsgSetDefaultRoyaltyResponse{}, nil +} + +// SetTokenRoyalty defines a method for set royalty for token. +func (k Keeper) SetTokenRoyalty(goCtx context.Context, msg *types.MsgSetTokenRoyalty) (*types.MsgSetTokenRoyaltyResponse, error) { + sender, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return nil, err + } + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.SaveTokenRoyalty(ctx, msg.DenomId, msg.NftId, msg.Receiver, msg.FeeNumerator, sender); err != nil { + return nil, err + } + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeSetTokenRoyalty, + sdk.NewAttribute(types.AttributeKeyDenomID, msg.DenomId), + sdk.NewAttribute(types.AttributeKeyTokenID, msg.NftId), + sdk.NewAttribute(types.AttributeKeySender, msg.Sender), + ), + sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), + ), + }) + + return &types.MsgSetTokenRoyaltyResponse{}, nil +} + +// ResetTokenRoyalty defines a method for reset royalty for token. +func (k Keeper) ResetTokenRoyalty(goCtx context.Context, msg *types.MsgResetTokenRoyalty) (*types.MsgResetTokenRoyaltyResponse, error) { + sender, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.RemoveTokenRoyalty(ctx, msg.DenomId, msg.NftId, sender); err != nil { + return nil, err + } + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeResetTokenRoyalty, + sdk.NewAttribute(types.AttributeKeyDenomID, msg.DenomId), + sdk.NewAttribute(types.AttributeKeyTokenID, msg.NftId), + sdk.NewAttribute(types.AttributeKeySender, msg.Sender), + ), + sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), + ), + }) + + return &types.MsgResetTokenRoyaltyResponse{}, nil +} + +// DeleteDefaultRoyalty defines a method for delete default royalty for class. +func (k Keeper) DeleteDefaultRoyalty(goCtx context.Context, msg *types.MsgDeleteDefaultRoyalty) (*types.MsgDeleteDefaultRoyaltyResponse, error) { + sender, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.RemoveDefaultRoyalty(ctx, msg.DenomId, sender); err != nil { + return nil, err + } + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeDeleteDefaultRoyalty, + sdk.NewAttribute(types.AttributeKeyDenomID, msg.DenomId), + sdk.NewAttribute(types.AttributeKeySender, msg.Sender), + ), + sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), + ), + }) + + return &types.MsgDeleteDefaultRoyaltyResponse{}, nil +} diff --git a/modules/nft/keeper/royalty.go b/modules/nft/keeper/royalty.go index 9175ed83..23983cef 100644 --- a/modules/nft/keeper/royalty.go +++ b/modules/nft/keeper/royalty.go @@ -3,88 +3,252 @@ package keeper import ( "math/big" - "github.com/irisnet/irismod/modules/nft/types" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/x/nft" + + errorsmod "cosmossdk.io/errors" + + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" sdkmath "cosmossdk.io/math" + "github.com/irisnet/irismod/modules/nft/types" + sdk "github.com/cosmos/cosmos-sdk/types" ) const DefaultFeeDenominator = 10000 -// GetFeeDenominator returns the denominator of the fee -func (k Keeper) GetFeeDenominator(ctx sdk.Context) (feeNumerator sdkmath.Uint) { - feeNumerator = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(DefaultFeeDenominator)) - return -} +// SaveDefaultRoyalty sets the default royalty information of a class +func (k Keeper) SaveDefaultRoyalty(ctx sdk.Context, denomId string, receiver string, feeNumerator sdkmath.Uint, srcOwner sdk.AccAddress) error { + denom, err := k.GetDenomInfo(ctx, denomId) + if err != nil { + return err + } -// GetRoyaltyInfo returns the royalty information of a token under a class -func (k Keeper) GetRoyaltyInfo(ctx sdk.Context, classId string, tokenId string, salePrice sdkmath.Uint) (receiver string, royaltyAmount sdkmath.Uint) { - receiver, feeNumerator := k.GetTokenRoyaltyInfo(ctx, classId, tokenId) - if len(receiver) == 0 { - receiver, feeNumerator = k.GetDefaultRoyaltyInfo(ctx, classId) + // authorize + if srcOwner.String() != denom.Creator { + return errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to transfer denom %s", srcOwner.String(), denomId) } - royaltyAmount = salePrice.Mul(feeNumerator).Quo(k.GetFeeDenominator(ctx)) - return -} -// GetDefaultRoyaltyInfo returns the default royalty information of a class -func (k Keeper) GetDefaultRoyaltyInfo(ctx sdk.Context, classId string) (address string, royaltyAmount sdkmath.Uint) { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyDefaultRoyalty(classId)) - if len(bz) == 0 { - return "", sdkmath.Uint{} - } - royaltyInfo := types.RoyaltyInfo{} - k.cdc.MustMarshalJSON(&royaltyInfo) - return royaltyInfo.Address, royaltyInfo.RoyaltyFraction + // 1. Unmarshal denomInfo + var royaltyMetadata types.RoyaltyMetadata + if err := k.cdc.Unmarshal([]byte(denom.Data), &royaltyMetadata); err != nil { + return err + } + + if !royaltyMetadata.Enabled { + return types.ErrNotEnabledRoyalty + } + + royaltyMetadata.DefaultRoyaltyInfo = &types.RoyaltyInfo{ + Receiver: receiver, + RoyaltyFraction: feeNumerator, + } + + denomDataBytes, err := codectypes.NewAnyWithValue(&royaltyMetadata) + if err != nil { + return err + } + + denomMetadata := &types.DenomMetadata{ + Creator: denom.Creator, + Schema: denom.Schema, + MintRestricted: denom.MintRestricted, + UpdateRestricted: denom.UpdateRestricted, + Data: denomDataBytes.String(), + } + data, err := codectypes.NewAnyWithValue(denomMetadata) + if err != nil { + return err + } + class := nft.Class{ + Id: denom.Id, + Name: denom.Name, + Symbol: denom.Symbol, + Data: data, + + Description: denom.Description, + Uri: denom.Uri, + UriHash: denom.UriHash, + } + return k.nk.UpdateClass(ctx, class) } -// GetTokenRoyaltyInfo returns the royalty information of a token under a class -func (k Keeper) GetTokenRoyaltyInfo(ctx sdk.Context, classId string, tokenId string) (address string, royaltyAmount sdkmath.Uint) { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyTokenRoyalty(classId, tokenId)) - if len(bz) == 0 { - return "", sdkmath.Uint{} - } - royaltyInfo := types.RoyaltyInfo{} - k.cdc.MustMarshalJSON(&royaltyInfo) - return royaltyInfo.Address, royaltyInfo.RoyaltyFraction +// SaveTokenRoyalty sets the royalty information of a token under a class +func (k Keeper) SaveTokenRoyalty(ctx sdk.Context, denomId string, tokenId string, receiver string, feeNumerator sdkmath.Uint, owner sdk.AccAddress) error { + // just the owner of NFT can edit + if err := k.Authorize(ctx, denomId, tokenId, owner); err != nil { + return err + } + + nftM, err := k.GetNFT(ctx, denomId, tokenId) + if err != nil { + return errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) + } + + srcNftData := nftM.GetData() + var royaltyInfo types.RoyaltyInfo + if err := k.cdc.Unmarshal([]byte(srcNftData), &royaltyInfo); err != nil { + return err + } + royaltyInfo.Receiver = receiver + royaltyInfo.RoyaltyFraction = feeNumerator + + dstData, err := codectypes.NewAnyWithValue(&royaltyInfo) + if err != nil { + return err + } + + // modify nftMetadata + return k.UpdateNFT( + ctx, + denomId, + nftM.GetID(), + nftM.GetName(), + nftM.GetURI(), + nftM.GetURIHash(), + dstData.String(), + nftM.GetOwner(), + ) } -// SetDefaultRoyalty sets the default royalty information of a class -func (k Keeper) SetDefaultRoyalty(ctx sdk.Context, classId string, receiver string, feeNumerator sdkmath.Uint) { - store := ctx.KVStore(k.storeKey) +// RemoveTokenRoyalty deletes the royalty information of a token under a class +func (k Keeper) RemoveTokenRoyalty(ctx sdk.Context, denomId string, tokenId string, owner sdk.AccAddress) error { + // just the owner of NFT can edit + if err := k.Authorize(ctx, denomId, tokenId, owner); err != nil { + return err + } - royaltyInfo := types.RoyaltyInfo{ - Address: receiver, - RoyaltyFraction: feeNumerator, + nftM, err := k.GetNFT(ctx, denomId, tokenId) + if err != nil { + return errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) + } + + srcNftData := nftM.GetData() + var royaltyInfo types.RoyaltyInfo + if err := k.cdc.Unmarshal([]byte(srcNftData), &royaltyInfo); err != nil { + return err } - bz := k.cdc.MustMarshal(&royaltyInfo) - store.Set(types.KeyDefaultRoyalty(classId), bz) + // modify nftMetadata + return k.UpdateNFT( + ctx, + denomId, + nftM.GetID(), + nftM.GetName(), + nftM.GetURI(), + nftM.GetURIHash(), + "", + nftM.GetOwner(), + ) + } -// SetTokenRoyalty sets the royalty information of a token under a class -func (k Keeper) SetTokenRoyalty(ctx sdk.Context, classId string, tokenId string, receiver string, feeNumerator sdkmath.Uint) { - store := ctx.KVStore(k.storeKey) +// RemoveDefaultRoyalty deletes the default royalty information of a class +func (k Keeper) RemoveDefaultRoyalty(ctx sdk.Context, denomId string, srcOwner sdk.AccAddress) error { - royaltyInfo := types.RoyaltyInfo{ - Address: receiver, - RoyaltyFraction: feeNumerator, + denom, err := k.GetDenomInfo(ctx, denomId) + if err != nil { + return err } - bz := k.cdc.MustMarshal(&royaltyInfo) - store.Set(types.KeyTokenRoyalty(classId, tokenId), bz) + // authorize + if srcOwner.String() != denom.Creator { + return errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to transfer denom %s", srcOwner.String(), denomId) + } + + // 1. Unmarshal denomInfo + var royaltyMetadata types.RoyaltyMetadata + if err := k.cdc.Unmarshal([]byte(denom.Data), &royaltyMetadata); err != nil { + return err + } + + if !royaltyMetadata.Enabled { + return types.ErrNotEnabledRoyalty + } + + royaltyMetadata.DefaultRoyaltyInfo = nil + royaltyMetadata.Enabled = false + denomDataBytes, err := codectypes.NewAnyWithValue(&royaltyMetadata) + if err != nil { + return err + } + + denomMetadata := &types.DenomMetadata{ + Creator: denom.Creator, + Schema: denom.Schema, + MintRestricted: denom.MintRestricted, + UpdateRestricted: denom.UpdateRestricted, + Data: denomDataBytes.String(), + } + data, err := codectypes.NewAnyWithValue(denomMetadata) + if err != nil { + return err + } + class := nft.Class{ + Id: denom.Id, + Name: denom.Name, + Symbol: denom.Symbol, + Data: data, + + Description: denom.Description, + Uri: denom.Uri, + UriHash: denom.UriHash, + } + return k.nk.UpdateClass(ctx, class) +} + +// GetFeeDenominator returns the denominator of the fee +func (k Keeper) GetFeeDenominator(ctx sdk.Context) (feeNumerator sdkmath.Uint) { + feeNumerator = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(DefaultFeeDenominator)) + return +} + +// GetRoyaltyInfo returns the royalty information of a token under a class +func (k Keeper) GetRoyaltyInfo(ctx sdk.Context, denomId string, nftId string, salePrice sdkmath.Uint) (string, sdkmath.Uint, error) { + + var receiver string + var feeNumerator, royaltyAmount sdkmath.Uint + var err error + receiver, feeNumerator, err = k.GetTokenRoyaltyInfo(ctx, denomId, nftId) + if len(receiver) == 0 { + receiver, feeNumerator, err = k.GetDefaultRoyaltyInfo(ctx, denomId) + if err != nil { + return "", sdkmath.Uint{}, err + } + } + royaltyAmount = salePrice.Mul(feeNumerator).Quo(k.GetFeeDenominator(ctx)) + return receiver, royaltyAmount, nil } -// ResetTokenRoyalty deletes the royalty information of a token under a class -func (k Keeper) ResetTokenRoyalty(ctx sdk.Context, classId string, tokenId string) { - store := ctx.KVStore(k.storeKey) - store.Delete(types.KeyTokenRoyalty(classId, tokenId)) +// GetDefaultRoyaltyInfo returns the default royalty information of a class +func (k Keeper) GetDefaultRoyaltyInfo(ctx sdk.Context, denomId string) (string, sdkmath.Uint, error) { + denom, err := k.GetDenomInfo(ctx, denomId) + if err != nil { + return "", sdkmath.Uint{}, err + } + var royaltyMetadata types.RoyaltyMetadata + if err := k.cdc.Unmarshal([]byte(denom.Data), &royaltyMetadata); err != nil { + return "", sdkmath.Uint{}, err + } + + if !royaltyMetadata.Enabled { + return "", sdkmath.Uint{}, types.ErrNotEnabledRoyalty + } + return royaltyMetadata.DefaultRoyaltyInfo.Receiver, royaltyMetadata.DefaultRoyaltyInfo.RoyaltyFraction, nil + } -// DeleteDefaultRoyalty deletes the default royalty information of a class -func (k Keeper) DeleteDefaultRoyalty(ctx sdk.Context, classId string) { - store := ctx.KVStore(k.storeKey) - store.Delete(types.KeyDefaultRoyalty(classId)) +// GetTokenRoyaltyInfo returns the royalty information of a token under a class +func (k Keeper) GetTokenRoyaltyInfo(ctx sdk.Context, denomId string, tokenId string) (string, sdkmath.Uint, error) { + nftM, err := k.GetNFT(ctx, denomId, tokenId) + if err != nil { + return "", sdkmath.Uint{}, errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) + } + nftData := nftM.GetData() + var royaltyInfo types.RoyaltyInfo + if err := k.cdc.Unmarshal([]byte(nftData), &royaltyInfo); err != nil { + return "", sdkmath.Uint{}, err + } + return royaltyInfo.Receiver, royaltyInfo.RoyaltyFraction, nil } diff --git a/modules/nft/keeper/royalty_test.go b/modules/nft/keeper/royalty_test.go new file mode 100644 index 00000000..b55569d4 --- /dev/null +++ b/modules/nft/keeper/royalty_test.go @@ -0,0 +1 @@ +package keeper diff --git a/modules/nft/types/errors.go b/modules/nft/types/errors.go index cf468fd3..2b27d329 100644 --- a/modules/nft/types/errors.go +++ b/modules/nft/types/errors.go @@ -17,6 +17,6 @@ var ( ErrInvalidTokenID = sdkerrors.Register(ModuleName, 17, "invalid nft id") ErrInvalidTokenURI = sdkerrors.Register(ModuleName, 18, "invalid nft uri") - ErrEmptyClassId = errorsmod.Register(ModuleName, 21, "class id can't be empty") - ErrEmptyTokenId = errorsmod.Register(ModuleName, 22, "token id can't be empty") + ErrNotEnabledRoyalty = errorsmod.Register(ModuleName, 21, "royalty feature is not enabled") + ErrNullDefaultRoyaltyInfo = errorsmod.Register(ModuleName, 22, "default royalty in is null") ) diff --git a/modules/nft/types/events.go b/modules/nft/types/events.go index 2903321e..cac88d99 100644 --- a/modules/nft/types/events.go +++ b/modules/nft/types/events.go @@ -20,3 +20,10 @@ var ( AttributeKeyDenomID = "denom_id" AttributeKeyDenomName = "denom_name" ) + +var ( + EventTypeSetDefaultRoyalty = "set_default_royalty" + EventTypeSetTokenRoyalty = "set_token_royalty" + EventTypeResetTokenRoyalty = "reset_token_royalty" + EventTypeDeleteDefaultRoyalty = "delete_default_royalty" +) diff --git a/modules/nft/types/nft.pb.go b/modules/nft/types/nft.pb.go index df09b28b..db8953af 100644 --- a/modules/nft/types/nft.pb.go +++ b/modules/nft/types/nft.pb.go @@ -158,8 +158,6 @@ type DenomMetadata struct { MintRestricted bool `protobuf:"varint,3,opt,name=mint_restricted,json=mintRestricted,proto3" json:"mint_restricted,omitempty"` UpdateRestricted bool `protobuf:"varint,4,opt,name=update_restricted,json=updateRestricted,proto3" json:"update_restricted,omitempty"` Data string `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` - // royalty options - RoyaltyEnabled bool `protobuf:"varint,6,opt,name=royalty_enabled,json=royaltyEnabled,proto3" json:"royalty_enabled,omitempty"` } func (m *DenomMetadata) Reset() { *m = DenomMetadata{} } @@ -325,49 +323,47 @@ func init() { func init() { proto.RegisterFile("nft/nft.proto", fileDescriptor_fe8ab7e15b7f0646) } var fileDescriptor_fe8ab7e15b7f0646 = []byte{ - // 657 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6a, 0xdb, 0x4a, - 0x14, 0xb5, 0x64, 0x39, 0xb2, 0xaf, 0xe2, 0x24, 0x6f, 0x9e, 0x79, 0x28, 0x6f, 0x21, 0x05, 0x53, - 0x48, 0xa0, 0xc5, 0xa6, 0x29, 0x74, 0x91, 0xee, 0xd4, 0x34, 0xd4, 0x85, 0xa6, 0x20, 0xd2, 0x4d, - 0x37, 0x66, 0xac, 0x19, 0xc7, 0x43, 0x25, 0x8d, 0xd1, 0x8c, 0x09, 0xee, 0x4f, 0xb4, 0xd0, 0x1f, - 0xe8, 0x47, 0xf4, 0x23, 0xb2, 0xcc, 0xb2, 0x74, 0x61, 0x5a, 0x67, 0xd3, 0x75, 0xbe, 0xa0, 0x68, - 0x34, 0x72, 0x64, 0xd2, 0x42, 0x76, 0xf7, 0x9e, 0x7b, 0x66, 0xee, 0xb9, 0x47, 0x57, 0x03, 0xed, - 0x74, 0x2c, 0xfb, 0xe9, 0x58, 0xf6, 0xa6, 0x19, 0x97, 0x1c, 0x39, 0x2c, 0x63, 0x22, 0xe1, 0xa4, - 0x97, 0x8e, 0xe5, 0xff, 0x9d, 0x73, 0x7e, 0xce, 0x15, 0xde, 0xcf, 0xa3, 0x82, 0xd2, 0xfd, 0x6c, - 0x80, 0x1d, 0x60, 0x41, 0x4f, 0x4f, 0xce, 0xd0, 0x16, 0x98, 0x8c, 0xb8, 0xc6, 0x9e, 0x71, 0xd0, - 0x0a, 0x4d, 0x46, 0x10, 0x02, 0x2b, 0xc5, 0x09, 0x75, 0x4d, 0x85, 0xa8, 0x18, 0xed, 0x42, 0x7d, - 0x96, 0x31, 0xb7, 0x9e, 0x43, 0x81, 0xbd, 0x5c, 0xf8, 0xf5, 0xb7, 0xe1, 0x20, 0xcc, 0xb1, 0x9c, - 0x4e, 0xb0, 0xc4, 0xae, 0x55, 0xd0, 0xf3, 0x18, 0x75, 0xa0, 0xc1, 0x2f, 0x52, 0x9a, 0xb9, 0x0d, - 0x05, 0x16, 0x09, 0xda, 0x85, 0xe6, 0x2c, 0x63, 0xc3, 0x09, 0x16, 0x13, 0x77, 0x43, 0x15, 0xec, - 0x59, 0xc6, 0x5e, 0x62, 0x31, 0x39, 0xb2, 0x7e, 0x7d, 0xf1, 0x8d, 0xee, 0x33, 0x70, 0x4e, 0x4f, - 0xce, 0x5e, 0x53, 0x89, 0xd5, 0x2d, 0xa5, 0x10, 0xa3, 0x22, 0xa4, 0xec, 0x66, 0xde, 0x76, 0xd3, - 0x87, 0xbf, 0x9a, 0xd0, 0x38, 0xa6, 0x29, 0x4f, 0xee, 0x35, 0xd0, 0x7f, 0xb0, 0x21, 0xa2, 0x09, - 0x4d, 0x70, 0x31, 0x53, 0xa8, 0x33, 0xe4, 0x82, 0x1d, 0x65, 0x14, 0x4b, 0x9e, 0xe9, 0x81, 0xca, - 0x54, 0x9d, 0x98, 0x27, 0x23, 0x1e, 0xeb, 0xa1, 0x74, 0x86, 0xf6, 0x61, 0x3b, 0x61, 0xa9, 0x1c, - 0x66, 0x54, 0xc8, 0x8c, 0x45, 0x92, 0x12, 0x35, 0x5c, 0x33, 0xdc, 0xca, 0xe1, 0x70, 0x85, 0xa2, - 0x87, 0xf0, 0xcf, 0x6c, 0x4a, 0xb0, 0xa4, 0x55, 0xaa, 0xad, 0xa8, 0x3b, 0x45, 0xa1, 0x42, 0xde, - 0x03, 0x87, 0x50, 0x11, 0x65, 0x6c, 0x2a, 0x19, 0x4f, 0xdd, 0xa6, 0x6a, 0x59, 0x85, 0xd0, 0x4e, - 0xf1, 0x49, 0x5a, 0xaa, 0xa2, 0xbe, 0x44, 0xd5, 0x5f, 0x58, 0xf3, 0x77, 0x65, 0x9b, 0x73, 0xc7, - 0xb6, 0xef, 0x06, 0xb4, 0x95, 0x6d, 0x2b, 0xdb, 0x2b, 0x16, 0x18, 0x77, 0x2d, 0x28, 0x4c, 0x33, - 0xd7, 0x4c, 0xfb, 0x83, 0x05, 0xf5, 0xfb, 0x5b, 0x60, 0xfd, 0xc5, 0x82, 0x52, 0x73, 0xa3, 0xb2, - 0x58, 0xfb, 0xb0, 0x9d, 0xf1, 0x39, 0x8e, 0xe5, 0x7c, 0x48, 0x53, 0x3c, 0x8a, 0x6f, 0xcd, 0xd6, - 0xf0, 0x8b, 0x02, 0xd5, 0xc3, 0x5d, 0xc0, 0xe6, 0xe0, 0xf8, 0x39, 0x8f, 0x63, 0x1a, 0x29, 0xcf, - 0x7a, 0xd0, 0x24, 0xf9, 0xac, 0xc3, 0x72, 0x3f, 0x82, 0x7f, 0x6f, 0x16, 0xfe, 0xf6, 0x1c, 0x27, - 0xf1, 0x51, 0xb7, 0xac, 0x74, 0x43, 0x5b, 0x85, 0x03, 0x82, 0x1e, 0x43, 0x4b, 0xf2, 0xf7, 0x34, - 0x1d, 0x32, 0x22, 0x5c, 0x73, 0xaf, 0x7e, 0xd0, 0x0a, 0x3a, 0x37, 0x0b, 0x7f, 0xa7, 0x38, 0xb0, - 0x2a, 0x75, 0xc3, 0xa6, 0x8a, 0x07, 0x44, 0xe8, 0xc6, 0x1f, 0x0d, 0x68, 0xbc, 0x51, 0x4b, 0xef, - 0x82, 0x8d, 0x09, 0xc9, 0xa8, 0x10, 0xa5, 0x9b, 0x3a, 0x45, 0x63, 0xd8, 0x62, 0x64, 0x18, 0xad, - 0xd4, 0x15, 0x1d, 0x9c, 0xc3, 0xdd, 0x5e, 0xe5, 0xff, 0xed, 0x55, 0xf5, 0x07, 0x0f, 0x2e, 0x17, - 0x7e, 0x6d, 0xb9, 0xf0, 0xdb, 0x55, 0x54, 0xdc, 0x2c, 0x7c, 0xa7, 0x50, 0xc4, 0x48, 0x24, 0xba, - 0x61, 0x9b, 0x91, 0x4a, 0x55, 0x2b, 0xfa, 0x00, 0xb0, 0x66, 0x44, 0x43, 0xcd, 0xa8, 0x34, 0x39, - 0x87, 0x68, 0xad, 0xa5, 0x5a, 0x87, 0xc0, 0xca, 0x7b, 0x85, 0x05, 0x0d, 0x3d, 0x05, 0x2b, 0x1d, - 0xcb, 0x52, 0x61, 0x67, 0x8d, 0xae, 0xdf, 0x91, 0x60, 0x53, 0x8b, 0xb3, 0x4e, 0x4f, 0xce, 0x44, - 0xa8, 0xf8, 0x45, 0xef, 0xe0, 0xd5, 0xe5, 0x4f, 0xaf, 0x76, 0xb9, 0xf4, 0x8c, 0xab, 0xa5, 0x67, - 0xfc, 0x58, 0x7a, 0xc6, 0xa7, 0x6b, 0xaf, 0x76, 0x75, 0xed, 0xd5, 0xbe, 0x5d, 0x7b, 0xb5, 0x77, - 0x8f, 0xce, 0x99, 0x9c, 0xcc, 0x46, 0xbd, 0x88, 0x27, 0xfd, 0xfc, 0xde, 0x94, 0xca, 0xbe, 0xbe, - 0xbf, 0x9f, 0x70, 0x32, 0x8b, 0xa9, 0xc8, 0x1f, 0xb7, 0xbe, 0x9c, 0x4f, 0xa9, 0x18, 0x6d, 0xa8, - 0x07, 0xec, 0xc9, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x09, 0x71, 0x4c, 0xf4, 0x04, 0x00, - 0x00, + // 635 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, + 0x10, 0x8e, 0x1d, 0xa7, 0x4e, 0xc6, 0x4d, 0xdb, 0x7f, 0xff, 0x08, 0xb9, 0x1c, 0xec, 0x2a, 0x42, + 0xa2, 0x12, 0x28, 0x11, 0x45, 0xe2, 0x50, 0x6e, 0xa6, 0xaa, 0x08, 0x12, 0x45, 0xb2, 0xca, 0x85, + 0x4b, 0xb4, 0xf5, 0x6e, 0x9a, 0x15, 0xb1, 0x37, 0xda, 0xdd, 0xa8, 0x2a, 0x2f, 0x01, 0x12, 0x2f, + 0xc0, 0x2b, 0x20, 0xf1, 0x10, 0x3d, 0xf6, 0xc8, 0x29, 0x82, 0xf4, 0xc2, 0xb9, 0x4f, 0x80, 0xbc, + 0x6b, 0x07, 0x47, 0x01, 0xa9, 0xb7, 0x99, 0x6f, 0xbe, 0xdd, 0xf9, 0xe6, 0x1b, 0x7b, 0xa1, 0x9d, + 0x8d, 0x54, 0x3f, 0x1b, 0xa9, 0xde, 0x54, 0x70, 0xc5, 0x91, 0xc7, 0x04, 0x93, 0x29, 0x27, 0xbd, + 0x6c, 0xa4, 0xee, 0x77, 0xce, 0xf9, 0x39, 0xd7, 0x78, 0x3f, 0x8f, 0x0c, 0xa5, 0xfb, 0xd9, 0x02, + 0x37, 0xc2, 0x92, 0x9e, 0x1c, 0x9f, 0xa2, 0x2d, 0xb0, 0x19, 0xf1, 0xad, 0x3d, 0x6b, 0xbf, 0x15, + 0xdb, 0x8c, 0x20, 0x04, 0x4e, 0x86, 0x53, 0xea, 0xdb, 0x1a, 0xd1, 0x31, 0xda, 0x85, 0xfa, 0x4c, + 0x30, 0xbf, 0x9e, 0x43, 0x91, 0xbb, 0x98, 0x87, 0xf5, 0xb7, 0xf1, 0x20, 0xce, 0xb1, 0x9c, 0x4e, + 0xb0, 0xc2, 0xbe, 0x63, 0xe8, 0x79, 0x8c, 0x3a, 0xd0, 0xe0, 0x17, 0x19, 0x15, 0x7e, 0x43, 0x83, + 0x26, 0x41, 0xbb, 0xd0, 0x9c, 0x09, 0x36, 0x1c, 0x63, 0x39, 0xf6, 0x37, 0x74, 0xc1, 0x9d, 0x09, + 0xf6, 0x12, 0xcb, 0xf1, 0xa1, 0xf3, 0xeb, 0x4b, 0x68, 0x75, 0x9f, 0x83, 0x77, 0x72, 0x7c, 0xfa, + 0x9a, 0x2a, 0xac, 0x6f, 0x29, 0x85, 0x58, 0x15, 0x21, 0x65, 0x37, 0xfb, 0x4f, 0xb7, 0xe2, 0xf0, + 0x37, 0x1b, 0x1a, 0x47, 0x34, 0xe3, 0xe9, 0x9d, 0x06, 0xba, 0x07, 0x1b, 0x32, 0x19, 0xd3, 0x14, + 0x9b, 0x99, 0xe2, 0x22, 0x43, 0x3e, 0xb8, 0x89, 0xa0, 0x58, 0x71, 0x51, 0x0c, 0x54, 0xa6, 0xfa, + 0xc4, 0x65, 0x7a, 0xc6, 0x27, 0xc5, 0x50, 0x45, 0x86, 0x1e, 0xc2, 0x76, 0xca, 0x32, 0x35, 0x14, + 0x54, 0x2a, 0xc1, 0x12, 0x45, 0x89, 0x1e, 0xae, 0x19, 0x6f, 0xe5, 0x70, 0xbc, 0x44, 0xd1, 0x23, + 0xf8, 0x6f, 0x36, 0x25, 0x58, 0xd1, 0x2a, 0xd5, 0xd5, 0xd4, 0x1d, 0x53, 0xa8, 0x90, 0xf7, 0xc0, + 0x23, 0x54, 0x26, 0x82, 0x4d, 0x15, 0xe3, 0x99, 0xdf, 0xd4, 0x2d, 0xab, 0x10, 0xda, 0x31, 0x2b, + 0x69, 0xe9, 0x8a, 0xde, 0x44, 0xd5, 0x5f, 0x58, 0xf1, 0x77, 0x69, 0x9b, 0xb7, 0x66, 0xdb, 0x57, + 0x0b, 0xda, 0xda, 0xb6, 0xa5, 0xed, 0x15, 0x0b, 0xac, 0x75, 0x0b, 0x8c, 0x69, 0xf6, 0x8a, 0x69, + 0x7f, 0xb1, 0xa0, 0x7e, 0x77, 0x0b, 0x9c, 0x7f, 0x58, 0x50, 0x6a, 0x6e, 0xac, 0x69, 0xbe, 0x80, + 0xcd, 0xc1, 0xd1, 0x0b, 0x3e, 0x99, 0xd0, 0x44, 0x5b, 0xd1, 0x83, 0x26, 0xc9, 0x47, 0x18, 0x96, + 0x6b, 0x8f, 0xfe, 0xbf, 0x9d, 0x87, 0xdb, 0x97, 0x38, 0x9d, 0x1c, 0x76, 0xcb, 0x4a, 0x37, 0x76, + 0x75, 0x38, 0x20, 0xe8, 0x09, 0xb4, 0x14, 0x7f, 0x4f, 0xb3, 0x21, 0x23, 0xd2, 0xb7, 0xf7, 0xea, + 0xfb, 0xad, 0xa8, 0x73, 0x3b, 0x0f, 0x77, 0xcc, 0x81, 0x65, 0xa9, 0x1b, 0x37, 0x75, 0x3c, 0x20, + 0xb2, 0x68, 0xfc, 0xd1, 0x82, 0xc6, 0x1b, 0xfd, 0x2d, 0xfb, 0xe0, 0x62, 0x42, 0x04, 0x95, 0xb2, + 0x34, 0xa9, 0x48, 0xd1, 0x08, 0xb6, 0x18, 0x19, 0x26, 0x4b, 0x75, 0xa6, 0x83, 0x77, 0xb0, 0xdb, + 0xab, 0xfc, 0x96, 0xbd, 0xaa, 0xfe, 0xe8, 0xc1, 0xd5, 0x3c, 0xac, 0x2d, 0xe6, 0x61, 0xbb, 0x8a, + 0xca, 0xdb, 0x79, 0xe8, 0x19, 0x45, 0x8c, 0x24, 0xb2, 0x1b, 0xb7, 0x19, 0xa9, 0x54, 0x0b, 0x45, + 0x1f, 0x00, 0x56, 0x8c, 0x68, 0xe8, 0x19, 0xb5, 0x26, 0xef, 0x00, 0xad, 0xb4, 0xd4, 0x5b, 0x8e, + 0x9c, 0xbc, 0x57, 0x6c, 0x68, 0xe8, 0x19, 0x38, 0xd9, 0x48, 0x95, 0x0a, 0x3b, 0x2b, 0xf4, 0xe2, + 0x79, 0x88, 0x36, 0x0b, 0x71, 0xce, 0xc9, 0xf1, 0xa9, 0x8c, 0x35, 0xdf, 0xf4, 0x8e, 0x5e, 0x5d, + 0xfd, 0x0c, 0x6a, 0x57, 0x8b, 0xc0, 0xba, 0x5e, 0x04, 0xd6, 0x8f, 0x45, 0x60, 0x7d, 0xba, 0x09, + 0x6a, 0xd7, 0x37, 0x41, 0xed, 0xfb, 0x4d, 0x50, 0x7b, 0xf7, 0xf8, 0x9c, 0xa9, 0xf1, 0xec, 0xac, + 0x97, 0xf0, 0xb4, 0x9f, 0xdf, 0x9b, 0x51, 0xd5, 0x2f, 0xee, 0xef, 0xa7, 0x9c, 0xcc, 0x26, 0x54, + 0xe6, 0x6f, 0x56, 0x5f, 0x5d, 0x4e, 0xa9, 0x3c, 0xdb, 0xd0, 0xef, 0xd2, 0xd3, 0xdf, 0x01, 0x00, + 0x00, 0xff, 0xff, 0x4a, 0x49, 0x33, 0x49, 0xcb, 0x04, 0x00, 0x00, } func (this *BaseNFT) Equal(that interface{}) bool { @@ -524,9 +520,6 @@ func (this *DenomMetadata) Equal(that interface{}) bool { if this.Data != that1.Data { return false } - if this.RoyaltyEnabled != that1.RoyaltyEnabled { - return false - } return true } func (this *IDCollection) Equal(that interface{}) bool { @@ -853,16 +846,6 @@ func (m *DenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.RoyaltyEnabled { - i-- - if m.RoyaltyEnabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x30 - } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -1173,9 +1156,6 @@ func (m *DenomMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovNft(uint64(l)) } - if m.RoyaltyEnabled { - n += 2 - } return n } @@ -2139,26 +2119,6 @@ func (m *DenomMetadata) Unmarshal(dAtA []byte) error { } m.Data = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyEnabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNft - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.RoyaltyEnabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipNft(dAtA[iNdEx:]) diff --git a/modules/nft/types/query.pb.go b/modules/nft/types/query.pb.go index 54d3cbcf..d9c029be 100644 --- a/modules/nft/types/query.pb.go +++ b/modules/nft/types/query.pb.go @@ -716,8 +716,8 @@ func (m *MsgFeeDenominatorResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgFeeDenominatorResponse proto.InternalMessageInfo type MsgRoyaltyInfoRequest struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` - TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` + NftId string `protobuf:"bytes,2,opt,name=nft_id,json=nftId,proto3" json:"nft_id,omitempty"` SalePrice cosmossdk_io_math.Uint `protobuf:"bytes,3,opt,name=sale_price,json=salePrice,proto3,customtype=cosmossdk.io/math.Uint" json:"sale_price"` } @@ -754,16 +754,16 @@ func (m *MsgRoyaltyInfoRequest) XXX_DiscardUnknown() { var xxx_messageInfo_MsgRoyaltyInfoRequest proto.InternalMessageInfo -func (m *MsgRoyaltyInfoRequest) GetClassId() string { +func (m *MsgRoyaltyInfoRequest) GetDenomId() string { if m != nil { - return m.ClassId + return m.DenomId } return "" } -func (m *MsgRoyaltyInfoRequest) GetTokenId() string { +func (m *MsgRoyaltyInfoRequest) GetNftId() string { if m != nil { - return m.TokenId + return m.NftId } return "" } @@ -814,7 +814,7 @@ func (m *MsgRoyaltyInfoResponse) GetReceiver() string { } type MsgDefaultRoyaltyInfoRequest struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` } func (m *MsgDefaultRoyaltyInfoRequest) Reset() { *m = MsgDefaultRoyaltyInfoRequest{} } @@ -850,9 +850,9 @@ func (m *MsgDefaultRoyaltyInfoRequest) XXX_DiscardUnknown() { var xxx_messageInfo_MsgDefaultRoyaltyInfoRequest proto.InternalMessageInfo -func (m *MsgDefaultRoyaltyInfoRequest) GetClassId() string { +func (m *MsgDefaultRoyaltyInfoRequest) GetDenomId() string { if m != nil { - return m.ClassId + return m.DenomId } return "" } @@ -903,8 +903,8 @@ func (m *MsgDefaultRoyaltyInfoResponse) GetReceiver() string { } type MsgTokenRoyaltyInfoRequest struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` - TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` + NftId string `protobuf:"bytes,2,opt,name=nft_id,json=nftId,proto3" json:"nft_id,omitempty"` } func (m *MsgTokenRoyaltyInfoRequest) Reset() { *m = MsgTokenRoyaltyInfoRequest{} } @@ -940,16 +940,16 @@ func (m *MsgTokenRoyaltyInfoRequest) XXX_DiscardUnknown() { var xxx_messageInfo_MsgTokenRoyaltyInfoRequest proto.InternalMessageInfo -func (m *MsgTokenRoyaltyInfoRequest) GetClassId() string { +func (m *MsgTokenRoyaltyInfoRequest) GetDenomId() string { if m != nil { - return m.ClassId + return m.DenomId } return "" } -func (m *MsgTokenRoyaltyInfoRequest) GetTokenId() string { +func (m *MsgTokenRoyaltyInfoRequest) GetNftId() string { if m != nil { - return m.TokenId + return m.NftId } return "" } @@ -1025,74 +1025,74 @@ func init() { func init() { proto.RegisterFile("nft/query.proto", fileDescriptor_ce02d034d3adf2e9) } var fileDescriptor_ce02d034d3adf2e9 = []byte{ - // 1065 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x5f, 0x4f, 0xdb, 0x56, - 0x14, 0xc7, 0xa1, 0x40, 0x38, 0xac, 0x85, 0x5e, 0x28, 0x0d, 0x2e, 0x4d, 0x22, 0xd3, 0x02, 0x65, - 0x9d, 0xbd, 0xb2, 0x87, 0x69, 0x93, 0x36, 0x69, 0xa1, 0xcb, 0x94, 0x07, 0xda, 0xce, 0x63, 0x7b, - 0xa8, 0x26, 0x21, 0x93, 0x5c, 0x1b, 0x0b, 0xc7, 0x37, 0xe4, 0xde, 0x74, 0x8a, 0x50, 0x35, 0x69, - 0xaa, 0xf6, 0xb4, 0x49, 0x48, 0x7b, 0xdc, 0x27, 0xd9, 0x37, 0xe8, 0x63, 0xa5, 0xbd, 0x4c, 0x7b, - 0x88, 0x26, 0xe8, 0x27, 0xe8, 0x27, 0x98, 0xee, 0x1f, 0x27, 0x76, 0x9c, 0x10, 0x16, 0xa1, 0xbd, - 0xe5, 0xfa, 0xfe, 0xce, 0xf9, 0xfd, 0xee, 0xef, 0xf8, 0x9e, 0xe3, 0xc0, 0x7c, 0xe8, 0x32, 0xeb, - 0xb8, 0x85, 0x9b, 0x6d, 0xb3, 0xd1, 0x24, 0x8c, 0xa0, 0x39, 0xbf, 0xe9, 0xd3, 0x3a, 0xa9, 0x99, - 0xa1, 0xcb, 0xf4, 0x25, 0x8f, 0x78, 0x44, 0x3c, 0xb7, 0xf8, 0x2f, 0x09, 0xd1, 0x57, 0x3d, 0x42, - 0xbc, 0x00, 0x5b, 0x4e, 0xc3, 0xb7, 0x9c, 0x30, 0x24, 0xcc, 0x61, 0x3e, 0x09, 0xa9, 0xda, 0xbd, - 0xce, 0x33, 0x86, 0x2e, 0x53, 0xcb, 0xad, 0x2a, 0xa1, 0x75, 0x42, 0xad, 0x03, 0x87, 0x62, 0x49, - 0x64, 0xbd, 0x78, 0x74, 0x80, 0x99, 0xf3, 0xc8, 0x6a, 0x38, 0x9e, 0x1f, 0x8a, 0x58, 0x89, 0x35, - 0x9e, 0x03, 0xfa, 0x9a, 0x23, 0xbe, 0x69, 0x35, 0x1a, 0x41, 0xdb, 0xc6, 0xc7, 0x2d, 0x4c, 0x19, - 0x32, 0x21, 0x5b, 0xc3, 0x21, 0xa9, 0xef, 0xfb, 0xb5, 0x9c, 0x56, 0xd4, 0x36, 0x67, 0x4b, 0x8b, - 0xef, 0x3a, 0x85, 0xf9, 0xb6, 0x53, 0x0f, 0x3e, 0x35, 0xa2, 0x1d, 0xc3, 0x9e, 0x11, 0x3f, 0x2b, - 0x35, 0xb4, 0x04, 0x53, 0xe4, 0x87, 0x10, 0x37, 0x73, 0x19, 0x0e, 0xb6, 0xe5, 0xc2, 0xf8, 0x00, - 0x16, 0x13, 0xb9, 0x69, 0x83, 0x84, 0x14, 0xa3, 0x65, 0x98, 0x76, 0xea, 0xa4, 0x15, 0x32, 0x91, - 0xfa, 0x9a, 0xad, 0x56, 0xc6, 0x1f, 0x1a, 0xdc, 0x16, 0xf8, 0x27, 0xe5, 0x3d, 0xfa, 0xd4, 0x7d, - 0xca, 0x73, 0x8c, 0x2b, 0x68, 0x3d, 0x21, 0xa8, 0xb4, 0xf0, 0xae, 0x53, 0x78, 0x4f, 0x82, 0xa5, - 0x34, 0x25, 0x11, 0x95, 0x01, 0x7a, 0x96, 0xe4, 0x26, 0x8b, 0xda, 0xe6, 0xdc, 0xf6, 0xba, 0x29, - 0xfd, 0x33, 0xb9, 0x7f, 0xa6, 0x2c, 0x94, 0xf2, 0xcf, 0x7c, 0xe6, 0x78, 0x58, 0x69, 0xb2, 0x63, - 0x91, 0xc6, 0xaf, 0x1a, 0xe4, 0xd2, 0xda, 0xd5, 0x81, 0x37, 0x23, 0x31, 0x9a, 0xc8, 0x8f, 0xcc, - 0x58, 0xbd, 0x4d, 0x09, 0x55, 0x72, 0xbe, 0x4a, 0xc8, 0xc9, 0x08, 0xf8, 0xc6, 0x48, 0x39, 0x92, - 0x26, 0xa1, 0xe7, 0x54, 0x83, 0x65, 0xa1, 0x67, 0x87, 0x04, 0x01, 0xae, 0xf2, 0x67, 0xe3, 0x5a, - 0x59, 0x1e, 0xa0, 0x69, 0x1c, 0x8b, 0x7e, 0x8f, 0xca, 0x1b, 0x97, 0xa4, 0x1c, 0xfa, 0x18, 0xa0, - 0xda, 0x7d, 0xaa, 0x6c, 0xba, 0x9d, 0xb0, 0x29, 0x16, 0x14, 0x83, 0x5e, 0x9d, 0x61, 0x3b, 0x70, - 0x53, 0x88, 0x7b, 0xcc, 0x4f, 0x3d, 0xa6, 0x55, 0xc6, 0xe7, 0xea, 0x32, 0xa9, 0x24, 0xbd, 0xf2, - 0x0b, 0xc0, 0xc0, 0xf2, 0x4b, 0xa8, 0x04, 0x18, 0xdf, 0xc7, 0xe3, 0x69, 0xa4, 0x22, 0x59, 0x00, - 0x6d, 0xec, 0x02, 0x9c, 0x6a, 0xea, 0x3e, 0x46, 0xe9, 0x95, 0xbe, 0x0f, 0x61, 0x5a, 0xd0, 0xd3, - 0x9c, 0x56, 0x9c, 0x1c, 0x2c, 0xb0, 0x74, 0xed, 0x75, 0xa7, 0x30, 0x61, 0x2b, 0xdc, 0xd5, 0xb9, - 0x7e, 0x0c, 0xf3, 0xd1, 0xad, 0x19, 0xf7, 0xf5, 0x34, 0x21, 0xcb, 0xc8, 0x11, 0x0e, 0x39, 0x3e, - 0xd3, 0x8f, 0x8f, 0x76, 0x0c, 0x7b, 0x46, 0xfc, 0xac, 0xd4, 0x8c, 0x1d, 0x58, 0xe8, 0x51, 0x2a, - 0x07, 0x2c, 0x98, 0x0c, 0x5d, 0xa6, 0xac, 0x5d, 0x4a, 0x1c, 0xbf, 0xe4, 0x50, 0xfc, 0xa4, 0xbc, - 0x57, 0x9a, 0x39, 0xeb, 0x14, 0x26, 0x79, 0x0c, 0x47, 0x1a, 0x3a, 0xe4, 0x76, 0xa9, 0x57, 0xc6, - 0x58, 0xb8, 0xc3, 0x4f, 0x43, 0xa2, 0x56, 0x65, 0xb8, 0xb0, 0x32, 0x60, 0x4f, 0x31, 0x55, 0x60, - 0xa1, 0x49, 0xda, 0x4e, 0xc0, 0xda, 0xfb, 0x6e, 0xd3, 0xe9, 0xbd, 0xee, 0xb3, 0xa5, 0x3c, 0x77, - 0xf8, 0xef, 0x4e, 0x61, 0x59, 0xda, 0x48, 0x6b, 0x47, 0xa6, 0x4f, 0xac, 0xba, 0xc3, 0x0e, 0xcd, - 0x6f, 0xfd, 0x90, 0xd9, 0xf3, 0x2a, 0xae, 0xac, 0xc2, 0x8c, 0x5f, 0x34, 0xb8, 0xb5, 0x4b, 0x3d, - 0x5b, 0x3e, 0xae, 0x84, 0x2e, 0x89, 0x2c, 0x5c, 0x81, 0x6c, 0x35, 0x70, 0x28, 0xed, 0x5a, 0x68, - 0xcf, 0x88, 0x75, 0xa5, 0xc6, 0xb7, 0x92, 0x6e, 0x75, 0x8d, 0x41, 0x9f, 0x01, 0x50, 0x27, 0xc0, - 0xfb, 0x8d, 0xa6, 0x5f, 0xc5, 0xa2, 0x15, 0x8e, 0x16, 0x35, 0xcb, 0x23, 0x9e, 0xf1, 0x00, 0xe3, - 0x04, 0x96, 0xfb, 0xd5, 0xa8, 0x33, 0xeb, 0x90, 0x6d, 0xe2, 0x2a, 0xf6, 0x5f, 0xa8, 0x0e, 0x38, - 0x6b, 0x77, 0xd7, 0xe8, 0x4b, 0xb8, 0x11, 0xf9, 0xa1, 0x66, 0x42, 0xe6, 0x52, 0xc4, 0xd7, 0x55, - 0xd4, 0x17, 0x72, 0x74, 0x7c, 0x02, 0xab, 0xbb, 0xd4, 0x7b, 0x8c, 0x5d, 0xa7, 0x15, 0xb0, 0xff, - 0xe4, 0x88, 0xf1, 0xb3, 0x06, 0x77, 0x87, 0xc4, 0x5e, 0x42, 0xff, 0xa0, 0x7a, 0x66, 0xc6, 0xab, - 0xa7, 0x0d, 0xfa, 0x2e, 0xf5, 0xf6, 0x78, 0x35, 0xae, 0xaa, 0xa6, 0xc6, 0x2b, 0x0d, 0xee, 0x0c, - 0x4c, 0xfa, 0xbf, 0x1e, 0x6d, 0xfb, 0x6d, 0x16, 0xa6, 0xc4, 0xa5, 0x43, 0x3f, 0xc2, 0xb4, 0xfc, - 0x1a, 0x40, 0x85, 0xc4, 0x35, 0x4b, 0x7f, 0x83, 0xe8, 0xc5, 0xe1, 0x00, 0xa9, 0xde, 0xd8, 0xfe, - 0xe9, 0xcf, 0xb7, 0xbf, 0x65, 0x1e, 0xa2, 0x2d, 0x4b, 0x21, 0xf9, 0x37, 0x90, 0xd5, 0x9b, 0x0e, - 0xd4, 0x3a, 0x89, 0x1a, 0xc6, 0x4b, 0x8b, 0x4a, 0xda, 0x16, 0xcc, 0xc5, 0x46, 0x34, 0xba, 0x97, - 0x26, 0x49, 0x7f, 0x7d, 0xe8, 0xf7, 0x47, 0xa0, 0x94, 0x9e, 0x15, 0xa1, 0x67, 0x11, 0xdd, 0x4c, - 0xe8, 0x09, 0x5d, 0x46, 0xd1, 0x2b, 0x0d, 0xa0, 0x37, 0xc2, 0xd0, 0x5a, 0x3a, 0x61, 0x6a, 0x50, - 0xeb, 0xf7, 0x2e, 0x06, 0x29, 0xd2, 0xf7, 0x05, 0xe9, 0x7d, 0xb4, 0x76, 0x09, 0x13, 0x50, 0x03, - 0xa6, 0x44, 0x57, 0x42, 0xf9, 0x74, 0xee, 0xf8, 0xe4, 0xd3, 0x0b, 0x43, 0xf7, 0x15, 0xed, 0xba, - 0xa0, 0x2d, 0xa2, 0x7c, 0x82, 0x56, 0xce, 0x87, 0x38, 0xe3, 0x21, 0x4c, 0xcb, 0x71, 0x83, 0x86, - 0xa5, 0xa4, 0x17, 0x14, 0x3c, 0x39, 0xa9, 0x8c, 0x3b, 0x82, 0xf4, 0x16, 0x5a, 0x1c, 0x40, 0x8a, - 0x28, 0xf0, 0xfe, 0x8c, 0x56, 0x07, 0xd6, 0x2a, 0xe2, 0xb8, 0x3b, 0x64, 0x57, 0x11, 0x58, 0x82, - 0xe0, 0x01, 0xda, 0x48, 0x55, 0x30, 0xfe, 0x2a, 0x9d, 0x44, 0xd7, 0xed, 0x25, 0xda, 0x87, 0x1b, - 0xc9, 0x4e, 0x8f, 0x92, 0xef, 0xca, 0xb0, 0x29, 0xa1, 0xaf, 0x8f, 0x82, 0xa9, 0x1b, 0xfa, 0x1d, - 0xcc, 0xc5, 0x2e, 0x2e, 0x32, 0xfa, 0xc3, 0xd2, 0xad, 0x42, 0x5f, 0xbb, 0x10, 0xa3, 0xf2, 0x1e, - 0x01, 0x4a, 0xb7, 0x3c, 0xf4, 0xa0, 0x3f, 0x74, 0x68, 0x4b, 0xd5, 0xb7, 0x2e, 0x03, 0x55, 0x64, - 0x18, 0x16, 0xfa, 0x5b, 0x10, 0xda, 0xe8, 0x8f, 0x1f, 0xd2, 0xf9, 0xf4, 0xcd, 0xd1, 0x40, 0x49, - 0x53, 0x2a, 0xbf, 0x3e, 0xcb, 0x6b, 0x6f, 0xce, 0xf2, 0xda, 0x3f, 0x67, 0x79, 0xed, 0xf4, 0x3c, - 0x3f, 0xf1, 0xe6, 0x3c, 0x3f, 0xf1, 0xd7, 0x79, 0x7e, 0xe2, 0xf9, 0x43, 0xcf, 0x67, 0x87, 0xad, - 0x03, 0xb3, 0x4a, 0xea, 0xa2, 0xb2, 0x21, 0x66, 0xdd, 0x0a, 0xd7, 0x49, 0xad, 0x15, 0x60, 0x2a, - 0x2a, 0xcd, 0xda, 0x0d, 0x4c, 0x0f, 0xa6, 0xc5, 0x5f, 0xa3, 0x8f, 0xfe, 0x0d, 0x00, 0x00, 0xff, - 0xff, 0xfa, 0x61, 0x5c, 0x23, 0xa9, 0x0d, 0x00, 0x00, + // 1064 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x4f, 0x1b, 0x47, + 0x14, 0x67, 0x4d, 0x30, 0xf0, 0x68, 0x02, 0x19, 0xfe, 0xc4, 0x6c, 0x88, 0x8d, 0x86, 0x04, 0x08, + 0x4d, 0x77, 0x1b, 0x7a, 0xa8, 0x5a, 0xa9, 0x95, 0x6a, 0x52, 0x57, 0x1c, 0x20, 0xe9, 0x96, 0xf6, + 0x10, 0x55, 0x42, 0x8b, 0x3d, 0xbb, 0xac, 0xb0, 0x67, 0x8c, 0x67, 0x9c, 0xca, 0x42, 0x51, 0xa5, + 0x2a, 0xaa, 0x7a, 0xa9, 0x84, 0xd4, 0x63, 0x3f, 0x49, 0xbf, 0x41, 0x8e, 0x91, 0x7a, 0xa9, 0x7a, + 0xb0, 0x2a, 0xc8, 0x27, 0xc8, 0x27, 0xa8, 0x76, 0x66, 0x16, 0xef, 0x7a, 0x6d, 0x4c, 0x2d, 0xd4, + 0x9b, 0x77, 0xe7, 0xf7, 0xde, 0xef, 0x37, 0xbf, 0x37, 0xf3, 0xde, 0x1a, 0xa6, 0xa9, 0x27, 0xec, + 0xe3, 0x26, 0x69, 0xb4, 0xac, 0x7a, 0x83, 0x09, 0x86, 0xa6, 0x82, 0x46, 0xc0, 0x6b, 0xac, 0x62, + 0x51, 0x4f, 0x98, 0x73, 0x3e, 0xf3, 0x99, 0x7c, 0x6f, 0x87, 0xbf, 0x14, 0xc4, 0x5c, 0xf2, 0x19, + 0xf3, 0xab, 0xc4, 0x76, 0xeb, 0x81, 0xed, 0x52, 0xca, 0x84, 0x2b, 0x02, 0x46, 0xb9, 0x5e, 0xbd, + 0x19, 0x66, 0xa4, 0x9e, 0xd0, 0x8f, 0x1b, 0x65, 0xc6, 0x6b, 0x8c, 0xdb, 0x07, 0x2e, 0x27, 0x8a, + 0xc8, 0x7e, 0xf1, 0xf8, 0x80, 0x08, 0xf7, 0xb1, 0x5d, 0x77, 0xfd, 0x80, 0xca, 0x58, 0x85, 0xc5, + 0xcf, 0x01, 0x7d, 0x1d, 0x22, 0xbe, 0x69, 0xd6, 0xeb, 0xd5, 0x96, 0x43, 0x8e, 0x9b, 0x84, 0x0b, + 0x64, 0xc1, 0x44, 0x85, 0x50, 0x56, 0xdb, 0x0f, 0x2a, 0x39, 0x63, 0xd9, 0x58, 0x9f, 0x2c, 0xce, + 0xbe, 0x6b, 0x17, 0xa6, 0x5b, 0x6e, 0xad, 0xfa, 0x29, 0x8e, 0x56, 0xb0, 0x33, 0x2e, 0x7f, 0x6e, + 0x57, 0xd0, 0x1c, 0x8c, 0xb1, 0x1f, 0x28, 0x69, 0xe4, 0x32, 0x21, 0xd8, 0x51, 0x0f, 0xf8, 0x03, + 0x98, 0x4d, 0xe4, 0xe6, 0x75, 0x46, 0x39, 0x41, 0x0b, 0x90, 0x75, 0x6b, 0xac, 0x49, 0x85, 0x4c, + 0x7d, 0xc3, 0xd1, 0x4f, 0xf8, 0x0f, 0x03, 0xee, 0x48, 0xfc, 0x6e, 0x69, 0x8f, 0x3f, 0xf5, 0x9e, + 0x86, 0x39, 0x86, 0x15, 0xb4, 0x9a, 0x10, 0x54, 0x9c, 0x79, 0xd7, 0x2e, 0xbc, 0xa7, 0xc0, 0x4a, + 0x9a, 0x96, 0x88, 0x4a, 0x00, 0x1d, 0x4b, 0x72, 0xa3, 0xcb, 0xc6, 0xfa, 0xd4, 0xe6, 0xaa, 0xa5, + 0xfc, 0xb3, 0x42, 0xff, 0x2c, 0x55, 0x28, 0xed, 0x9f, 0xf5, 0xcc, 0xf5, 0x89, 0xd6, 0xe4, 0xc4, + 0x22, 0xf1, 0xaf, 0x06, 0xe4, 0xd2, 0xda, 0xf5, 0x86, 0xd7, 0x23, 0x31, 0x86, 0xcc, 0x8f, 0xac, + 0x58, 0xbd, 0x2d, 0x05, 0xd5, 0x72, 0xbe, 0x4a, 0xc8, 0xc9, 0x48, 0xf8, 0xda, 0x40, 0x39, 0x8a, + 0x26, 0xa1, 0xe7, 0xd4, 0x80, 0x05, 0xa9, 0x67, 0x8b, 0x55, 0xab, 0xa4, 0x1c, 0xbe, 0x1b, 0xd6, + 0xca, 0x52, 0x0f, 0x4d, 0xc3, 0x58, 0xf4, 0x7b, 0x54, 0xde, 0xb8, 0x24, 0xed, 0xd0, 0xc7, 0x00, + 0xe5, 0x8b, 0xb7, 0xda, 0xa6, 0x3b, 0x09, 0x9b, 0x62, 0x41, 0x31, 0xe8, 0xf5, 0x19, 0xb6, 0x05, + 0xb7, 0xa5, 0xb8, 0x27, 0xe1, 0xae, 0x87, 0xb4, 0x0a, 0x7f, 0xae, 0x2f, 0x93, 0x4e, 0xd2, 0x29, + 0xbf, 0x04, 0xf4, 0x2c, 0xbf, 0x82, 0x2a, 0x00, 0xfe, 0x3e, 0x1e, 0xcf, 0x23, 0x15, 0xc9, 0x02, + 0x18, 0x43, 0x17, 0xe0, 0xd4, 0xd0, 0xf7, 0x31, 0x4a, 0xaf, 0xf5, 0x7d, 0x08, 0x59, 0x49, 0xcf, + 0x73, 0xc6, 0xf2, 0x68, 0x6f, 0x81, 0xc5, 0x1b, 0xaf, 0xdb, 0x85, 0x11, 0x47, 0xe3, 0xae, 0xcf, + 0xf5, 0x63, 0x98, 0x8e, 0x6e, 0xcd, 0xb0, 0xc7, 0xd3, 0x82, 0x09, 0xc1, 0x8e, 0x08, 0x0d, 0xf1, + 0x99, 0x6e, 0x7c, 0xb4, 0x82, 0x9d, 0x71, 0xf9, 0x73, 0xbb, 0x82, 0xb7, 0x60, 0xa6, 0x43, 0xa9, + 0x1d, 0xb0, 0x61, 0x94, 0x7a, 0x42, 0x5b, 0x3b, 0x97, 0xd8, 0x7e, 0xd1, 0xe5, 0x64, 0xb7, 0xb4, + 0x57, 0x1c, 0x3f, 0x6b, 0x17, 0x46, 0xc3, 0x98, 0x10, 0x89, 0x4d, 0xc8, 0xed, 0x70, 0xbf, 0x44, + 0x88, 0x74, 0x27, 0xdc, 0x0d, 0x8b, 0x5a, 0x15, 0xf6, 0x60, 0xb1, 0xc7, 0x9a, 0x66, 0xda, 0x86, + 0x99, 0x06, 0x6b, 0xb9, 0x55, 0xd1, 0xda, 0xf7, 0x1a, 0x6e, 0xe7, 0xb8, 0x4f, 0x16, 0xf3, 0xa1, + 0xc3, 0x7f, 0xb7, 0x0b, 0x0b, 0xca, 0x46, 0x5e, 0x39, 0xb2, 0x02, 0x66, 0xd7, 0x5c, 0x71, 0x68, + 0x7d, 0x1b, 0x50, 0xe1, 0x4c, 0xeb, 0xb8, 0x92, 0x0e, 0xc3, 0xbf, 0x18, 0x30, 0xbf, 0xc3, 0x7d, + 0x47, 0xbd, 0xde, 0xa6, 0x1e, 0x8b, 0x2c, 0x5c, 0xec, 0xb6, 0xb0, 0xe3, 0xd6, 0x3c, 0x64, 0xa9, + 0x27, 0x2e, 0xbc, 0x72, 0xc6, 0xa8, 0x27, 0xb6, 0x2b, 0xe8, 0x33, 0x00, 0xee, 0x56, 0xc9, 0x7e, + 0xbd, 0x11, 0x94, 0x89, 0x6c, 0x83, 0x83, 0x05, 0x4d, 0x86, 0x11, 0xcf, 0xc2, 0x00, 0x7c, 0x02, + 0x0b, 0xdd, 0x4a, 0xf4, 0x7e, 0x4d, 0x98, 0x68, 0x90, 0x32, 0x09, 0x5e, 0xe8, 0xee, 0x37, 0xe9, + 0x5c, 0x3c, 0xa3, 0x2f, 0xe1, 0x56, 0xe4, 0x85, 0x9e, 0x07, 0x99, 0x2b, 0x11, 0xdf, 0xd4, 0x51, + 0x5f, 0xa8, 0xb1, 0xf1, 0x09, 0x2c, 0xed, 0x70, 0xff, 0x09, 0xf1, 0xdc, 0x66, 0x55, 0xfc, 0x27, + 0x37, 0xf0, 0xcf, 0x06, 0xdc, 0xeb, 0x13, 0x7b, 0x05, 0xfd, 0xbd, 0x6a, 0x99, 0x19, 0xae, 0x96, + 0xbb, 0x60, 0xee, 0x70, 0x7f, 0x2f, 0x3c, 0xa2, 0xd7, 0x51, 0x4f, 0xfc, 0xca, 0x80, 0xbb, 0x3d, + 0x13, 0xfe, 0xaf, 0xdb, 0xda, 0x7c, 0x3b, 0x01, 0x63, 0xf2, 0xb2, 0xa1, 0x1f, 0x21, 0xab, 0xbe, + 0x02, 0x50, 0x21, 0x71, 0xbd, 0xd2, 0xdf, 0x1e, 0xe6, 0x72, 0x7f, 0x80, 0x52, 0x8f, 0x37, 0x7f, + 0xfa, 0xf3, 0xed, 0x6f, 0x99, 0x47, 0x68, 0xc3, 0xd6, 0xc8, 0xf0, 0xdb, 0xc7, 0xee, 0x4c, 0x05, + 0x6e, 0x9f, 0x44, 0x7e, 0xbd, 0xb4, 0xb9, 0xa2, 0x6d, 0xc2, 0x54, 0x6c, 0x34, 0xa3, 0xfb, 0x69, + 0x92, 0xf4, 0x57, 0x87, 0xf9, 0x60, 0x00, 0x4a, 0xeb, 0x59, 0x94, 0x7a, 0x66, 0xd1, 0xed, 0x84, + 0x1e, 0xea, 0x09, 0x8e, 0x5e, 0x19, 0x00, 0x9d, 0xd1, 0x85, 0x56, 0xd2, 0x09, 0x53, 0x03, 0xda, + 0xbc, 0x7f, 0x39, 0x48, 0x93, 0xbe, 0x2f, 0x49, 0x1f, 0xa0, 0x95, 0x2b, 0x98, 0x80, 0xea, 0x30, + 0x26, 0xbb, 0x11, 0xca, 0xa7, 0x73, 0xc7, 0x27, 0x9e, 0x59, 0xe8, 0xbb, 0xae, 0x69, 0x57, 0x25, + 0xed, 0x32, 0xca, 0x27, 0x68, 0xd5, 0x5c, 0x88, 0x33, 0x1e, 0x42, 0x56, 0x8d, 0x19, 0xd4, 0x2f, + 0x25, 0xbf, 0xa4, 0xe0, 0xc9, 0x09, 0x85, 0xef, 0x4a, 0xd2, 0x79, 0x34, 0xdb, 0x83, 0x14, 0x71, + 0x08, 0xfb, 0x32, 0x5a, 0xea, 0x59, 0xab, 0x88, 0xe3, 0x5e, 0x9f, 0x55, 0x4d, 0x60, 0x4b, 0x82, + 0x87, 0x68, 0x2d, 0x55, 0xc1, 0xf8, 0x51, 0x3a, 0x89, 0xc6, 0xc9, 0x4b, 0xb4, 0x0f, 0xb7, 0x92, + 0x1d, 0x1e, 0x25, 0xcf, 0x4a, 0xbf, 0xe9, 0x60, 0xae, 0x0e, 0x82, 0xe9, 0x1b, 0xfa, 0x1d, 0x4c, + 0xc5, 0x2e, 0x2e, 0xc2, 0xdd, 0x61, 0xe9, 0x36, 0x61, 0xae, 0x5c, 0x8a, 0xd1, 0x79, 0x8f, 0x00, + 0xa5, 0xdb, 0x1d, 0x7a, 0xd8, 0x1d, 0xda, 0xb7, 0x9d, 0x9a, 0x1b, 0x57, 0x81, 0x6a, 0x32, 0x02, + 0x33, 0xdd, 0x2d, 0x08, 0xad, 0x75, 0xc7, 0xf7, 0xe9, 0x7a, 0xe6, 0xfa, 0x60, 0xa0, 0xa2, 0x29, + 0x96, 0x5e, 0x9f, 0xe5, 0x8d, 0x37, 0x67, 0x79, 0xe3, 0x9f, 0xb3, 0xbc, 0x71, 0x7a, 0x9e, 0x1f, + 0x79, 0x73, 0x9e, 0x1f, 0xf9, 0xeb, 0x3c, 0x3f, 0xf2, 0xfc, 0x91, 0x1f, 0x88, 0xc3, 0xe6, 0x81, + 0x55, 0x66, 0x35, 0x59, 0x59, 0x4a, 0xc4, 0x45, 0x85, 0x6b, 0xac, 0xd2, 0xac, 0x12, 0x2e, 0x2b, + 0x2d, 0x5a, 0x75, 0xc2, 0x0f, 0xb2, 0xf2, 0x2f, 0xd1, 0x47, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, + 0xda, 0xe4, 0x6a, 0xa0, 0xa1, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1119,7 +1119,6 @@ type QueryClient interface { Denoms(ctx context.Context, in *QueryDenomsRequest, opts ...grpc.CallOption) (*QueryDenomsResponse, error) // NFT queries the NFT for the given denom and token ID NFT(ctx context.Context, in *QueryNFTRequest, opts ...grpc.CallOption) (*QueryNFTResponse, error) - // Royalty // FeeDenominator queries the FeeDenominator FeeDenominator(ctx context.Context, in *MsgFeeDenominatorRequest, opts ...grpc.CallOption) (*MsgFeeDenominatorResponse, error) // RoyaltyInfo queries the RoyaltyInfo for the class of token @@ -1242,7 +1241,6 @@ type QueryServer interface { Denoms(context.Context, *QueryDenomsRequest) (*QueryDenomsResponse, error) // NFT queries the NFT for the given denom and token ID NFT(context.Context, *QueryNFTRequest) (*QueryNFTResponse, error) - // Royalty // FeeDenominator queries the FeeDenominator FeeDenominator(context.Context, *MsgFeeDenominatorRequest) (*MsgFeeDenominatorResponse, error) // RoyaltyInfo queries the RoyaltyInfo for the class of token @@ -2078,17 +2076,17 @@ func (m *MsgRoyaltyInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - if len(m.TokenId) > 0 { - i -= len(m.TokenId) - copy(dAtA[i:], m.TokenId) - i = encodeVarintQuery(dAtA, i, uint64(len(m.TokenId))) + if len(m.NftId) > 0 { + i -= len(m.NftId) + copy(dAtA[i:], m.NftId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.NftId))) i-- dAtA[i] = 0x12 } - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2155,10 +2153,10 @@ func (m *MsgDefaultRoyaltyInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, e _ = i var l int _ = l - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2225,17 +2223,17 @@ func (m *MsgTokenRoyaltyInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l - if len(m.TokenId) > 0 { - i -= len(m.TokenId) - copy(dAtA[i:], m.TokenId) - i = encodeVarintQuery(dAtA, i, uint64(len(m.TokenId))) + if len(m.NftId) > 0 { + i -= len(m.NftId) + copy(dAtA[i:], m.NftId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.NftId))) i-- dAtA[i] = 0x12 } - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2508,11 +2506,11 @@ func (m *MsgRoyaltyInfoRequest) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - l = len(m.TokenId) + l = len(m.NftId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } @@ -2542,7 +2540,7 @@ func (m *MsgDefaultRoyaltyInfoRequest) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } @@ -2570,11 +2568,11 @@ func (m *MsgTokenRoyaltyInfoRequest) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - l = len(m.TokenId) + l = len(m.NftId) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } @@ -4036,7 +4034,7 @@ func (m *MsgRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4064,11 +4062,11 @@ func (m *MsgRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NftId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4096,7 +4094,7 @@ func (m *MsgRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TokenId = string(dAtA[iNdEx:postIndex]) + m.NftId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -4300,7 +4298,7 @@ func (m *MsgDefaultRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4328,7 +4326,7 @@ func (m *MsgDefaultRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -4498,7 +4496,7 @@ func (m *MsgTokenRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4526,11 +4524,11 @@ func (m *MsgTokenRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NftId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4558,7 +4556,7 @@ func (m *MsgTokenRoyaltyInfoRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TokenId = string(dAtA[iNdEx:postIndex]) + m.NftId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/modules/nft/types/royalty.pb.go b/modules/nft/types/royalty.pb.go index a6350f52..15bd3649 100644 --- a/modules/nft/types/royalty.pb.go +++ b/modules/nft/types/royalty.pb.go @@ -27,7 +27,7 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type RoyaltyInfo struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` RoyaltyFraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=royalty_fraction,json=royaltyFraction,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_fraction"` } @@ -64,31 +64,74 @@ func (m *RoyaltyInfo) XXX_DiscardUnknown() { var xxx_messageInfo_RoyaltyInfo proto.InternalMessageInfo +type RoyaltyMetadata struct { + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + DefaultRoyaltyInfo *RoyaltyInfo `protobuf:"bytes,2,opt,name=defaultRoyaltyInfo,proto3" json:"defaultRoyaltyInfo,omitempty"` +} + +func (m *RoyaltyMetadata) Reset() { *m = RoyaltyMetadata{} } +func (m *RoyaltyMetadata) String() string { return proto.CompactTextString(m) } +func (*RoyaltyMetadata) ProtoMessage() {} +func (*RoyaltyMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_80c34aacedb01c5b, []int{1} +} +func (m *RoyaltyMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoyaltyMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoyaltyMetadata.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 *RoyaltyMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoyaltyMetadata.Merge(m, src) +} +func (m *RoyaltyMetadata) XXX_Size() int { + return m.Size() +} +func (m *RoyaltyMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_RoyaltyMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_RoyaltyMetadata proto.InternalMessageInfo + func init() { - proto.RegisterType((*RoyaltyInfo)(nil), "irismod.nft.RoyaltyInfo") + proto.RegisterType((*RoyaltyInfo)(nil), "irismod.nft.royalty.RoyaltyInfo") + proto.RegisterType((*RoyaltyMetadata)(nil), "irismod.nft.royalty.RoyaltyMetadata") } func init() { proto.RegisterFile("nft/royalty.proto", fileDescriptor_80c34aacedb01c5b) } var fileDescriptor_80c34aacedb01c5b = []byte{ - // 270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x50, 0xbb, 0x4e, 0xc3, 0x40, - 0x10, 0xf4, 0x21, 0x04, 0xc2, 0x29, 0x00, 0x0b, 0x21, 0x93, 0xe2, 0x8c, 0xa8, 0x28, 0x90, 0x57, - 0x11, 0x1d, 0x65, 0x0a, 0xa4, 0x50, 0x5a, 0xa2, 0xa1, 0x89, 0xce, 0xf6, 0xd9, 0x39, 0x11, 0xdf, - 0x46, 0xbe, 0x0d, 0xc2, 0x7f, 0xc1, 0x27, 0xf0, 0x39, 0x2e, 0x53, 0x22, 0x8a, 0x08, 0xec, 0x86, - 0xcf, 0x40, 0xce, 0x5d, 0xba, 0x9d, 0x9d, 0x99, 0x7d, 0x8c, 0x7f, 0xae, 0x0b, 0x82, 0x1a, 0x1b, - 0xb1, 0xa4, 0x26, 0x5e, 0xd5, 0x48, 0x18, 0x8c, 0x54, 0xad, 0x4c, 0x85, 0x79, 0xac, 0x0b, 0x1a, - 0x5f, 0x94, 0x58, 0xe2, 0xae, 0x0f, 0x43, 0x65, 0x25, 0x63, 0x9e, 0xa1, 0xa9, 0xd0, 0x40, 0x2a, - 0x8c, 0x84, 0xb7, 0x49, 0x2a, 0x49, 0x4c, 0x20, 0x43, 0xa5, 0x1d, 0x7f, 0x65, 0xf9, 0xb9, 0x35, - 0x5a, 0x60, 0xa9, 0x9b, 0x77, 0x7f, 0x94, 0xd8, 0x75, 0x33, 0x5d, 0x60, 0x10, 0xfa, 0xc7, 0x22, - 0xcf, 0x6b, 0x69, 0x4c, 0xc8, 0xae, 0xd9, 0xed, 0x49, 0xb2, 0x87, 0xc1, 0xcc, 0x3f, 0x73, 0x77, - 0xcd, 0x8b, 0x5a, 0x64, 0xa4, 0x50, 0x87, 0x07, 0x83, 0x64, 0xca, 0xdb, 0x6d, 0xe4, 0x7d, 0x6f, - 0xa3, 0x4b, 0x3b, 0xd8, 0xe4, 0xaf, 0xb1, 0x42, 0xa8, 0x04, 0x2d, 0xe2, 0x67, 0xa5, 0x29, 0x39, - 0x75, 0xbe, 0x47, 0x67, 0x7b, 0x38, 0xfc, 0xfb, 0x8c, 0xd8, 0xf4, 0xa9, 0xfd, 0xe5, 0x5e, 0xdb, - 0x71, 0xb6, 0xe9, 0x38, 0xfb, 0xe9, 0x38, 0xfb, 0xe8, 0xb9, 0xb7, 0xe9, 0xb9, 0xf7, 0xd5, 0x73, - 0xef, 0xe5, 0xae, 0x54, 0xb4, 0x58, 0xa7, 0x71, 0x86, 0x15, 0x0c, 0x01, 0x68, 0x49, 0xe0, 0x82, - 0x80, 0x0a, 0xf3, 0xf5, 0x52, 0x1a, 0x18, 0xb2, 0xa2, 0x66, 0x25, 0x4d, 0x7a, 0xb4, 0x7b, 0xe6, - 0xfe, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x56, 0x4b, 0xb9, 0x3f, 0x01, 0x00, 0x00, + // 332 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xb1, 0x4a, 0x33, 0x41, + 0x14, 0x85, 0x77, 0x7f, 0x7e, 0x34, 0x4e, 0x8a, 0xe8, 0x2a, 0x12, 0x53, 0x4c, 0x42, 0x2a, 0x0b, + 0x99, 0x21, 0xda, 0x59, 0xa6, 0x10, 0x22, 0x08, 0xb2, 0x60, 0x63, 0x13, 0x66, 0x77, 0x67, 0x93, + 0xc1, 0xdd, 0xb9, 0x61, 0xe7, 0x26, 0x10, 0x5b, 0x5f, 0xc0, 0x47, 0xf0, 0x71, 0x52, 0xa6, 0x14, + 0x8b, 0xa0, 0x49, 0xe3, 0x63, 0xc8, 0xee, 0x8c, 0x92, 0x22, 0xdd, 0x5c, 0xbe, 0x73, 0xee, 0x39, + 0xdc, 0x21, 0x47, 0x3a, 0x45, 0x5e, 0xc0, 0x5c, 0x64, 0x38, 0x67, 0x93, 0x02, 0x10, 0x82, 0x63, + 0x55, 0x28, 0x93, 0x43, 0xc2, 0x74, 0x8a, 0xcc, 0xa1, 0xd6, 0xc9, 0x08, 0x46, 0x50, 0x71, 0x5e, + 0xbe, 0xac, 0xb4, 0x45, 0x63, 0x30, 0x39, 0x18, 0x1e, 0x09, 0x23, 0xf9, 0xac, 0x17, 0x49, 0x14, + 0x3d, 0x1e, 0x83, 0xd2, 0x8e, 0x9f, 0x59, 0x3e, 0xb4, 0x46, 0x3b, 0x58, 0xd4, 0x7d, 0x26, 0xf5, + 0xd0, 0xee, 0x1e, 0xe8, 0x14, 0x82, 0x16, 0xa9, 0x15, 0x32, 0x96, 0x6a, 0x26, 0x8b, 0xa6, 0xdf, + 0xf1, 0xcf, 0x0f, 0xc2, 0xbf, 0x39, 0x18, 0x90, 0x43, 0x57, 0x63, 0x98, 0x16, 0x22, 0x46, 0x05, + 0xba, 0xf9, 0xaf, 0xd4, 0xf4, 0xe9, 0x62, 0xd5, 0xf6, 0x3e, 0x56, 0xed, 0x53, 0xbb, 0xda, 0x24, + 0x4f, 0x4c, 0x01, 0xcf, 0x05, 0x8e, 0xd9, 0x83, 0xd2, 0x18, 0x36, 0x9c, 0xef, 0xc6, 0xd9, 0xae, + 0xff, 0x7f, 0xbf, 0xb5, 0xfd, 0xee, 0x8b, 0x4f, 0x1a, 0x2e, 0xfc, 0x4e, 0xa2, 0x48, 0x04, 0x8a, + 0xa0, 0x49, 0xf6, 0xa5, 0x16, 0x51, 0x26, 0x93, 0x2a, 0xbf, 0x16, 0xfe, 0x8e, 0xc1, 0x3d, 0x09, + 0x12, 0x99, 0x8a, 0x69, 0x86, 0x5b, 0x85, 0xab, 0x02, 0xf5, 0xcb, 0x0e, 0xdb, 0x71, 0x2c, 0xb6, + 0xa5, 0x0b, 0x77, 0x78, 0x6d, 0x8b, 0xfe, 0xed, 0xe2, 0x8b, 0x7a, 0x8b, 0x35, 0xf5, 0x97, 0x6b, + 0xea, 0x7f, 0xae, 0xa9, 0xff, 0xba, 0xa1, 0xde, 0x72, 0x43, 0xbd, 0xf7, 0x0d, 0xf5, 0x1e, 0x2f, + 0x46, 0x0a, 0xc7, 0xd3, 0x88, 0xc5, 0x90, 0xf3, 0x32, 0x43, 0x4b, 0xe4, 0x2e, 0x8b, 0xe7, 0x90, + 0x4c, 0x33, 0x69, 0x78, 0xf9, 0x77, 0x38, 0x9f, 0x48, 0x13, 0xed, 0x55, 0x47, 0xbd, 0xfa, 0x09, + 0x00, 0x00, 0xff, 0xff, 0xe5, 0xfc, 0x6c, 0xaa, 0xcf, 0x01, 0x00, 0x00, } func (this *RoyaltyInfo) Equal(that interface{}) bool { @@ -110,7 +153,7 @@ func (this *RoyaltyInfo) Equal(that interface{}) bool { } else if this == nil { return false } - if this.Address != that1.Address { + if this.Receiver != that1.Receiver { return false } if !this.RoyaltyFraction.Equal(that1.RoyaltyFraction) { @@ -118,6 +161,33 @@ func (this *RoyaltyInfo) Equal(that interface{}) bool { } return true } +func (this *RoyaltyMetadata) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*RoyaltyMetadata) + if !ok { + that2, ok := that.(RoyaltyMetadata) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Enabled != that1.Enabled { + return false + } + if !this.DefaultRoyaltyInfo.Equal(that1.DefaultRoyaltyInfo) { + return false + } + return true +} func (m *RoyaltyInfo) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -148,16 +218,61 @@ func (m *RoyaltyInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintRoyalty(dAtA, i, uint64(len(m.Address))) + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintRoyalty(dAtA, i, uint64(len(m.Receiver))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } +func (m *RoyaltyMetadata) 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 *RoyaltyMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RoyaltyMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.DefaultRoyaltyInfo != nil { + { + size, err := m.DefaultRoyaltyInfo.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRoyalty(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Enabled { + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintRoyalty(dAtA []byte, offset int, v uint64) int { offset -= sovRoyalty(v) base := offset @@ -175,7 +290,7 @@ func (m *RoyaltyInfo) Size() (n int) { } var l int _ = l - l = len(m.Address) + l = len(m.Receiver) if l > 0 { n += 1 + l + sovRoyalty(uint64(l)) } @@ -184,6 +299,22 @@ func (m *RoyaltyInfo) Size() (n int) { return n } +func (m *RoyaltyMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Enabled { + n += 2 + } + if m.DefaultRoyaltyInfo != nil { + l = m.DefaultRoyaltyInfo.Size() + n += 1 + l + sovRoyalty(uint64(l)) + } + return n +} + func sovRoyalty(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -221,7 +352,7 @@ func (m *RoyaltyInfo) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -249,7 +380,7 @@ func (m *RoyaltyInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Address = string(dAtA[iNdEx:postIndex]) + m.Receiver = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -306,6 +437,112 @@ func (m *RoyaltyInfo) Unmarshal(dAtA []byte) error { } return nil } +func (m *RoyaltyMetadata) 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 ErrIntOverflowRoyalty + } + 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: RoyaltyMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoyaltyMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRoyalty + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultRoyaltyInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRoyalty + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRoyalty + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRoyalty + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DefaultRoyaltyInfo == nil { + m.DefaultRoyaltyInfo = &RoyaltyInfo{} + } + if err := m.DefaultRoyaltyInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRoyalty(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRoyalty + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipRoyalty(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/modules/nft/types/royalty_msg.go b/modules/nft/types/royalty_msg.go new file mode 100644 index 00000000..d189bc6b --- /dev/null +++ b/modules/nft/types/royalty_msg.go @@ -0,0 +1,192 @@ +package types + +import ( + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// constant used to indicate that some field should not be updated +const ( + TypeMsgSetDefaultRoyalty = "set_default_royalty" + TypeMsgSetTokenRoyalty = "set_token_royalty" + TypeMsgResetTokenRoyalty = "reset_token_royalty" + TypeMsgDeleteDefaultRoyalty = "delete_default_royalty" +) + +var ( + _ sdk.Msg = &MsgSetDefaultRoyalty{} + _ sdk.Msg = &MsgSetTokenRoyalty{} + _ sdk.Msg = &MsgResetTokenRoyalty{} + _ sdk.Msg = &MsgDeleteDefaultRoyalty{} +) + +// NewMsgSetDefaultRoyalty is a constructor function for MsgSetName +func NewMsgSetDefaultRoyalty(denomID, receiver string, feeNumerator sdkmath.Uint, sender string) *MsgSetDefaultRoyalty { + return &MsgSetDefaultRoyalty{ + DenomId: denomID, + Receiver: receiver, + FeeNumerator: feeNumerator, + Sender: sender, + } +} + +// Route Implements Msg +func (msg MsgSetDefaultRoyalty) Route() string { return RouterKey } + +// Type Implements Msg +func (msg MsgSetDefaultRoyalty) Type() string { return TypeMsgSetDefaultRoyalty } + +// ValidateBasic Implements Msg. +func (msg MsgSetDefaultRoyalty) ValidateBasic() error { + if err := ValidateDenomID(msg.DenomId); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + return ValidateKeywords(msg.DenomId) +} + +// GetSignBytes Implements Msg. +func (msg MsgSetDefaultRoyalty) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(&msg) + return sdk.MustSortJSON(bz) +} + +// GetSigners Implements Msg. +func (msg MsgSetDefaultRoyalty) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} + +// NewMsgSetTokenRoyalty is a constructor function for MsgSetName +func NewMsgSetTokenRoyalty(denomId, nftId, receiver string, feeNumerator sdkmath.Uint, sender string) *MsgSetTokenRoyalty { + return &MsgSetTokenRoyalty{ + DenomId: denomId, + NftId: nftId, + Receiver: receiver, + FeeNumerator: feeNumerator, + Sender: sender, + } +} + +// Route Implements Msg +func (msg MsgSetTokenRoyalty) Route() string { return RouterKey } + +// Type Implements Msg +func (msg MsgSetTokenRoyalty) Type() string { return TypeMsgSetTokenRoyalty } + +// ValidateBasic Implements Msg. +func (msg MsgSetTokenRoyalty) ValidateBasic() error { + if err := ValidateDenomID(msg.DenomId); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + return ValidateKeywords(msg.DenomId) +} + +// GetSignBytes Implements Msg. +func (msg MsgSetTokenRoyalty) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(&msg) + return sdk.MustSortJSON(bz) +} + +// GetSigners Implements Msg. +func (msg MsgSetTokenRoyalty) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} + +// NewMsgResetTokenRoyalty is a constructor function for MsgSetName +func NewMsgResetTokenRoyalty(denomId, nftId, receiver string, feeNumerator sdkmath.Uint, sender string) *MsgResetTokenRoyalty { + return &MsgResetTokenRoyalty{ + DenomId: denomId, + NftId: nftId, + Sender: sender, + } +} + +// Route Implements Msg +func (msg MsgResetTokenRoyalty) Route() string { return RouterKey } + +// Type Implements Msg +func (msg MsgResetTokenRoyalty) Type() string { return TypeMsgResetTokenRoyalty } + +// ValidateBasic Implements Msg. +func (msg MsgResetTokenRoyalty) ValidateBasic() error { + if err := ValidateDenomID(msg.DenomId); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + return ValidateKeywords(msg.DenomId) +} + +// GetSignBytes Implements Msg. +func (msg MsgResetTokenRoyalty) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(&msg) + return sdk.MustSortJSON(bz) +} + +// GetSigners Implements Msg. +func (msg MsgResetTokenRoyalty) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} + +// NewMsgDeleteDefaultRoyalty is a constructor function for MsgSetName +func NewMsgDeleteDefaultRoyalty(denomId, nftId, receiver string, feeNumerator sdkmath.Uint, sender string) *MsgDeleteDefaultRoyalty { + return &MsgDeleteDefaultRoyalty{ + DenomId: denomId, + Sender: sender, + } +} + +// Route Implements Msg +func (msg MsgDeleteDefaultRoyalty) Route() string { return RouterKey } + +// Type Implements Msg +func (msg MsgDeleteDefaultRoyalty) Type() string { return TypeMsgDeleteDefaultRoyalty } + +// ValidateBasic Implements Msg. +func (msg MsgDeleteDefaultRoyalty) ValidateBasic() error { + if err := ValidateDenomID(msg.DenomId); err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + return ValidateKeywords(msg.DenomId) +} + +// GetSignBytes Implements Msg. +func (msg MsgDeleteDefaultRoyalty) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(&msg) + return sdk.MustSortJSON(bz) +} + +// GetSigners Implements Msg. +func (msg MsgDeleteDefaultRoyalty) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} diff --git a/modules/nft/types/tx.pb.go b/modules/nft/types/tx.pb.go index 8ea9628d..cb95f3b9 100644 --- a/modules/nft/types/tx.pb.go +++ b/modules/nft/types/tx.pb.go @@ -5,6 +5,7 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" @@ -41,7 +42,6 @@ type MsgIssueDenom struct { Uri string `protobuf:"bytes,9,opt,name=uri,proto3" json:"uri,omitempty"` UriHash string `protobuf:"bytes,10,opt,name=uri_hash,json=uriHash,proto3" json:"uri_hash,omitempty"` Data string `protobuf:"bytes,11,opt,name=data,proto3" json:"data,omitempty"` - RoyaltyEnabled bool `protobuf:"varint,12,opt,name=royalty_enabled,json=royaltyEnabled,proto3" json:"royalty_enabled,omitempty"` } func (m *MsgIssueDenom) Reset() { *m = MsgIssueDenom{} } @@ -517,10 +517,10 @@ var xxx_messageInfo_MsgTransferDenomResponse proto.InternalMessageInfo // Royalty Request and Response // MsgSetDefaultRoyalty defines an SDK message for set default royalty for class. type MsgSetDefaultRoyalty struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` - Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"receiver,omitempty"` - FeeNumerator string `protobuf:"bytes,3,opt,name=fee_numerator,json=feeNumerator,proto3" json:"fee_numerator,omitempty"` - Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` + Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"receiver,omitempty"` + FeeNumerator cosmossdk_io_math.Uint `protobuf:"bytes,3,opt,name=fee_numerator,json=feeNumerator,proto3,customtype=cosmossdk.io/math.Uint" json:"fee_numerator"` + Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` } func (m *MsgSetDefaultRoyalty) Reset() { *m = MsgSetDefaultRoyalty{} } @@ -594,11 +594,11 @@ var xxx_messageInfo_MsgSetDefaultRoyaltyResponse proto.InternalMessageInfo // MsgSetTokenRoyalty defines an SDK message for set royalty for class of token. type MsgSetTokenRoyalty struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` - TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - FeeNumerator string `protobuf:"bytes,4,opt,name=fee_numerator,json=feeNumerator,proto3" json:"fee_numerator,omitempty"` - Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` + NftId string `protobuf:"bytes,2,opt,name=nft_id,json=nftId,proto3" json:"nft_id,omitempty"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` + FeeNumerator cosmossdk_io_math.Uint `protobuf:"bytes,4,opt,name=fee_numerator,json=feeNumerator,proto3,customtype=cosmossdk.io/math.Uint" json:"fee_numerator"` + Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` } func (m *MsgSetTokenRoyalty) Reset() { *m = MsgSetTokenRoyalty{} } @@ -672,8 +672,8 @@ var xxx_messageInfo_MsgSetTokenRoyaltyResponse proto.InternalMessageInfo // MsgResetTokenRoyalty defines an SDK message for reset royalty for class of token. type MsgResetTokenRoyalty struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` - TokenId string `protobuf:"bytes,2,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` + NftId string `protobuf:"bytes,2,opt,name=nft_id,json=nftId,proto3" json:"nft_id,omitempty"` Sender string `protobuf:"bytes,3,opt,name=sender,proto3" json:"sender,omitempty"` } @@ -748,7 +748,7 @@ var xxx_messageInfo_MsgResetTokenRoyaltyResponse proto.InternalMessageInfo // MsgDeleteDefaultRoyalty defines an SDK message for delete royalty for class. type MsgDeleteDefaultRoyalty struct { - ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + DenomId string `protobuf:"bytes,1,opt,name=denom_id,json=denomId,proto3" json:"denom_id,omitempty"` Sender string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` } @@ -847,63 +847,64 @@ func init() { func init() { proto.RegisterFile("nft/tx.proto", fileDescriptor_09d30374d974e015) } var fileDescriptor_09d30374d974e015 = []byte{ - // 896 bytes of a gzipped FileDescriptorProto + // 904 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0x4f, 0x6f, 0xe3, 0x44, - 0x14, 0xaf, 0x93, 0x36, 0x49, 0x5f, 0xff, 0xee, 0x50, 0xb6, 0xae, 0x29, 0x49, 0x37, 0x0b, 0xda, - 0x45, 0xac, 0x12, 0x09, 0x6e, 0x7b, 0x2c, 0x5d, 0x44, 0x11, 0x59, 0x24, 0x6f, 0xf7, 0x02, 0x12, - 0x91, 0x1b, 0xbf, 0x38, 0xb3, 0xc4, 0xe3, 0x68, 0x66, 0x8c, 0xc8, 0xb7, 0xd8, 0x8f, 0xc0, 0x95, - 0x6f, 0xd2, 0xe3, 0x1e, 0xe1, 0xb2, 0x82, 0x56, 0x42, 0x88, 0x23, 0x9f, 0x00, 0x79, 0xfc, 0x27, - 0x63, 0x3b, 0x6e, 0x7b, 0xe8, 0x01, 0xed, 0x6d, 0xe6, 0xf7, 0x9e, 0xdf, 0xfb, 0xfd, 0x7e, 0x33, - 0x7e, 0x36, 0x6c, 0xb2, 0xb1, 0xec, 0xcb, 0x9f, 0x7b, 0x33, 0x1e, 0xc8, 0x80, 0x6c, 0x50, 0x4e, - 0x85, 0x1f, 0xb8, 0x3d, 0x36, 0x96, 0xd6, 0x9e, 0x17, 0x78, 0x81, 0xc2, 0xfb, 0xd1, 0x2a, 0x4e, - 0xe9, 0x5e, 0xd5, 0x60, 0x6b, 0x20, 0xbc, 0x53, 0x21, 0x42, 0x3c, 0x41, 0x16, 0xf8, 0x64, 0x1b, - 0x6a, 0xd4, 0x35, 0x8d, 0x23, 0xe3, 0xf1, 0xba, 0x5d, 0xa3, 0x2e, 0x21, 0xb0, 0xca, 0x1c, 0x1f, - 0xcd, 0x9a, 0x42, 0xd4, 0x9a, 0xdc, 0x87, 0x86, 0x18, 0x4d, 0xd0, 0x77, 0xcc, 0xba, 0x42, 0x93, - 0x9d, 0xc2, 0x91, 0xb9, 0xc8, 0xcd, 0xd5, 0x04, 0x57, 0x3b, 0x85, 0xcf, 0xfd, 0xf3, 0x60, 0x6a, - 0xae, 0x25, 0xb8, 0xda, 0x91, 0x47, 0xb0, 0xe3, 0x53, 0x26, 0x87, 0x1c, 0x85, 0xe4, 0x74, 0x24, - 0xd1, 0x35, 0x1b, 0x47, 0xc6, 0xe3, 0x96, 0xbd, 0x1d, 0xc1, 0x76, 0x86, 0x92, 0x4f, 0xe1, 0x5e, - 0x38, 0x73, 0x1d, 0x89, 0x7a, 0x6a, 0x53, 0xa5, 0xee, 0xc6, 0x01, 0x2d, 0xf9, 0x08, 0x36, 0x5c, - 0x14, 0x23, 0x4e, 0x67, 0x92, 0x06, 0xcc, 0x6c, 0xa9, 0x96, 0x3a, 0x44, 0x76, 0xa1, 0x1e, 0x72, - 0x6a, 0xae, 0xab, 0x48, 0xb4, 0x24, 0x07, 0xd0, 0x0a, 0x39, 0x1d, 0x4e, 0x1c, 0x31, 0x31, 0x41, - 0xc1, 0xcd, 0x90, 0xd3, 0xaf, 0x1c, 0x31, 0x89, 0x0c, 0x70, 0x1d, 0xe9, 0x98, 0x1b, 0xb1, 0x01, - 0xd1, 0x3a, 0x22, 0xce, 0x83, 0xb9, 0x33, 0x95, 0xf3, 0x21, 0x32, 0xe7, 0x7c, 0x8a, 0xae, 0xb9, - 0x19, 0x13, 0x4f, 0xe0, 0x67, 0x31, 0xfa, 0x74, 0xf5, 0xef, 0x5f, 0x3a, 0x46, 0x77, 0x1f, 0xde, - 0xcf, 0x99, 0x6c, 0xa3, 0x98, 0x05, 0x4c, 0x60, 0xf7, 0x1f, 0x03, 0xb6, 0x07, 0xc2, 0x3b, 0xe3, - 0x0e, 0x13, 0x63, 0xe4, 0xcf, 0xbf, 0x3c, 0x2b, 0xf9, 0xdf, 0x83, 0x96, 0x1b, 0x3d, 0x33, 0xa4, - 0x6e, 0x7c, 0x06, 0xc7, 0xef, 0xfd, 0xfb, 0xb6, 0xb3, 0x33, 0x77, 0xfc, 0xe9, 0xd3, 0x6e, 0x1a, - 0xe9, 0xda, 0x4d, 0xb5, 0x3c, 0x5d, 0x9c, 0x57, 0x5d, 0x3b, 0xaf, 0x83, 0x58, 0xaf, 0x3a, 0x94, - 0xe3, 0xe6, 0xe5, 0xdb, 0x4e, 0xfd, 0xa5, 0x7d, 0x1a, 0x0b, 0x4f, 0xd5, 0xad, 0x69, 0xea, 0x16, - 0xc7, 0xd8, 0xc8, 0x1d, 0xe3, 0x21, 0xac, 0x73, 0x1c, 0xd1, 0x19, 0x45, 0x26, 0x95, 0xfb, 0xeb, - 0xf6, 0x02, 0xc8, 0x59, 0xd8, 0xca, 0x59, 0x98, 0xb8, 0x60, 0xc2, 0xfd, 0xbc, 0xd6, 0xcc, 0x86, - 0x0b, 0x03, 0x60, 0x20, 0xbc, 0x67, 0x2e, 0x95, 0xff, 0x73, 0x0b, 0x74, 0x91, 0xcd, 0x65, 0x22, - 0xf7, 0x80, 0x2c, 0x94, 0x64, 0x02, 0xff, 0x8a, 0x05, 0x0e, 0x28, 0x93, 0xef, 0xf6, 0x19, 0xc7, - 0xf2, 0x13, 0x9d, 0x99, 0xfc, 0x57, 0x4a, 0xfd, 0x71, 0xc8, 0xd9, 0x5d, 0xa8, 0x5f, 0x50, 0xaf, - 0xeb, 0xd4, 0x73, 0x0c, 0x92, 0x5e, 0x19, 0x83, 0x1f, 0x60, 0x57, 0xbb, 0x7b, 0xcb, 0x27, 0xdd, - 0xa2, 0x6e, 0xad, 0xda, 0x92, 0x7a, 0xc1, 0x92, 0xa4, 0xab, 0x05, 0x66, 0xb1, 0x7e, 0xd6, 0xfb, - 0xb5, 0x01, 0x7b, 0x03, 0xe1, 0xbd, 0x40, 0x79, 0x82, 0x63, 0x27, 0x9c, 0x4a, 0x3b, 0x9e, 0x11, - 0x91, 0x9b, 0xa3, 0xa9, 0x23, 0xc4, 0x30, 0xa3, 0xd1, 0x54, 0xfb, 0x53, 0x97, 0x58, 0xd0, 0xe2, - 0x38, 0x42, 0xfa, 0x53, 0xc6, 0x26, 0xdb, 0x93, 0x87, 0xb0, 0x35, 0x46, 0x1c, 0xb2, 0xd0, 0x47, - 0xee, 0xc8, 0x20, 0xb5, 0x61, 0x73, 0x8c, 0xf8, 0x3c, 0xc5, 0xaa, 0x46, 0x71, 0x42, 0xb7, 0x0d, - 0x87, 0xcb, 0x18, 0x65, 0x94, 0x7f, 0x35, 0x94, 0x8b, 0x2f, 0x50, 0x9e, 0x05, 0x3f, 0x22, 0xbb, - 0x05, 0xe1, 0x03, 0x68, 0xc9, 0x28, 0x35, 0x3b, 0x44, 0xbb, 0xa9, 0xf6, 0x05, 0x2d, 0xf5, 0x9b, - 0xb4, 0xac, 0x5e, 0xab, 0x65, 0x6d, 0x89, 0x96, 0x43, 0xb0, 0xca, 0x54, 0xb5, 0xab, 0x17, 0x79, - 0x6f, 0xa3, 0xb8, 0x13, 0x29, 0xd7, 0x5f, 0xbd, 0xd8, 0xd5, 0x52, 0xaf, 0x8c, 0x8b, 0x0d, 0xfb, - 0x03, 0xe1, 0x9d, 0xe0, 0x14, 0x25, 0xde, 0xfe, 0x2a, 0x54, 0x5c, 0xcb, 0xa4, 0xe7, 0x03, 0xe8, - 0x54, 0xd4, 0x4c, 0xdb, 0x7e, 0xf6, 0x7b, 0x03, 0xea, 0x03, 0xe1, 0x91, 0x6f, 0x00, 0xb4, 0xef, - 0xbc, 0xd5, 0xd3, 0xfe, 0x0e, 0x7a, 0xb9, 0xcf, 0x93, 0xd5, 0xad, 0x8e, 0xa5, 0x55, 0xc9, 0x17, - 0xd0, 0x4c, 0xc7, 0xd9, 0x7e, 0x31, 0x3d, 0x09, 0x58, 0x9d, 0x8a, 0x80, 0x5e, 0x24, 0x1d, 0xfa, - 0xa5, 0x22, 0x49, 0xa0, 0x5c, 0xa4, 0x30, 0x5c, 0xc9, 0xb7, 0xb0, 0xa1, 0x7f, 0x40, 0x3f, 0x28, - 0xe6, 0x6b, 0x41, 0xeb, 0xe1, 0x35, 0x41, 0x9d, 0x55, 0x3a, 0xab, 0x4a, 0xac, 0x92, 0x40, 0x99, - 0x55, 0x61, 0xe2, 0x90, 0x97, 0xb0, 0x95, 0x1f, 0x37, 0x1f, 0x56, 0xb5, 0x8e, 0x3d, 0xff, 0xf8, - 0xda, 0x70, 0x56, 0xd6, 0x81, 0x7b, 0xe5, 0x41, 0xf2, 0xa0, 0xf8, 0x6c, 0x29, 0xc5, 0xfa, 0xe4, - 0xc6, 0x94, 0xac, 0xc5, 0xf7, 0xb0, 0x53, 0x7c, 0xf1, 0x3b, 0x4b, 0x9e, 0xd6, 0x13, 0xac, 0x47, - 0x37, 0x24, 0xe8, 0xfc, 0xcb, 0x2f, 0x63, 0x89, 0x7f, 0x29, 0xa5, 0xcc, 0xbf, 0xf2, 0x35, 0x23, - 0xaf, 0x60, 0x6f, 0xe9, 0x3b, 0xf6, 0x51, 0xb1, 0xc4, 0xb2, 0x2c, 0xeb, 0xc9, 0x6d, 0xb2, 0xd2, - 0x5e, 0xc7, 0x5f, 0x5f, 0xfc, 0xd9, 0x5e, 0xb9, 0xb8, 0x6c, 0x1b, 0x6f, 0x2e, 0xdb, 0xc6, 0x1f, - 0x97, 0x6d, 0xe3, 0xf5, 0x55, 0x7b, 0xe5, 0xcd, 0x55, 0x7b, 0xe5, 0xb7, 0xab, 0xf6, 0xca, 0x77, - 0x4f, 0x3c, 0x2a, 0x27, 0xe1, 0x79, 0x6f, 0x14, 0xf8, 0xfd, 0xa8, 0x2a, 0x43, 0xd9, 0x4f, 0xaa, - 0xf7, 0xfd, 0xc0, 0x0d, 0xa7, 0x28, 0xfa, 0xea, 0x8f, 0x7d, 0x3e, 0x43, 0x71, 0xde, 0x50, 0xbf, - 0xe4, 0x9f, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x90, 0xb5, 0xec, 0x3f, 0xc5, 0x0b, 0x00, 0x00, + 0x14, 0x8f, 0x93, 0x36, 0x49, 0x5f, 0xb7, 0x7f, 0xd6, 0x74, 0x5b, 0xaf, 0x29, 0x4e, 0x37, 0x80, + 0x76, 0x11, 0xab, 0x44, 0x82, 0xdb, 0x1e, 0xb3, 0x05, 0x51, 0x44, 0x16, 0xc9, 0xdb, 0x5e, 0x40, + 0xa2, 0x72, 0xe3, 0x67, 0x67, 0x76, 0xe3, 0x99, 0xc8, 0x33, 0x46, 0xe4, 0x5b, 0xf0, 0x11, 0xf8, + 0x08, 0x9c, 0xb9, 0x23, 0xf5, 0xb8, 0x47, 0xe0, 0x50, 0x41, 0x2b, 0x21, 0xc4, 0x91, 0x4f, 0x80, + 0x3c, 0xfe, 0x93, 0x89, 0x1d, 0xb7, 0x95, 0x96, 0x03, 0xda, 0xdb, 0xcc, 0x7b, 0x6f, 0xde, 0xfb, + 0xfd, 0x7e, 0x6f, 0xfc, 0xc6, 0x70, 0x87, 0x7a, 0xa2, 0x2f, 0xbe, 0xeb, 0x4d, 0x43, 0x26, 0x98, + 0xbe, 0x4e, 0x42, 0xc2, 0x03, 0xe6, 0xf6, 0xa8, 0x27, 0xcc, 0x1d, 0x9f, 0xf9, 0x4c, 0xda, 0xfb, + 0xf1, 0x2a, 0x09, 0xe9, 0xfe, 0x54, 0x87, 0x8d, 0x21, 0xf7, 0x8f, 0x38, 0x8f, 0xf0, 0x10, 0x29, + 0x0b, 0xf4, 0x4d, 0xa8, 0x13, 0xd7, 0xd0, 0x0e, 0xb4, 0x47, 0x6b, 0x76, 0x9d, 0xb8, 0xba, 0x0e, + 0x2b, 0xd4, 0x09, 0xd0, 0xa8, 0x4b, 0x8b, 0x5c, 0xeb, 0xbb, 0xd0, 0xe4, 0xa3, 0x31, 0x06, 0x8e, + 0xd1, 0x90, 0xd6, 0x74, 0x27, 0xed, 0x48, 0x5d, 0x0c, 0x8d, 0x95, 0xd4, 0x2e, 0x77, 0xd2, 0x3e, + 0x0b, 0xce, 0xd8, 0xc4, 0x58, 0x4d, 0xed, 0x72, 0xa7, 0x3f, 0x84, 0xad, 0x80, 0x50, 0x71, 0x1a, + 0x22, 0x17, 0x21, 0x19, 0x09, 0x74, 0x8d, 0xe6, 0x81, 0xf6, 0xa8, 0x6d, 0x6f, 0xc6, 0x66, 0x3b, + 0xb7, 0xea, 0x1f, 0xc2, 0xdd, 0x68, 0xea, 0x3a, 0x02, 0xd5, 0xd0, 0x96, 0x0c, 0xdd, 0x4e, 0x1c, + 0x4a, 0xf0, 0x01, 0xac, 0xbb, 0xc8, 0x47, 0x21, 0x99, 0x0a, 0xc2, 0xa8, 0xd1, 0x96, 0x25, 0x55, + 0x93, 0xbe, 0x0d, 0x8d, 0x28, 0x24, 0xc6, 0x9a, 0xf4, 0xc4, 0x4b, 0xfd, 0x3e, 0xb4, 0xa3, 0x90, + 0x9c, 0x8e, 0x1d, 0x3e, 0x36, 0x40, 0x9a, 0x5b, 0x51, 0x48, 0x3e, 0x73, 0xf8, 0x38, 0x16, 0xc0, + 0x75, 0x84, 0x63, 0xac, 0x27, 0x02, 0xc4, 0xeb, 0x27, 0x2b, 0x7f, 0xfd, 0xd0, 0xd1, 0xba, 0x7b, + 0x70, 0x6f, 0x41, 0x3b, 0x1b, 0xf9, 0x94, 0x51, 0x8e, 0xdd, 0xbf, 0x35, 0xd8, 0x1c, 0x72, 0xff, + 0x38, 0x74, 0x28, 0xf7, 0x30, 0x7c, 0xf6, 0xe9, 0x71, 0x49, 0xd6, 0x1e, 0xb4, 0xdd, 0xf8, 0xcc, + 0x29, 0x71, 0x13, 0x69, 0x07, 0x6f, 0xfd, 0x73, 0xd1, 0xd9, 0x9a, 0x39, 0xc1, 0xe4, 0x49, 0x37, + 0xf3, 0x74, 0xed, 0x96, 0x5c, 0x1e, 0xcd, 0xdb, 0xd0, 0x50, 0xda, 0x70, 0x3f, 0xa1, 0x21, 0xb5, + 0x1e, 0xb4, 0x2e, 0x2f, 0x3a, 0x8d, 0x13, 0xfb, 0x28, 0xe1, 0x93, 0x81, 0x5e, 0x9d, 0x83, 0x56, + 0xba, 0xd3, 0x5c, 0xe8, 0xce, 0x3e, 0xac, 0x85, 0x38, 0x22, 0x53, 0x82, 0x54, 0x48, 0x51, 0xd7, + 0xec, 0xb9, 0x61, 0x41, 0x99, 0xf6, 0x82, 0x32, 0xa9, 0x0a, 0x06, 0xec, 0x2e, 0x72, 0xcd, 0x65, + 0x38, 0xd7, 0x00, 0x86, 0xdc, 0xff, 0xc4, 0x25, 0xe2, 0x7f, 0x2e, 0x81, 0x4a, 0xb2, 0xb5, 0x8c, + 0xe4, 0x0e, 0xe8, 0x73, 0x26, 0x39, 0xc1, 0x3f, 0x13, 0x82, 0x43, 0x42, 0xc5, 0x9b, 0xdd, 0xe3, + 0x84, 0x7e, 0xca, 0x33, 0xa7, 0xff, 0x42, 0xb2, 0x1f, 0x44, 0x21, 0xfd, 0x2f, 0xd8, 0xcf, 0xa1, + 0x37, 0x54, 0xe8, 0x0b, 0x08, 0xd2, 0x5a, 0x39, 0x82, 0x6f, 0x60, 0x5b, 0xb9, 0x7b, 0xcb, 0x07, + 0xd8, 0x3c, 0x6f, 0xbd, 0x5a, 0x92, 0x46, 0x41, 0x92, 0xb4, 0xaa, 0x09, 0x46, 0x31, 0x7f, 0x5e, + 0xfb, 0x47, 0x0d, 0x76, 0x86, 0xdc, 0x7f, 0x8e, 0xe2, 0x10, 0x3d, 0x27, 0x9a, 0x08, 0x9b, 0xcd, + 0x9c, 0x89, 0x98, 0xc5, 0x6a, 0xe6, 0xc4, 0x13, 0x18, 0x39, 0x47, 0x13, 0xda, 0x21, 0x8e, 0x90, + 0x7c, 0x9b, 0xa3, 0xc9, 0xf7, 0xfa, 0x53, 0xd8, 0xf0, 0x10, 0x4f, 0x69, 0x14, 0x60, 0xe8, 0x08, + 0x96, 0xca, 0x30, 0xb0, 0xce, 0x2f, 0x3a, 0xb5, 0xdf, 0x2e, 0x3a, 0xbb, 0x23, 0xc6, 0x03, 0xc6, + 0xb9, 0xfb, 0xb2, 0x47, 0x58, 0x3f, 0x70, 0xc4, 0xb8, 0x77, 0x12, 0x0f, 0xc9, 0x3b, 0x1e, 0xe2, + 0xb3, 0xec, 0x4c, 0xd5, 0x04, 0x4e, 0xe9, 0x58, 0xb0, 0xbf, 0x0c, 0x71, 0x4e, 0xe9, 0x67, 0x4d, + 0xaa, 0xfc, 0x1c, 0xc5, 0x31, 0x7b, 0x89, 0xf4, 0x16, 0x84, 0xee, 0x41, 0x93, 0x7a, 0x22, 0x6f, + 0xb1, 0xbd, 0x4a, 0x3d, 0x51, 0xe0, 0xd9, 0xb8, 0x89, 0xe7, 0xca, 0x6b, 0xf1, 0x5c, 0x5d, 0xc2, + 0x73, 0x1f, 0xcc, 0x32, 0x8d, 0x9c, 0xa5, 0x27, 0xfb, 0x66, 0x23, 0x7f, 0x6d, 0x9a, 0xd7, 0x5f, + 0xd9, 0x44, 0xed, 0x52, 0x9d, 0x1c, 0x87, 0x0d, 0x7b, 0x43, 0xee, 0x1f, 0xe2, 0x04, 0x05, 0xde, + 0xfe, 0x0a, 0x55, 0x5c, 0xe7, 0xb4, 0xe6, 0x03, 0xe8, 0x54, 0xe4, 0xcc, 0xca, 0x7e, 0xf4, 0x6b, + 0x13, 0x1a, 0x43, 0xee, 0xeb, 0x5f, 0x00, 0x28, 0xcf, 0xbe, 0xd9, 0x53, 0x7e, 0x16, 0x7a, 0x0b, + 0xcf, 0x9a, 0xd9, 0xad, 0xf6, 0x65, 0x59, 0xf5, 0xa7, 0xd0, 0xca, 0xc6, 0xe0, 0x5e, 0x31, 0x3c, + 0x75, 0x98, 0x9d, 0x0a, 0x87, 0x9a, 0x24, 0x7b, 0x2c, 0x4a, 0x49, 0x52, 0x47, 0x39, 0x49, 0x61, + 0x28, 0xeb, 0x5f, 0xc2, 0xba, 0xfa, 0xf0, 0xbe, 0x5d, 0x8c, 0x57, 0x9c, 0xe6, 0xbb, 0xd7, 0x38, + 0x55, 0x54, 0xd9, 0x8c, 0x2b, 0xa1, 0x4a, 0x1d, 0x65, 0x54, 0x85, 0x49, 0xa5, 0x9f, 0xc0, 0xc6, + 0xe2, 0x98, 0x7a, 0xa7, 0xaa, 0x74, 0xa2, 0xf9, 0xfb, 0xd7, 0xba, 0xf3, 0xb4, 0x0e, 0xdc, 0x2d, + 0x0f, 0xa0, 0x07, 0xc5, 0xb3, 0xa5, 0x10, 0xf3, 0x83, 0x1b, 0x43, 0xf2, 0x12, 0x5f, 0xc3, 0x56, + 0x71, 0x20, 0x74, 0x96, 0x9c, 0x56, 0x03, 0xcc, 0x87, 0x37, 0x04, 0xa8, 0xf8, 0xcb, 0x1f, 0x62, + 0x09, 0x7f, 0x29, 0xa4, 0x8c, 0xbf, 0xf2, 0x33, 0xd3, 0x5f, 0xc0, 0xce, 0xd2, 0x6f, 0xec, 0xbd, + 0x62, 0x8a, 0x65, 0x51, 0xe6, 0xe3, 0xdb, 0x44, 0x65, 0xb5, 0x06, 0x9f, 0x9f, 0xff, 0x61, 0xd5, + 0xce, 0x2f, 0x2d, 0xed, 0xd5, 0xa5, 0xa5, 0xfd, 0x7e, 0x69, 0x69, 0xdf, 0x5f, 0x59, 0xb5, 0x57, + 0x57, 0x56, 0xed, 0x97, 0x2b, 0xab, 0xf6, 0xd5, 0x63, 0x9f, 0x88, 0x71, 0x74, 0xd6, 0x1b, 0xb1, + 0xa0, 0x1f, 0x67, 0xa5, 0x28, 0xfa, 0x69, 0xf6, 0x7e, 0xc0, 0xdc, 0x68, 0x82, 0xbc, 0x2f, 0x7f, + 0xe0, 0x67, 0x53, 0xe4, 0x67, 0x4d, 0xf9, 0x87, 0xfe, 0xf1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, + 0x5c, 0x53, 0x7f, 0xe3, 0xd4, 0x0b, 0x00, 0x00, } func (this *MsgIssueDenom) Equal(that interface{}) bool { @@ -958,9 +959,6 @@ func (this *MsgIssueDenom) Equal(that interface{}) bool { if this.Data != that1.Data { return false } - if this.RoyaltyEnabled != that1.RoyaltyEnabled { - return false - } return true } func (this *MsgTransferNFT) Equal(that interface{}) bool { @@ -1174,13 +1172,13 @@ func (this *MsgSetDefaultRoyalty) Equal(that interface{}) bool { } else if this == nil { return false } - if this.ClassId != that1.ClassId { + if this.DenomId != that1.DenomId { return false } if this.Receiver != that1.Receiver { return false } - if this.FeeNumerator != that1.FeeNumerator { + if !this.FeeNumerator.Equal(that1.FeeNumerator) { return false } if this.Sender != that1.Sender { @@ -1207,16 +1205,16 @@ func (this *MsgSetTokenRoyalty) Equal(that interface{}) bool { } else if this == nil { return false } - if this.ClassId != that1.ClassId { + if this.DenomId != that1.DenomId { return false } - if this.TokenId != that1.TokenId { + if this.NftId != that1.NftId { return false } if this.Receiver != that1.Receiver { return false } - if this.FeeNumerator != that1.FeeNumerator { + if !this.FeeNumerator.Equal(that1.FeeNumerator) { return false } if this.Sender != that1.Sender { @@ -1243,10 +1241,10 @@ func (this *MsgResetTokenRoyalty) Equal(that interface{}) bool { } else if this == nil { return false } - if this.ClassId != that1.ClassId { + if this.DenomId != that1.DenomId { return false } - if this.TokenId != that1.TokenId { + if this.NftId != that1.NftId { return false } if this.Sender != that1.Sender { @@ -1273,7 +1271,7 @@ func (this *MsgDeleteDefaultRoyalty) Equal(that interface{}) bool { } else if this == nil { return false } - if this.ClassId != that1.ClassId { + if this.DenomId != that1.DenomId { return false } if this.Sender != that1.Sender { @@ -1306,7 +1304,6 @@ type MsgClient interface { BurnNFT(ctx context.Context, in *MsgBurnNFT, opts ...grpc.CallOption) (*MsgBurnNFTResponse, error) // TransferDenom defines a method for transferring a denom. TransferDenom(ctx context.Context, in *MsgTransferDenom, opts ...grpc.CallOption) (*MsgTransferDenomResponse, error) - // royalty service // SetDefaultRoyalty defines a method for set a default royalty for class. SetDefaultRoyalty(ctx context.Context, in *MsgSetDefaultRoyalty, opts ...grpc.CallOption) (*MsgSetDefaultRoyaltyResponse, error) // SetTokenRoyalty defines a method for set royalty for token. @@ -1429,7 +1426,6 @@ type MsgServer interface { BurnNFT(context.Context, *MsgBurnNFT) (*MsgBurnNFTResponse, error) // TransferDenom defines a method for transferring a denom. TransferDenom(context.Context, *MsgTransferDenom) (*MsgTransferDenomResponse, error) - // royalty service // SetDefaultRoyalty defines a method for set a default royalty for class. SetDefaultRoyalty(context.Context, *MsgSetDefaultRoyalty) (*MsgSetDefaultRoyaltyResponse, error) // SetTokenRoyalty defines a method for set royalty for token. @@ -1728,16 +1724,6 @@ func (m *MsgIssueDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.RoyaltyEnabled { - i-- - if m.RoyaltyEnabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x60 - } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -2307,13 +2293,16 @@ func (m *MsgSetDefaultRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - if len(m.FeeNumerator) > 0 { - i -= len(m.FeeNumerator) - copy(dAtA[i:], m.FeeNumerator) - i = encodeVarintTx(dAtA, i, uint64(len(m.FeeNumerator))) - i-- - dAtA[i] = 0x1a + { + size := m.FeeNumerator.Size() + i -= size + if _, err := m.FeeNumerator.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Receiver) > 0 { i -= len(m.Receiver) copy(dAtA[i:], m.Receiver) @@ -2321,10 +2310,10 @@ func (m *MsgSetDefaultRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintTx(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2381,13 +2370,16 @@ func (m *MsgSetTokenRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x2a } - if len(m.FeeNumerator) > 0 { - i -= len(m.FeeNumerator) - copy(dAtA[i:], m.FeeNumerator) - i = encodeVarintTx(dAtA, i, uint64(len(m.FeeNumerator))) - i-- - dAtA[i] = 0x22 + { + size := m.FeeNumerator.Size() + i -= size + if _, err := m.FeeNumerator.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x22 if len(m.Receiver) > 0 { i -= len(m.Receiver) copy(dAtA[i:], m.Receiver) @@ -2395,17 +2387,17 @@ func (m *MsgSetTokenRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.TokenId) > 0 { - i -= len(m.TokenId) - copy(dAtA[i:], m.TokenId) - i = encodeVarintTx(dAtA, i, uint64(len(m.TokenId))) + if len(m.NftId) > 0 { + i -= len(m.NftId) + copy(dAtA[i:], m.NftId) + i = encodeVarintTx(dAtA, i, uint64(len(m.NftId))) i-- dAtA[i] = 0x12 } - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintTx(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2462,17 +2454,17 @@ func (m *MsgResetTokenRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if len(m.TokenId) > 0 { - i -= len(m.TokenId) - copy(dAtA[i:], m.TokenId) - i = encodeVarintTx(dAtA, i, uint64(len(m.TokenId))) + if len(m.NftId) > 0 { + i -= len(m.NftId) + copy(dAtA[i:], m.NftId) + i = encodeVarintTx(dAtA, i, uint64(len(m.NftId))) i-- dAtA[i] = 0x12 } - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintTx(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2529,10 +2521,10 @@ func (m *MsgDeleteDefaultRoyalty) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x12 } - if len(m.ClassId) > 0 { - i -= len(m.ClassId) - copy(dAtA[i:], m.ClassId) - i = encodeVarintTx(dAtA, i, uint64(len(m.ClassId))) + if len(m.DenomId) > 0 { + i -= len(m.DenomId) + copy(dAtA[i:], m.DenomId) + i = encodeVarintTx(dAtA, i, uint64(len(m.DenomId))) i-- dAtA[i] = 0xa } @@ -2621,9 +2613,6 @@ func (m *MsgIssueDenom) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.RoyaltyEnabled { - n += 2 - } return n } @@ -2848,7 +2837,7 @@ func (m *MsgSetDefaultRoyalty) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2856,10 +2845,8 @@ func (m *MsgSetDefaultRoyalty) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.FeeNumerator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } + l = m.FeeNumerator.Size() + n += 1 + l + sovTx(uint64(l)) l = len(m.Sender) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -2882,11 +2869,11 @@ func (m *MsgSetTokenRoyalty) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.TokenId) + l = len(m.NftId) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2894,10 +2881,8 @@ func (m *MsgSetTokenRoyalty) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.FeeNumerator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } + l = m.FeeNumerator.Size() + n += 1 + l + sovTx(uint64(l)) l = len(m.Sender) if l > 0 { n += 1 + l + sovTx(uint64(l)) @@ -2920,11 +2905,11 @@ func (m *MsgResetTokenRoyalty) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.TokenId) + l = len(m.NftId) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2950,7 +2935,7 @@ func (m *MsgDeleteDefaultRoyalty) Size() (n int) { } var l int _ = l - l = len(m.ClassId) + l = len(m.DenomId) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -3333,26 +3318,6 @@ func (m *MsgIssueDenom) Unmarshal(dAtA []byte) error { } m.Data = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 12: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyEnabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.RoyaltyEnabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -4883,7 +4848,7 @@ func (m *MsgSetDefaultRoyalty) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4911,7 +4876,7 @@ func (m *MsgSetDefaultRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -4975,7 +4940,9 @@ func (m *MsgSetDefaultRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.FeeNumerator = string(dAtA[iNdEx:postIndex]) + if err := m.FeeNumerator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 4: if wireType != 2 { @@ -5111,7 +5078,7 @@ func (m *MsgSetTokenRoyalty) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5139,11 +5106,11 @@ func (m *MsgSetTokenRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NftId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5171,7 +5138,7 @@ func (m *MsgSetTokenRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TokenId = string(dAtA[iNdEx:postIndex]) + m.NftId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -5235,7 +5202,9 @@ func (m *MsgSetTokenRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.FeeNumerator = string(dAtA[iNdEx:postIndex]) + if err := m.FeeNumerator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 5: if wireType != 2 { @@ -5371,7 +5340,7 @@ func (m *MsgResetTokenRoyalty) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5399,11 +5368,11 @@ func (m *MsgResetTokenRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NftId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5431,7 +5400,7 @@ func (m *MsgResetTokenRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TokenId = string(dAtA[iNdEx:postIndex]) + m.NftId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -5567,7 +5536,7 @@ func (m *MsgDeleteDefaultRoyalty) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DenomId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5595,7 +5564,7 @@ func (m *MsgDeleteDefaultRoyalty) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClassId = string(dAtA[iNdEx:postIndex]) + m.DenomId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { diff --git a/proto/nft/nft.proto b/proto/nft/nft.proto index 00fea8a2..c1163cce 100644 --- a/proto/nft/nft.proto +++ b/proto/nft/nft.proto @@ -50,9 +50,6 @@ message DenomMetadata { bool mint_restricted = 3; bool update_restricted = 4; string data = 5; - - // royalty options - bool royalty_enabled = 6; } // IDCollection defines a type of collection with specified ID diff --git a/proto/nft/query.proto b/proto/nft/query.proto index b313b74f..e313b49a 100644 --- a/proto/nft/query.proto +++ b/proto/nft/query.proto @@ -40,7 +40,6 @@ service Query { option (google.api.http).get = "/irismod/nft/nfts/{denom_id}/{token_id}"; } - // Royalty // FeeDenominator queries the FeeDenominator rpc FeeDenominator(MsgFeeDenominatorRequest) returns (MsgFeeDenominatorResponse); @@ -131,8 +130,8 @@ message MsgFeeDenominatorResponse { } message MsgRoyaltyInfoRequest { - string class_id = 1; - string token_id = 2; + string denom_id = 1; + string nft_id = 2; string sale_price = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; } message MsgRoyaltyInfoResponse { @@ -141,7 +140,7 @@ message MsgRoyaltyInfoResponse { } message MsgDefaultRoyaltyInfoRequest { - string class_id = 1; + string denom_id = 1; } message MsgDefaultRoyaltyInfoResponse { string receiver = 1; @@ -149,8 +148,8 @@ message MsgDefaultRoyaltyInfoResponse { } message MsgTokenRoyaltyInfoRequest { - string class_id = 1; - string token_id = 2; + string denom_id = 1; + string nft_id = 2; } message MsgTokenRoyaltyInfoResponse { string receiver = 1; diff --git a/proto/nft/royalty.proto b/proto/nft/royalty.proto index f904fa60..df19fbd2 100644 --- a/proto/nft/royalty.proto +++ b/proto/nft/royalty.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package irismod.nft; +package irismod.nft.royalty; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; @@ -12,7 +12,14 @@ option (gogoproto.goproto_getters_all) = false; message RoyaltyInfo { option (gogoproto.equal) = true; - string address = 1; + string receiver = 1; string royalty_fraction = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; -}; \ No newline at end of file +}; + +message RoyaltyMetadata { + option (gogoproto.equal) = true; + + bool enabled = 1; + RoyaltyInfo defaultRoyaltyInfo = 2; +} \ No newline at end of file diff --git a/proto/nft/tx.proto b/proto/nft/tx.proto index 429b2dd1..deac1f6a 100644 --- a/proto/nft/tx.proto +++ b/proto/nft/tx.proto @@ -26,7 +26,6 @@ service Msg { // TransferDenom defines a method for transferring a denom. rpc TransferDenom(MsgTransferDenom) returns (MsgTransferDenomResponse); - // royalty service // SetDefaultRoyalty defines a method for set a default royalty for class. rpc SetDefaultRoyalty(MsgSetDefaultRoyalty) returns (MsgSetDefaultRoyaltyResponse); @@ -56,7 +55,6 @@ message MsgIssueDenom { string uri_hash = 10; string data = 11; - bool royalty_enabled = 12; } // MsgIssueDenomResponse defines the Msg/IssueDenom response type. @@ -141,9 +139,9 @@ message MsgTransferDenomResponse {} message MsgSetDefaultRoyalty { option (gogoproto.equal) = true; - string class_id = 1; + string denom_id = 1; string receiver = 2; - string fee_numerator = 3; + string fee_numerator = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; string sender = 4; } @@ -154,10 +152,10 @@ message MsgSetDefaultRoyaltyResponse {} message MsgSetTokenRoyalty { option (gogoproto.equal) = true; - string class_id = 1; - string token_id= 2; + string denom_id = 1; + string nft_id= 2; string receiver = 3; - string fee_numerator = 4; + string fee_numerator = 4 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; string sender = 5; } @@ -168,8 +166,8 @@ message MsgSetTokenRoyaltyResponse {} message MsgResetTokenRoyalty { option (gogoproto.equal) = true; - string class_id = 1; - string token_id= 2; + string denom_id = 1; + string nft_id= 2; string sender = 3; } @@ -179,7 +177,7 @@ message MsgResetTokenRoyaltyResponse {} message MsgDeleteDefaultRoyalty { option (gogoproto.equal) = true; - string class_id = 1; + string denom_id = 1; string sender = 2; } From 636373d1d84ddcc293fe425925f789911414ae7b Mon Sep 17 00:00:00 2001 From: sheldon <997166273@qq.com> Date: Wed, 21 Dec 2022 18:04:25 +0800 Subject: [PATCH 05/11] Modify the location of royal confidence storage --- modules/nft/keeper/denom.go | 8 + modules/nft/keeper/nft.go | 14 + modules/nft/keeper/royalty.go | 207 ++--- modules/nft/keeper/utils.go | 23 + modules/nft/types/nft.pb.go | 1258 ++++++++++++++++++++++++++++--- modules/nft/types/royalty.pb.go | 629 ---------------- proto/nft/nft.proto | 40 +- proto/nft/royalty.proto | 25 - 8 files changed, 1346 insertions(+), 858 deletions(-) create mode 100644 modules/nft/keeper/utils.go delete mode 100644 modules/nft/types/royalty.pb.go delete mode 100644 proto/nft/royalty.proto diff --git a/modules/nft/keeper/denom.go b/modules/nft/keeper/denom.go index cf9987c0..4075e497 100644 --- a/modules/nft/keeper/denom.go +++ b/modules/nft/keeper/denom.go @@ -29,6 +29,14 @@ func (k Keeper) SaveDenom(ctx sdk.Context, id, UpdateRestricted: updateRestricted, Data: data, } + + denomPlugin := k.UserDataToDenomPlugin(data) + + // royalty option + if denomPlugin != nil && denomPlugin.RoyaltyPlugin != nil { + denomMetadata.RoyaltyPlugin = denomPlugin.RoyaltyPlugin + } + metadata, err := codectypes.NewAnyWithValue(denomMetadata) if err != nil { return err diff --git a/modules/nft/keeper/nft.go b/modules/nft/keeper/nft.go index ccd84971..8543e43b 100644 --- a/modules/nft/keeper/nft.go +++ b/modules/nft/keeper/nft.go @@ -19,10 +19,17 @@ func (k Keeper) SaveNFT(ctx sdk.Context, denomID, tokenData string, receiver sdk.AccAddress, ) error { + + // royalty option + tokenRoyaltyPlugin, tokenData := k.getTokenRoyaltyInfoFromTokenData(ctx, tokenData, denomID) + nftMetadata := &types.NFTMetadata{ Name: tokenNm, Data: tokenData, } + if tokenRoyaltyPlugin != nil { + nftMetadata.TokenRoyaltyPlugin = tokenRoyaltyPlugin + } data, err := codectypes.NewAnyWithValue(nftMetadata) if err != nil { return err @@ -81,7 +88,14 @@ func (k Keeper) UpdateNFT(ctx sdk.Context, denomID, } nftMetadata.Name = types.Modify(nftMetadata.Name, tokenNm) + tokenRoyaltyPlugin, tokenData := k.getTokenRoyaltyInfoFromTokenData(ctx, tokenData, denomID) + nftMetadata.Data = types.Modify(nftMetadata.Data, tokenData) + + if tokenRoyaltyPlugin != nil { + nftMetadata.TokenRoyaltyPlugin = tokenRoyaltyPlugin + } + data, err := codectypes.NewAnyWithValue(&nftMetadata) if err != nil { return err diff --git a/modules/nft/keeper/royalty.go b/modules/nft/keeper/royalty.go index 23983cef..29cbc9bf 100644 --- a/modules/nft/keeper/royalty.go +++ b/modules/nft/keeper/royalty.go @@ -19,7 +19,7 @@ import ( const DefaultFeeDenominator = 10000 // SaveDefaultRoyalty sets the default royalty information of a class -func (k Keeper) SaveDefaultRoyalty(ctx sdk.Context, denomId string, receiver string, feeNumerator sdkmath.Uint, srcOwner sdk.AccAddress) error { +func (k Keeper) SaveDefaultRoyalty(ctx sdk.Context, denomId string, receiver string, fraction sdkmath.Uint, srcOwner sdk.AccAddress) error { denom, err := k.GetDenomInfo(ctx, denomId) if err != nil { return err @@ -30,32 +30,62 @@ func (k Keeper) SaveDefaultRoyalty(ctx sdk.Context, denomId string, receiver str return errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to transfer denom %s", srcOwner.String(), denomId) } - // 1. Unmarshal denomInfo - var royaltyMetadata types.RoyaltyMetadata - if err := k.cdc.Unmarshal([]byte(denom.Data), &royaltyMetadata); err != nil { - return err + royaltyPlugin := &types.RoyaltyPlugin{ + Enabled: true, + Receiver: receiver, + Fraction: fraction, } - if !royaltyMetadata.Enabled { - return types.ErrNotEnabledRoyalty + denomMetadata := &types.DenomMetadata{ + Creator: denom.Creator, + Schema: denom.Schema, + MintRestricted: denom.MintRestricted, + UpdateRestricted: denom.UpdateRestricted, + Data: denom.Data, + RoyaltyPlugin: royaltyPlugin, } - royaltyMetadata.DefaultRoyaltyInfo = &types.RoyaltyInfo{ - Receiver: receiver, - RoyaltyFraction: feeNumerator, + data, err := codectypes.NewAnyWithValue(denomMetadata) + if err != nil { + return err + } + class := nft.Class{ + Id: denom.Id, + Name: denom.Name, + Symbol: denom.Symbol, + Data: data, + + Description: denom.Description, + Uri: denom.Uri, + UriHash: denom.UriHash, } + return k.nk.UpdateClass(ctx, class) +} - denomDataBytes, err := codectypes.NewAnyWithValue(&royaltyMetadata) +// RemoveDefaultRoyalty deletes the default royalty information of a class +func (k Keeper) RemoveDefaultRoyalty(ctx sdk.Context, denomId string, srcOwner sdk.AccAddress) error { + + denom, err := k.GetDenomInfo(ctx, denomId) if err != nil { return err } + // authorize + if srcOwner.String() != denom.Creator { + return errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to transfer denom %s", srcOwner.String(), denomId) + } + + if !k.IsNotEnabledRoyalty(ctx, denomId) { + return types.ErrNotEnabledRoyalty + } + denomMetadata := &types.DenomMetadata{ Creator: denom.Creator, Schema: denom.Schema, MintRestricted: denom.MintRestricted, UpdateRestricted: denom.UpdateRestricted, - Data: denomDataBytes.String(), + Data: denom.Data, + RoyaltyPlugin: nil, } data, err := codectypes.NewAnyWithValue(denomMetadata) if err != nil { @@ -75,26 +105,35 @@ func (k Keeper) SaveDefaultRoyalty(ctx sdk.Context, denomId string, receiver str } // SaveTokenRoyalty sets the royalty information of a token under a class -func (k Keeper) SaveTokenRoyalty(ctx sdk.Context, denomId string, tokenId string, receiver string, feeNumerator sdkmath.Uint, owner sdk.AccAddress) error { +func (k Keeper) SaveTokenRoyalty(ctx sdk.Context, denomId string, tokenId string, receiver string, fraction sdkmath.Uint, owner sdk.AccAddress) error { + // just the owner of NFT can edit if err := k.Authorize(ctx, denomId, tokenId, owner); err != nil { return err } + if !k.IsNotEnabledRoyalty(ctx, denomId) { + return types.ErrNotEnabledRoyalty + } + nftM, err := k.GetNFT(ctx, denomId, tokenId) if err != nil { return errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) } - srcNftData := nftM.GetData() - var royaltyInfo types.RoyaltyInfo - if err := k.cdc.Unmarshal([]byte(srcNftData), &royaltyInfo); err != nil { - return err + tokenRoyaltyInfo := &types.TokenRoyaltyPlugin{ + Receiver: receiver, + Fraction: fraction, + } + + tokenPlugin := k.UserDataToTokenPlugin(nftM.GetData()) + if tokenPlugin == nil { + tokenPlugin = &types.TokenPlugin{RoyaltyPlugin: tokenRoyaltyInfo} + } else { + tokenPlugin.RoyaltyPlugin = tokenRoyaltyInfo } - royaltyInfo.Receiver = receiver - royaltyInfo.RoyaltyFraction = feeNumerator - dstData, err := codectypes.NewAnyWithValue(&royaltyInfo) + dstData, err := codectypes.NewAnyWithValue(tokenRoyaltyInfo) if err != nil { return err } @@ -119,14 +158,24 @@ func (k Keeper) RemoveTokenRoyalty(ctx sdk.Context, denomId string, tokenId stri return err } + if !k.IsNotEnabledRoyalty(ctx, denomId) { + return types.ErrNotEnabledRoyalty + } + nftM, err := k.GetNFT(ctx, denomId, tokenId) if err != nil { return errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) } - srcNftData := nftM.GetData() - var royaltyInfo types.RoyaltyInfo - if err := k.cdc.Unmarshal([]byte(srcNftData), &royaltyInfo); err != nil { + tokenPlugin := k.UserDataToTokenPlugin(nftM.GetData()) + if tokenPlugin == nil { + tokenPlugin = &types.TokenPlugin{} + } else { + tokenPlugin.RoyaltyPlugin = nil + } + + dstData, err := codectypes.NewAnyWithValue(tokenPlugin) + if err != nil { return err } @@ -138,66 +187,12 @@ func (k Keeper) RemoveTokenRoyalty(ctx sdk.Context, denomId string, tokenId stri nftM.GetName(), nftM.GetURI(), nftM.GetURIHash(), - "", + dstData.String(), nftM.GetOwner(), ) } -// RemoveDefaultRoyalty deletes the default royalty information of a class -func (k Keeper) RemoveDefaultRoyalty(ctx sdk.Context, denomId string, srcOwner sdk.AccAddress) error { - - denom, err := k.GetDenomInfo(ctx, denomId) - if err != nil { - return err - } - - // authorize - if srcOwner.String() != denom.Creator { - return errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to transfer denom %s", srcOwner.String(), denomId) - } - - // 1. Unmarshal denomInfo - var royaltyMetadata types.RoyaltyMetadata - if err := k.cdc.Unmarshal([]byte(denom.Data), &royaltyMetadata); err != nil { - return err - } - - if !royaltyMetadata.Enabled { - return types.ErrNotEnabledRoyalty - } - - royaltyMetadata.DefaultRoyaltyInfo = nil - royaltyMetadata.Enabled = false - denomDataBytes, err := codectypes.NewAnyWithValue(&royaltyMetadata) - if err != nil { - return err - } - - denomMetadata := &types.DenomMetadata{ - Creator: denom.Creator, - Schema: denom.Schema, - MintRestricted: denom.MintRestricted, - UpdateRestricted: denom.UpdateRestricted, - Data: denomDataBytes.String(), - } - data, err := codectypes.NewAnyWithValue(denomMetadata) - if err != nil { - return err - } - class := nft.Class{ - Id: denom.Id, - Name: denom.Name, - Symbol: denom.Symbol, - Data: data, - - Description: denom.Description, - Uri: denom.Uri, - UriHash: denom.UriHash, - } - return k.nk.UpdateClass(ctx, class) -} - // GetFeeDenominator returns the denominator of the fee func (k Keeper) GetFeeDenominator(ctx sdk.Context) (feeNumerator sdkmath.Uint) { feeNumerator = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(DefaultFeeDenominator)) @@ -223,32 +218,64 @@ func (k Keeper) GetRoyaltyInfo(ctx sdk.Context, denomId string, nftId string, sa // GetDefaultRoyaltyInfo returns the default royalty information of a class func (k Keeper) GetDefaultRoyaltyInfo(ctx sdk.Context, denomId string) (string, sdkmath.Uint, error) { + + if !k.IsNotEnabledRoyalty(ctx, denomId) { + return "", sdkmath.Uint{}, types.ErrNotEnabledRoyalty + } + denom, err := k.GetDenomInfo(ctx, denomId) if err != nil { return "", sdkmath.Uint{}, err } - var royaltyMetadata types.RoyaltyMetadata - if err := k.cdc.Unmarshal([]byte(denom.Data), &royaltyMetadata); err != nil { - return "", sdkmath.Uint{}, err - } - if !royaltyMetadata.Enabled { - return "", sdkmath.Uint{}, types.ErrNotEnabledRoyalty - } - return royaltyMetadata.DefaultRoyaltyInfo.Receiver, royaltyMetadata.DefaultRoyaltyInfo.RoyaltyFraction, nil + denomPlugin := k.UserDataToDenomPlugin(denom.Data) + + return denomPlugin.RoyaltyPlugin.Receiver, denomPlugin.RoyaltyPlugin.Fraction, nil } // GetTokenRoyaltyInfo returns the royalty information of a token under a class func (k Keeper) GetTokenRoyaltyInfo(ctx sdk.Context, denomId string, tokenId string) (string, sdkmath.Uint, error) { + + if !k.IsNotEnabledRoyalty(ctx, denomId) { + return "", sdkmath.Uint{}, types.ErrNotEnabledRoyalty + } + nftM, err := k.GetNFT(ctx, denomId, tokenId) if err != nil { return "", sdkmath.Uint{}, errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) } - nftData := nftM.GetData() - var royaltyInfo types.RoyaltyInfo - if err := k.cdc.Unmarshal([]byte(nftData), &royaltyInfo); err != nil { + tokenPlugin := k.UserDataToTokenPlugin(nftM.GetData()) + if tokenPlugin.RoyaltyPlugin == nil || tokenPlugin == nil { return "", sdkmath.Uint{}, err } - return royaltyInfo.Receiver, royaltyInfo.RoyaltyFraction, nil + + return tokenPlugin.RoyaltyPlugin.Receiver, tokenPlugin.RoyaltyPlugin.Fraction, nil +} + +func (k Keeper) IsNotEnabledRoyalty(ctx sdk.Context, denomId string) bool { + denom, err := k.GetDenomInfo(ctx, denomId) + if err != nil { + return false + } + denomPlugin := k.UserDataToDenomPlugin(denom.Data) + + if denomPlugin == nil || denomPlugin.RoyaltyPlugin == nil || !denomPlugin.RoyaltyPlugin.Enabled { + return false + } + + return true +} + +func (k Keeper) getTokenRoyaltyInfoFromTokenData(ctx sdk.Context, tokenData, denomId string) (*types.TokenRoyaltyPlugin, string) { + // royalty option + if k.IsNotEnabledRoyalty(ctx, denomId) { + tokenPlugin := k.UserDataToTokenPlugin(tokenData) + if tokenPlugin != nil && tokenPlugin.RoyaltyPlugin != nil { + return tokenPlugin.RoyaltyPlugin, tokenData + } else { + return nil, "" + } + } + return nil, tokenData } diff --git a/modules/nft/keeper/utils.go b/modules/nft/keeper/utils.go new file mode 100644 index 00000000..1f608277 --- /dev/null +++ b/modules/nft/keeper/utils.go @@ -0,0 +1,23 @@ +package keeper + +import "github.com/irisnet/irismod/modules/nft/types" + +func (k Keeper) UserDataToDenomPlugin(data string) *types.DenomPlugin { + + // 1. Unmarshal denomPlugin + var denomPlugin *types.DenomPlugin + if err := k.cdc.Unmarshal([]byte(data), denomPlugin); err != nil { + return nil + } + return denomPlugin +} + +func (k Keeper) UserDataToTokenPlugin(data string) *types.TokenPlugin { + + // 1. Unmarshal denomPlugin + var tokenPlugin *types.TokenPlugin + if err := k.cdc.Unmarshal([]byte(data), tokenPlugin); err != nil { + return nil + } + return tokenPlugin +} diff --git a/modules/nft/types/nft.pb.go b/modules/nft/types/nft.pb.go index db8953af..e80554c4 100644 --- a/modules/nft/types/nft.pb.go +++ b/modules/nft/types/nft.pb.go @@ -4,6 +4,7 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" @@ -67,8 +68,9 @@ func (m *BaseNFT) XXX_DiscardUnknown() { var xxx_messageInfo_BaseNFT proto.InternalMessageInfo type NFTMetadata struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + TokenRoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,3,opt,name=tokenRoyaltyPlugin,proto3" json:"irismod:2981"` } func (m *NFTMetadata) Reset() { *m = NFTMetadata{} } @@ -158,6 +160,8 @@ type DenomMetadata struct { MintRestricted bool `protobuf:"varint,3,opt,name=mint_restricted,json=mintRestricted,proto3" json:"mint_restricted,omitempty"` UpdateRestricted bool `protobuf:"varint,4,opt,name=update_restricted,json=updateRestricted,proto3" json:"update_restricted,omitempty"` Data string `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` + // Royalty field + RoyaltyPlugin *RoyaltyPlugin `protobuf:"bytes,6,opt,name=royaltyPlugin,proto3" json:"irismod:2981"` } func (m *DenomMetadata) Reset() { *m = DenomMetadata{} } @@ -310,6 +314,159 @@ func (m *Collection) XXX_DiscardUnknown() { var xxx_messageInfo_Collection proto.InternalMessageInfo +type DenomPlugin struct { + // Royalty field + RoyaltyPlugin *RoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"irismod:2981"` +} + +func (m *DenomPlugin) Reset() { *m = DenomPlugin{} } +func (m *DenomPlugin) String() string { return proto.CompactTextString(m) } +func (*DenomPlugin) ProtoMessage() {} +func (*DenomPlugin) Descriptor() ([]byte, []int) { + return fileDescriptor_fe8ab7e15b7f0646, []int{7} +} +func (m *DenomPlugin) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DenomPlugin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DenomPlugin.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 *DenomPlugin) XXX_Merge(src proto.Message) { + xxx_messageInfo_DenomPlugin.Merge(m, src) +} +func (m *DenomPlugin) XXX_Size() int { + return m.Size() +} +func (m *DenomPlugin) XXX_DiscardUnknown() { + xxx_messageInfo_DenomPlugin.DiscardUnknown(m) +} + +var xxx_messageInfo_DenomPlugin proto.InternalMessageInfo + +type RoyaltyPlugin struct { + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"irismod:2981:enabled"` + Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"irismod:2981:receiver"` + Fraction cosmossdk_io_math.Uint `protobuf:"bytes,3,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"irismod:2981:fraction"` +} + +func (m *RoyaltyPlugin) Reset() { *m = RoyaltyPlugin{} } +func (m *RoyaltyPlugin) String() string { return proto.CompactTextString(m) } +func (*RoyaltyPlugin) ProtoMessage() {} +func (*RoyaltyPlugin) Descriptor() ([]byte, []int) { + return fileDescriptor_fe8ab7e15b7f0646, []int{8} +} +func (m *RoyaltyPlugin) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoyaltyPlugin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoyaltyPlugin.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 *RoyaltyPlugin) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoyaltyPlugin.Merge(m, src) +} +func (m *RoyaltyPlugin) XXX_Size() int { + return m.Size() +} +func (m *RoyaltyPlugin) XXX_DiscardUnknown() { + xxx_messageInfo_RoyaltyPlugin.DiscardUnknown(m) +} + +var xxx_messageInfo_RoyaltyPlugin proto.InternalMessageInfo + +type TokenPlugin struct { + // Royalty field + RoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"irismod:2981"` +} + +func (m *TokenPlugin) Reset() { *m = TokenPlugin{} } +func (m *TokenPlugin) String() string { return proto.CompactTextString(m) } +func (*TokenPlugin) ProtoMessage() {} +func (*TokenPlugin) Descriptor() ([]byte, []int) { + return fileDescriptor_fe8ab7e15b7f0646, []int{9} +} +func (m *TokenPlugin) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenPlugin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenPlugin.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 *TokenPlugin) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenPlugin.Merge(m, src) +} +func (m *TokenPlugin) XXX_Size() int { + return m.Size() +} +func (m *TokenPlugin) XXX_DiscardUnknown() { + xxx_messageInfo_TokenPlugin.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenPlugin proto.InternalMessageInfo + +type TokenRoyaltyPlugin struct { + Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"irismod:2981:receiver"` + Fraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"irismod:2981:fraction"` +} + +func (m *TokenRoyaltyPlugin) Reset() { *m = TokenRoyaltyPlugin{} } +func (m *TokenRoyaltyPlugin) String() string { return proto.CompactTextString(m) } +func (*TokenRoyaltyPlugin) ProtoMessage() {} +func (*TokenRoyaltyPlugin) Descriptor() ([]byte, []int) { + return fileDescriptor_fe8ab7e15b7f0646, []int{10} +} +func (m *TokenRoyaltyPlugin) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenRoyaltyPlugin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenRoyaltyPlugin.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 *TokenRoyaltyPlugin) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenRoyaltyPlugin.Merge(m, src) +} +func (m *TokenRoyaltyPlugin) XXX_Size() int { + return m.Size() +} +func (m *TokenRoyaltyPlugin) XXX_DiscardUnknown() { + xxx_messageInfo_TokenRoyaltyPlugin.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenRoyaltyPlugin proto.InternalMessageInfo + func init() { proto.RegisterType((*BaseNFT)(nil), "irismod.nft.BaseNFT") proto.RegisterType((*NFTMetadata)(nil), "irismod.nft.NFTMetadata") @@ -318,52 +475,69 @@ func init() { proto.RegisterType((*IDCollection)(nil), "irismod.nft.IDCollection") proto.RegisterType((*Owner)(nil), "irismod.nft.Owner") proto.RegisterType((*Collection)(nil), "irismod.nft.Collection") + proto.RegisterType((*DenomPlugin)(nil), "irismod.nft.DenomPlugin") + proto.RegisterType((*RoyaltyPlugin)(nil), "irismod.nft.RoyaltyPlugin") + proto.RegisterType((*TokenPlugin)(nil), "irismod.nft.TokenPlugin") + proto.RegisterType((*TokenRoyaltyPlugin)(nil), "irismod.nft.TokenRoyaltyPlugin") } func init() { proto.RegisterFile("nft/nft.proto", fileDescriptor_fe8ab7e15b7f0646) } var fileDescriptor_fe8ab7e15b7f0646 = []byte{ - // 635 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, - 0x10, 0x8e, 0x1d, 0xa7, 0x4e, 0xc6, 0x4d, 0xdb, 0x7f, 0xff, 0x08, 0xb9, 0x1c, 0xec, 0x2a, 0x42, - 0xa2, 0x12, 0x28, 0x11, 0x45, 0xe2, 0x50, 0x6e, 0xa6, 0xaa, 0x08, 0x12, 0x45, 0xb2, 0xca, 0x85, - 0x4b, 0xb4, 0xf5, 0x6e, 0x9a, 0x15, 0xb1, 0x37, 0xda, 0xdd, 0xa8, 0x2a, 0x2f, 0x01, 0x12, 0x2f, - 0xc0, 0x2b, 0x20, 0xf1, 0x10, 0x3d, 0xf6, 0xc8, 0x29, 0x82, 0xf4, 0xc2, 0xb9, 0x4f, 0x80, 0xbc, - 0x6b, 0x07, 0x47, 0x01, 0xa9, 0xb7, 0x99, 0x6f, 0xbe, 0xdd, 0xf9, 0xe6, 0x1b, 0x7b, 0xa1, 0x9d, - 0x8d, 0x54, 0x3f, 0x1b, 0xa9, 0xde, 0x54, 0x70, 0xc5, 0x91, 0xc7, 0x04, 0x93, 0x29, 0x27, 0xbd, - 0x6c, 0xa4, 0xee, 0x77, 0xce, 0xf9, 0x39, 0xd7, 0x78, 0x3f, 0x8f, 0x0c, 0xa5, 0xfb, 0xd9, 0x02, - 0x37, 0xc2, 0x92, 0x9e, 0x1c, 0x9f, 0xa2, 0x2d, 0xb0, 0x19, 0xf1, 0xad, 0x3d, 0x6b, 0xbf, 0x15, - 0xdb, 0x8c, 0x20, 0x04, 0x4e, 0x86, 0x53, 0xea, 0xdb, 0x1a, 0xd1, 0x31, 0xda, 0x85, 0xfa, 0x4c, - 0x30, 0xbf, 0x9e, 0x43, 0x91, 0xbb, 0x98, 0x87, 0xf5, 0xb7, 0xf1, 0x20, 0xce, 0xb1, 0x9c, 0x4e, - 0xb0, 0xc2, 0xbe, 0x63, 0xe8, 0x79, 0x8c, 0x3a, 0xd0, 0xe0, 0x17, 0x19, 0x15, 0x7e, 0x43, 0x83, - 0x26, 0x41, 0xbb, 0xd0, 0x9c, 0x09, 0x36, 0x1c, 0x63, 0x39, 0xf6, 0x37, 0x74, 0xc1, 0x9d, 0x09, - 0xf6, 0x12, 0xcb, 0xf1, 0xa1, 0xf3, 0xeb, 0x4b, 0x68, 0x75, 0x9f, 0x83, 0x77, 0x72, 0x7c, 0xfa, - 0x9a, 0x2a, 0xac, 0x6f, 0x29, 0x85, 0x58, 0x15, 0x21, 0x65, 0x37, 0xfb, 0x4f, 0xb7, 0xe2, 0xf0, - 0x37, 0x1b, 0x1a, 0x47, 0x34, 0xe3, 0xe9, 0x9d, 0x06, 0xba, 0x07, 0x1b, 0x32, 0x19, 0xd3, 0x14, - 0x9b, 0x99, 0xe2, 0x22, 0x43, 0x3e, 0xb8, 0x89, 0xa0, 0x58, 0x71, 0x51, 0x0c, 0x54, 0xa6, 0xfa, - 0xc4, 0x65, 0x7a, 0xc6, 0x27, 0xc5, 0x50, 0x45, 0x86, 0x1e, 0xc2, 0x76, 0xca, 0x32, 0x35, 0x14, - 0x54, 0x2a, 0xc1, 0x12, 0x45, 0x89, 0x1e, 0xae, 0x19, 0x6f, 0xe5, 0x70, 0xbc, 0x44, 0xd1, 0x23, - 0xf8, 0x6f, 0x36, 0x25, 0x58, 0xd1, 0x2a, 0xd5, 0xd5, 0xd4, 0x1d, 0x53, 0xa8, 0x90, 0xf7, 0xc0, - 0x23, 0x54, 0x26, 0x82, 0x4d, 0x15, 0xe3, 0x99, 0xdf, 0xd4, 0x2d, 0xab, 0x10, 0xda, 0x31, 0x2b, - 0x69, 0xe9, 0x8a, 0xde, 0x44, 0xd5, 0x5f, 0x58, 0xf1, 0x77, 0x69, 0x9b, 0xb7, 0x66, 0xdb, 0x57, - 0x0b, 0xda, 0xda, 0xb6, 0xa5, 0xed, 0x15, 0x0b, 0xac, 0x75, 0x0b, 0x8c, 0x69, 0xf6, 0x8a, 0x69, - 0x7f, 0xb1, 0xa0, 0x7e, 0x77, 0x0b, 0x9c, 0x7f, 0x58, 0x50, 0x6a, 0x6e, 0xac, 0x69, 0xbe, 0x80, - 0xcd, 0xc1, 0xd1, 0x0b, 0x3e, 0x99, 0xd0, 0x44, 0x5b, 0xd1, 0x83, 0x26, 0xc9, 0x47, 0x18, 0x96, - 0x6b, 0x8f, 0xfe, 0xbf, 0x9d, 0x87, 0xdb, 0x97, 0x38, 0x9d, 0x1c, 0x76, 0xcb, 0x4a, 0x37, 0x76, - 0x75, 0x38, 0x20, 0xe8, 0x09, 0xb4, 0x14, 0x7f, 0x4f, 0xb3, 0x21, 0x23, 0xd2, 0xb7, 0xf7, 0xea, - 0xfb, 0xad, 0xa8, 0x73, 0x3b, 0x0f, 0x77, 0xcc, 0x81, 0x65, 0xa9, 0x1b, 0x37, 0x75, 0x3c, 0x20, - 0xb2, 0x68, 0xfc, 0xd1, 0x82, 0xc6, 0x1b, 0xfd, 0x2d, 0xfb, 0xe0, 0x62, 0x42, 0x04, 0x95, 0xb2, - 0x34, 0xa9, 0x48, 0xd1, 0x08, 0xb6, 0x18, 0x19, 0x26, 0x4b, 0x75, 0xa6, 0x83, 0x77, 0xb0, 0xdb, - 0xab, 0xfc, 0x96, 0xbd, 0xaa, 0xfe, 0xe8, 0xc1, 0xd5, 0x3c, 0xac, 0x2d, 0xe6, 0x61, 0xbb, 0x8a, - 0xca, 0xdb, 0x79, 0xe8, 0x19, 0x45, 0x8c, 0x24, 0xb2, 0x1b, 0xb7, 0x19, 0xa9, 0x54, 0x0b, 0x45, - 0x1f, 0x00, 0x56, 0x8c, 0x68, 0xe8, 0x19, 0xb5, 0x26, 0xef, 0x00, 0xad, 0xb4, 0xd4, 0x5b, 0x8e, - 0x9c, 0xbc, 0x57, 0x6c, 0x68, 0xe8, 0x19, 0x38, 0xd9, 0x48, 0x95, 0x0a, 0x3b, 0x2b, 0xf4, 0xe2, - 0x79, 0x88, 0x36, 0x0b, 0x71, 0xce, 0xc9, 0xf1, 0xa9, 0x8c, 0x35, 0xdf, 0xf4, 0x8e, 0x5e, 0x5d, - 0xfd, 0x0c, 0x6a, 0x57, 0x8b, 0xc0, 0xba, 0x5e, 0x04, 0xd6, 0x8f, 0x45, 0x60, 0x7d, 0xba, 0x09, - 0x6a, 0xd7, 0x37, 0x41, 0xed, 0xfb, 0x4d, 0x50, 0x7b, 0xf7, 0xf8, 0x9c, 0xa9, 0xf1, 0xec, 0xac, - 0x97, 0xf0, 0xb4, 0x9f, 0xdf, 0x9b, 0x51, 0xd5, 0x2f, 0xee, 0xef, 0xa7, 0x9c, 0xcc, 0x26, 0x54, - 0xe6, 0x6f, 0x56, 0x5f, 0x5d, 0x4e, 0xa9, 0x3c, 0xdb, 0xd0, 0xef, 0xd2, 0xd3, 0xdf, 0x01, 0x00, - 0x00, 0xff, 0xff, 0x4a, 0x49, 0x33, 0x49, 0xcb, 0x04, 0x00, 0x00, + // 843 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0xc7, 0x63, 0x27, 0x69, 0xd2, 0xe7, 0xa6, 0x5b, 0x86, 0xb0, 0x72, 0xf7, 0x10, 0x57, 0x11, + 0x12, 0x2b, 0x81, 0x12, 0x6d, 0x10, 0xbf, 0x7a, 0x34, 0xab, 0x8a, 0x22, 0x51, 0xd0, 0xd0, 0x15, + 0x12, 0x97, 0x68, 0xea, 0x99, 0x24, 0xa3, 0xb5, 0x3d, 0xd5, 0xcc, 0x84, 0x55, 0xb8, 0x73, 0x06, + 0x89, 0x3b, 0xe2, 0xc4, 0x5f, 0xc0, 0x1f, 0xd1, 0xe3, 0x5e, 0x90, 0x10, 0x07, 0x0b, 0xd2, 0x0b, + 0xea, 0xb1, 0x7f, 0x01, 0xf2, 0x78, 0x1c, 0x6c, 0xa5, 0x88, 0xd5, 0x6a, 0x6f, 0x33, 0xef, 0x7d, + 0xe7, 0xbd, 0x37, 0x9f, 0xf7, 0x3c, 0x86, 0x5e, 0x3a, 0xd3, 0xe3, 0x74, 0xa6, 0x47, 0x97, 0x52, + 0x68, 0x81, 0x3c, 0x2e, 0xb9, 0x4a, 0x04, 0x1d, 0xa5, 0x33, 0xfd, 0xa0, 0x3f, 0x17, 0x73, 0x61, + 0xec, 0xe3, 0x7c, 0x55, 0x48, 0x86, 0x3f, 0x3a, 0xd0, 0x09, 0x89, 0x62, 0x67, 0x27, 0xe7, 0x68, + 0x1f, 0x5c, 0x4e, 0x7d, 0xe7, 0xc8, 0x79, 0xb8, 0x8b, 0x5d, 0x4e, 0x11, 0x82, 0x56, 0x4a, 0x12, + 0xe6, 0xbb, 0xc6, 0x62, 0xd6, 0xe8, 0x10, 0x9a, 0x4b, 0xc9, 0xfd, 0x66, 0x6e, 0x0a, 0x3b, 0xeb, + 0x2c, 0x68, 0x3e, 0xc1, 0xa7, 0x38, 0xb7, 0xe5, 0x72, 0x4a, 0x34, 0xf1, 0x5b, 0x85, 0x3c, 0x5f, + 0xa3, 0x3e, 0xb4, 0xc5, 0xb3, 0x94, 0x49, 0xbf, 0x6d, 0x8c, 0xc5, 0x06, 0x1d, 0x42, 0x77, 0x29, + 0xf9, 0x74, 0x41, 0xd4, 0xc2, 0xdf, 0x31, 0x8e, 0xce, 0x52, 0xf2, 0x4f, 0x88, 0x5a, 0x1c, 0xb7, + 0xfe, 0xfe, 0x39, 0x70, 0x86, 0x3f, 0x39, 0xe0, 0x9d, 0x9d, 0x9c, 0x7f, 0xc6, 0x34, 0x31, 0x61, + 0xca, 0x4a, 0x9c, 0x4a, 0x25, 0x65, 0x3a, 0xb7, 0x92, 0x8e, 0x00, 0xd2, 0xe2, 0x29, 0x4b, 0xb1, + 0x58, 0x91, 0x58, 0xaf, 0xbe, 0x88, 0x97, 0x73, 0x9e, 0x9a, 0x62, 0xbd, 0x49, 0x30, 0xaa, 0xd0, + 0x18, 0x9d, 0x6f, 0xc9, 0xc2, 0x83, 0x9b, 0x2c, 0xd8, 0xb3, 0x9a, 0xe3, 0xc9, 0x47, 0x1f, 0x3e, + 0xc2, 0x77, 0x04, 0xb3, 0x05, 0xfe, 0xea, 0x42, 0xfb, 0x31, 0x4b, 0x45, 0xf2, 0x42, 0xd0, 0xee, + 0xc3, 0x8e, 0x8a, 0x16, 0x2c, 0x21, 0x05, 0x37, 0x6c, 0x77, 0xc8, 0x87, 0x4e, 0x24, 0x19, 0xd1, + 0x42, 0x5a, 0x68, 0xe5, 0xd6, 0x9c, 0x58, 0x25, 0x17, 0x22, 0xb6, 0xe0, 0xec, 0x0e, 0xbd, 0x05, + 0xf7, 0x12, 0x9e, 0xea, 0xa9, 0x64, 0x4a, 0x4b, 0x1e, 0x69, 0x46, 0x0d, 0xc0, 0x2e, 0xde, 0xcf, + 0xcd, 0x78, 0x63, 0x45, 0x6f, 0xc3, 0x6b, 0xcb, 0x4b, 0x4a, 0x34, 0xab, 0x4a, 0x3b, 0x46, 0x7a, + 0x50, 0x38, 0x2a, 0xe2, 0x23, 0xf0, 0x28, 0x53, 0x91, 0xe4, 0x97, 0x9a, 0x8b, 0xd4, 0xef, 0x9a, + 0x94, 0x55, 0x13, 0x3a, 0x28, 0xda, 0xbe, 0x6b, 0x3c, 0xa6, 0xdb, 0xd5, 0x1e, 0x42, 0xad, 0x87, + 0x9b, 0xce, 0x78, 0xff, 0x76, 0xc6, 0x62, 0xfb, 0xce, 0x85, 0x9e, 0xc1, 0xb6, 0xe9, 0x6c, 0x05, + 0x81, 0xb3, 0x8d, 0xa0, 0x80, 0xe6, 0xd6, 0xa0, 0xdd, 0x81, 0xa0, 0xf9, 0xe2, 0x08, 0x5a, 0xff, + 0x81, 0xa0, 0xac, 0xb9, 0x5d, 0x99, 0x26, 0x0c, 0x3d, 0x59, 0x1b, 0xa4, 0x1d, 0x33, 0x48, 0x0f, + 0x6a, 0x83, 0xf4, 0x7f, 0x33, 0x54, 0x0f, 0x61, 0x39, 0x3c, 0x83, 0xbd, 0xd3, 0xc7, 0x1f, 0x8b, + 0x38, 0x66, 0x91, 0xc1, 0x3b, 0x82, 0x2e, 0xcd, 0xb1, 0x4c, 0xcb, 0x51, 0x0a, 0x5f, 0xbf, 0xcd, + 0x82, 0x7b, 0x2b, 0x92, 0xc4, 0xc7, 0xc3, 0xd2, 0x33, 0xc4, 0x1d, 0xb3, 0x3c, 0xa5, 0xe8, 0x11, + 0xec, 0x9a, 0xd1, 0x9c, 0x72, 0xaa, 0x7c, 0xf7, 0xa8, 0xf9, 0x70, 0x37, 0xec, 0xdf, 0x66, 0xc1, + 0x41, 0x71, 0x60, 0xe3, 0x1a, 0xe2, 0xae, 0x59, 0x9f, 0x52, 0x65, 0x13, 0x7f, 0xef, 0x40, 0xfb, + 0x73, 0xf3, 0x0d, 0xfa, 0xd0, 0x21, 0x94, 0x4a, 0xa6, 0x54, 0x09, 0xde, 0x6e, 0xd1, 0x0c, 0xf6, + 0x39, 0x9d, 0x46, 0x9b, 0xea, 0x8a, 0x0c, 0xde, 0xe4, 0xb0, 0x76, 0xef, 0x6a, 0xfd, 0xe1, 0x9b, + 0x57, 0x59, 0xd0, 0x58, 0x67, 0x41, 0xaf, 0x6a, 0x55, 0xb7, 0x59, 0xe0, 0x15, 0x15, 0x71, 0x1a, + 0xa9, 0x21, 0xee, 0x71, 0x5a, 0xf1, 0xda, 0x8a, 0xbe, 0x05, 0xa8, 0x81, 0x68, 0x9b, 0x3b, 0x9a, + 0x9a, 0xbc, 0x09, 0xaa, 0xa5, 0x34, 0x93, 0x13, 0xb6, 0xf2, 0x5c, 0xb8, 0x90, 0xa1, 0xf7, 0xa1, + 0x95, 0xce, 0x74, 0x59, 0x61, 0xbf, 0x26, 0xb7, 0xcf, 0x5a, 0xb8, 0x67, 0x8b, 0x6b, 0x9d, 0x9d, + 0x9c, 0x2b, 0x6c, 0xf4, 0x36, 0xf7, 0x1c, 0x3c, 0x13, 0xb3, 0xe8, 0xcd, 0x76, 0xbf, 0x9d, 0x57, + 0xd5, 0xef, 0xdf, 0x1c, 0xe8, 0xd5, 0x0e, 0xa2, 0x09, 0x74, 0x58, 0x4a, 0x2e, 0x62, 0x56, 0x34, + 0xbc, 0x1b, 0xfa, 0x37, 0x59, 0xd0, 0xaf, 0x46, 0x3a, 0xb6, 0x7e, 0x5c, 0x0a, 0xd1, 0x7b, 0xd0, + 0x95, 0x2c, 0x62, 0xfc, 0x1b, 0x26, 0x8b, 0x6f, 0x22, 0x3c, 0xbc, 0xc9, 0x82, 0x37, 0x6a, 0x87, + 0x4a, 0x01, 0xde, 0x48, 0xd1, 0x97, 0xd0, 0x9d, 0x49, 0x62, 0xf8, 0xda, 0x77, 0xfb, 0x83, 0x9c, + 0xc8, 0x1f, 0x59, 0x70, 0x3f, 0x12, 0x2a, 0x11, 0x4a, 0xd1, 0xa7, 0x23, 0x2e, 0xc6, 0x09, 0xd1, + 0x8b, 0xd1, 0x13, 0x9e, 0xea, 0xad, 0xa0, 0xe5, 0x71, 0xbc, 0x09, 0x64, 0xef, 0x15, 0x83, 0x67, + 0x1e, 0x52, 0x7b, 0xa9, 0xaf, 0xee, 0x06, 0xf8, 0x12, 0x2f, 0xef, 0x9d, 0x14, 0x7f, 0x71, 0x00, + 0x6d, 0x9f, 0xae, 0x61, 0x71, 0x5e, 0x0e, 0x8b, 0xfb, 0x4a, 0xb1, 0x84, 0x9f, 0x5e, 0xfd, 0x35, + 0x68, 0x5c, 0xad, 0x07, 0xce, 0xf3, 0xf5, 0xc0, 0xf9, 0x73, 0x3d, 0x70, 0x7e, 0xb8, 0x1e, 0x34, + 0x9e, 0x5f, 0x0f, 0x1a, 0xbf, 0x5f, 0x0f, 0x1a, 0x5f, 0xbf, 0x33, 0xe7, 0x7a, 0xb1, 0xbc, 0x18, + 0x45, 0x22, 0x19, 0xe7, 0xf1, 0x52, 0xa6, 0xc7, 0x36, 0xee, 0x38, 0x11, 0x74, 0x19, 0x33, 0x95, + 0xff, 0xc3, 0xc7, 0x7a, 0x75, 0xc9, 0xd4, 0xc5, 0x8e, 0xf9, 0x4f, 0xbf, 0xfb, 0x4f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x40, 0x63, 0x33, 0xca, 0xdb, 0x07, 0x00, 0x00, } func (this *BaseNFT) Equal(that interface{}) bool { @@ -430,6 +604,9 @@ func (this *NFTMetadata) Equal(that interface{}) bool { if this.Data != that1.Data { return false } + if !this.TokenRoyaltyPlugin.Equal(that1.TokenRoyaltyPlugin) { + return false + } return true } func (this *Denom) Equal(that interface{}) bool { @@ -520,6 +697,9 @@ func (this *DenomMetadata) Equal(that interface{}) bool { if this.Data != that1.Data { return false } + if !this.RoyaltyPlugin.Equal(that1.RoyaltyPlugin) { + return false + } return true } func (this *IDCollection) Equal(that interface{}) bool { @@ -618,6 +798,111 @@ func (this *Collection) Equal(that interface{}) bool { } return true } +func (this *DenomPlugin) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*DenomPlugin) + if !ok { + that2, ok := that.(DenomPlugin) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.RoyaltyPlugin.Equal(that1.RoyaltyPlugin) { + return false + } + return true +} +func (this *RoyaltyPlugin) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*RoyaltyPlugin) + if !ok { + that2, ok := that.(RoyaltyPlugin) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Enabled != that1.Enabled { + return false + } + if this.Receiver != that1.Receiver { + return false + } + if !this.Fraction.Equal(that1.Fraction) { + return false + } + return true +} +func (this *TokenPlugin) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TokenPlugin) + if !ok { + that2, ok := that.(TokenPlugin) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.RoyaltyPlugin.Equal(that1.RoyaltyPlugin) { + return false + } + return true +} +func (this *TokenRoyaltyPlugin) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*TokenRoyaltyPlugin) + if !ok { + that2, ok := that.(TokenRoyaltyPlugin) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Receiver != that1.Receiver { + return false + } + if !this.Fraction.Equal(that1.Fraction) { + return false + } + return true +} func (m *BaseNFT) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -703,6 +988,18 @@ func (m *NFTMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.TokenRoyaltyPlugin != nil { + { + size, err := m.TokenRoyaltyPlugin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintNft(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -846,6 +1143,18 @@ func (m *DenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.RoyaltyPlugin != nil { + { + size, err := m.RoyaltyPlugin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintNft(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -1020,68 +1329,232 @@ func (m *Collection) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func encodeVarintNft(dAtA []byte, offset int, v uint64) int { - offset -= sovNft(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *DenomPlugin) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *BaseNFT) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - l = len(m.Name) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - l = len(m.URI) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - l = len(m.Data) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - l = len(m.Owner) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - l = len(m.UriHash) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - return n + +func (m *DenomPlugin) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *NFTMetadata) Size() (n int) { - if m == nil { - return 0 - } +func (m *DenomPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) - } - l = len(m.Data) - if l > 0 { - n += 1 + l + sovNft(uint64(l)) + if m.RoyaltyPlugin != nil { + { + size, err := m.RoyaltyPlugin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintNft(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *Denom) Size() (n int) { +func (m *RoyaltyPlugin) 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 *RoyaltyPlugin) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RoyaltyPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Fraction.Size() + i -= size + if _, err := m.Fraction.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintNft(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintNft(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x12 + } + if m.Enabled { + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *TokenPlugin) 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 *TokenPlugin) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.RoyaltyPlugin != nil { + { + size, err := m.RoyaltyPlugin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintNft(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *TokenRoyaltyPlugin) 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 *TokenRoyaltyPlugin) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenRoyaltyPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Fraction.Size() + i -= size + if _, err := m.Fraction.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintNft(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintNft(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintNft(dAtA []byte, offset int, v uint64) int { + offset -= sovNft(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *BaseNFT) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = len(m.Name) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = len(m.URI) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = len(m.Owner) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = len(m.UriHash) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + return n +} + +func (m *NFTMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + if m.TokenRoyaltyPlugin != nil { + l = m.TokenRoyaltyPlugin.Size() + n += 1 + l + sovNft(uint64(l)) + } + return n +} + +func (m *Denom) Size() (n int) { if m == nil { return 0 } @@ -1156,6 +1629,10 @@ func (m *DenomMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovNft(uint64(l)) } + if m.RoyaltyPlugin != nil { + l = m.RoyaltyPlugin.Size() + n += 1 + l + sovNft(uint64(l)) + } return n } @@ -1214,6 +1691,65 @@ func (m *Collection) Size() (n int) { return n } +func (m *DenomPlugin) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RoyaltyPlugin != nil { + l = m.RoyaltyPlugin.Size() + n += 1 + l + sovNft(uint64(l)) + } + return n +} + +func (m *RoyaltyPlugin) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Enabled { + n += 2 + } + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = m.Fraction.Size() + n += 1 + l + sovNft(uint64(l)) + return n +} + +func (m *TokenPlugin) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RoyaltyPlugin != nil { + l = m.RoyaltyPlugin.Size() + n += 1 + l + sovNft(uint64(l)) + } + return n +} + +func (m *TokenRoyaltyPlugin) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovNft(uint64(l)) + } + l = m.Fraction.Size() + n += 1 + l + sovNft(uint64(l)) + return n +} + func sovNft(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1555,6 +2091,42 @@ func (m *NFTMetadata) Unmarshal(dAtA []byte) error { } m.Data = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenRoyaltyPlugin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthNft + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TokenRoyaltyPlugin == nil { + m.TokenRoyaltyPlugin = &TokenRoyaltyPlugin{} + } + if err := m.TokenRoyaltyPlugin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipNft(dAtA[iNdEx:]) @@ -2119,24 +2691,60 @@ func (m *DenomMetadata) Unmarshal(dAtA []byte) error { } m.Data = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipNft(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthNft - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyPlugin", wireType) } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthNft + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RoyaltyPlugin == nil { + m.RoyaltyPlugin = &RoyaltyPlugin{} + } + if err := m.RoyaltyPlugin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipNft(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthNft + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF } return nil } @@ -2487,6 +3095,430 @@ func (m *Collection) Unmarshal(dAtA []byte) error { } return nil } +func (m *DenomPlugin) 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 ErrIntOverflowNft + } + 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: DenomPlugin: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DenomPlugin: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyPlugin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthNft + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RoyaltyPlugin == nil { + m.RoyaltyPlugin = &RoyaltyPlugin{} + } + if err := m.RoyaltyPlugin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipNft(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthNft + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoyaltyPlugin) 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 ErrIntOverflowNft + } + 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: RoyaltyPlugin: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoyaltyPlugin: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + 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 ErrInvalidLengthNft + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fraction", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + 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 ErrInvalidLengthNft + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Fraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipNft(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthNft + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenPlugin) 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 ErrIntOverflowNft + } + 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: TokenPlugin: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenPlugin: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyPlugin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthNft + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RoyaltyPlugin == nil { + m.RoyaltyPlugin = &TokenRoyaltyPlugin{} + } + if err := m.RoyaltyPlugin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipNft(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthNft + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenRoyaltyPlugin) 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 ErrIntOverflowNft + } + 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: TokenRoyaltyPlugin: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenRoyaltyPlugin: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + 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 ErrInvalidLengthNft + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fraction", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNft + } + 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 ErrInvalidLengthNft + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNft + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Fraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipNft(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthNft + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipNft(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/modules/nft/types/royalty.pb.go b/modules/nft/types/royalty.pb.go deleted file mode 100644 index 15bd3649..00000000 --- a/modules/nft/types/royalty.pb.go +++ /dev/null @@ -1,629 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: nft/royalty.proto - -package types - -import ( - cosmossdk_io_math "cosmossdk.io/math" - fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - _ "github.com/regen-network/cosmos-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 RoyaltyInfo struct { - Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` - RoyaltyFraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=royalty_fraction,json=royaltyFraction,proto3,customtype=cosmossdk.io/math.Uint" json:"royalty_fraction"` -} - -func (m *RoyaltyInfo) Reset() { *m = RoyaltyInfo{} } -func (m *RoyaltyInfo) String() string { return proto.CompactTextString(m) } -func (*RoyaltyInfo) ProtoMessage() {} -func (*RoyaltyInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_80c34aacedb01c5b, []int{0} -} -func (m *RoyaltyInfo) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RoyaltyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RoyaltyInfo.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 *RoyaltyInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_RoyaltyInfo.Merge(m, src) -} -func (m *RoyaltyInfo) XXX_Size() int { - return m.Size() -} -func (m *RoyaltyInfo) XXX_DiscardUnknown() { - xxx_messageInfo_RoyaltyInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_RoyaltyInfo proto.InternalMessageInfo - -type RoyaltyMetadata struct { - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - DefaultRoyaltyInfo *RoyaltyInfo `protobuf:"bytes,2,opt,name=defaultRoyaltyInfo,proto3" json:"defaultRoyaltyInfo,omitempty"` -} - -func (m *RoyaltyMetadata) Reset() { *m = RoyaltyMetadata{} } -func (m *RoyaltyMetadata) String() string { return proto.CompactTextString(m) } -func (*RoyaltyMetadata) ProtoMessage() {} -func (*RoyaltyMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_80c34aacedb01c5b, []int{1} -} -func (m *RoyaltyMetadata) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RoyaltyMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RoyaltyMetadata.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 *RoyaltyMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_RoyaltyMetadata.Merge(m, src) -} -func (m *RoyaltyMetadata) XXX_Size() int { - return m.Size() -} -func (m *RoyaltyMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_RoyaltyMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_RoyaltyMetadata proto.InternalMessageInfo - -func init() { - proto.RegisterType((*RoyaltyInfo)(nil), "irismod.nft.royalty.RoyaltyInfo") - proto.RegisterType((*RoyaltyMetadata)(nil), "irismod.nft.royalty.RoyaltyMetadata") -} - -func init() { proto.RegisterFile("nft/royalty.proto", fileDescriptor_80c34aacedb01c5b) } - -var fileDescriptor_80c34aacedb01c5b = []byte{ - // 332 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xb1, 0x4a, 0x33, 0x41, - 0x14, 0x85, 0x77, 0x7f, 0x7e, 0x34, 0x4e, 0x8a, 0xe8, 0x2a, 0x12, 0x53, 0x4c, 0x42, 0x2a, 0x0b, - 0x99, 0x21, 0xda, 0x59, 0xa6, 0x10, 0x22, 0x08, 0xb2, 0x60, 0x63, 0x13, 0x66, 0x77, 0x67, 0x93, - 0xc1, 0xdd, 0xb9, 0x61, 0xe7, 0x26, 0x10, 0x5b, 0x5f, 0xc0, 0x47, 0xf0, 0x71, 0x52, 0xa6, 0x14, - 0x8b, 0xa0, 0x49, 0xe3, 0x63, 0xc8, 0xee, 0x8c, 0x92, 0x22, 0xdd, 0x5c, 0xbe, 0x73, 0xee, 0x39, - 0xdc, 0x21, 0x47, 0x3a, 0x45, 0x5e, 0xc0, 0x5c, 0x64, 0x38, 0x67, 0x93, 0x02, 0x10, 0x82, 0x63, - 0x55, 0x28, 0x93, 0x43, 0xc2, 0x74, 0x8a, 0xcc, 0xa1, 0xd6, 0xc9, 0x08, 0x46, 0x50, 0x71, 0x5e, - 0xbe, 0xac, 0xb4, 0x45, 0x63, 0x30, 0x39, 0x18, 0x1e, 0x09, 0x23, 0xf9, 0xac, 0x17, 0x49, 0x14, - 0x3d, 0x1e, 0x83, 0xd2, 0x8e, 0x9f, 0x59, 0x3e, 0xb4, 0x46, 0x3b, 0x58, 0xd4, 0x7d, 0x26, 0xf5, - 0xd0, 0xee, 0x1e, 0xe8, 0x14, 0x82, 0x16, 0xa9, 0x15, 0x32, 0x96, 0x6a, 0x26, 0x8b, 0xa6, 0xdf, - 0xf1, 0xcf, 0x0f, 0xc2, 0xbf, 0x39, 0x18, 0x90, 0x43, 0x57, 0x63, 0x98, 0x16, 0x22, 0x46, 0x05, - 0xba, 0xf9, 0xaf, 0xd4, 0xf4, 0xe9, 0x62, 0xd5, 0xf6, 0x3e, 0x56, 0xed, 0x53, 0xbb, 0xda, 0x24, - 0x4f, 0x4c, 0x01, 0xcf, 0x05, 0x8e, 0xd9, 0x83, 0xd2, 0x18, 0x36, 0x9c, 0xef, 0xc6, 0xd9, 0xae, - 0xff, 0x7f, 0xbf, 0xb5, 0xfd, 0xee, 0x8b, 0x4f, 0x1a, 0x2e, 0xfc, 0x4e, 0xa2, 0x48, 0x04, 0x8a, - 0xa0, 0x49, 0xf6, 0xa5, 0x16, 0x51, 0x26, 0x93, 0x2a, 0xbf, 0x16, 0xfe, 0x8e, 0xc1, 0x3d, 0x09, - 0x12, 0x99, 0x8a, 0x69, 0x86, 0x5b, 0x85, 0xab, 0x02, 0xf5, 0xcb, 0x0e, 0xdb, 0x71, 0x2c, 0xb6, - 0xa5, 0x0b, 0x77, 0x78, 0x6d, 0x8b, 0xfe, 0xed, 0xe2, 0x8b, 0x7a, 0x8b, 0x35, 0xf5, 0x97, 0x6b, - 0xea, 0x7f, 0xae, 0xa9, 0xff, 0xba, 0xa1, 0xde, 0x72, 0x43, 0xbd, 0xf7, 0x0d, 0xf5, 0x1e, 0x2f, - 0x46, 0x0a, 0xc7, 0xd3, 0x88, 0xc5, 0x90, 0xf3, 0x32, 0x43, 0x4b, 0xe4, 0x2e, 0x8b, 0xe7, 0x90, - 0x4c, 0x33, 0x69, 0x78, 0xf9, 0x77, 0x38, 0x9f, 0x48, 0x13, 0xed, 0x55, 0x47, 0xbd, 0xfa, 0x09, - 0x00, 0x00, 0xff, 0xff, 0xe5, 0xfc, 0x6c, 0xaa, 0xcf, 0x01, 0x00, 0x00, -} - -func (this *RoyaltyInfo) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*RoyaltyInfo) - if !ok { - that2, ok := that.(RoyaltyInfo) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if this.Receiver != that1.Receiver { - return false - } - if !this.RoyaltyFraction.Equal(that1.RoyaltyFraction) { - return false - } - return true -} -func (this *RoyaltyMetadata) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*RoyaltyMetadata) - if !ok { - that2, ok := that.(RoyaltyMetadata) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if this.Enabled != that1.Enabled { - return false - } - if !this.DefaultRoyaltyInfo.Equal(that1.DefaultRoyaltyInfo) { - return false - } - return true -} -func (m *RoyaltyInfo) 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 *RoyaltyInfo) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RoyaltyInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size := m.RoyaltyFraction.Size() - i -= size - if _, err := m.RoyaltyFraction.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintRoyalty(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if len(m.Receiver) > 0 { - i -= len(m.Receiver) - copy(dAtA[i:], m.Receiver) - i = encodeVarintRoyalty(dAtA, i, uint64(len(m.Receiver))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RoyaltyMetadata) 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 *RoyaltyMetadata) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RoyaltyMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.DefaultRoyaltyInfo != nil { - { - size, err := m.DefaultRoyaltyInfo.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintRoyalty(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Enabled { - i-- - if m.Enabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func encodeVarintRoyalty(dAtA []byte, offset int, v uint64) int { - offset -= sovRoyalty(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *RoyaltyInfo) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Receiver) - if l > 0 { - n += 1 + l + sovRoyalty(uint64(l)) - } - l = m.RoyaltyFraction.Size() - n += 1 + l + sovRoyalty(uint64(l)) - return n -} - -func (m *RoyaltyMetadata) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Enabled { - n += 2 - } - if m.DefaultRoyaltyInfo != nil { - l = m.DefaultRoyaltyInfo.Size() - n += 1 + l + sovRoyalty(uint64(l)) - } - return n -} - -func sovRoyalty(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozRoyalty(x uint64) (n int) { - return sovRoyalty(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *RoyaltyInfo) 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 ErrIntOverflowRoyalty - } - 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: RoyaltyInfo: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RoyaltyInfo: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRoyalty - } - 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 ErrInvalidLengthRoyalty - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRoyalty - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Receiver = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyFraction", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRoyalty - } - 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 ErrInvalidLengthRoyalty - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRoyalty - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.RoyaltyFraction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRoyalty(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRoyalty - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RoyaltyMetadata) 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 ErrIntOverflowRoyalty - } - 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: RoyaltyMetadata: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RoyaltyMetadata: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRoyalty - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Enabled = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DefaultRoyaltyInfo", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRoyalty - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthRoyalty - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthRoyalty - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DefaultRoyaltyInfo == nil { - m.DefaultRoyaltyInfo = &RoyaltyInfo{} - } - if err := m.DefaultRoyaltyInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRoyalty(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRoyalty - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipRoyalty(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, ErrIntOverflowRoyalty - } - 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, ErrIntOverflowRoyalty - } - 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, ErrIntOverflowRoyalty - } - 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, ErrInvalidLengthRoyalty - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupRoyalty - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthRoyalty - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthRoyalty = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowRoyalty = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupRoyalty = fmt.Errorf("proto: unexpected end of group") -) diff --git a/proto/nft/nft.proto b/proto/nft/nft.proto index c1163cce..1e5cbc48 100644 --- a/proto/nft/nft.proto +++ b/proto/nft/nft.proto @@ -23,8 +23,11 @@ message NFTMetadata { string name = 1; string data = 2; + + TokenRoyaltyPlugin tokenRoyaltyPlugin = 3 [(gogoproto.jsontag) = "irismod:2981"]; } + // Denom defines a type of NFT message Denom { option (gogoproto.equal) = true; @@ -50,6 +53,9 @@ message DenomMetadata { bool mint_restricted = 3; bool update_restricted = 4; string data = 5; + + // Royalty field + RoyaltyPlugin royaltyPlugin = 6 [(gogoproto.jsontag) = "irismod:2981"]; } // IDCollection defines a type of collection with specified ID @@ -79,4 +85,36 @@ message Collection { Denom denom = 1 [ (gogoproto.nullable) = false ]; repeated BaseNFT nfts = 2 [ (gogoproto.customname) = "NFTs", (gogoproto.nullable) = false ]; -} \ No newline at end of file +} + +message DenomPlugin { + option (gogoproto.equal) = true; + + // Royalty field + RoyaltyPlugin royaltyPlugin = 1 [(gogoproto.jsontag) = "irismod:2981"]; +} + +message RoyaltyPlugin { + option (gogoproto.equal) = true; + + bool enabled = 1 [(gogoproto.jsontag) = "irismod:2981:enabled"]; + string receiver = 2 [(gogoproto.jsontag) = "irismod:2981:receiver"]; + string fraction = 3 [(gogoproto.jsontag) = "irismod:2981:fraction", (gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} + +message TokenPlugin { + option (gogoproto.equal) = true; + + // Royalty field + TokenRoyaltyPlugin royaltyPlugin = 1 [(gogoproto.jsontag) = "irismod:2981"]; +} + + +message TokenRoyaltyPlugin { + option (gogoproto.equal) = true; + + string receiver = 1 [(gogoproto.jsontag) = "irismod:2981:receiver"]; + string fraction = 2 [(gogoproto.jsontag) = "irismod:2981:fraction", (gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; +} + + diff --git a/proto/nft/royalty.proto b/proto/nft/royalty.proto deleted file mode 100644 index df19fbd2..00000000 --- a/proto/nft/royalty.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; -package irismod.nft.royalty; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos_proto/cosmos.proto"; - -option go_package = "github.com/irisnet/irismod/modules/nft/types"; -option (gogoproto.goproto_getters_all) = false; - - -message RoyaltyInfo { - option (gogoproto.equal) = true; - - string receiver = 1; - string royalty_fraction = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; - -}; - -message RoyaltyMetadata { - option (gogoproto.equal) = true; - - bool enabled = 1; - RoyaltyInfo defaultRoyaltyInfo = 2; -} \ No newline at end of file From 8a53cfb06acf0ea294e70b7e5dbf4907dd35542d Mon Sep 17 00:00:00 2001 From: sheldon <997166273@qq.com> Date: Thu, 22 Dec 2022 18:47:27 +0800 Subject: [PATCH 06/11] add royalty test case --- modules/nft/keeper/denom.go | 2 +- modules/nft/keeper/grpc_query_test.go | 80 +++++++++++ modules/nft/keeper/nft.go | 4 +- modules/nft/keeper/royalty.go | 59 +++----- modules/nft/keeper/royalty_test.go | 187 +++++++++++++++++++++++++- modules/nft/keeper/utils.go | 38 ++++-- modules/nft/types/errors.go | 1 + 7 files changed, 320 insertions(+), 51 deletions(-) diff --git a/modules/nft/keeper/denom.go b/modules/nft/keeper/denom.go index 4075e497..7c933d93 100644 --- a/modules/nft/keeper/denom.go +++ b/modules/nft/keeper/denom.go @@ -30,7 +30,7 @@ func (k Keeper) SaveDenom(ctx sdk.Context, id, Data: data, } - denomPlugin := k.UserDataToDenomPlugin(data) + denomPlugin := k.UserDataToDenomPlugin(ctx, data) // royalty option if denomPlugin != nil && denomPlugin.RoyaltyPlugin != nil { diff --git a/modules/nft/keeper/grpc_query_test.go b/modules/nft/keeper/grpc_query_test.go index 682b97ec..858f426d 100644 --- a/modules/nft/keeper/grpc_query_test.go +++ b/modules/nft/keeper/grpc_query_test.go @@ -2,6 +2,9 @@ package keeper_test import ( gocontext "context" + "math/big" + + sdkmath "cosmossdk.io/math" "github.com/irisnet/irismod/modules/nft/types" ) @@ -84,3 +87,80 @@ func (suite *KeeperSuite) TestNFT() { suite.NotEmpty(response.NFT) suite.Equal(response.NFT.Id, tokenID) } + +func (suite *KeeperSuite) TestFeeDenominator() { + response, err := suite.keeper.FeeDenominator(suite.ctx, &types.MsgFeeDenominatorRequest{}) + suite.NoError(err) + suite.Equal(response.RoyaltyFraction, sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(10000))) +} + +func (suite *KeeperSuite) TestDefaultRoyaltyInfo() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000)), address) + suite.NoError(err) + + response, err := suite.keeper.DefaultRoyaltyInfo(suite.ctx, &types.MsgDefaultRoyaltyInfoRequest{ + DenomId: denomID, + }) + suite.NoError(err) + + suite.Equal(response.Receiver, address2.String()) + suite.Equal(response.RoyaltyFraction, sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000))) + +} + +func (suite *KeeperSuite) TestTokenRoyaltyInfo() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000)), address) + suite.NoError(err) + + err1 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + suite.NoError(err1) + + err2 := suite.keeper.SaveTokenRoyalty(suite.ctx, denomID, tokenID, + address.String(), sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000)), address) + suite.NoError(err2) + + response, err := suite.keeper.TokenRoyaltyInfo(suite.ctx, &types.MsgTokenRoyaltyInfoRequest{ + DenomId: denomID, + NftId: tokenID, + }) + suite.NoError(err) + + suite.Equal(response.Receiver, address.String()) + suite.Equal(response.RoyaltyFraction, sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000))) + +} + +func (suite *KeeperSuite) TestRoyaltyInfo() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(100)), address) + suite.NoError(err) + + err1 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + suite.NoError(err1) + + err2 := suite.keeper.SaveTokenRoyalty(suite.ctx, denomID, tokenID, + address.String(), sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(10)), address) + suite.NoError(err2) + + response1, err3 := suite.keeper.RoyaltyInfo(suite.ctx, &types.MsgRoyaltyInfoRequest{ + DenomId: denomID, + NftId: tokenID, + SalePrice: sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000000)), + }) + suite.NoError(err3) + suite.Equal(response1.RoyaltyAmount, sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000))) + + err4 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID2, tokenNm2, tokenURI2, tokenURIHash2, "", address) + suite.NoError(err4) + + response2, err5 := suite.keeper.RoyaltyInfo(suite.ctx, &types.MsgRoyaltyInfoRequest{ + DenomId: denomID, + NftId: tokenID2, + SalePrice: sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000000)), + }) + suite.NoError(err5) + suite.Equal(response2.RoyaltyAmount, sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(10000))) + +} diff --git a/modules/nft/keeper/nft.go b/modules/nft/keeper/nft.go index 8543e43b..548cb02d 100644 --- a/modules/nft/keeper/nft.go +++ b/modules/nft/keeper/nft.go @@ -92,9 +92,7 @@ func (k Keeper) UpdateNFT(ctx sdk.Context, denomID, nftMetadata.Data = types.Modify(nftMetadata.Data, tokenData) - if tokenRoyaltyPlugin != nil { - nftMetadata.TokenRoyaltyPlugin = tokenRoyaltyPlugin - } + nftMetadata.TokenRoyaltyPlugin = tokenRoyaltyPlugin data, err := codectypes.NewAnyWithValue(&nftMetadata) if err != nil { diff --git a/modules/nft/keeper/royalty.go b/modules/nft/keeper/royalty.go index 29cbc9bf..c2948323 100644 --- a/modules/nft/keeper/royalty.go +++ b/modules/nft/keeper/royalty.go @@ -126,14 +126,7 @@ func (k Keeper) SaveTokenRoyalty(ctx sdk.Context, denomId string, tokenId string Fraction: fraction, } - tokenPlugin := k.UserDataToTokenPlugin(nftM.GetData()) - if tokenPlugin == nil { - tokenPlugin = &types.TokenPlugin{RoyaltyPlugin: tokenRoyaltyInfo} - } else { - tokenPlugin.RoyaltyPlugin = tokenRoyaltyInfo - } - - dstData, err := codectypes.NewAnyWithValue(tokenRoyaltyInfo) + dstData, err := k.cdc.Marshal(tokenRoyaltyInfo) if err != nil { return err } @@ -146,7 +139,7 @@ func (k Keeper) SaveTokenRoyalty(ctx sdk.Context, denomId string, tokenId string nftM.GetName(), nftM.GetURI(), nftM.GetURIHash(), - dstData.String(), + string(dstData), nftM.GetOwner(), ) } @@ -167,18 +160,6 @@ func (k Keeper) RemoveTokenRoyalty(ctx sdk.Context, denomId string, tokenId stri return errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) } - tokenPlugin := k.UserDataToTokenPlugin(nftM.GetData()) - if tokenPlugin == nil { - tokenPlugin = &types.TokenPlugin{} - } else { - tokenPlugin.RoyaltyPlugin = nil - } - - dstData, err := codectypes.NewAnyWithValue(tokenPlugin) - if err != nil { - return err - } - // modify nftMetadata return k.UpdateNFT( ctx, @@ -187,7 +168,7 @@ func (k Keeper) RemoveTokenRoyalty(ctx sdk.Context, denomId string, tokenId stri nftM.GetName(), nftM.GetURI(), nftM.GetURIHash(), - dstData.String(), + "", nftM.GetOwner(), ) @@ -223,14 +204,12 @@ func (k Keeper) GetDefaultRoyaltyInfo(ctx sdk.Context, denomId string) (string, return "", sdkmath.Uint{}, types.ErrNotEnabledRoyalty } - denom, err := k.GetDenomInfo(ctx, denomId) + denomMetadata, err := k.GetDenomMetadata(ctx, denomId) if err != nil { return "", sdkmath.Uint{}, err } - denomPlugin := k.UserDataToDenomPlugin(denom.Data) - - return denomPlugin.RoyaltyPlugin.Receiver, denomPlugin.RoyaltyPlugin.Fraction, nil + return denomMetadata.RoyaltyPlugin.Receiver, denomMetadata.RoyaltyPlugin.Fraction, nil } @@ -241,26 +220,26 @@ func (k Keeper) GetTokenRoyaltyInfo(ctx sdk.Context, denomId string, tokenId str return "", sdkmath.Uint{}, types.ErrNotEnabledRoyalty } - nftM, err := k.GetNFT(ctx, denomId, tokenId) + nftMetadata, err := k.GetNftMetadata(ctx, denomId, tokenId) if err != nil { return "", sdkmath.Uint{}, errorsmod.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomId) } - tokenPlugin := k.UserDataToTokenPlugin(nftM.GetData()) - if tokenPlugin.RoyaltyPlugin == nil || tokenPlugin == nil { - return "", sdkmath.Uint{}, err + + if nftMetadata.TokenRoyaltyPlugin == nil { + return "", sdkmath.Uint{}, types.ErrNullTokenRoyaltyInfo } - return tokenPlugin.RoyaltyPlugin.Receiver, tokenPlugin.RoyaltyPlugin.Fraction, nil + return nftMetadata.TokenRoyaltyPlugin.Receiver, nftMetadata.TokenRoyaltyPlugin.Fraction, nil } func (k Keeper) IsNotEnabledRoyalty(ctx sdk.Context, denomId string) bool { - denom, err := k.GetDenomInfo(ctx, denomId) + + denomMetadata, err := k.GetDenomMetadata(ctx, denomId) if err != nil { return false } - denomPlugin := k.UserDataToDenomPlugin(denom.Data) - if denomPlugin == nil || denomPlugin.RoyaltyPlugin == nil || !denomPlugin.RoyaltyPlugin.Enabled { + if denomMetadata.RoyaltyPlugin == nil || !denomMetadata.RoyaltyPlugin.Enabled { return false } @@ -270,9 +249,15 @@ func (k Keeper) IsNotEnabledRoyalty(ctx sdk.Context, denomId string) bool { func (k Keeper) getTokenRoyaltyInfoFromTokenData(ctx sdk.Context, tokenData, denomId string) (*types.TokenRoyaltyPlugin, string) { // royalty option if k.IsNotEnabledRoyalty(ctx, denomId) { - tokenPlugin := k.UserDataToTokenPlugin(tokenData) - if tokenPlugin != nil && tokenPlugin.RoyaltyPlugin != nil { - return tokenPlugin.RoyaltyPlugin, tokenData + if len(tokenData) == 0 { + return nil, "" + } + tokenRoyaltyPlugin := new(types.TokenRoyaltyPlugin) + if err := k.cdc.Unmarshal([]byte(tokenData), tokenRoyaltyPlugin); err != nil { + return nil, "" + } + if tokenRoyaltyPlugin != nil { + return tokenRoyaltyPlugin, tokenData } else { return nil, "" } diff --git a/modules/nft/keeper/royalty_test.go b/modules/nft/keeper/royalty_test.go index b55569d4..095ee864 100644 --- a/modules/nft/keeper/royalty_test.go +++ b/modules/nft/keeper/royalty_test.go @@ -1 +1,186 @@ -package keeper +package keeper_test + +import ( + "math/big" + + "github.com/irisnet/irismod/modules/nft/types" + + sdkmath "cosmossdk.io/math" +) + +var ( + denomDefaultFraction = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000)) + tokenFraction = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(100)) + + token1SalePrice = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000000)) + token1RoyaltyAmount = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(10000)) + token1Fraction = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(100)) + + token2SalePrice = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000000)) + token2RoyaltyAmount = sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(100000)) +) + +func (suite *KeeperSuite) TestSaveDefaultRoyalty() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + receiver, fraction, err := suite.keeper.GetDefaultRoyaltyInfo(suite.ctx, denomID) + suite.NoError(err) + suite.Equal(fraction, denomDefaultFraction) + suite.Equal(receiver, address.String()) +} + +func (suite *KeeperSuite) TestRemoveDefaultRoyalty() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + receiver, fraction, err := suite.keeper.GetDefaultRoyaltyInfo(suite.ctx, denomID) + suite.NoError(err) + suite.Equal(fraction, denomDefaultFraction) + suite.Equal(receiver, address.String()) + + // remove royalty info from denom + err1 := suite.keeper.RemoveDefaultRoyalty(suite.ctx, denomID, address) + suite.NoError(err1) + + // royalty info is null + receiver1, fraction1, err := suite.keeper.GetDefaultRoyaltyInfo(suite.ctx, denomID) + suite.Equal(err, types.ErrNotEnabledRoyalty) + suite.Equal(fraction1, sdkmath.Uint{}) + suite.Equal(receiver1, "") + +} + +func (suite *KeeperSuite) TestSaveTokenRoyalty() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + + err1 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + suite.NoError(err1) + + err2 := suite.keeper.SaveTokenRoyalty(suite.ctx, denomID, tokenID, + address.String(), tokenFraction, address) + suite.NoError(err2) + + receiver, fraction, err := suite.keeper.GetTokenRoyaltyInfo( + suite.ctx, + denomID, + tokenID, + ) + suite.NoError(err) + + suite.Equal(receiver, address.String()) + suite.Equal(fraction, tokenFraction) + +} + +func (suite *KeeperSuite) TestRemoveTokenRoyalty() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + + err1 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + suite.NoError(err1) + + err2 := suite.keeper.SaveTokenRoyalty(suite.ctx, denomID, tokenID, + address.String(), tokenFraction, address) + suite.NoError(err2) + + err3 := suite.keeper.RemoveTokenRoyalty(suite.ctx, denomID, tokenID, address) + suite.NoError(err3) + + receiver, fraction, err := suite.keeper.GetTokenRoyaltyInfo( + suite.ctx, + denomID, + tokenID, + ) + suite.Equal(err, types.ErrNullTokenRoyaltyInfo) + + suite.Equal(receiver, "") + suite.Equal(fraction, sdkmath.Uint{}) + +} + +func (suite *KeeperSuite) TestGetRoyaltyInfo() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + + err1 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + suite.NoError(err1) + + err2 := suite.keeper.SaveTokenRoyalty(suite.ctx, denomID, tokenID, + address.String(), token1Fraction, address) + suite.NoError(err2) + + receiver1, royaltyAmount1, err3 := suite.keeper.GetRoyaltyInfo(suite.ctx, + denomID, + tokenID, + token1SalePrice, + ) + suite.NoError(err3) + + suite.Equal(receiver1, address.String()) + suite.Equal(royaltyAmount1, token1RoyaltyAmount) + + err4 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID2, tokenNm2, tokenURI2, tokenURIHash2, "", address) + suite.NoError(err4) + + receiver2, royaltyAmount2, err5 := suite.keeper.GetRoyaltyInfo(suite.ctx, + denomID, + tokenID2, + token2SalePrice, + ) + suite.NoError(err5) + suite.Equal(receiver2, address.String()) + suite.Equal(royaltyAmount2, token2RoyaltyAmount) + +} + +func (suite *KeeperSuite) TestGetDefaultRoyaltyInfo() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + + receiver, royaltyFraction, err := suite.keeper.GetDefaultRoyaltyInfo(suite.ctx, denomID) + suite.NoError(err) + + suite.Equal(receiver, address.String()) + suite.Equal(royaltyFraction, denomDefaultFraction) + +} + +func (suite *KeeperSuite) TestGetTokenRoyaltyInfo() { + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + + err1 := suite.keeper.SaveNFT(suite.ctx, denomID, tokenID, tokenNm, tokenURI, tokenURIHash, tokenData, address) + suite.NoError(err1) + + err2 := suite.keeper.SaveTokenRoyalty(suite.ctx, denomID, tokenID, + address.String(), tokenFraction, address) + suite.NoError(err2) + + receiver, royaltyFraction, err := suite.keeper.GetTokenRoyaltyInfo(suite.ctx, denomID, tokenID) + suite.NoError(err) + + suite.Equal(receiver, address.String()) + suite.Equal(royaltyFraction, tokenFraction) +} + +func (suite *KeeperSuite) TestIsNotEnabledRoyalty() { + + // royalty should be enabled = false + enabled := suite.keeper.IsNotEnabledRoyalty(suite.ctx, denomID) + suite.Equal(enabled, false) + + // set royalty + err := suite.keeper.SaveDefaultRoyalty(suite.ctx, denomID, + address.String(), denomDefaultFraction, address) + suite.NoError(err) + + enabled1 := suite.keeper.IsNotEnabledRoyalty(suite.ctx, denomID) + suite.Equal(enabled1, true) +} diff --git a/modules/nft/keeper/utils.go b/modules/nft/keeper/utils.go index 1f608277..6b4fa970 100644 --- a/modules/nft/keeper/utils.go +++ b/modules/nft/keeper/utils.go @@ -1,23 +1,43 @@ package keeper -import "github.com/irisnet/irismod/modules/nft/types" +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/irisnet/irismod/modules/nft/types" +) -func (k Keeper) UserDataToDenomPlugin(data string) *types.DenomPlugin { +func (k Keeper) UserDataToDenomPlugin(ctx sdk.Context, data string) *types.DenomPlugin { // 1. Unmarshal denomPlugin - var denomPlugin *types.DenomPlugin + denomPlugin := new(types.DenomPlugin) if err := k.cdc.Unmarshal([]byte(data), denomPlugin); err != nil { return nil } return denomPlugin } -func (k Keeper) UserDataToTokenPlugin(data string) *types.TokenPlugin { +func (k Keeper) GetDenomMetadata(ctx sdk.Context, denomId string) (*types.DenomMetadata, error) { + class, has := k.nk.GetClass(ctx, denomId) + if !has { + return nil, sdkerrors.Wrapf(types.ErrInvalidDenom, "denom ID %s not exists", denomId) + } - // 1. Unmarshal denomPlugin - var tokenPlugin *types.TokenPlugin - if err := k.cdc.Unmarshal([]byte(data), tokenPlugin); err != nil { - return nil + denomMetadata := new(types.DenomMetadata) + + if err := k.cdc.Unmarshal(class.Data.GetValue(), denomMetadata); err != nil { + return nil, err + } + return denomMetadata, nil +} + +func (k Keeper) GetNftMetadata(ctx sdk.Context, denomId, tokenId string) (*types.NFTMetadata, error) { + token, exist := k.nk.GetNFT(ctx, denomId, tokenId) + if !exist { + return nil, sdkerrors.Wrapf(types.ErrUnknownNFT, "nft ID %s not exists", tokenId) + } + nftMetadata := new(types.NFTMetadata) + if err := k.cdc.Unmarshal(token.Data.GetValue(), nftMetadata); err != nil { + return nil, err } - return tokenPlugin + return nftMetadata, nil } diff --git a/modules/nft/types/errors.go b/modules/nft/types/errors.go index 2b27d329..f454293e 100644 --- a/modules/nft/types/errors.go +++ b/modules/nft/types/errors.go @@ -19,4 +19,5 @@ var ( ErrNotEnabledRoyalty = errorsmod.Register(ModuleName, 21, "royalty feature is not enabled") ErrNullDefaultRoyaltyInfo = errorsmod.Register(ModuleName, 22, "default royalty in is null") + ErrNullTokenRoyaltyInfo = errorsmod.Register(ModuleName, 23, "token royalty in is null") ) From d200b23463293dff7d60d43b027beb0e7071a2e1 Mon Sep 17 00:00:00 2001 From: sheldon <997166273@qq.com> Date: Fri, 23 Dec 2022 10:05:17 +0800 Subject: [PATCH 07/11] fix TestDefaultRoyaltyInfo --- modules/nft/keeper/grpc_query_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nft/keeper/grpc_query_test.go b/modules/nft/keeper/grpc_query_test.go index 858f426d..c38a5543 100644 --- a/modules/nft/keeper/grpc_query_test.go +++ b/modules/nft/keeper/grpc_query_test.go @@ -104,7 +104,7 @@ func (suite *KeeperSuite) TestDefaultRoyaltyInfo() { }) suite.NoError(err) - suite.Equal(response.Receiver, address2.String()) + suite.Equal(response.Receiver, address.String()) suite.Equal(response.RoyaltyFraction, sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000))) } From 00581e34788c4fd089a01acabe30f95a7fde2b7a Mon Sep 17 00:00:00 2001 From: Dreamer <745124335@qq.com> Date: Fri, 6 Jan 2023 10:29:07 +0800 Subject: [PATCH 08/11] encode & decode class or nft metadata (#323) * implement ics721 nft_keeper * update logic * fix bug * refactor code * update ics721 * implement ClassMetadataResolver * refactor ClassMetadataResolver * implement TokenMetadataResolver * fix TokenMetadataResolver * reanme ClassMetadataResolver to ClassResolver * refactor code * refactor code * add data validation * fix test error * fix test error * refactor nft builder uint test * creator use hex format * remove ValidateKeywords check when mintToken --- modules/nft/client/cli/cli_test.go | 10 +- .../nft/client/testutil/grpc_query_test.go | 2 +- modules/nft/keeper/grpc_query.go | 4 +- modules/nft/keeper/keeper_test.go | 2 +- modules/nft/keeper/nft.go | 16 +- modules/nft/simulation/genesis.go | 2 +- modules/nft/simulation/operations.go | 30 +- modules/nft/types/builder.go | 344 ++++++++++++++++++ modules/nft/types/builder_test.go | 247 +++++++++++++ modules/nft/types/codec.go | 7 + modules/nft/types/common_test.go | 2 +- modules/nft/types/msgs.go | 19 +- modules/nft/types/msgs_test.go | 6 +- modules/nft/types/nft.go | 13 + modules/nft/types/validation.go | 28 +- 15 files changed, 682 insertions(+), 50 deletions(-) create mode 100644 modules/nft/types/builder.go create mode 100644 modules/nft/types/builder_test.go diff --git a/modules/nft/client/cli/cli_test.go b/modules/nft/client/cli/cli_test.go index 2cbdcf42..4cc0e4ba 100644 --- a/modules/nft/client/cli/cli_test.go +++ b/modules/nft/client/cli/cli_test.go @@ -63,7 +63,7 @@ func (s *IntegrationTestSuite) TestNft() { uri := "uri" uriHash := "uriHash" description := "description" - data := "data" + data := "{\"key1\":\"value1\",\"key2\":\"value2\"}" tokenID := "kitty" //owner := "owner" denomName := "name" @@ -187,12 +187,12 @@ func (s *IntegrationTestSuite) TestNft() { s.Require().Equal(1, len(collectionItem.Collection.NFTs)) //------test GetCmdEditNFT()------------- - newTokenDate := "newdata" + newTokenData := "{\"key1\":\"value1\",\"key2\":\"value2\"}" newTokenURI := "newuri" newTokenURIHash := "newuriHash" newTokenName := "new Kitty Token" args = []string{ - fmt.Sprintf("--%s=%s", nftcli.FlagData, newTokenDate), + fmt.Sprintf("--%s=%s", nftcli.FlagData, newTokenData), fmt.Sprintf("--%s=%s", nftcli.FlagURI, newTokenURI), fmt.Sprintf("--%s=%s", nftcli.FlagURIHash, newTokenURIHash), fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, newTokenName), @@ -218,7 +218,7 @@ func (s *IntegrationTestSuite) TestNft() { s.Require().Equal(newTokenName, newNftItem.Name) s.Require().Equal(newTokenURI, newNftItem.URI) s.Require().Equal(newTokenURIHash, newNftItem.UriHash) - s.Require().Equal(newTokenDate, newNftItem.Data) + s.Require().Equal(newTokenData, newNftItem.Data) //------test GetCmdTransferNFT()------------- recipient := sdk.AccAddress(crypto.AddressHash([]byte("dgsbl"))) @@ -257,7 +257,7 @@ func (s *IntegrationTestSuite) TestNft() { //------test GetCmdBurnNFT()------------- newTokenID := "dgsbl" args = []string{ - fmt.Sprintf("--%s=%s", nftcli.FlagData, newTokenDate), + fmt.Sprintf("--%s=%s", nftcli.FlagData, newTokenData), fmt.Sprintf("--%s=%s", nftcli.FlagRecipient, from.String()), fmt.Sprintf("--%s=%s", nftcli.FlagURI, newTokenURI), fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, newTokenName), diff --git a/modules/nft/client/testutil/grpc_query_test.go b/modules/nft/client/testutil/grpc_query_test.go index 7c3df7d8..1160fde1 100644 --- a/modules/nft/client/testutil/grpc_query_test.go +++ b/modules/nft/client/testutil/grpc_query_test.go @@ -63,7 +63,7 @@ func (s *IntegrationTestSuite) TestNft() { uri := "uri" uriHash := "uriHash" description := "description" - data := "data" + data := "{\"key1\":\"value1\",\"key2\":\"value2\"}" tokenID := "kitty" //owner := "owner" denomName := "name" diff --git a/modules/nft/keeper/grpc_query.go b/modules/nft/keeper/grpc_query.go index dbcb8701..2d42c7e0 100644 --- a/modules/nft/keeper/grpc_query.go +++ b/modules/nft/keeper/grpc_query.go @@ -97,8 +97,8 @@ func (k Keeper) Collection(c context.Context, request *types.QueryCollectionRequ for _, token := range result.Nfts { owner := k.nk.GetOwner(ctx, request.DenomId, token.Id) - var nftMetadata types.NFTMetadata - if err := k.cdc.Unmarshal(token.Data.GetValue(), &nftMetadata); err != nil { + nftMetadata, err := types.UnmarshalNFTMetadata(k.cdc, token.Data.GetValue()) + if err != nil { return nil, err } diff --git a/modules/nft/keeper/keeper_test.go b/modules/nft/keeper/keeper_test.go index 2a8cae1e..dcb60c51 100644 --- a/modules/nft/keeper/keeper_test.go +++ b/modules/nft/keeper/keeper_test.go @@ -51,7 +51,7 @@ var ( denomDescription = "this is a class name of a nft" denomUri = "denom uri" denomUriHash = "denom uri hash" - denomData = "denom data" + denomData = "{\"key1\":\"value1\",\"key2\":\"value2\"}" isCheckTx = false ) diff --git a/modules/nft/keeper/nft.go b/modules/nft/keeper/nft.go index ccd84971..bfae6551 100644 --- a/modules/nft/keeper/nft.go +++ b/modules/nft/keeper/nft.go @@ -75,8 +75,8 @@ func (k Keeper) UpdateNFT(ctx sdk.Context, denomID, token.Uri = types.Modify(token.Uri, tokenURI) token.UriHash = types.Modify(token.UriHash, tokenURIHash) if types.Modified(tokenNm) || types.Modified(tokenData) { - var nftMetadata types.NFTMetadata - if err := k.cdc.Unmarshal(token.Data.GetValue(), &nftMetadata); err != nil { + nftMetadata, err := types.UnmarshalNFTMetadata(k.cdc, token.Data.GetValue()) + if err != nil { return err } @@ -129,8 +129,8 @@ func (k Keeper) TransferOwnership(ctx sdk.Context, denomID, token.Uri = types.Modify(token.Uri, tokenURI) token.UriHash = types.Modify(token.UriHash, tokenURIHash) if tokenMetadataChanged { - var nftMetadata types.NFTMetadata - if err := k.cdc.Unmarshal(token.Data.GetValue(), &nftMetadata); err != nil { + nftMetadata, err := types.UnmarshalNFTMetadata(k.cdc, token.Data.GetValue()) + if err != nil { return err } @@ -164,8 +164,8 @@ func (k Keeper) GetNFT(ctx sdk.Context, denomID, tokenID string) (nft exported.N return nil, sdkerrors.Wrapf(types.ErrUnknownNFT, "not found NFT: %s", denomID) } - var nftMetadata types.NFTMetadata - if err := k.cdc.Unmarshal(token.Data.GetValue(), &nftMetadata); err != nil { + nftMetadata, err := types.UnmarshalNFTMetadata(k.cdc, token.Data.GetValue()) + if err != nil { return nil, err } @@ -184,8 +184,8 @@ func (k Keeper) GetNFT(ctx sdk.Context, denomID, tokenID string) (nft exported.N func (k Keeper) GetNFTs(ctx sdk.Context, denom string) (nfts []exported.NFT, err error) { tokens := k.nk.GetNFTsOfClass(ctx, denom) for _, token := range tokens { - var nftMetadata types.NFTMetadata - if err := k.cdc.Unmarshal(token.Data.GetValue(), &nftMetadata); err != nil { + nftMetadata, err := types.UnmarshalNFTMetadata(k.cdc, token.Data.GetValue()) + if err != nil { return nil, err } nfts = append(nfts, types.BaseNFT{ diff --git a/modules/nft/simulation/genesis.go b/modules/nft/simulation/genesis.go index 4e3fc7cb..1af4997b 100644 --- a/modules/nft/simulation/genesis.go +++ b/modules/nft/simulation/genesis.go @@ -42,7 +42,7 @@ func RandomizedGenState(simState *module.SimulationState) { // 10% of accounts own an NFT if simState.Rand.Intn(100) < 10 { baseNFT := types.NewBaseNFT( - genNFTID(simState.Rand, types.MinDenomLen, types.MaxDenomLen), // id + genNFTID(simState.Rand, 3, 128), // id simtypes.RandStringOfLength(simState.Rand, 10), acc.Address, simtypes.RandStringOfLength(simState.Rand, 45), // tokenURI diff --git a/modules/nft/simulation/operations.go b/modules/nft/simulation/operations.go index de06cc17..89a6509f 100644 --- a/modules/nft/simulation/operations.go +++ b/modules/nft/simulation/operations.go @@ -27,6 +27,13 @@ const ( OpWeightMsgTransferDenom = "op_weight_msg_transfer_denom" ) +var ( + data = []string{ + "{\"key1\":\"value1\",\"key2\":\"value2\"}", + "{\"irismod:key1\":\"value1\",\"irismod:key2\":\"value2\"}", + } +) + // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( appParams simtypes.AppParams, @@ -125,9 +132,9 @@ func SimulateMsgTransferNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.Ba "", "", "", - simtypes.RandStringOfLength(r, 10), // tokenData - ownerAddr.String(), // sender - recipientAccount.Address.String(), // recipient + randData(r), // tokenData + ownerAddr.String(), // sender + recipientAccount.Address.String(), // recipient ) account := ak.GetAccount(ctx, ownerAddr) @@ -185,7 +192,7 @@ func SimulateMsgEditNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe "", simtypes.RandStringOfLength(r, 45), // tokenURI simtypes.RandStringOfLength(r, 32), // tokenURI - simtypes.RandStringOfLength(r, 10), // tokenData + randData(r), // tokenData ownerAddr.String(), ) @@ -237,12 +244,12 @@ func SimulateMsgMintNFT(k keeper.Keeper, ak types.AccountKeeper, bk types.BankKe randomRecipient, _ := simtypes.RandomAcc(r, accs) msg := types.NewMsgMintNFT( - genNFTID(r, types.MinDenomLen, types.MaxDenomLen), // nft ID - randDenom(ctx, k, r, true, false), // denom + genNFTID(r, 3, 128), // nft ID + randDenom(ctx, k, r, true, false), // denom "", simtypes.RandStringOfLength(r, 45), // tokenURI simtypes.RandStringOfLength(r, 32), // uriHash - simtypes.RandStringOfLength(r, 10), // tokenData + randData(r), // tokenData randomSender.Address.String(), // sender randomRecipient.Address.String(), // recipient ) @@ -421,7 +428,7 @@ func SimulateMsgIssueDenom(k keeper.Keeper, ak types.AccountKeeper, bk types.Ban simtypes.RandStringOfLength(r, 10), simtypes.RandStringOfLength(r, 10), simtypes.RandStringOfLength(r, 32), - simtypes.RandStringOfLength(r, 20), + randData(r), ) account := ak.GetAccount(ctx, sender.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) @@ -484,7 +491,7 @@ func randNFT(ctx sdk.Context, k keeper.Keeper, r *rand.Rand, mintable, editable } func genDenomID(r *rand.Rand) string { - len := simtypes.RandIntBetween(r, types.MinDenomLen, types.MaxDenomLen) + len := simtypes.RandIntBetween(r, 3, 128) var denomID string for { denomID = strings.ToLower(simtypes.RandStringOfLength(r, len)) @@ -527,6 +534,11 @@ func randDenom(ctx sdk.Context, k keeper.Keeper, r *rand.Rand, mintable, editabl return denoms[idx] } +func randData(r *rand.Rand) string { + idx := r.Intn(len(data)) + return data[idx] +} + func genRandomBool(r *rand.Rand) bool { return r.Int()%2 == 0 } diff --git a/modules/nft/types/builder.go b/modules/nft/types/builder.go new file mode 100644 index 00000000..db9d0368 --- /dev/null +++ b/modules/nft/types/builder.go @@ -0,0 +1,344 @@ +package types + +import ( + "encoding/base64" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/nft" + proto "github.com/gogo/protobuf/proto" +) + +const ( + Namespace = "irismod:" + KeyMediaFieldValue = "value" +) + +var ( + ClassKeyName = fmt.Sprintf("%s%s", Namespace, "name") + ClassKeySymbol = fmt.Sprintf("%s%s", Namespace, "symbol") + ClassKeyDescription = fmt.Sprintf("%s%s", Namespace, "description") + ClassKeyURIhash = fmt.Sprintf("%s%s", Namespace, "uri_hash") + ClassKeyMintRestricted = fmt.Sprintf("%s%s", Namespace, "mint_restricted") + ClassKeyUpdateRestricted = fmt.Sprintf("%s%s", Namespace, "update_restricted") + ClassKeyCreator = fmt.Sprintf("%s%s", Namespace, "creator") + ClassKeySchema = fmt.Sprintf("%s%s", Namespace, "schema") + TokenKeyName = fmt.Sprintf("%s%s", Namespace, "name") + TokenKeyURIhash = fmt.Sprintf("%s%s", Namespace, "uri_hash") +) + +type ( + ClassBuilder struct { + cdc codec.Codec + getModuleAddress func(string) sdk.AccAddress + } + TokenBuilder struct{ cdc codec.Codec } + MediaField struct { + Value interface{} `json:"value"` + Mime string `json:"mime,omitempty"` + } +) + +func NewClassBuilder(cdc codec.Codec, + getModuleAddress func(string) sdk.AccAddress, +) ClassBuilder { + return ClassBuilder{ + cdc: cdc, + getModuleAddress: getModuleAddress, + } +} + +// BuildMetadata encode class into the metadata format defined by ics721 +func (cb ClassBuilder) BuildMetadata(class nft.Class) (string, error) { + var message proto.Message + if err := cb.cdc.UnpackAny(class.Data, &message); err != nil { + return "", err + } + + metadata, ok := message.(*DenomMetadata) + if !ok { + return "", errors.New("unsupport classMetadata") + } + + kvals := make(map[string]interface{}) + if len(metadata.Data) > 0 { + err := json.Unmarshal([]byte(metadata.Data), &kvals) + if err != nil && IsIBCDenom(class.Id) { + //when classData is not a legal json, there is no need to parse the data + return base64.RawStdEncoding.EncodeToString([]byte(metadata.Data)), nil + } + } + creator, err := sdk.AccAddressFromBech32(metadata.Creator) + if err != nil { + return "", err + } + + hexCreator := hex.EncodeToString(creator) + kvals[ClassKeyName] = MediaField{Value: class.Name} + kvals[ClassKeySymbol] = MediaField{Value: class.Symbol} + kvals[ClassKeyDescription] = MediaField{Value: class.Description} + kvals[ClassKeyURIhash] = MediaField{Value: class.UriHash} + kvals[ClassKeyMintRestricted] = MediaField{Value: metadata.MintRestricted} + kvals[ClassKeyUpdateRestricted] = MediaField{Value: metadata.UpdateRestricted} + kvals[ClassKeyCreator] = MediaField{Value: hexCreator} + kvals[ClassKeySchema] = MediaField{Value: metadata.Schema} + data, err := json.Marshal(kvals) + if err != nil { + return "", err + } + return base64.RawStdEncoding.EncodeToString(data), nil +} + +// Build create a class from ics721 packetData +func (cb ClassBuilder) Build(classID, classURI, classData string) (nft.Class, error) { + classDataBz, err := base64.RawStdEncoding.DecodeString(classData) + if err != nil { + return nft.Class{}, err + } + + var ( + name = "" + symbol = "" + description = "" + uriHash = "" + mintRestricted = true + updateRestricted = true + schema = "" + creator = cb.getModuleAddress(ModuleName).String() + ) + + dataMap := make(map[string]interface{}) + if err := json.Unmarshal(classDataBz, &dataMap); err != nil { + any, err := codectypes.NewAnyWithValue(&DenomMetadata{ + Creator: creator, + Schema: schema, + MintRestricted: mintRestricted, + UpdateRestricted: updateRestricted, + Data: string(classDataBz), + }) + if err != nil { + return nft.Class{}, err + } + return nft.Class{ + Id: classID, + Uri: classURI, + Name: name, + Symbol: symbol, + Description: description, + UriHash: uriHash, + Data: any, + }, nil + } + if v, ok := dataMap[ClassKeyName]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + name = vStr + delete(dataMap, ClassKeyName) + } + } + } + + if v, ok := dataMap[ClassKeySymbol]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + symbol = vStr + delete(dataMap, ClassKeySymbol) + } + } + } + + if v, ok := dataMap[ClassKeyDescription]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + description = vStr + delete(dataMap, ClassKeyDescription) + } + } + } + + if v, ok := dataMap[ClassKeyURIhash]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + uriHash = vStr + delete(dataMap, ClassKeyURIhash) + } + } + } + + if v, ok := dataMap[ClassKeyMintRestricted]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vBool, ok := vMap[KeyMediaFieldValue].(bool); ok { + mintRestricted = vBool + delete(dataMap, ClassKeyMintRestricted) + } + } + } + + if v, ok := dataMap[ClassKeyUpdateRestricted]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vBool, ok := vMap[KeyMediaFieldValue].(bool); ok { + updateRestricted = vBool + delete(dataMap, ClassKeyUpdateRestricted) + } + } + } + + if v, ok := dataMap[ClassKeyCreator]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + creatorAcc, err := sdk.AccAddressFromHexUnsafe(vStr) + if err != nil { + return nft.Class{}, err + } + creator = creatorAcc.String() + delete(dataMap, ClassKeyCreator) + } + } + } + + if v, ok := dataMap[ClassKeySchema]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + schema = vStr + delete(dataMap, ClassKeySchema) + } + } + } + + data, err := json.Marshal(dataMap) + if err != nil { + return nft.Class{}, err + } + + any, err := codectypes.NewAnyWithValue(&DenomMetadata{ + Creator: creator, + Schema: schema, + MintRestricted: mintRestricted, + UpdateRestricted: updateRestricted, + Data: string(data), + }) + if err != nil { + return nft.Class{}, err + } + + return nft.Class{ + Id: classID, + Uri: classURI, + Name: name, + Symbol: symbol, + Description: description, + UriHash: uriHash, + Data: any, + }, nil +} + +func NewTokenBuilder(cdc codec.Codec) TokenBuilder { + return TokenBuilder{ + cdc: cdc, + } +} + +// BuildMetadata encode nft into the metadata format defined by ics721 +func (tb TokenBuilder) BuildMetadata(token nft.NFT) (string, error) { + var message proto.Message + if err := tb.cdc.UnpackAny(token.Data, &message); err != nil { + return "", err + } + + nftMetadata, ok := message.(*NFTMetadata) + if !ok { + return "", errors.New("unsupport classMetadata") + } + kvals := make(map[string]interface{}) + if len(nftMetadata.Data) > 0 { + err := json.Unmarshal([]byte(nftMetadata.Data), &kvals) + if err != nil && IsIBCDenom(token.ClassId) { + //when nftMetadata is not a legal json, there is no need to parse the data + return base64.RawStdEncoding.EncodeToString([]byte(nftMetadata.Data)), nil + } + } + kvals[TokenKeyName] = MediaField{Value: nftMetadata.Name} + kvals[TokenKeyURIhash] = MediaField{Value: token.UriHash} + data, err := json.Marshal(kvals) + if err != nil { + return "", err + } + return base64.RawStdEncoding.EncodeToString(data), nil +} + +// Build create a nft from ics721 packet data +func (tb TokenBuilder) Build(classId, tokenId, tokenURI, tokenData string) (nft.NFT, error) { + tokenDataBz, err := base64.RawStdEncoding.DecodeString(tokenData) + if err != nil { + return nft.NFT{}, err + } + + dataMap := make(map[string]interface{}) + if err := json.Unmarshal(tokenDataBz, &dataMap); err != nil { + metadata, err := codectypes.NewAnyWithValue(&NFTMetadata{ + Data: string(tokenDataBz), + }) + if err != nil { + return nft.NFT{}, err + } + + return nft.NFT{ + ClassId: classId, + Id: tokenId, + Uri: tokenURI, + Data: metadata, + }, nil + } + + var ( + name string + uriHash string + ) + if v, ok := dataMap[TokenKeyName]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + name = vStr + delete(dataMap, TokenKeyName) + } + } + } + + if v, ok := dataMap[TokenKeyURIhash]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + uriHash = vStr + delete(dataMap, TokenKeyURIhash) + } + } + } + + data, err := json.Marshal(dataMap) + if err != nil { + return nft.NFT{}, err + } + + metadata, err := codectypes.NewAnyWithValue(&NFTMetadata{ + Name: name, + Data: string(data), + }) + if err != nil { + return nft.NFT{}, err + } + + return nft.NFT{ + ClassId: classId, + Id: tokenId, + Uri: tokenURI, + UriHash: uriHash, + Data: metadata, + }, nil +} + +func PopIfExist() { + +} diff --git a/modules/nft/types/builder_test.go b/modules/nft/types/builder_test.go new file mode 100644 index 00000000..2ddd7512 --- /dev/null +++ b/modules/nft/types/builder_test.go @@ -0,0 +1,247 @@ +package types + +import ( + "encoding/base64" + "encoding/json" + "testing" + + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/nft" + "github.com/gogo/protobuf/proto" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/crypto" +) + +func TestTokenBuilder_Build(t *testing.T) { + nftMetadata := NFTMetadata{ + Name: "My Cat", + Data: "{\"key1\":\"value1\",\"key2\":\"value2\"}", + } + + bz, err := json.Marshal(nftMetadata) + require.NoError(t, err, " nftMetadata json.Marshal failed") + t.Logf("%s", bz) + + any, err := codectypes.NewAnyWithValue(&nftMetadata) + require.NoError(t, err, " nftMetadata codectypes.NewAnyWithValue failed") + + token := nft.NFT{ + ClassId: "kitty", + Id: "cat", + Uri: "uri", + UriHash: "uri_hash", + Data: any, + } + + cdc := GetEncoding() + bz, err = cdc.MarshalJSON(&token) + require.NoError(t, err, " token MarshalJSON failed") + t.Logf("%s", bz) + + builder := NewTokenBuilder(cdc) + result, err := builder.BuildMetadata(token) + require.NoError(t, err, " token builder.BuildMetadata failed") + t.Log(result) + + expToken, err := builder.Build(token.ClassId, token.Id, token.Uri, result) + require.NoError(t, err, " token builder.Build failed") + + exp, err := cdc.MarshalInterfaceJSON(&token) + require.NoError(t, err, " token cdc.MarshalInterfaceJSON failed") + t.Logf("%s", exp) + + act, err := cdc.MarshalInterfaceJSON(&expToken) + require.NoError(t, err, " token cdc.MarshalInterfaceJSON failed") + t.Logf("%s", act) + + require.Equal(t, act, exp, "not equal") +} + +func GetEncoding() codec.Codec { + interfaceRegistry := types.NewInterfaceRegistry() + interfaceRegistry.RegisterImplementations( + (*proto.Message)(nil), + &nft.Class{}, + &nft.NFT{}, + &DenomMetadata{}, + &NFTMetadata{}, + ) + marshaler := codec.NewProtoCodec(interfaceRegistry) + return marshaler +} + +func TestClassBuilder_BuildMetadata(t *testing.T) { + creator, err := sdk.AccAddressFromHexUnsafe(crypto.AddressHash([]byte("test_consumer")).String()) + require.NoError(t, err, "AccAddressFromHexUnsafe failed") + + cdc := GetEncoding() + getModuleAddress := func(_ string) sdk.AccAddress { + return creator + } + class := nft.Class{ + Name: "kitty", + Symbol: "symbol", + Description: "digital cat", + Uri: "uri", + UriHash: "uri_hash", + } + denomMetadata := DenomMetadata{ + Creator: creator.String(), + Schema: "{}", + MintRestricted: true, + UpdateRestricted: true, + } + + type args struct { + classID string + classData string + } + tests := []struct { + name string + args args + want string + wantErr bool + }{ + { + name: "empty classData", + args: args{ + classID: "cat", + classData: "", + }, + want: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"}}`, + wantErr: false, + }, + { + name: "classData is invalid json string", + args: args{ + classID: "cat", + classData: "hhaahha", + }, + want: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"}}`, + wantErr: false, + }, + { + name: "classData is valid json string", + args: args{ + classID: "cat", + classData: "{\"key1\":\"value1\",\"key2\":\"value2\"}", + }, + want: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"},"key1":"value1","key2":"value2"}`, + wantErr: false, + }, + { + name: "class is IBC assets and classData is invalid json string", + args: args{ + classID: "ibc/943B966B2B8A53C50A198EDAB7C9A41FCEAF24400A94167846679769D8BF8311", + classData: "hahhahha", + }, + want: `hahhahha`, + wantErr: false, + }, + { + name: "class is IBC assets and classData is valid json string", + args: args{ + classID: "ibc/943B966B2B8A53C50A198EDAB7C9A41FCEAF24400A94167846679769D8BF8311", + classData: "{\"key1\":\"value1\",\"key2\":\"value2\"}", + }, + want: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"},"key1":"value1","key2":"value2"}`, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cb := ClassBuilder{ + cdc: cdc, + getModuleAddress: getModuleAddress, + } + + denomMetadata.Data = tt.args.classData + any, err := codectypes.NewAnyWithValue(&denomMetadata) + require.NoError(t, err, " denomMetadata codectypes.NewAnyWithValue failed") + + class.Id = tt.args.classID + class.Data = any + + got, err := cb.BuildMetadata(class) + want := base64.RawStdEncoding.EncodeToString([]byte(tt.want)) + if (err != nil) != tt.wantErr { + t.Errorf("ClassBuilder.BuildMetadata() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != want { + t.Errorf("ClassBuilder.BuildMetadata() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestClassBuilder_Build(t *testing.T) { + creator, err := sdk.AccAddressFromHexUnsafe(crypto.AddressHash([]byte("test_consumer")).String()) + require.NoError(t, err, "AccAddressFromHexUnsafe failed") + + cdc := GetEncoding() + getModuleAddress := func(_ string) sdk.AccAddress { + return creator + } + classID := "cat" + classURI := "uri" + + type args struct { + classData string + } + tests := []struct { + name string + args args + want string + wantErr bool + }{ + { + name: "empty classData", + args: args{ + classData: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"}}`, + }, + want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"kitty","symbol":"symbol","description":"digital cat","uri":"uri","uri_hash":"uri_hash","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"{}","mint_restricted":true,"update_restricted":true,"data":"{}"}}`, + wantErr: false, + }, + { + name: "classData is invalid json string", + args: args{ + classData: `this is empty class data`, + }, + want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"","symbol":"","description":"","uri":"uri","uri_hash":"","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"","mint_restricted":true,"update_restricted":true,"data":"this is empty class data"}}`, + wantErr: false, + }, + { + name: "classData is valid json string", + args: args{ + classData: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"},"key1":"value1","key2":"value2"}`, + }, + want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"kitty","symbol":"symbol","description":"digital cat","uri":"uri","uri_hash":"uri_hash","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"{}","mint_restricted":true,"update_restricted":true,"data":"{\"key1\":\"value1\",\"key2\":\"value2\"}"}}`, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cb := ClassBuilder{ + cdc: cdc, + getModuleAddress: getModuleAddress, + } + classDataRaw := base64.RawStdEncoding.EncodeToString([]byte(tt.args.classData)) + result, err := cb.Build(classID, classURI, classDataRaw) + if (err != nil) != tt.wantErr { + t.Errorf("ClassBuilder.BuildMetadata() error = %v, wantErr %v", err, tt.wantErr) + return + } + + got, err := cdc.MarshalInterfaceJSON(&result) + require.NoError(t, err, " class cdc.MarshalInterfaceJSON failed") + + if string(got) != tt.want { + t.Errorf("ClassBuilder.BuildMetadata() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/modules/nft/types/codec.go b/modules/nft/types/codec.go index e4bb624c..3c434031 100644 --- a/modules/nft/types/codec.go +++ b/modules/nft/types/codec.go @@ -8,6 +8,7 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" + proto "github.com/gogo/protobuf/proto" "github.com/irisnet/irismod/modules/nft/exported" ) @@ -52,5 +53,11 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &BaseNFT{}, ) + registry.RegisterImplementations( + (*proto.Message)(nil), + &DenomMetadata{}, + &NFTMetadata{}, + ) + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/modules/nft/types/common_test.go b/modules/nft/types/common_test.go index 817a988e..55e5569d 100644 --- a/modules/nft/types/common_test.go +++ b/modules/nft/types/common_test.go @@ -17,7 +17,7 @@ var ( address2 = CreateTestAddrs(2)[1] tokenURI = "https://google.com/token-1.json" uriHash = "uriHash" - tokenData = "https://google.com/token-1.json" + tokenData = "{\"key1\":\"value1\",\"key2\":\"value2\"}" ) // CreateTestAddrs creates test addresses diff --git a/modules/nft/types/msgs.go b/modules/nft/types/msgs.go index 12e47593..4063feeb 100644 --- a/modules/nft/types/msgs.go +++ b/modules/nft/types/msgs.go @@ -3,6 +3,7 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/tidwall/gjson" ) // constant used to indicate that some field should not be updated @@ -59,6 +60,10 @@ func (msg MsgIssueDenom) ValidateBasic() error { if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) } + + if len(msg.Data) != 0 && !gjson.Valid(msg.Data) { + return sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, "invalid data, must be a JSON string or empty") + } return ValidateKeywords(msg.Id) } @@ -112,6 +117,10 @@ func (msg MsgTransferNFT) ValidateBasic() error { if _, err := sdk.AccAddressFromBech32(msg.Recipient); err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid recipient address (%s)", err) } + + if len(msg.Data) != 0 && Modified(msg.Data) && !gjson.Valid(msg.Data) { + return sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, "invalid data, must be a JSON string or empty") + } return ValidateTokenID(msg.Id) } @@ -164,6 +173,10 @@ func (msg MsgEditNFT) ValidateBasic() error { if err := ValidateTokenURI(msg.URI); err != nil { return err } + + if len(msg.Data) != 0 && Modified(msg.Data) && !gjson.Valid(msg.Data) { + return sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, "invalid data, must be a JSON string or empty") + } return ValidateTokenID(msg.Id) } @@ -215,12 +228,12 @@ func (msg MsgMintNFT) ValidateBasic() error { if err := ValidateDenomID(msg.DenomId); err != nil { return err } - if err := ValidateKeywords(msg.DenomId); err != nil { - return err - } if err := ValidateTokenURI(msg.URI); err != nil { return err } + if len(msg.Data) != 0 && !gjson.Valid(msg.Data) { + return sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, "invalid data, must be a JSON string or empty") + } return ValidateTokenID(msg.Id) } diff --git a/modules/nft/types/msgs_test.go b/modules/nft/types/msgs_test.go index f7c4f58b..8a11e8ca 100644 --- a/modules/nft/types/msgs_test.go +++ b/modules/nft/types/msgs_test.go @@ -31,7 +31,7 @@ func TestMsgTransferNFTValidateBasicMethod(t *testing.T) { func TestMsgTransferNFTGetSignBytesMethod(t *testing.T) { newMsgTransferNFT := types.NewMsgTransferNFT(denomID, denom, id, tokenURI, uriHash, tokenData, address.String(), address2.String()) sortedBytes := newMsgTransferNFT.GetSignBytes() - expected := `{"type":"irismod/nft/MsgTransferNFT","value":{"data":"https://google.com/token-1.json","denom_id":"denom","id":"denom","name":"id1","recipient":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgp0ctjdj","sender":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqjwl8sq","uri":"https://google.com/token-1.json","uri_hash":"uriHash"}}` + expected := `{"type":"irismod/nft/MsgTransferNFT","value":{"data":"{\"key1\":\"value1\",\"key2\":\"value2\"}","denom_id":"denom","id":"denom","name":"id1","recipient":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgp0ctjdj","sender":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqjwl8sq","uri":"https://google.com/token-1.json","uri_hash":"uriHash"}}` require.Equal(t, expected, string(sortedBytes)) } @@ -64,7 +64,7 @@ func TestMsgEditNFTValidateBasicMethod(t *testing.T) { func TestMsgEditNFTGetSignBytesMethod(t *testing.T) { newMsgEditNFT := types.NewMsgEditNFT(id, denom, nftName, tokenURI, uriHash, tokenData, address.String()) sortedBytes := newMsgEditNFT.GetSignBytes() - expected := `{"type":"irismod/nft/MsgEditNFT","value":{"data":"https://google.com/token-1.json","denom_id":"denom","id":"id1","name":"report","sender":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqjwl8sq","uri":"https://google.com/token-1.json","uri_hash":"uriHash"}}` + expected := `{"type":"irismod/nft/MsgEditNFT","value":{"data":"{\"key1\":\"value1\",\"key2\":\"value2\"}","denom_id":"denom","id":"id1","name":"report","sender":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqjwl8sq","uri":"https://google.com/token-1.json","uri_hash":"uriHash"}}` require.Equal(t, expected, string(sortedBytes)) } @@ -96,7 +96,7 @@ func TestMsgMsgMintNFTValidateBasicMethod(t *testing.T) { func TestMsgMintNFTGetSignBytesMethod(t *testing.T) { newMsgMintNFT := types.NewMsgMintNFT(id, denom, nftName, tokenURI, uriHash, tokenData, address.String(), address2.String()) sortedBytes := newMsgMintNFT.GetSignBytes() - expected := `{"type":"irismod/nft/MsgMintNFT","value":{"data":"https://google.com/token-1.json","denom_id":"denom","id":"id1","name":"report","recipient":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgp0ctjdj","sender":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqjwl8sq","uri":"https://google.com/token-1.json","uri_hash":"uriHash"}}` + expected := `{"type":"irismod/nft/MsgMintNFT","value":{"data":"{\"key1\":\"value1\",\"key2\":\"value2\"}","denom_id":"denom","id":"id1","name":"report","recipient":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgp0ctjdj","sender":"cosmos15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqjwl8sq","uri":"https://google.com/token-1.json","uri_hash":"uriHash"}}` require.Equal(t, expected, string(sortedBytes)) } diff --git a/modules/nft/types/nft.go b/modules/nft/types/nft.go index bf5457eb..dcb84789 100644 --- a/modules/nft/types/nft.go +++ b/modules/nft/types/nft.go @@ -1,6 +1,7 @@ package types import ( + "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/irisnet/irismod/modules/nft/exported" @@ -56,3 +57,15 @@ func (bnft BaseNFT) GetData() string { // NFTs define a list of NFT type NFTs []exported.NFT + +func UnmarshalNFTMetadata(cdc codec.Codec, bz []byte) (NFTMetadata, error) { + var nftMetadata NFTMetadata + if len(bz) == 0 { + return nftMetadata, nil + } + + if err := cdc.Unmarshal(bz, &nftMetadata); err != nil { + return nftMetadata, err + } + return nftMetadata, nil +} diff --git a/modules/nft/types/validation.go b/modules/nft/types/validation.go index f3022419..b3185b29 100644 --- a/modules/nft/types/validation.go +++ b/modules/nft/types/validation.go @@ -12,8 +12,6 @@ import ( const ( DoNotModify = "[do-not-modify]" - MinDenomLen = 3 - MaxDenomLen = 128 MaxTokenURILen = 256 @@ -24,10 +22,10 @@ const ( ) var ( - // IsAlphaNumeric only accepts [a-z0-9] - IsAlphaNumeric = regexp.MustCompile(`^[a-z0-9]+$`).MatchString - // IsBeginWithAlpha only begin with [a-z] - IsBeginWithAlpha = regexp.MustCompile(`^[a-z].*`).MatchString + // DenomID or TokenID can be 3 ~ 128 characters long and support letters, followed by either + // a letter, a number or a separator ('/', ':', '.', '_' or '-'). + idString = `[a-z][a-zA-Z0-9/]{2,127}` + regexpID = regexp.MustCompile(fmt.Sprintf(`^%s$`, idString)).MatchString keywords = strings.Join([]string{ReservedPeg, ReservedIBC, ReservedHTLT, ReservedTIBC}, "|") regexpKeywordsFmt = fmt.Sprintf("^(%s).*", keywords) @@ -36,23 +34,17 @@ var ( // ValidateDenomID verifies whether the parameters are legal func ValidateDenomID(denomID string) error { - if len(denomID) < MinDenomLen || len(denomID) > MaxDenomLen { - return sdkerrors.Wrapf(ErrInvalidDenom, "the length of denom(%s) only accepts value [%d, %d]", denomID, MinDenomLen, MaxDenomLen) - } boolPrifix := strings.HasPrefix(denomID, "tibc-") - if !IsBeginWithAlpha(denomID) || !IsAlphaNumeric(denomID) && !boolPrifix { - return sdkerrors.Wrapf(ErrInvalidDenom, "the denom(%s) only accepts alphanumeric characters, and begin with an english letter", denomID) + if !regexpID(denomID) && !boolPrifix { + return sdkerrors.Wrapf(ErrInvalidDenom, "denomID can only accept characters that match the regular expression: (%s),but got (%s)", idString, denomID) } return nil } // ValidateTokenID verify that the tokenID is legal func ValidateTokenID(tokenID string) error { - if len(tokenID) < MinDenomLen || len(tokenID) > MaxDenomLen { - return sdkerrors.Wrapf(ErrInvalidTokenID, "the length of nft id(%s) only accepts value [%d, %d]", tokenID, MinDenomLen, MaxDenomLen) - } - if !IsBeginWithAlpha(tokenID) || !IsAlphaNumeric(tokenID) { - return sdkerrors.Wrapf(ErrInvalidTokenID, "nft id(%s) only accepts alphanumeric characters, and begin with an english letter", tokenID) + if !regexpID(tokenID) { + return sdkerrors.Wrapf(ErrInvalidDenom, "tokenID can only accept characters that match the regular expression: (%s),but got (%s)", idString, tokenID) } return nil } @@ -84,3 +76,7 @@ func ValidateKeywords(denomId string) error { } return nil } + +func IsIBCDenom(denomID string) bool { + return strings.HasPrefix(denomID, "ibc/") +} From 4183266a42c456d6747bc367f0676e2471fc0830 Mon Sep 17 00:00:00 2001 From: aofengli Date: Thu, 12 Jan 2023 10:40:18 +0800 Subject: [PATCH 09/11] delete proto of jsontag --- modules/nft/types/nft.pb.go | 123 ++++++++++++++++++------------------ proto/nft/nft.proto | 18 +++--- 2 files changed, 69 insertions(+), 72 deletions(-) diff --git a/modules/nft/types/nft.pb.go b/modules/nft/types/nft.pb.go index e80554c4..d9def4df 100644 --- a/modules/nft/types/nft.pb.go +++ b/modules/nft/types/nft.pb.go @@ -70,7 +70,7 @@ var xxx_messageInfo_BaseNFT proto.InternalMessageInfo type NFTMetadata struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - TokenRoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,3,opt,name=tokenRoyaltyPlugin,proto3" json:"irismod:2981"` + TokenRoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,3,opt,name=tokenRoyaltyPlugin,proto3" json:"tokenRoyaltyPlugin,omitempty"` } func (m *NFTMetadata) Reset() { *m = NFTMetadata{} } @@ -161,7 +161,7 @@ type DenomMetadata struct { UpdateRestricted bool `protobuf:"varint,4,opt,name=update_restricted,json=updateRestricted,proto3" json:"update_restricted,omitempty"` Data string `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` // Royalty field - RoyaltyPlugin *RoyaltyPlugin `protobuf:"bytes,6,opt,name=royaltyPlugin,proto3" json:"irismod:2981"` + RoyaltyPlugin *RoyaltyPlugin `protobuf:"bytes,6,opt,name=royaltyPlugin,proto3" json:"royaltyPlugin,omitempty"` } func (m *DenomMetadata) Reset() { *m = DenomMetadata{} } @@ -316,7 +316,7 @@ var xxx_messageInfo_Collection proto.InternalMessageInfo type DenomPlugin struct { // Royalty field - RoyaltyPlugin *RoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"irismod:2981"` + RoyaltyPlugin *RoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"royaltyPlugin,omitempty"` } func (m *DenomPlugin) Reset() { *m = DenomPlugin{} } @@ -353,9 +353,9 @@ func (m *DenomPlugin) XXX_DiscardUnknown() { var xxx_messageInfo_DenomPlugin proto.InternalMessageInfo type RoyaltyPlugin struct { - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"irismod:2981:enabled"` - Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"irismod:2981:receiver"` - Fraction cosmossdk_io_math.Uint `protobuf:"bytes,3,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"irismod:2981:fraction"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"receiver,omitempty"` + Fraction cosmossdk_io_math.Uint `protobuf:"bytes,3,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"fraction"` } func (m *RoyaltyPlugin) Reset() { *m = RoyaltyPlugin{} } @@ -393,7 +393,7 @@ var xxx_messageInfo_RoyaltyPlugin proto.InternalMessageInfo type TokenPlugin struct { // Royalty field - RoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"irismod:2981"` + RoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"royaltyPlugin,omitempty"` } func (m *TokenPlugin) Reset() { *m = TokenPlugin{} } @@ -430,8 +430,8 @@ func (m *TokenPlugin) XXX_DiscardUnknown() { var xxx_messageInfo_TokenPlugin proto.InternalMessageInfo type TokenRoyaltyPlugin struct { - Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"irismod:2981:receiver"` - Fraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"irismod:2981:fraction"` + Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` + Fraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"fraction"` } func (m *TokenRoyaltyPlugin) Reset() { *m = TokenRoyaltyPlugin{} } @@ -484,60 +484,57 @@ func init() { func init() { proto.RegisterFile("nft/nft.proto", fileDescriptor_fe8ab7e15b7f0646) } var fileDescriptor_fe8ab7e15b7f0646 = []byte{ - // 843 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0xc7, 0x63, 0x27, 0x69, 0xd2, 0xe7, 0xa6, 0x5b, 0x86, 0xb0, 0x72, 0xf7, 0x10, 0x57, 0x11, - 0x12, 0x2b, 0x81, 0x12, 0x6d, 0x10, 0xbf, 0x7a, 0x34, 0xab, 0x8a, 0x22, 0x51, 0xd0, 0xd0, 0x15, - 0x12, 0x97, 0x68, 0xea, 0x99, 0x24, 0xa3, 0xb5, 0x3d, 0xd5, 0xcc, 0x84, 0x55, 0xb8, 0x73, 0x06, - 0x89, 0x3b, 0xe2, 0xc4, 0x5f, 0xc0, 0x1f, 0xd1, 0xe3, 0x5e, 0x90, 0x10, 0x07, 0x0b, 0xd2, 0x0b, - 0xea, 0xb1, 0x7f, 0x01, 0xf2, 0x78, 0x1c, 0x6c, 0xa5, 0x88, 0xd5, 0x6a, 0x6f, 0x33, 0xef, 0x7d, - 0xe7, 0xbd, 0x37, 0x9f, 0xf7, 0x3c, 0x86, 0x5e, 0x3a, 0xd3, 0xe3, 0x74, 0xa6, 0x47, 0x97, 0x52, - 0x68, 0x81, 0x3c, 0x2e, 0xb9, 0x4a, 0x04, 0x1d, 0xa5, 0x33, 0xfd, 0xa0, 0x3f, 0x17, 0x73, 0x61, - 0xec, 0xe3, 0x7c, 0x55, 0x48, 0x86, 0x3f, 0x3a, 0xd0, 0x09, 0x89, 0x62, 0x67, 0x27, 0xe7, 0x68, - 0x1f, 0x5c, 0x4e, 0x7d, 0xe7, 0xc8, 0x79, 0xb8, 0x8b, 0x5d, 0x4e, 0x11, 0x82, 0x56, 0x4a, 0x12, - 0xe6, 0xbb, 0xc6, 0x62, 0xd6, 0xe8, 0x10, 0x9a, 0x4b, 0xc9, 0xfd, 0x66, 0x6e, 0x0a, 0x3b, 0xeb, - 0x2c, 0x68, 0x3e, 0xc1, 0xa7, 0x38, 0xb7, 0xe5, 0x72, 0x4a, 0x34, 0xf1, 0x5b, 0x85, 0x3c, 0x5f, - 0xa3, 0x3e, 0xb4, 0xc5, 0xb3, 0x94, 0x49, 0xbf, 0x6d, 0x8c, 0xc5, 0x06, 0x1d, 0x42, 0x77, 0x29, - 0xf9, 0x74, 0x41, 0xd4, 0xc2, 0xdf, 0x31, 0x8e, 0xce, 0x52, 0xf2, 0x4f, 0x88, 0x5a, 0x1c, 0xb7, - 0xfe, 0xfe, 0x39, 0x70, 0x86, 0x3f, 0x39, 0xe0, 0x9d, 0x9d, 0x9c, 0x7f, 0xc6, 0x34, 0x31, 0x61, - 0xca, 0x4a, 0x9c, 0x4a, 0x25, 0x65, 0x3a, 0xb7, 0x92, 0x8e, 0x00, 0xd2, 0xe2, 0x29, 0x4b, 0xb1, - 0x58, 0x91, 0x58, 0xaf, 0xbe, 0x88, 0x97, 0x73, 0x9e, 0x9a, 0x62, 0xbd, 0x49, 0x30, 0xaa, 0xd0, - 0x18, 0x9d, 0x6f, 0xc9, 0xc2, 0x83, 0x9b, 0x2c, 0xd8, 0xb3, 0x9a, 0xe3, 0xc9, 0x47, 0x1f, 0x3e, - 0xc2, 0x77, 0x04, 0xb3, 0x05, 0xfe, 0xea, 0x42, 0xfb, 0x31, 0x4b, 0x45, 0xf2, 0x42, 0xd0, 0xee, - 0xc3, 0x8e, 0x8a, 0x16, 0x2c, 0x21, 0x05, 0x37, 0x6c, 0x77, 0xc8, 0x87, 0x4e, 0x24, 0x19, 0xd1, - 0x42, 0x5a, 0x68, 0xe5, 0xd6, 0x9c, 0x58, 0x25, 0x17, 0x22, 0xb6, 0xe0, 0xec, 0x0e, 0xbd, 0x05, - 0xf7, 0x12, 0x9e, 0xea, 0xa9, 0x64, 0x4a, 0x4b, 0x1e, 0x69, 0x46, 0x0d, 0xc0, 0x2e, 0xde, 0xcf, - 0xcd, 0x78, 0x63, 0x45, 0x6f, 0xc3, 0x6b, 0xcb, 0x4b, 0x4a, 0x34, 0xab, 0x4a, 0x3b, 0x46, 0x7a, - 0x50, 0x38, 0x2a, 0xe2, 0x23, 0xf0, 0x28, 0x53, 0x91, 0xe4, 0x97, 0x9a, 0x8b, 0xd4, 0xef, 0x9a, - 0x94, 0x55, 0x13, 0x3a, 0x28, 0xda, 0xbe, 0x6b, 0x3c, 0xa6, 0xdb, 0xd5, 0x1e, 0x42, 0xad, 0x87, - 0x9b, 0xce, 0x78, 0xff, 0x76, 0xc6, 0x62, 0xfb, 0xce, 0x85, 0x9e, 0xc1, 0xb6, 0xe9, 0x6c, 0x05, - 0x81, 0xb3, 0x8d, 0xa0, 0x80, 0xe6, 0xd6, 0xa0, 0xdd, 0x81, 0xa0, 0xf9, 0xe2, 0x08, 0x5a, 0xff, - 0x81, 0xa0, 0xac, 0xb9, 0x5d, 0x99, 0x26, 0x0c, 0x3d, 0x59, 0x1b, 0xa4, 0x1d, 0x33, 0x48, 0x0f, - 0x6a, 0x83, 0xf4, 0x7f, 0x33, 0x54, 0x0f, 0x61, 0x39, 0x3c, 0x83, 0xbd, 0xd3, 0xc7, 0x1f, 0x8b, - 0x38, 0x66, 0x91, 0xc1, 0x3b, 0x82, 0x2e, 0xcd, 0xb1, 0x4c, 0xcb, 0x51, 0x0a, 0x5f, 0xbf, 0xcd, - 0x82, 0x7b, 0x2b, 0x92, 0xc4, 0xc7, 0xc3, 0xd2, 0x33, 0xc4, 0x1d, 0xb3, 0x3c, 0xa5, 0xe8, 0x11, - 0xec, 0x9a, 0xd1, 0x9c, 0x72, 0xaa, 0x7c, 0xf7, 0xa8, 0xf9, 0x70, 0x37, 0xec, 0xdf, 0x66, 0xc1, - 0x41, 0x71, 0x60, 0xe3, 0x1a, 0xe2, 0xae, 0x59, 0x9f, 0x52, 0x65, 0x13, 0x7f, 0xef, 0x40, 0xfb, - 0x73, 0xf3, 0x0d, 0xfa, 0xd0, 0x21, 0x94, 0x4a, 0xa6, 0x54, 0x09, 0xde, 0x6e, 0xd1, 0x0c, 0xf6, - 0x39, 0x9d, 0x46, 0x9b, 0xea, 0x8a, 0x0c, 0xde, 0xe4, 0xb0, 0x76, 0xef, 0x6a, 0xfd, 0xe1, 0x9b, - 0x57, 0x59, 0xd0, 0x58, 0x67, 0x41, 0xaf, 0x6a, 0x55, 0xb7, 0x59, 0xe0, 0x15, 0x15, 0x71, 0x1a, - 0xa9, 0x21, 0xee, 0x71, 0x5a, 0xf1, 0xda, 0x8a, 0xbe, 0x05, 0xa8, 0x81, 0x68, 0x9b, 0x3b, 0x9a, - 0x9a, 0xbc, 0x09, 0xaa, 0xa5, 0x34, 0x93, 0x13, 0xb6, 0xf2, 0x5c, 0xb8, 0x90, 0xa1, 0xf7, 0xa1, - 0x95, 0xce, 0x74, 0x59, 0x61, 0xbf, 0x26, 0xb7, 0xcf, 0x5a, 0xb8, 0x67, 0x8b, 0x6b, 0x9d, 0x9d, - 0x9c, 0x2b, 0x6c, 0xf4, 0x36, 0xf7, 0x1c, 0x3c, 0x13, 0xb3, 0xe8, 0xcd, 0x76, 0xbf, 0x9d, 0x57, - 0xd5, 0xef, 0xdf, 0x1c, 0xe8, 0xd5, 0x0e, 0xa2, 0x09, 0x74, 0x58, 0x4a, 0x2e, 0x62, 0x56, 0x34, - 0xbc, 0x1b, 0xfa, 0x37, 0x59, 0xd0, 0xaf, 0x46, 0x3a, 0xb6, 0x7e, 0x5c, 0x0a, 0xd1, 0x7b, 0xd0, - 0x95, 0x2c, 0x62, 0xfc, 0x1b, 0x26, 0x8b, 0x6f, 0x22, 0x3c, 0xbc, 0xc9, 0x82, 0x37, 0x6a, 0x87, - 0x4a, 0x01, 0xde, 0x48, 0xd1, 0x97, 0xd0, 0x9d, 0x49, 0x62, 0xf8, 0xda, 0x77, 0xfb, 0x83, 0x9c, - 0xc8, 0x1f, 0x59, 0x70, 0x3f, 0x12, 0x2a, 0x11, 0x4a, 0xd1, 0xa7, 0x23, 0x2e, 0xc6, 0x09, 0xd1, - 0x8b, 0xd1, 0x13, 0x9e, 0xea, 0xad, 0xa0, 0xe5, 0x71, 0xbc, 0x09, 0x64, 0xef, 0x15, 0x83, 0x67, - 0x1e, 0x52, 0x7b, 0xa9, 0xaf, 0xee, 0x06, 0xf8, 0x12, 0x2f, 0xef, 0x9d, 0x14, 0x7f, 0x71, 0x00, - 0x6d, 0x9f, 0xae, 0x61, 0x71, 0x5e, 0x0e, 0x8b, 0xfb, 0x4a, 0xb1, 0x84, 0x9f, 0x5e, 0xfd, 0x35, - 0x68, 0x5c, 0xad, 0x07, 0xce, 0xf3, 0xf5, 0xc0, 0xf9, 0x73, 0x3d, 0x70, 0x7e, 0xb8, 0x1e, 0x34, - 0x9e, 0x5f, 0x0f, 0x1a, 0xbf, 0x5f, 0x0f, 0x1a, 0x5f, 0xbf, 0x33, 0xe7, 0x7a, 0xb1, 0xbc, 0x18, - 0x45, 0x22, 0x19, 0xe7, 0xf1, 0x52, 0xa6, 0xc7, 0x36, 0xee, 0x38, 0x11, 0x74, 0x19, 0x33, 0x95, - 0xff, 0xc3, 0xc7, 0x7a, 0x75, 0xc9, 0xd4, 0xc5, 0x8e, 0xf9, 0x4f, 0xbf, 0xfb, 0x4f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x40, 0x63, 0x33, 0xca, 0xdb, 0x07, 0x00, 0x00, + // 799 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x6f, 0xe3, 0x44, + 0x14, 0x8e, 0x9d, 0xa4, 0x71, 0x9f, 0x37, 0xdd, 0x32, 0x54, 0x2b, 0xb7, 0x07, 0xbb, 0x8a, 0x90, + 0x58, 0x09, 0xe4, 0x88, 0x22, 0x71, 0xe8, 0x09, 0x99, 0xa5, 0xa2, 0x48, 0x74, 0x91, 0x95, 0x5e, + 0xf6, 0x12, 0x4d, 0x3c, 0x93, 0x64, 0xb4, 0xb6, 0x27, 0x9a, 0x99, 0xb0, 0x0a, 0x7f, 0x80, 0x0b, + 0x12, 0x48, 0xfc, 0x01, 0x7e, 0x04, 0x3f, 0xa2, 0xc7, 0x3d, 0x22, 0x0e, 0x11, 0xa4, 0x17, 0xce, + 0xe5, 0x0f, 0x20, 0x8f, 0xc7, 0xc1, 0x56, 0x02, 0xac, 0xf6, 0x36, 0xef, 0xbd, 0x6f, 0xf2, 0xbe, + 0xf7, 0x7d, 0x2f, 0x63, 0xe8, 0xe7, 0x53, 0x35, 0xcc, 0xa7, 0x2a, 0x5c, 0x08, 0xae, 0x38, 0x72, + 0x99, 0x60, 0x32, 0xe3, 0x24, 0xcc, 0xa7, 0xea, 0xec, 0x64, 0xc6, 0x67, 0x5c, 0xe7, 0x87, 0xc5, + 0xa9, 0x84, 0x0c, 0x7e, 0xb2, 0xa0, 0x17, 0x61, 0x49, 0x6f, 0xae, 0x46, 0xe8, 0x08, 0x6c, 0x46, + 0x3c, 0xeb, 0xdc, 0x7a, 0x7a, 0x18, 0xdb, 0x8c, 0x20, 0x04, 0x9d, 0x1c, 0x67, 0xd4, 0xb3, 0x75, + 0x46, 0x9f, 0xd1, 0x29, 0xb4, 0x97, 0x82, 0x79, 0xed, 0x22, 0x15, 0xf5, 0x36, 0xeb, 0xa0, 0x7d, + 0x1b, 0x5f, 0xc7, 0x45, 0xae, 0x80, 0x13, 0xac, 0xb0, 0xd7, 0x29, 0xe1, 0xc5, 0x19, 0x9d, 0x40, + 0x97, 0xbf, 0xca, 0xa9, 0xf0, 0xba, 0x3a, 0x59, 0x06, 0xe8, 0x14, 0x9c, 0xa5, 0x60, 0xe3, 0x39, + 0x96, 0x73, 0xef, 0x40, 0x17, 0x7a, 0x4b, 0xc1, 0xbe, 0xc0, 0x72, 0x7e, 0xd9, 0xf9, 0xf3, 0xe7, + 0xc0, 0x1a, 0x7c, 0x6f, 0x81, 0x7b, 0x73, 0x35, 0xfa, 0x8a, 0x2a, 0xac, 0x7f, 0xa6, 0x62, 0x62, + 0xd5, 0x98, 0x54, 0xed, 0xec, 0x5a, 0xbb, 0xe7, 0x80, 0x14, 0x7f, 0x49, 0xf3, 0x98, 0xaf, 0x70, + 0xaa, 0x56, 0x5f, 0xa7, 0xcb, 0x19, 0xcb, 0x35, 0x59, 0xf7, 0x22, 0x08, 0x6b, 0x6a, 0x84, 0xa3, + 0x1d, 0x58, 0xbc, 0xe7, 0xaa, 0xa1, 0xf3, 0x8b, 0x0d, 0xdd, 0x67, 0x34, 0xe7, 0xd9, 0x1b, 0x49, + 0xf4, 0x04, 0x0e, 0x64, 0x32, 0xa7, 0x19, 0x2e, 0x55, 0x8a, 0x4d, 0x84, 0x3c, 0xe8, 0x25, 0x82, + 0x62, 0xc5, 0x85, 0x91, 0xa8, 0x0a, 0xf5, 0x8d, 0x55, 0x36, 0xe1, 0xa9, 0x91, 0xc9, 0x44, 0xe8, + 0x7d, 0x78, 0x9c, 0xb1, 0x5c, 0x8d, 0x05, 0x95, 0x4a, 0xb0, 0x44, 0x51, 0xa2, 0xe5, 0x72, 0xe2, + 0xa3, 0x22, 0x1d, 0x6f, 0xb3, 0xe8, 0x03, 0x78, 0x67, 0xb9, 0x20, 0x58, 0xd1, 0x3a, 0xb4, 0xa7, + 0xa1, 0xc7, 0x65, 0xa1, 0x06, 0x3e, 0x07, 0x97, 0x50, 0x99, 0x08, 0xb6, 0x50, 0x8c, 0xe7, 0x9e, + 0xa3, 0x5b, 0xd6, 0x53, 0xe8, 0xb8, 0x34, 0xf9, 0x50, 0x57, 0xb4, 0xb7, 0x75, 0xc7, 0xa0, 0xe1, + 0xd8, 0xd6, 0x07, 0xf7, 0x1f, 0x1f, 0x8c, 0x6c, 0x7f, 0x59, 0xd0, 0xd7, 0xb2, 0x6d, 0x7d, 0xac, + 0x49, 0x60, 0xed, 0x4a, 0x50, 0x8a, 0x66, 0x37, 0x44, 0xdb, 0x23, 0x41, 0xfb, 0xcd, 0x25, 0xe8, + 0xfc, 0x8b, 0x04, 0x15, 0xe7, 0x6e, 0x6d, 0x77, 0x3e, 0x85, 0xbe, 0x68, 0xac, 0xcd, 0x81, 0x5e, + 0x9b, 0xb3, 0xc6, 0xda, 0x34, 0x37, 0xa6, 0x79, 0xc1, 0x4c, 0xfd, 0x0a, 0x1e, 0x5d, 0x3f, 0xfb, + 0x8c, 0xa7, 0x29, 0x4d, 0xb4, 0x98, 0x21, 0x38, 0xa4, 0x10, 0x61, 0x5c, 0x2d, 0x4e, 0xf4, 0xee, + 0xc3, 0x3a, 0x78, 0xbc, 0xc2, 0x59, 0x7a, 0x39, 0xa8, 0x2a, 0x83, 0xb8, 0xa7, 0x8f, 0xd7, 0x04, + 0x7d, 0x04, 0x87, 0x7a, 0x11, 0xc7, 0x8c, 0x48, 0xcf, 0x3e, 0x6f, 0x3f, 0x3d, 0x8c, 0x4e, 0x1e, + 0xd6, 0xc1, 0x71, 0x79, 0x61, 0x5b, 0x1a, 0xc4, 0x8e, 0x3e, 0x5f, 0x13, 0x69, 0x1a, 0xff, 0x60, + 0x41, 0xf7, 0xb9, 0xfe, 0x7f, 0x79, 0xd0, 0xc3, 0x84, 0x08, 0x2a, 0x65, 0x25, 0xb3, 0x09, 0xd1, + 0x14, 0x8e, 0x18, 0x19, 0x27, 0x5b, 0x76, 0x65, 0x07, 0xf7, 0xe2, 0xb4, 0x31, 0x65, 0x9d, 0x7f, + 0xf4, 0xde, 0xdd, 0x3a, 0x68, 0x6d, 0xd6, 0x41, 0xbf, 0x9e, 0x95, 0x0f, 0xeb, 0xc0, 0x2d, 0x19, + 0x31, 0x92, 0xc8, 0x41, 0xdc, 0x67, 0xa4, 0x56, 0x35, 0x8c, 0xbe, 0x05, 0x68, 0x08, 0xd1, 0xd5, + 0x33, 0x6a, 0x4e, 0xee, 0x05, 0x6a, 0xb4, 0xd4, 0x7b, 0x12, 0x75, 0x8a, 0x5e, 0x71, 0x09, 0x43, + 0x9f, 0x40, 0x27, 0x9f, 0xaa, 0x8a, 0xe1, 0x49, 0x03, 0x6e, 0x9e, 0xac, 0xe8, 0x91, 0x21, 0xd7, + 0xb9, 0xb9, 0x1a, 0xc9, 0x58, 0xe3, 0x4d, 0xef, 0x5b, 0x70, 0xf5, 0x6f, 0x96, 0xde, 0xec, 0xba, + 0x6b, 0xbd, 0x9d, 0xbb, 0xdf, 0x59, 0xd0, 0x6f, 0xc0, 0x0a, 0xb1, 0x69, 0x8e, 0x27, 0x29, 0x2d, + 0xed, 0x75, 0xe2, 0x2a, 0x44, 0x67, 0xe0, 0x08, 0x9a, 0x50, 0xf6, 0x0d, 0x15, 0x66, 0xab, 0xb7, + 0x31, 0xba, 0x04, 0x67, 0x2a, 0xb0, 0x16, 0xc6, 0x3c, 0xa6, 0x7e, 0x31, 0xca, 0x6f, 0xeb, 0xe0, + 0x49, 0xc2, 0x65, 0xc6, 0xa5, 0x24, 0x2f, 0x43, 0xc6, 0x87, 0x19, 0x56, 0xf3, 0xf0, 0xb6, 0x58, + 0xf5, 0x2d, 0xde, 0x30, 0x79, 0x01, 0xae, 0x7e, 0xc4, 0x0c, 0x8d, 0xcf, 0xf7, 0x0f, 0xf8, 0xbf, + 0xaf, 0xde, 0xde, 0x29, 0x05, 0xa0, 0x5d, 0x68, 0x63, 0x1e, 0xeb, 0x3f, 0xe6, 0xb1, 0xdf, 0x66, + 0x9e, 0xe8, 0xcb, 0xbb, 0x3f, 0xfc, 0xd6, 0xdd, 0xc6, 0xb7, 0x5e, 0x6f, 0x7c, 0xeb, 0xf7, 0x8d, + 0x6f, 0xfd, 0x78, 0xef, 0xb7, 0x5e, 0xdf, 0xfb, 0xad, 0x5f, 0xef, 0xfd, 0xd6, 0x8b, 0x0f, 0x67, + 0x4c, 0xcd, 0x97, 0x93, 0x30, 0xe1, 0xd9, 0xb0, 0x98, 0x28, 0xa7, 0x6a, 0x68, 0x26, 0x1b, 0x66, + 0x9c, 0x2c, 0x53, 0x2a, 0x8b, 0x0f, 0xdf, 0x50, 0xad, 0x16, 0x54, 0x4e, 0x0e, 0xf4, 0xc7, 0xed, + 0xe3, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x80, 0x78, 0xa6, 0xa6, 0x10, 0x07, 0x00, 0x00, } func (this *BaseNFT) Equal(that interface{}) bool { diff --git a/proto/nft/nft.proto b/proto/nft/nft.proto index 1e5cbc48..b70b993a 100644 --- a/proto/nft/nft.proto +++ b/proto/nft/nft.proto @@ -24,7 +24,7 @@ message NFTMetadata { string name = 1; string data = 2; - TokenRoyaltyPlugin tokenRoyaltyPlugin = 3 [(gogoproto.jsontag) = "irismod:2981"]; + TokenRoyaltyPlugin tokenRoyaltyPlugin = 3; } @@ -55,7 +55,7 @@ message DenomMetadata { string data = 5; // Royalty field - RoyaltyPlugin royaltyPlugin = 6 [(gogoproto.jsontag) = "irismod:2981"]; + RoyaltyPlugin royaltyPlugin = 6; } // IDCollection defines a type of collection with specified ID @@ -91,30 +91,30 @@ message DenomPlugin { option (gogoproto.equal) = true; // Royalty field - RoyaltyPlugin royaltyPlugin = 1 [(gogoproto.jsontag) = "irismod:2981"]; + RoyaltyPlugin royaltyPlugin = 1; } message RoyaltyPlugin { option (gogoproto.equal) = true; - bool enabled = 1 [(gogoproto.jsontag) = "irismod:2981:enabled"]; - string receiver = 2 [(gogoproto.jsontag) = "irismod:2981:receiver"]; - string fraction = 3 [(gogoproto.jsontag) = "irismod:2981:fraction", (gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; + bool enabled = 1; + string receiver = 2; + string fraction = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; } message TokenPlugin { option (gogoproto.equal) = true; // Royalty field - TokenRoyaltyPlugin royaltyPlugin = 1 [(gogoproto.jsontag) = "irismod:2981"]; + TokenRoyaltyPlugin royaltyPlugin = 1; } message TokenRoyaltyPlugin { option (gogoproto.equal) = true; - string receiver = 1 [(gogoproto.jsontag) = "irismod:2981:receiver"]; - string fraction = 2 [(gogoproto.jsontag) = "irismod:2981:fraction", (gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; + string receiver = 1 ; + string fraction = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; } From 39e228cccb5b67a31e4bb696aa590f20d4ae8780 Mon Sep 17 00:00:00 2001 From: aofengli Date: Thu, 12 Jan 2023 13:43:52 +0800 Subject: [PATCH 10/11] modify proto & merge main --- modules/nft/types/builder.go | 42 ++++- modules/nft/types/builder_test.go | 6 +- modules/nft/types/nft.pb.go | 300 +++++------------------------- proto/nft/nft.proto | 8 - 4 files changed, 94 insertions(+), 262 deletions(-) diff --git a/modules/nft/types/builder.go b/modules/nft/types/builder.go index db9d0368..e349a49d 100644 --- a/modules/nft/types/builder.go +++ b/modules/nft/types/builder.go @@ -28,8 +28,18 @@ var ( ClassKeyUpdateRestricted = fmt.Sprintf("%s%s", Namespace, "update_restricted") ClassKeyCreator = fmt.Sprintf("%s%s", Namespace, "creator") ClassKeySchema = fmt.Sprintf("%s%s", Namespace, "schema") - TokenKeyName = fmt.Sprintf("%s%s", Namespace, "name") - TokenKeyURIhash = fmt.Sprintf("%s%s", Namespace, "uri_hash") + + ClassRoyalty = fmt.Sprintf("%s%s", Namespace, "2981") + //ClassRoyaltyEnabled = fmt.Sprintf("%s%s", Namespace, "2981:enabled") + //ClassRoyaltyReceiver = fmt.Sprintf("%s%s", Namespace, "2981:receiver") + //ClassRoyaltyFraction = fmt.Sprintf("%s%s", Namespace, "2981:fraction") + + TokenKeyName = fmt.Sprintf("%s%s", Namespace, "name") + TokenKeyURIhash = fmt.Sprintf("%s%s", Namespace, "uri_hash") + + TokenRoyalty = fmt.Sprintf("%s%s", Namespace, "2981") + //TokenRoyaltyReceiver = fmt.Sprintf("%s%s", Namespace, "2981:receiver") + //TokenRoyaltyFraction = fmt.Sprintf("%s%s", Namespace, "2981:fraction") ) type ( @@ -87,6 +97,10 @@ func (cb ClassBuilder) BuildMetadata(class nft.Class) (string, error) { kvals[ClassKeyUpdateRestricted] = MediaField{Value: metadata.UpdateRestricted} kvals[ClassKeyCreator] = MediaField{Value: hexCreator} kvals[ClassKeySchema] = MediaField{Value: metadata.Schema} + if metadata.RoyaltyPlugin != nil { + kvals[ClassRoyalty] = MediaField{Value: metadata.RoyaltyPlugin} + } + data, err := json.Marshal(kvals) if err != nil { return "", err @@ -110,6 +124,7 @@ func (cb ClassBuilder) Build(classID, classURI, classData string) (nft.Class, er updateRestricted = true schema = "" creator = cb.getModuleAddress(ModuleName).String() + royaltyPlugin = new(RoyaltyPlugin) ) dataMap := make(map[string]interface{}) @@ -120,6 +135,7 @@ func (cb ClassBuilder) Build(classID, classURI, classData string) (nft.Class, er MintRestricted: mintRestricted, UpdateRestricted: updateRestricted, Data: string(classDataBz), + RoyaltyPlugin: royaltyPlugin, }) if err != nil { return nft.Class{}, err @@ -210,6 +226,15 @@ func (cb ClassBuilder) Build(classID, classURI, classData string) (nft.Class, er } } + if v, ok := dataMap[ClassRoyalty]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vRoyaltyPlugin, ok := vMap[KeyMediaFieldValue].(RoyaltyPlugin); ok { + royaltyPlugin = &vRoyaltyPlugin + delete(dataMap, ClassRoyalty) + } + } + } + data, err := json.Marshal(dataMap) if err != nil { return nft.Class{}, err @@ -221,6 +246,7 @@ func (cb ClassBuilder) Build(classID, classURI, classData string) (nft.Class, er MintRestricted: mintRestricted, UpdateRestricted: updateRestricted, Data: string(data), + RoyaltyPlugin: royaltyPlugin, }) if err != nil { return nft.Class{}, err @@ -264,6 +290,10 @@ func (tb TokenBuilder) BuildMetadata(token nft.NFT) (string, error) { } kvals[TokenKeyName] = MediaField{Value: nftMetadata.Name} kvals[TokenKeyURIhash] = MediaField{Value: token.UriHash} + if nftMetadata.TokenRoyaltyPlugin != nil { + kvals[TokenRoyalty] = MediaField{Value: nftMetadata.TokenRoyaltyPlugin} + } + data, err := json.Marshal(kvals) if err != nil { return "", err @@ -316,6 +346,14 @@ func (tb TokenBuilder) Build(classId, tokenId, tokenURI, tokenData string) (nft. } } } + if v, ok := dataMap[TokenRoyalty]; ok { + if vMap, ok := v.(map[string]interface{}); ok { + if vStr, ok := vMap[KeyMediaFieldValue].(string); ok { + uriHash = vStr + delete(dataMap, TokenRoyalty) + } + } + } data, err := json.Marshal(dataMap) if err != nil { diff --git a/modules/nft/types/builder_test.go b/modules/nft/types/builder_test.go index 2ddd7512..a43a30e3 100644 --- a/modules/nft/types/builder_test.go +++ b/modules/nft/types/builder_test.go @@ -203,7 +203,7 @@ func TestClassBuilder_Build(t *testing.T) { args: args{ classData: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"}}`, }, - want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"kitty","symbol":"symbol","description":"digital cat","uri":"uri","uri_hash":"uri_hash","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"{}","mint_restricted":true,"update_restricted":true,"data":"{}"}}`, + want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"kitty","symbol":"symbol","description":"digital cat","uri":"uri","uri_hash":"uri_hash","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"{}","mint_restricted":true,"update_restricted":true,"data":"{}","royaltyPlugin":{"enabled":false,"receiver":"","fraction":"0"}}}`, wantErr: false, }, { @@ -211,7 +211,7 @@ func TestClassBuilder_Build(t *testing.T) { args: args{ classData: `this is empty class data`, }, - want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"","symbol":"","description":"","uri":"uri","uri_hash":"","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"","mint_restricted":true,"update_restricted":true,"data":"this is empty class data"}}`, + want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"","symbol":"","description":"","uri":"uri","uri_hash":"","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"","mint_restricted":true,"update_restricted":true,"data":"this is empty class data","royaltyPlugin":{"enabled":false,"receiver":"","fraction":"0"}}}`, wantErr: false, }, { @@ -219,7 +219,7 @@ func TestClassBuilder_Build(t *testing.T) { args: args{ classData: `{"irismod:creator":{"value":"f8a9eee6bce5bc043e5feec2baef355f87dbfcdf"},"irismod:description":{"value":"digital cat"},"irismod:mint_restricted":{"value":true},"irismod:name":{"value":"kitty"},"irismod:schema":{"value":"{}"},"irismod:symbol":{"value":"symbol"},"irismod:update_restricted":{"value":true},"irismod:uri_hash":{"value":"uri_hash"},"key1":"value1","key2":"value2"}`, }, - want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"kitty","symbol":"symbol","description":"digital cat","uri":"uri","uri_hash":"uri_hash","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"{}","mint_restricted":true,"update_restricted":true,"data":"{\"key1\":\"value1\",\"key2\":\"value2\"}"}}`, + want: `{"@type":"/cosmos.nft.v1beta1.Class","id":"cat","name":"kitty","symbol":"symbol","description":"digital cat","uri":"uri","uri_hash":"uri_hash","data":{"@type":"/irismod.nft.DenomMetadata","creator":"cosmos1lz57ae4uuk7qg0jlampt4me4t7rahlxl5pnn3y","schema":"{}","mint_restricted":true,"update_restricted":true,"data":"{\"key1\":\"value1\",\"key2\":\"value2\"}","royaltyPlugin":{"enabled":false,"receiver":"","fraction":"0"}}}`, wantErr: false, }, } diff --git a/modules/nft/types/nft.pb.go b/modules/nft/types/nft.pb.go index d9def4df..708f428f 100644 --- a/modules/nft/types/nft.pb.go +++ b/modules/nft/types/nft.pb.go @@ -391,44 +391,6 @@ func (m *RoyaltyPlugin) XXX_DiscardUnknown() { var xxx_messageInfo_RoyaltyPlugin proto.InternalMessageInfo -type TokenPlugin struct { - // Royalty field - RoyaltyPlugin *TokenRoyaltyPlugin `protobuf:"bytes,1,opt,name=royaltyPlugin,proto3" json:"royaltyPlugin,omitempty"` -} - -func (m *TokenPlugin) Reset() { *m = TokenPlugin{} } -func (m *TokenPlugin) String() string { return proto.CompactTextString(m) } -func (*TokenPlugin) ProtoMessage() {} -func (*TokenPlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_fe8ab7e15b7f0646, []int{9} -} -func (m *TokenPlugin) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *TokenPlugin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_TokenPlugin.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 *TokenPlugin) XXX_Merge(src proto.Message) { - xxx_messageInfo_TokenPlugin.Merge(m, src) -} -func (m *TokenPlugin) XXX_Size() int { - return m.Size() -} -func (m *TokenPlugin) XXX_DiscardUnknown() { - xxx_messageInfo_TokenPlugin.DiscardUnknown(m) -} - -var xxx_messageInfo_TokenPlugin proto.InternalMessageInfo - type TokenRoyaltyPlugin struct { Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` Fraction cosmossdk_io_math.Uint `protobuf:"bytes,2,opt,name=fraction,proto3,customtype=cosmossdk.io/math.Uint" json:"fraction"` @@ -438,7 +400,7 @@ func (m *TokenRoyaltyPlugin) Reset() { *m = TokenRoyaltyPlugin{} } func (m *TokenRoyaltyPlugin) String() string { return proto.CompactTextString(m) } func (*TokenRoyaltyPlugin) ProtoMessage() {} func (*TokenRoyaltyPlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_fe8ab7e15b7f0646, []int{10} + return fileDescriptor_fe8ab7e15b7f0646, []int{9} } func (m *TokenRoyaltyPlugin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -477,64 +439,62 @@ func init() { proto.RegisterType((*Collection)(nil), "irismod.nft.Collection") proto.RegisterType((*DenomPlugin)(nil), "irismod.nft.DenomPlugin") proto.RegisterType((*RoyaltyPlugin)(nil), "irismod.nft.RoyaltyPlugin") - proto.RegisterType((*TokenPlugin)(nil), "irismod.nft.TokenPlugin") proto.RegisterType((*TokenRoyaltyPlugin)(nil), "irismod.nft.TokenRoyaltyPlugin") } func init() { proto.RegisterFile("nft/nft.proto", fileDescriptor_fe8ab7e15b7f0646) } var fileDescriptor_fe8ab7e15b7f0646 = []byte{ - // 799 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x41, 0x6f, 0xe3, 0x44, - 0x14, 0x8e, 0x9d, 0xa4, 0x71, 0x9f, 0x37, 0xdd, 0x32, 0x54, 0x2b, 0xb7, 0x07, 0xbb, 0x8a, 0x90, - 0x58, 0x09, 0xe4, 0x88, 0x22, 0x71, 0xe8, 0x09, 0x99, 0xa5, 0xa2, 0x48, 0x74, 0x91, 0x95, 0x5e, - 0xf6, 0x12, 0x4d, 0x3c, 0x93, 0x64, 0xb4, 0xb6, 0x27, 0x9a, 0x99, 0xb0, 0x0a, 0x7f, 0x80, 0x0b, - 0x12, 0x48, 0xfc, 0x01, 0x7e, 0x04, 0x3f, 0xa2, 0xc7, 0x3d, 0x22, 0x0e, 0x11, 0xa4, 0x17, 0xce, - 0xe5, 0x0f, 0x20, 0x8f, 0xc7, 0xc1, 0x56, 0x02, 0xac, 0xf6, 0x36, 0xef, 0xbd, 0x6f, 0xf2, 0xbe, - 0xf7, 0x7d, 0x2f, 0x63, 0xe8, 0xe7, 0x53, 0x35, 0xcc, 0xa7, 0x2a, 0x5c, 0x08, 0xae, 0x38, 0x72, - 0x99, 0x60, 0x32, 0xe3, 0x24, 0xcc, 0xa7, 0xea, 0xec, 0x64, 0xc6, 0x67, 0x5c, 0xe7, 0x87, 0xc5, - 0xa9, 0x84, 0x0c, 0x7e, 0xb2, 0xa0, 0x17, 0x61, 0x49, 0x6f, 0xae, 0x46, 0xe8, 0x08, 0x6c, 0x46, - 0x3c, 0xeb, 0xdc, 0x7a, 0x7a, 0x18, 0xdb, 0x8c, 0x20, 0x04, 0x9d, 0x1c, 0x67, 0xd4, 0xb3, 0x75, - 0x46, 0x9f, 0xd1, 0x29, 0xb4, 0x97, 0x82, 0x79, 0xed, 0x22, 0x15, 0xf5, 0x36, 0xeb, 0xa0, 0x7d, - 0x1b, 0x5f, 0xc7, 0x45, 0xae, 0x80, 0x13, 0xac, 0xb0, 0xd7, 0x29, 0xe1, 0xc5, 0x19, 0x9d, 0x40, - 0x97, 0xbf, 0xca, 0xa9, 0xf0, 0xba, 0x3a, 0x59, 0x06, 0xe8, 0x14, 0x9c, 0xa5, 0x60, 0xe3, 0x39, - 0x96, 0x73, 0xef, 0x40, 0x17, 0x7a, 0x4b, 0xc1, 0xbe, 0xc0, 0x72, 0x7e, 0xd9, 0xf9, 0xf3, 0xe7, - 0xc0, 0x1a, 0x7c, 0x6f, 0x81, 0x7b, 0x73, 0x35, 0xfa, 0x8a, 0x2a, 0xac, 0x7f, 0xa6, 0x62, 0x62, - 0xd5, 0x98, 0x54, 0xed, 0xec, 0x5a, 0xbb, 0xe7, 0x80, 0x14, 0x7f, 0x49, 0xf3, 0x98, 0xaf, 0x70, - 0xaa, 0x56, 0x5f, 0xa7, 0xcb, 0x19, 0xcb, 0x35, 0x59, 0xf7, 0x22, 0x08, 0x6b, 0x6a, 0x84, 0xa3, - 0x1d, 0x58, 0xbc, 0xe7, 0xaa, 0xa1, 0xf3, 0x8b, 0x0d, 0xdd, 0x67, 0x34, 0xe7, 0xd9, 0x1b, 0x49, - 0xf4, 0x04, 0x0e, 0x64, 0x32, 0xa7, 0x19, 0x2e, 0x55, 0x8a, 0x4d, 0x84, 0x3c, 0xe8, 0x25, 0x82, - 0x62, 0xc5, 0x85, 0x91, 0xa8, 0x0a, 0xf5, 0x8d, 0x55, 0x36, 0xe1, 0xa9, 0x91, 0xc9, 0x44, 0xe8, - 0x7d, 0x78, 0x9c, 0xb1, 0x5c, 0x8d, 0x05, 0x95, 0x4a, 0xb0, 0x44, 0x51, 0xa2, 0xe5, 0x72, 0xe2, - 0xa3, 0x22, 0x1d, 0x6f, 0xb3, 0xe8, 0x03, 0x78, 0x67, 0xb9, 0x20, 0x58, 0xd1, 0x3a, 0xb4, 0xa7, - 0xa1, 0xc7, 0x65, 0xa1, 0x06, 0x3e, 0x07, 0x97, 0x50, 0x99, 0x08, 0xb6, 0x50, 0x8c, 0xe7, 0x9e, - 0xa3, 0x5b, 0xd6, 0x53, 0xe8, 0xb8, 0x34, 0xf9, 0x50, 0x57, 0xb4, 0xb7, 0x75, 0xc7, 0xa0, 0xe1, - 0xd8, 0xd6, 0x07, 0xf7, 0x1f, 0x1f, 0x8c, 0x6c, 0x7f, 0x59, 0xd0, 0xd7, 0xb2, 0x6d, 0x7d, 0xac, - 0x49, 0x60, 0xed, 0x4a, 0x50, 0x8a, 0x66, 0x37, 0x44, 0xdb, 0x23, 0x41, 0xfb, 0xcd, 0x25, 0xe8, - 0xfc, 0x8b, 0x04, 0x15, 0xe7, 0x6e, 0x6d, 0x77, 0x3e, 0x85, 0xbe, 0x68, 0xac, 0xcd, 0x81, 0x5e, - 0x9b, 0xb3, 0xc6, 0xda, 0x34, 0x37, 0xa6, 0x79, 0xc1, 0x4c, 0xfd, 0x0a, 0x1e, 0x5d, 0x3f, 0xfb, - 0x8c, 0xa7, 0x29, 0x4d, 0xb4, 0x98, 0x21, 0x38, 0xa4, 0x10, 0x61, 0x5c, 0x2d, 0x4e, 0xf4, 0xee, - 0xc3, 0x3a, 0x78, 0xbc, 0xc2, 0x59, 0x7a, 0x39, 0xa8, 0x2a, 0x83, 0xb8, 0xa7, 0x8f, 0xd7, 0x04, - 0x7d, 0x04, 0x87, 0x7a, 0x11, 0xc7, 0x8c, 0x48, 0xcf, 0x3e, 0x6f, 0x3f, 0x3d, 0x8c, 0x4e, 0x1e, - 0xd6, 0xc1, 0x71, 0x79, 0x61, 0x5b, 0x1a, 0xc4, 0x8e, 0x3e, 0x5f, 0x13, 0x69, 0x1a, 0xff, 0x60, - 0x41, 0xf7, 0xb9, 0xfe, 0x7f, 0x79, 0xd0, 0xc3, 0x84, 0x08, 0x2a, 0x65, 0x25, 0xb3, 0x09, 0xd1, - 0x14, 0x8e, 0x18, 0x19, 0x27, 0x5b, 0x76, 0x65, 0x07, 0xf7, 0xe2, 0xb4, 0x31, 0x65, 0x9d, 0x7f, - 0xf4, 0xde, 0xdd, 0x3a, 0x68, 0x6d, 0xd6, 0x41, 0xbf, 0x9e, 0x95, 0x0f, 0xeb, 0xc0, 0x2d, 0x19, - 0x31, 0x92, 0xc8, 0x41, 0xdc, 0x67, 0xa4, 0x56, 0x35, 0x8c, 0xbe, 0x05, 0x68, 0x08, 0xd1, 0xd5, - 0x33, 0x6a, 0x4e, 0xee, 0x05, 0x6a, 0xb4, 0xd4, 0x7b, 0x12, 0x75, 0x8a, 0x5e, 0x71, 0x09, 0x43, - 0x9f, 0x40, 0x27, 0x9f, 0xaa, 0x8a, 0xe1, 0x49, 0x03, 0x6e, 0x9e, 0xac, 0xe8, 0x91, 0x21, 0xd7, - 0xb9, 0xb9, 0x1a, 0xc9, 0x58, 0xe3, 0x4d, 0xef, 0x5b, 0x70, 0xf5, 0x6f, 0x96, 0xde, 0xec, 0xba, - 0x6b, 0xbd, 0x9d, 0xbb, 0xdf, 0x59, 0xd0, 0x6f, 0xc0, 0x0a, 0xb1, 0x69, 0x8e, 0x27, 0x29, 0x2d, - 0xed, 0x75, 0xe2, 0x2a, 0x44, 0x67, 0xe0, 0x08, 0x9a, 0x50, 0xf6, 0x0d, 0x15, 0x66, 0xab, 0xb7, - 0x31, 0xba, 0x04, 0x67, 0x2a, 0xb0, 0x16, 0xc6, 0x3c, 0xa6, 0x7e, 0x31, 0xca, 0x6f, 0xeb, 0xe0, - 0x49, 0xc2, 0x65, 0xc6, 0xa5, 0x24, 0x2f, 0x43, 0xc6, 0x87, 0x19, 0x56, 0xf3, 0xf0, 0xb6, 0x58, - 0xf5, 0x2d, 0xde, 0x30, 0x79, 0x01, 0xae, 0x7e, 0xc4, 0x0c, 0x8d, 0xcf, 0xf7, 0x0f, 0xf8, 0xbf, - 0xaf, 0xde, 0xde, 0x29, 0x05, 0xa0, 0x5d, 0x68, 0x63, 0x1e, 0xeb, 0x3f, 0xe6, 0xb1, 0xdf, 0x66, - 0x9e, 0xe8, 0xcb, 0xbb, 0x3f, 0xfc, 0xd6, 0xdd, 0xc6, 0xb7, 0x5e, 0x6f, 0x7c, 0xeb, 0xf7, 0x8d, - 0x6f, 0xfd, 0x78, 0xef, 0xb7, 0x5e, 0xdf, 0xfb, 0xad, 0x5f, 0xef, 0xfd, 0xd6, 0x8b, 0x0f, 0x67, - 0x4c, 0xcd, 0x97, 0x93, 0x30, 0xe1, 0xd9, 0xb0, 0x98, 0x28, 0xa7, 0x6a, 0x68, 0x26, 0x1b, 0x66, - 0x9c, 0x2c, 0x53, 0x2a, 0x8b, 0x0f, 0xdf, 0x50, 0xad, 0x16, 0x54, 0x4e, 0x0e, 0xf4, 0xc7, 0xed, - 0xe3, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x80, 0x78, 0xa6, 0xa6, 0x10, 0x07, 0x00, 0x00, + // 784 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x95, 0x41, 0x8f, 0xe3, 0x34, + 0x14, 0xc7, 0x9b, 0xb4, 0x9d, 0x66, 0x5e, 0xb6, 0xb3, 0x83, 0xa9, 0x56, 0x99, 0x39, 0x24, 0xa3, + 0x0a, 0x89, 0x95, 0x40, 0xa9, 0x18, 0x24, 0x0e, 0x73, 0x42, 0x61, 0x35, 0xa2, 0x48, 0xcc, 0xa2, + 0xa8, 0x73, 0xe1, 0x52, 0xb9, 0xb1, 0xdb, 0x5a, 0x9b, 0xc4, 0x95, 0xed, 0xb2, 0x2a, 0x5f, 0x80, + 0x0b, 0x12, 0x48, 0x7c, 0x01, 0x3e, 0x04, 0x1f, 0x62, 0x8e, 0x7b, 0x44, 0x1c, 0x2a, 0xe8, 0x5c, + 0x38, 0x0f, 0x5f, 0x00, 0xc5, 0x71, 0x4a, 0xa2, 0x2e, 0xab, 0xd5, 0xde, 0xfc, 0x9e, 0xff, 0xee, + 0xfb, 0xfb, 0xf7, 0x5e, 0x1d, 0xe8, 0xe7, 0x73, 0x35, 0xca, 0xe7, 0x2a, 0x5c, 0x09, 0xae, 0x38, + 0x72, 0x99, 0x60, 0x32, 0xe3, 0x24, 0xcc, 0xe7, 0xea, 0x7c, 0xb0, 0xe0, 0x0b, 0xae, 0xf3, 0xa3, + 0x62, 0x55, 0x4a, 0x86, 0xbf, 0x58, 0xd0, 0x8b, 0xb0, 0xa4, 0x37, 0xd7, 0x13, 0x74, 0x02, 0x36, + 0x23, 0x9e, 0x75, 0x61, 0x3d, 0x3d, 0x8e, 0x6d, 0x46, 0x10, 0x82, 0x4e, 0x8e, 0x33, 0xea, 0xd9, + 0x3a, 0xa3, 0xd7, 0xe8, 0x0c, 0xda, 0x6b, 0xc1, 0xbc, 0x76, 0x91, 0x8a, 0x7a, 0xbb, 0x6d, 0xd0, + 0xbe, 0x8d, 0xc7, 0x71, 0x91, 0x2b, 0xe4, 0x04, 0x2b, 0xec, 0x75, 0x4a, 0x79, 0xb1, 0x46, 0x03, + 0xe8, 0xf2, 0x97, 0x39, 0x15, 0x5e, 0x57, 0x27, 0xcb, 0x00, 0x9d, 0x81, 0xb3, 0x16, 0x6c, 0xba, + 0xc4, 0x72, 0xe9, 0x1d, 0xe9, 0x8d, 0xde, 0x5a, 0xb0, 0x2f, 0xb1, 0x5c, 0x5e, 0x75, 0xfe, 0xfe, + 0x35, 0xb0, 0x86, 0x3f, 0x5a, 0xe0, 0xde, 0x5c, 0x4f, 0xbe, 0xa6, 0x0a, 0xeb, 0x9f, 0xa9, 0x9c, + 0x58, 0x35, 0x27, 0x55, 0x39, 0xbb, 0x56, 0xee, 0x39, 0x20, 0xc5, 0x5f, 0xd0, 0x3c, 0xe6, 0x1b, + 0x9c, 0xaa, 0xcd, 0x37, 0xe9, 0x7a, 0xc1, 0x72, 0x6d, 0xd6, 0xbd, 0x0c, 0xc2, 0x1a, 0x8d, 0x70, + 0x72, 0x20, 0x8b, 0x5f, 0x73, 0xd4, 0xd8, 0xf9, 0xcd, 0x86, 0xee, 0x33, 0x9a, 0xf3, 0xec, 0xad, + 0x10, 0x3d, 0x81, 0x23, 0x99, 0x2c, 0x69, 0x86, 0x4b, 0x4a, 0xb1, 0x89, 0x90, 0x07, 0xbd, 0x44, + 0x50, 0xac, 0xb8, 0x30, 0x88, 0xaa, 0x50, 0x9f, 0xd8, 0x64, 0x33, 0x9e, 0x1a, 0x4c, 0x26, 0x42, + 0x1f, 0xc2, 0xe3, 0x8c, 0xe5, 0x6a, 0x2a, 0xa8, 0x54, 0x82, 0x25, 0x8a, 0x12, 0x8d, 0xcb, 0x89, + 0x4f, 0x8a, 0x74, 0xbc, 0xcf, 0xa2, 0x8f, 0xe0, 0xbd, 0xf5, 0x8a, 0x60, 0x45, 0xeb, 0xd2, 0x9e, + 0x96, 0x9e, 0x96, 0x1b, 0x35, 0xf1, 0x05, 0xb8, 0x84, 0xca, 0x44, 0xb0, 0x95, 0x62, 0x3c, 0xf7, + 0x1c, 0x5d, 0xb2, 0x9e, 0x42, 0xa7, 0x65, 0x93, 0x8f, 0xf5, 0x8e, 0xee, 0x6d, 0xbd, 0x63, 0xd0, + 0xe8, 0xd8, 0xbe, 0x0f, 0xee, 0x7f, 0x7d, 0x30, 0xd8, 0xfe, 0xb1, 0xa0, 0xaf, 0xb1, 0xed, 0xfb, + 0x58, 0x43, 0x60, 0x1d, 0x22, 0x28, 0xa1, 0xd9, 0x0d, 0x68, 0xaf, 0x41, 0xd0, 0x7e, 0x7b, 0x04, + 0x9d, 0xff, 0x41, 0x50, 0x79, 0xee, 0xd6, 0x66, 0xe7, 0x73, 0xe8, 0x8b, 0xc6, 0xd8, 0x1c, 0xe9, + 0xb1, 0x39, 0x6f, 0x8c, 0x4d, 0x73, 0x62, 0x9a, 0x07, 0xcc, 0xad, 0x5f, 0xc2, 0xa3, 0xf1, 0xb3, + 0x2f, 0x78, 0x9a, 0xd2, 0x44, 0xc3, 0x0c, 0xc1, 0x21, 0x05, 0x84, 0x69, 0x35, 0x38, 0xd1, 0xfb, + 0x0f, 0xdb, 0xe0, 0xf1, 0x06, 0x67, 0xe9, 0xd5, 0xb0, 0xda, 0x19, 0xc6, 0x3d, 0xbd, 0x1c, 0x13, + 0xf4, 0x09, 0x1c, 0xeb, 0x41, 0x9c, 0x32, 0x22, 0x3d, 0xfb, 0xa2, 0xfd, 0xf4, 0x38, 0x1a, 0x3c, + 0x6c, 0x83, 0xd3, 0xf2, 0xc0, 0x7e, 0x6b, 0x18, 0x3b, 0x7a, 0x3d, 0x26, 0xd2, 0x14, 0xfe, 0xc9, + 0x82, 0xee, 0x73, 0xfd, 0xff, 0xf2, 0xa0, 0x87, 0x09, 0x11, 0x54, 0xca, 0x0a, 0xb3, 0x09, 0xd1, + 0x1c, 0x4e, 0x18, 0x99, 0x26, 0x7b, 0x77, 0x65, 0x05, 0xf7, 0xf2, 0xac, 0x71, 0xcb, 0xba, 0xff, + 0xe8, 0x83, 0xbb, 0x6d, 0xd0, 0xda, 0x6d, 0x83, 0x7e, 0x3d, 0x2b, 0x1f, 0xb6, 0x81, 0x5b, 0x3a, + 0x62, 0x24, 0x91, 0xc3, 0xb8, 0xcf, 0x48, 0x6d, 0xd7, 0x38, 0xfa, 0x1e, 0xa0, 0x01, 0xa2, 0xab, + 0xef, 0xa8, 0x3d, 0xb9, 0x97, 0xa8, 0x51, 0x52, 0xcf, 0x49, 0xd4, 0x29, 0x6a, 0xc5, 0xa5, 0x0c, + 0x7d, 0x06, 0x9d, 0x7c, 0xae, 0x2a, 0x87, 0x83, 0x86, 0xdc, 0x3c, 0x59, 0xd1, 0x23, 0x63, 0xae, + 0x73, 0x73, 0x3d, 0x91, 0xb1, 0xd6, 0x9b, 0xda, 0xb7, 0xe0, 0xea, 0xdf, 0x2c, 0x7b, 0x73, 0xd8, + 0x5d, 0xeb, 0xdd, 0xba, 0xfb, 0x83, 0x05, 0xfd, 0x86, 0xac, 0x80, 0x4d, 0x73, 0x3c, 0x4b, 0x69, + 0xd9, 0x5e, 0x27, 0xae, 0x42, 0x74, 0x0e, 0x8e, 0xa0, 0x09, 0x65, 0xdf, 0x51, 0x61, 0xa6, 0x7a, + 0x1f, 0xa3, 0x2b, 0x70, 0xe6, 0x02, 0x6b, 0x30, 0xe6, 0x31, 0xf5, 0x8b, 0xab, 0xfc, 0xb1, 0x0d, + 0x9e, 0x24, 0x5c, 0x66, 0x5c, 0x4a, 0xf2, 0x22, 0x64, 0x7c, 0x94, 0x61, 0xb5, 0x0c, 0x6f, 0x8b, + 0x51, 0xdf, 0xeb, 0x8d, 0x13, 0x01, 0xe8, 0xf0, 0x11, 0x6b, 0xd4, 0xb4, 0xde, 0x50, 0xd3, 0x7e, + 0x97, 0x9a, 0xd1, 0x57, 0x77, 0x7f, 0xf9, 0xad, 0xbb, 0x9d, 0x6f, 0xbd, 0xda, 0xf9, 0xd6, 0x9f, + 0x3b, 0xdf, 0xfa, 0xf9, 0xde, 0x6f, 0xbd, 0xba, 0xf7, 0x5b, 0xbf, 0xdf, 0xfb, 0xad, 0x6f, 0x3f, + 0x5e, 0x30, 0xb5, 0x5c, 0xcf, 0xc2, 0x84, 0x67, 0xa3, 0x02, 0x6b, 0x4e, 0xd5, 0xc8, 0xe0, 0x1d, + 0x65, 0x9c, 0xac, 0x53, 0x2a, 0x8b, 0x8f, 0xd3, 0x48, 0x6d, 0x56, 0x54, 0xce, 0x8e, 0xf4, 0x07, + 0xe8, 0xd3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfa, 0x2a, 0xeb, 0xaa, 0xb4, 0x06, 0x00, 0x00, } func (this *BaseNFT) Equal(that interface{}) bool { @@ -849,30 +809,6 @@ func (this *RoyaltyPlugin) Equal(that interface{}) bool { } return true } -func (this *TokenPlugin) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*TokenPlugin) - if !ok { - that2, ok := that.(TokenPlugin) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if !this.RoyaltyPlugin.Equal(that1.RoyaltyPlugin) { - return false - } - return true -} func (this *TokenRoyaltyPlugin) Equal(that interface{}) bool { if that == nil { return this == nil @@ -1411,41 +1347,6 @@ func (m *RoyaltyPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *TokenPlugin) 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 *TokenPlugin) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *TokenPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.RoyaltyPlugin != nil { - { - size, err := m.RoyaltyPlugin.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintNft(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *TokenRoyaltyPlugin) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1719,19 +1620,6 @@ func (m *RoyaltyPlugin) Size() (n int) { return n } -func (m *TokenPlugin) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.RoyaltyPlugin != nil { - l = m.RoyaltyPlugin.Size() - n += 1 + l + sovNft(uint64(l)) - } - return n -} - func (m *TokenRoyaltyPlugin) Size() (n int) { if m == nil { return 0 @@ -3314,92 +3202,6 @@ func (m *RoyaltyPlugin) Unmarshal(dAtA []byte) error { } return nil } -func (m *TokenPlugin) 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 ErrIntOverflowNft - } - 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: TokenPlugin: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: TokenPlugin: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoyaltyPlugin", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowNft - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthNft - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthNft - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.RoyaltyPlugin == nil { - m.RoyaltyPlugin = &TokenRoyaltyPlugin{} - } - if err := m.RoyaltyPlugin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipNft(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthNft - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *TokenRoyaltyPlugin) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/proto/nft/nft.proto b/proto/nft/nft.proto index b70b993a..24f3dcaa 100644 --- a/proto/nft/nft.proto +++ b/proto/nft/nft.proto @@ -102,14 +102,6 @@ message RoyaltyPlugin { string fraction = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Uint", (gogoproto.nullable) = false]; } -message TokenPlugin { - option (gogoproto.equal) = true; - - // Royalty field - TokenRoyaltyPlugin royaltyPlugin = 1; -} - - message TokenRoyaltyPlugin { option (gogoproto.equal) = true; From 79c277c940e15294bea0ffc726095701dab35c0b Mon Sep 17 00:00:00 2001 From: aofengli Date: Thu, 12 Jan 2023 16:04:12 +0800 Subject: [PATCH 11/11] add nft royalty client_test --- modules/nft/client/cli/cli_test.go | 177 ++++++++++++++++++++ modules/nft/client/cli/query.go | 111 ++++++++++++ modules/nft/client/cli/tx.go | 158 +++++++++++++++++ modules/nft/client/testutil/test_helpers.go | 79 +++++++++ modules/nft/types/royalty_msg.go | 4 +- 5 files changed, 527 insertions(+), 2 deletions(-) diff --git a/modules/nft/client/cli/cli_test.go b/modules/nft/client/cli/cli_test.go index 4cc0e4ba..b5962d39 100644 --- a/modules/nft/client/cli/cli_test.go +++ b/modules/nft/client/cli/cli_test.go @@ -2,8 +2,11 @@ package cli_test import ( "fmt" + "math/big" "testing" + sdkmath "cosmossdk.io/math" + "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" "github.com/tidwall/gjson" @@ -327,4 +330,178 @@ func (s *IntegrationTestSuite) TestNft() { s.Require().Equal(symbol, denomItem2.Symbol) s.Require().Equal(mintRestricted, denomItem2.MintRestricted) s.Require().Equal(updateRestricted, denomItem2.UpdateRestricted) + +} + +func (s *IntegrationTestSuite) TestRoyalty() { + val := s.network.Validators[0] + + // --------------------------------------------------------------------------- + from := val.Address + tokenName := "Kitty Token1" + uri := "uri1" + uriHash := "uriHash1" + description := "description1" + data := "{\"key1\":\"value1\",\"key2\":\"value2\"}" + tokenID := "kitty1" + //owner := "owner" + denomName := "name1" + denom := "denom1" + schema := "schema" + symbol := "symbol" + mintRestricted := true + updateRestricted := false + + denomDefaultFraction := sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000)) + tokenFraction := sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(100)) + tokenSalePrice := sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(1000)) + tokenRoyaltyAmountFromDenom := sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(100)) + tokenRoyaltyAmount := sdkmath.NewUintFromBigInt(new(big.Int).SetUint64(10)) + + //------test GetCmdIssueDenom()------------- + args := []string{ + fmt.Sprintf("--%s=%s", nftcli.FlagDenomName, denomName), + fmt.Sprintf("--%s=%s", nftcli.FlagSchema, schema), + fmt.Sprintf("--%s=%s", nftcli.FlagSymbol, symbol), + fmt.Sprintf("--%s=%s", nftcli.FlagURI, uri), + fmt.Sprintf("--%s=%s", nftcli.FlagURIHash, uriHash), + fmt.Sprintf("--%s=%s", nftcli.FlagDescription, description), + fmt.Sprintf("--%s=%s", nftcli.FlagData, data), + fmt.Sprintf("--%s=%t", nftcli.FlagMintRestricted, mintRestricted), + fmt.Sprintf("--%s=%t", nftcli.FlagUpdateRestricted, updateRestricted), + + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + } + + respType := proto.Message(&sdk.TxResponse{}) + expectedCode := uint32(0) + + bz, err := nfttestutil.IssueDenomExec(val.ClientCtx, from.String(), denom, args...) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) + txResp := respType.(*sdk.TxResponse) + s.Require().Equal(expectedCode, txResp.Code) + + denomID := gjson.Get(txResp.RawLog, "0.events.0.attributes.0.value").String() + + // test Royalty cases + //------test GetCmdSetDefaultRoyalty()------------- + args = []string{ + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + } + + respType = proto.Message(&sdk.TxResponse{}) + bz, err = nfttestutil.SetDefaultRoyaltyExec(val.ClientCtx, from.String(), val.Address.String(), denomID, denomDefaultFraction.String(), args...) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) + txResp = respType.(*sdk.TxResponse) + s.Require().Equal(expectedCode, txResp.Code) + + //------test GetCmdQueryDefaultRoyalty()------------- + respType = proto.Message(&nfttypes.MsgDefaultRoyaltyInfoResponse{}) + bz, err = nfttestutil.QueryDefaultRoyaltyExec(val.ClientCtx, denomID) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) + + defaultRoyaltyInfo := respType.(*nfttypes.MsgDefaultRoyaltyInfoResponse) + s.Require().Equal(denomDefaultFraction, defaultRoyaltyInfo.RoyaltyFraction) + s.Require().Equal(val.Address.String(), defaultRoyaltyInfo.Receiver) + + //------test GetCmdMintNFT()------------- + args = []string{ + fmt.Sprintf("--%s=%s", nftcli.FlagData, data), + fmt.Sprintf("--%s=%s", nftcli.FlagRecipient, from.String()), + fmt.Sprintf("--%s=%s", nftcli.FlagURI, uri), + fmt.Sprintf("--%s=%s", nftcli.FlagURIHash, uriHash), + fmt.Sprintf("--%s=%s", nftcli.FlagTokenName, tokenName), + + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + } + + respType = proto.Message(&sdk.TxResponse{}) + + bz, err = nfttestutil.MintNFTExec(val.ClientCtx, from.String(), denomID, tokenID, args...) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) + txResp = respType.(*sdk.TxResponse) + s.Require().Equal(expectedCode, txResp.Code) + + //------test GetCmdSetTokenRoyalty()------------- + args = []string{ + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + } + + respType = proto.Message(&sdk.TxResponse{}) + bz, err = nfttestutil.SetTokenRoyaltyExec(val.ClientCtx, from.String(), val.Address.String(), denomID, tokenID, tokenFraction.String(), args...) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) + txResp = respType.(*sdk.TxResponse) + s.Require().Equal(expectedCode, txResp.Code) + + //------test GetCmdQueryTokenRoyalty()------------- + respType = proto.Message(&nfttypes.MsgTokenRoyaltyInfoResponse{}) + bz, err = nfttestutil.QueryTokenRoyaltyExec(val.ClientCtx, denomID, tokenID) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) + + tokenRoyaltyInfo := respType.(*nfttypes.MsgTokenRoyaltyInfoResponse) + s.Require().Equal(tokenFraction, tokenRoyaltyInfo.RoyaltyFraction) + s.Require().Equal(val.Address.String(), tokenRoyaltyInfo.Receiver) + + //------test GetCmdQueryRoyaltyInfo()------------- + respType = proto.Message(&nfttypes.MsgRoyaltyInfoResponse{}) + bz, err = nfttestutil.QueryRoyaltyInfoExec(val.ClientCtx, denomID, tokenID, tokenSalePrice.String()) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) + + royaltyInfo := respType.(*nfttypes.MsgRoyaltyInfoResponse) + s.Require().Equal(tokenRoyaltyAmount, royaltyInfo.RoyaltyAmount) + s.Require().Equal(val.Address.String(), royaltyInfo.Receiver) + + //------test GetCmdResetTokenRoyalty()------------- + args = []string{ + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + } + + respType = proto.Message(&sdk.TxResponse{}) + bz, err = nfttestutil.ResetTokenRoyaltyExec(val.ClientCtx, from.String(), denomID, tokenID, args...) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) + txResp = respType.(*sdk.TxResponse) + s.Require().Equal(expectedCode, txResp.Code) + + //------test GetCmdQueryRoyaltyInfo()------------- + respType = proto.Message(&nfttypes.MsgRoyaltyInfoResponse{}) + bz, err = nfttestutil.QueryRoyaltyInfoExec(val.ClientCtx, denomID, tokenID, tokenSalePrice.String()) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType)) + + royaltyInfo = respType.(*nfttypes.MsgRoyaltyInfoResponse) + s.Require().Equal(tokenRoyaltyAmountFromDenom, royaltyInfo.RoyaltyAmount) + s.Require().Equal(val.Address.String(), royaltyInfo.Receiver) + + //------test GetCmdDeleteDefaultRoyalty()------------- + args = []string{ + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + } + + respType = proto.Message(&sdk.TxResponse{}) + bz, err = nfttestutil.DeleteDefaultRoyaltyExec(val.ClientCtx, from.String(), denomID, args...) + s.Require().NoError(err) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(bz.Bytes(), respType), bz.String()) + txResp = respType.(*sdk.TxResponse) + s.Require().Equal(expectedCode, txResp.Code) + } diff --git a/modules/nft/client/cli/query.go b/modules/nft/client/cli/query.go index d7627c73..b413ed90 100644 --- a/modules/nft/client/cli/query.go +++ b/modules/nft/client/cli/query.go @@ -4,6 +4,8 @@ import ( "context" "fmt" + sdkmath "cosmossdk.io/math" + "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" @@ -29,6 +31,7 @@ func GetQueryCmd() *cobra.Command { GetCmdQuerySupply(), GetCmdQueryOwner(), GetCmdQueryNFT(), + GetCmdQueryDefaultRoyalty(), ) return queryCmd @@ -247,3 +250,111 @@ func GetCmdQueryNFT() *cobra.Command { return cmd } + +// GetCmdQueryDefaultRoyalty queries a single NFTs from a collection +func GetCmdQueryDefaultRoyalty() *cobra.Command { + cmd := &cobra.Command{ + Use: "denom royalty [denom-id] ", + Long: "Query the default royalty information of a denom", + Example: fmt.Sprintf("$ %s query nft denom royalty ", version.AppName), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + if err := types.ValidateDenomID(args[0]); err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + resp, err := queryClient.DefaultRoyaltyInfo(context.Background(), &types.MsgDefaultRoyaltyInfoRequest{ + DenomId: args[0], + }) + if err != nil { + return err + } + return clientCtx.PrintProto(resp) + }, + } + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetCmdQueryTokenRoyalty queries a single NFTs from a collection +func GetCmdQueryTokenRoyalty() *cobra.Command { + cmd := &cobra.Command{ + Use: "token royalty [denom-id] [token-id]", + Long: "Query the default royalty information of a denom", + Example: fmt.Sprintf("$ %s query nft token royalty ", version.AppName), + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + if err := types.ValidateDenomID(args[0]); err != nil { + return err + } + + if err := types.ValidateDenomID(args[1]); err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + resp, err := queryClient.TokenRoyaltyInfo(context.Background(), &types.MsgTokenRoyaltyInfoRequest{ + DenomId: args[0], + NftId: args[1], + }) + if err != nil { + return err + } + return clientCtx.PrintProto(resp) + }, + } + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetCmdQueryRoyaltyInfo queries a single NFTs from a collection +func GetCmdQueryRoyaltyInfo() *cobra.Command { + cmd := &cobra.Command{ + Use: "token royalty-info [denom-id] [token-id] [sale-price]", + Long: "Query the default royalty information of a denom", + Example: fmt.Sprintf("$ %s query nft token royalty-info ", version.AppName), + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + if err := types.ValidateDenomID(args[0]); err != nil { + return err + } + + if err := types.ValidateDenomID(args[1]); err != nil { + return err + } + + salePrice := sdkmath.NewUintFromString(args[2]) + + queryClient := types.NewQueryClient(clientCtx) + resp, err := queryClient.RoyaltyInfo(context.Background(), &types.MsgRoyaltyInfoRequest{ + DenomId: args[0], + NftId: args[1], + SalePrice: salePrice, + }) + if err != nil { + return err + } + return clientCtx.PrintProto(resp) + }, + } + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/modules/nft/client/cli/tx.go b/modules/nft/client/cli/tx.go index 1e3a2c26..a8513fd3 100644 --- a/modules/nft/client/cli/tx.go +++ b/modules/nft/client/cli/tx.go @@ -5,6 +5,8 @@ import ( "io/ioutil" "strings" + sdkmath "cosmossdk.io/math" + "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" @@ -33,6 +35,10 @@ func NewTxCmd() *cobra.Command { GetCmdTransferNFT(), GetCmdBurnNFT(), GetCmdTransferDenom(), + GetCmdSetDefaultRoyalty(), + GetCmdSetTokenRoyalty(), + GetCmdResetTokenRoyalty(), + GetCmdDeleteDefaultRoyalty(), ) return txCmd @@ -406,3 +412,155 @@ func GetCmdTransferDenom() *cobra.Command { return cmd } + +func GetCmdSetDefaultRoyalty() *cobra.Command { + cmd := &cobra.Command{ + Use: "set-default-royalty [denom-id] [receiver] [fee-numerator]", + Long: "Set default royalty for denom", + Example: fmt.Sprintf( + "$ %s tx nft set-default-royalty "+ + "--from= "+ + "--chain-id= "+ + "--fees=", + version.AppName, + ), + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(args[1]); err != nil { + return err + } + + feeNumerator := sdkmath.NewUintFromString(args[2]) + msg := types.NewMsgSetDefaultRoyalty( + args[0], + args[1], + feeNumerator, + clientCtx.GetFromAddress().String(), + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + cmd.Flags().AddFlagSet(FsTransferDenom) + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func GetCmdSetTokenRoyalty() *cobra.Command { + cmd := &cobra.Command{ + Use: "set-token-royalty [denom-id] [nft-id] [receiver] [fee-numerator]", + Long: "Set royalties for a token under denom", + Example: fmt.Sprintf( + "$ %s tx nft set-token-royalty "+ + "--from= "+ + "--chain-id= "+ + "--fees=", + version.AppName, + ), + Args: cobra.ExactArgs(4), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + if _, err := sdk.AccAddressFromBech32(args[2]); err != nil { + return err + } + + feeNumerator := sdkmath.NewUintFromString(args[3]) + msg := types.NewMsgSetTokenRoyalty( + args[0], + args[1], + args[2], + feeNumerator, + clientCtx.GetFromAddress().String(), + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + cmd.Flags().AddFlagSet(FsTransferDenom) + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func GetCmdResetTokenRoyalty() *cobra.Command { + cmd := &cobra.Command{ + Use: "reset-token-royalty [denom-id] [nft-id]", + Long: "reset royalties for a token under denom", + Example: fmt.Sprintf( + "$ %s tx nft reset-default-royalty "+ + "--from= "+ + "--chain-id= "+ + "--fees=", + version.AppName, + ), + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgResetTokenRoyalty( + args[0], + args[1], + clientCtx.GetFromAddress().String(), + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + cmd.Flags().AddFlagSet(FsTransferDenom) + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func GetCmdDeleteDefaultRoyalty() *cobra.Command { + cmd := &cobra.Command{ + Use: "delete-default-royalty [denom-id]", + Long: "delete default royalties for a denom", + Example: fmt.Sprintf( + "$ %s tx nft delete-default-royalty "+ + "--from= "+ + "--chain-id= "+ + "--fees=", + version.AppName, + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgDeleteDefaultRoyalty( + args[0], + clientCtx.GetFromAddress().String(), + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + cmd.Flags().AddFlagSet(FsTransferDenom) + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/modules/nft/client/testutil/test_helpers.go b/modules/nft/client/testutil/test_helpers.go index db6f57a8..728d21a9 100644 --- a/modules/nft/client/testutil/test_helpers.go +++ b/modules/nft/client/testutil/test_helpers.go @@ -139,3 +139,82 @@ func TransferDenomExec(clientCtx client.Context, from string, recipient string, args = append(args, extraArgs...) return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdTransferDenom(), args) } + +func SetDefaultRoyaltyExec(clientCtx client.Context, from string, receiver string, denomID string, feeNumerator string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + receiver, + feeNumerator, + fmt.Sprintf("--%s=%s", flags.FlagFrom, from), + } + + args = append(args, extraArgs...) + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdSetDefaultRoyalty(), args) +} + +func QueryDefaultRoyaltyExec(clientCtx client.Context, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + fmt.Sprintf("--%s=json", cli.OutputFlag), + } + args = append(args, extraArgs...) + + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryDefaultRoyalty(), args) +} + +func SetTokenRoyaltyExec(clientCtx client.Context, from string, receiver string, denomID, nftID string, feeNumerator string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + nftID, + receiver, + feeNumerator, + fmt.Sprintf("--%s=%s", flags.FlagFrom, from), + } + + args = append(args, extraArgs...) + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdSetTokenRoyalty(), args) +} + +func QueryTokenRoyaltyExec(clientCtx client.Context, denomID, nftID string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + nftID, + fmt.Sprintf("--%s=json", cli.OutputFlag), + } + args = append(args, extraArgs...) + + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryTokenRoyalty(), args) +} + +func QueryRoyaltyInfoExec(clientCtx client.Context, denomID, nftID string, salePrice string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + nftID, + salePrice, + fmt.Sprintf("--%s=json", cli.OutputFlag), + } + args = append(args, extraArgs...) + + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdQueryRoyaltyInfo(), args) +} + +func ResetTokenRoyaltyExec(clientCtx client.Context, from string, denomID, nftID string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + nftID, + fmt.Sprintf("--%s=%s", flags.FlagFrom, from), + } + + args = append(args, extraArgs...) + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdResetTokenRoyalty(), args) +} + +func DeleteDefaultRoyaltyExec(clientCtx client.Context, from string, denomID string, extraArgs ...string) (testutil.BufferWriter, error) { + args := []string{ + denomID, + fmt.Sprintf("--%s=%s", flags.FlagFrom, from), + } + + args = append(args, extraArgs...) + return clitestutil.ExecTestCLICmd(clientCtx, nftcli.GetCmdDeleteDefaultRoyalty(), args) +} diff --git a/modules/nft/types/royalty_msg.go b/modules/nft/types/royalty_msg.go index d189bc6b..cb00b09c 100644 --- a/modules/nft/types/royalty_msg.go +++ b/modules/nft/types/royalty_msg.go @@ -109,7 +109,7 @@ func (msg MsgSetTokenRoyalty) GetSigners() []sdk.AccAddress { } // NewMsgResetTokenRoyalty is a constructor function for MsgSetName -func NewMsgResetTokenRoyalty(denomId, nftId, receiver string, feeNumerator sdkmath.Uint, sender string) *MsgResetTokenRoyalty { +func NewMsgResetTokenRoyalty(denomId, nftId, sender string) *MsgResetTokenRoyalty { return &MsgResetTokenRoyalty{ DenomId: denomId, NftId: nftId, @@ -151,7 +151,7 @@ func (msg MsgResetTokenRoyalty) GetSigners() []sdk.AccAddress { } // NewMsgDeleteDefaultRoyalty is a constructor function for MsgSetName -func NewMsgDeleteDefaultRoyalty(denomId, nftId, receiver string, feeNumerator sdkmath.Uint, sender string) *MsgDeleteDefaultRoyalty { +func NewMsgDeleteDefaultRoyalty(denomId, sender string) *MsgDeleteDefaultRoyalty { return &MsgDeleteDefaultRoyalty{ DenomId: denomId, Sender: sender,