Skip to content

Commit

Permalink
Merge pull request #47 from Lorenzo-Protocol/restore_add_receivers
Browse files Browse the repository at this point in the history
fix(btcstaking): restore AddReceiver/RemoveReceiver
  • Loading branch information
sheldonleedev authored Jun 17, 2024
2 parents c8314e4 + ba7db67 commit f1a431d
Show file tree
Hide file tree
Showing 8 changed files with 979 additions and 151 deletions.
4 changes: 2 additions & 2 deletions proto/lorenzo/btcstaking/v1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ message QueryParamsResponse {
}

message StakingRecordDisplay {
string txId = 1;
string mintToAddress = 2;
string tx_id = 1;
string mint_to_address = 2;
string amount = 3;
string btc_receiver_name = 4;
string btc_receiver_addr = 5;
Expand Down
21 changes: 21 additions & 0 deletions proto/lorenzo/btcstaking/v1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ service Msg {

rpc Burn(MsgBurnRequest) returns (MsgBurnResponse);

rpc AddReceiver(MsgAddReceiver) returns (MsgAddReceiverResponse);

rpc RemoveReceiver(MsgRemoveReceiver) returns (MsgRemoveReceiverResponse);

rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
}

Expand Down Expand Up @@ -63,6 +67,23 @@ message MsgBurnRequest {

message MsgBurnResponse{}

message MsgAddReceiver {
option (cosmos.msg.v1.signer) = "authority";

string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];

Receiver receiver = 2 [ (gogoproto.nullable) = false ];
}

message MsgAddReceiverResponse {}
message MsgRemoveReceiver {
option (cosmos.msg.v1.signer) = "authority";

string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];

string receiver = 2 ;
}
message MsgRemoveReceiverResponse {}
message MsgUpdateParams {
option (cosmos.msg.v1.signer) = "authority";

Expand Down
20 changes: 11 additions & 9 deletions x/btcstaking/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@ func GetQueryCmd(queryRoute string) *cobra.Command {

func CmdGetParams() *cobra.Command {
cmd := &cobra.Command{
Use: "get-params",
Short: "get btc staking params",
Args: cobra.NoArgs,
Use: "get-params",
Aliases: []string{"params"},
Short: "get btc staking params",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx := client.GetClientContextFromCmd(cmd)
queryClient := types.NewQueryClient(clientCtx)
Expand All @@ -52,9 +53,10 @@ func CmdGetParams() *cobra.Command {

func CmdGetBTCStakingRecord() *cobra.Command {
cmd := &cobra.Command{
Use: "get-btc-staking-record [btc_staking_tx_id]",
Short: "get the btc staking record",
Args: cobra.ExactArgs(1),
Use: "get-btc-staking-record [btc_staking_tx_id]",
Aliases: []string{"record"},
Short: "get the btc staking record",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx := client.GetClientContextFromCmd(cmd)
queryClient := types.NewQueryClient(clientCtx)
Expand All @@ -63,6 +65,9 @@ func CmdGetBTCStakingRecord() *cobra.Command {
return err
}
res, err := queryClient.StakingRecord(cmd.Context(), &types.QueryStakingRecordRequest{TxHash: txHashBytes[:]})
if err != nil {
return err
}
if res.Record == nil {
return fmt.Errorf("record not found")
}
Expand All @@ -72,9 +77,6 @@ func CmdGetBTCStakingRecord() *cobra.Command {
resDisp.MintToAddress = "0x" + hex.EncodeToString(res.Record.MintToAddr)
resDisp.BtcReceiverName = res.Record.BtcReceiverName
resDisp.BtcReceiverAddr = res.Record.BtcReceiverAddr
if err != nil {
return err
}
return clientCtx.PrintProto(&resDisp)
},
}
Expand Down
8 changes: 8 additions & 0 deletions x/btcstaking/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -282,3 +282,11 @@ func (ms msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdatePara
}
return &types.MsgUpdateParamsResponse{}, nil
}

func (ms msgServer) AddReceiver(goCtx context.Context, req *types.MsgAddReceiver) (*types.MsgAddReceiverResponse, error) {
return nil, fmt.Errorf("deprecated, use UpdateParams instead")
}

func (ms msgServer) RemoveReceiver(goCtx context.Context, req *types.MsgRemoveReceiver) (*types.MsgRemoveReceiverResponse, error) {
return nil, fmt.Errorf("deprecated, use UpdateParams instead")
}
3 changes: 3 additions & 0 deletions x/btcstaking/types/codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) {
(*sdk.Msg)(nil),
&MsgCreateBTCStaking{},
&MsgBurnRequest{},
&MsgRemoveReceiver{},
&MsgAddReceiver{},
&MsgUpdateParams{},
)

msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
Expand Down
33 changes: 33 additions & 0 deletions x/btcstaking/types/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package types
import (
fmt "fmt"

errorsmod "cosmossdk.io/errors"
"cosmossdk.io/math"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/chaincfg"
Expand All @@ -13,6 +14,8 @@ import (
var (
_ sdk.Msg = &MsgCreateBTCStaking{}
_ sdk.Msg = &MsgBurnRequest{}
_ sdk.Msg = &MsgRemoveReceiver{}
_ sdk.Msg = &MsgAddReceiver{}
_ sdk.Msg = &MsgUpdateParams{}
)

Expand All @@ -30,6 +33,36 @@ func (m *MsgCreateBTCStaking) ValidateBasic() error {
return nil
}

func (m *MsgAddReceiver) GetSigners() []sdk.AccAddress {
addr, _ := sdk.AccAddressFromBech32(m.Authority)
return []sdk.AccAddress{addr}
}

func (m *MsgAddReceiver) ValidateBasic() error {
if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil {
return errorsmod.Wrap(err, "invalid authority address")
}
if err := m.Receiver.Validate(); err != nil {
return err
}
return nil
}

func (m *MsgRemoveReceiver) GetSigners() []sdk.AccAddress {
addr, _ := sdk.AccAddressFromBech32(m.Authority)
return []sdk.AccAddress{addr}
}

func (m *MsgRemoveReceiver) ValidateBasic() error {
if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil {
return errorsmod.Wrap(err, "invalid authority address")
}
if len(m.Receiver) == 0 {
return fmt.Errorf("receiver name cannot be empty")
}
return nil
}

func (msg *MsgCreateBTCStaking) GetSigners() []sdk.AccAddress {
signer, err := sdk.AccAddressFromBech32(msg.Signer)
if err != nil {
Expand Down
71 changes: 36 additions & 35 deletions x/btcstaking/types/query.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit f1a431d

Please sign in to comment.