func (coin Coin) IsZero() bool {
	return coin.Amount.IsZero()
}
IsZero returns if this represents no money
package coin
import (
	"encoding/json"
	"fmt"
	"regexp"
	"sort"
	"strings"
	"github.com/pkg/errors"
)
type Coin struct {
	Denom string `json:"denom"`
	Amount Int `json:"amount"`
}
func NewCoin(denom string, amount Int) Coin {
	if err := validate(denom, amount); err != nil {
		panic(err)
	}
	return Coin{
		Denom:  denom,
		Amount: amount,
	}
}
func NewInt64Coin(denom string, amount int64) Coin {
	return NewCoin(denom, NewInt(amount))
}
func (coin Coin) String() string {
	return fmt.Sprintf("%v%v", coin.Amount, coin.Denom)
}
func validate(denom string, amount Int) error {
	if err := ValidateDenom(denom); err != nil {
		return err
	}
	if amount.IsNegative() {
		return fmt.Errorf("negative coin amount: %v", amount)
	}
	return nil
}
func (coin Coin) IsValid() bool {
	if err := validate(coin.Denom, coin.Amount); err != nil {
		return false
	}
	return true
}