transaction: marshal ContractTX even if Data is nil

It contains no information so it doesn't matter anyway.
This commit is contained in:
Evgenii Stratonikov 2020-03-03 21:20:58 +03:00
parent 634e9483d3
commit 7eaeb18f18
2 changed files with 5 additions and 3 deletions

View file

@ -416,7 +416,6 @@ func transferAsset(ctx *cli.Context) error {
}
tx := transaction.NewContractTX()
tx.Data = new(transaction.ContractTX)
if err := request.AddInputsAndUnspentsToTx(tx, from, asset, amount, c); err != nil {
return cli.NewExitError(err, 1)
}

View file

@ -158,7 +158,8 @@ func (t *Transaction) EncodeBinary(bw *io.BinWriter) {
// encodeHashableFields encodes the fields that are not used for
// signing the transaction, which are all fields except the scripts.
func (t *Transaction) encodeHashableFields(bw *io.BinWriter) {
if t.Data == nil {
noData := t.Type == ContractType
if t.Data == nil && !noData {
bw.Err = errors.New("transaction has no data")
return
}
@ -166,7 +167,9 @@ func (t *Transaction) encodeHashableFields(bw *io.BinWriter) {
bw.WriteB(byte(t.Version))
// Underlying TXer.
t.Data.EncodeBinary(bw)
if !noData {
t.Data.EncodeBinary(bw)
}
// Attributes
bw.WriteArray(t.Attributes)