func (acc *BaseAccount) SetAddress(addr sdk.AccAddress) error {
	if len(acc.Address) != 0 {
		return errors.New("cannot override BaseAccount address")
	}
	acc.Address = addr
	return nil
}
SetAddress - Implements sdk.Account.
package types
import (
	"errors"
	"fmt"
	"time"
	"github.com/tendermint/tendermint/crypto"
	"gopkg.in/yaml.v2"
	"github.com/Dipper-Labs/Dipper-Protocol/app/v0/auth/exported"
	"github.com/Dipper-Labs/Dipper-Protocol/hexutil"
	sdk "github.com/Dipper-Labs/Dipper-Protocol/types"
)
var _ exported.Account = (*BaseAccount)(nil)
type BaseAccount struct {
	Address       sdk.AccAddress `json:"address" yaml:"address"`
	Coins         sdk.Coins      `json:"coins" yaml:"coins"`
	PubKey        crypto.PubKey  `json:"public_key" yaml:"public_key"`
	AccountNumber uint64         `json:"account_number" yaml:"account_number"`
	Sequence      uint64         `json:"sequence" yaml:"sequence"`
	CodeHash      hexutil.Bytes  `json:"code_hash" yaml:"code_hash"`
}
func NewBaseAccount(address sdk.AccAddress, coins sdk.Coins,
	pubKey crypto.PubKey, accountNumber uint64, sequence uint64) *BaseAccount {
	return &BaseAccount{
		Address:       address,
		Coins:         coins,
		PubKey:        pubKey,
		AccountNumber: accountNumber,
		Sequence:      sequence,
	}
}
func (acc BaseAccount) String() string {
	out, _ := acc.MarshalYAML()
	return out.(string)
}
func ProtoBaseAccount() exported.Account {
	return &BaseAccount{}
}
func NewBaseAccountWithAddress(addr sdk.AccAddress) BaseAccount {
	return BaseAccount{
		Address: addr,
	}
}
func (acc BaseAccount) GetAddress() sdk.AccAddress {
	return acc.Address
}