func (ub *UpdateBilling) Sign(signer *asymmetric.PrivateKey) (err error) {
	return ub.DefaultHashSignVerifierImpl.Sign(&ub.UpdateBillingHeader, signer)
}
Sign implements interfaces/Transaction.Sign.
package types
import (
	pi "github.com/SQLess/SQLess/blockproducer/interfaces"
	"github.com/SQLess/SQLess/crypto"
	"github.com/SQLess/SQLess/crypto/asymmetric"
	"github.com/SQLess/SQLess/crypto/verifier"
	"github.com/SQLess/SQLess/proto"
)
type Range struct {
	From, To uint32
}
type MinerIncome struct {
	Miner  proto.AccountAddress
	Income uint64
}
type UserCost struct {
	User   proto.AccountAddress
	Cost   uint64
	Miners []*MinerIncome
}
type UpdateBillingHeader struct {
	Receiver proto.AccountAddress
	Nonce    pi.AccountNonce
	Users    []*UserCost
	Range    Range
	Version  int32 `hsp:"v,version"`
}
type UpdateBilling struct {
	UpdateBillingHeader
	pi.TransactionTypeMixin
	verifier.DefaultHashSignVerifierImpl
}
func NewUpdateBilling(header *UpdateBillingHeader) *UpdateBilling {
	return &UpdateBilling{
		UpdateBillingHeader:  *header,
		TransactionTypeMixin: *pi.NewTransactionTypeMixin(pi.TransactionTypeUpdateBilling),
	}
}
func (ub *UpdateBilling) GetAccountAddress() proto.AccountAddress {
	addr, _ := crypto.PubKeyHash(ub.Signee)
	return addr
}
func (ub *UpdateBilling) GetAccountNonce() pi.AccountNonce {
	return ub.Nonce
}