96 lines
1.6 KiB
Go
96 lines
1.6 KiB
Go
package staking
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
crypto "github.com/tendermint/go-crypto"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
)
|
|
|
|
// -------------------------
|
|
// BondMsg
|
|
|
|
type BondMsg struct {
|
|
Address sdk.Address `json:"address"`
|
|
Stake sdk.Coin `json:"coins"`
|
|
PubKey crypto.PubKey `json:"pub_key"`
|
|
}
|
|
|
|
func NewBondMsg(addr sdk.Address, stake sdk.Coin, pubKey crypto.PubKey) BondMsg {
|
|
return BondMsg{
|
|
Address: addr,
|
|
Stake: stake,
|
|
PubKey: pubKey,
|
|
}
|
|
}
|
|
|
|
func (msg BondMsg) Type() string {
|
|
return "staking"
|
|
}
|
|
|
|
func (msg BondMsg) ValidateBasic() sdk.Error {
|
|
if msg.Stake.IsZero() {
|
|
return ErrEmptyStake()
|
|
}
|
|
|
|
if msg.PubKey.Empty() {
|
|
return sdk.ErrInvalidPubKey("BondMsg.PubKey must not be empty")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (msg BondMsg) Get(key interface{}) interface{} {
|
|
return nil
|
|
}
|
|
|
|
func (msg BondMsg) GetSignBytes() []byte {
|
|
bz, err := json.Marshal(msg)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return bz
|
|
}
|
|
|
|
func (msg BondMsg) GetSigners() []sdk.Address {
|
|
return []sdk.Address{msg.Address}
|
|
}
|
|
|
|
// -------------------------
|
|
// UnbondMsg
|
|
|
|
type UnbondMsg struct {
|
|
Address sdk.Address `json:"address"`
|
|
}
|
|
|
|
func NewUnbondMsg(addr sdk.Address) UnbondMsg {
|
|
return UnbondMsg{
|
|
Address: addr,
|
|
}
|
|
}
|
|
|
|
func (msg UnbondMsg) Type() string {
|
|
return "staking"
|
|
}
|
|
|
|
func (msg UnbondMsg) ValidateBasic() sdk.Error {
|
|
return nil
|
|
}
|
|
|
|
func (msg UnbondMsg) Get(key interface{}) interface{} {
|
|
return nil
|
|
}
|
|
|
|
func (msg UnbondMsg) GetSignBytes() []byte {
|
|
bz, err := json.Marshal(msg)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return bz
|
|
}
|
|
|
|
func (msg UnbondMsg) GetSigners() []sdk.Address {
|
|
return []sdk.Address{msg.Address}
|
|
}
|