QOSGroup/qos

令转账金额为零值,可以通过入参检查,check_tx报错有歧义

Closed this issue · 2 comments

令转账金额为零值,可以通过入参检查,并且check_tx报错有歧义

$ ./qoscli tx transfer --senders 'alice,0QOS' --receivers 'bob,0QOS' --indent
Password to sign with 'alice':
{
  "check_tx": {
    "code": 1,
    "log": "{\"codespace\":\"sdk\",\"code\":1,\"message\":\"TxStd's ITx ValidateData error:  ERROR:\\nCodespace: transfer\\nCode: 201\\nMessage: \\\"QOS and QSCs in address1eqqnaps04l6ht9xahtrfgg59ksllcq9qr8630q are zero\\\"\\n\"}",
    "gasWanted": "100000"
  },
  "deliver_tx": {},
  "hash": "31E5CBF0D10BAA5A7BB34A1A420CF15964B04356695357B11CC10641C71CE0D4",
  "height": "0"
}
ERROR: {"codespace":"sdk","code":1,"message":"TxStd's ITx ValidateData error:  ERROR:\nCodespace: transfer\nCode: 201\nMessage: \"QOS and QSCs in address1eqqnaps04l6ht9xahtrfgg59ksllcq9qr8630q are zero\"\n"}

可以看到报错信息是”QOS and QSCs in address1eqqnaps04l6ht9xahtrfgg59ksllcq9qr8630q are zero“,给人的第一感觉是address1eqqnaps04l6ht9xahtrfgg59ksllcq9qr8630q的账户余额为零,而不是这次转账的金额为零。

但是通过查询可以看到address1eqqnaps04l6ht9xahtrfgg59ksllcq9qr8630q的账户余额不为零:

$ ./qoscli query account alice --indent
{
  "type": "qos/types/QOSAccount",
  "value": {
    "base_account": {
      "account_address": "address1eqqnaps04l6ht9xahtrfgg59ksllcq9qr8630q",
      "public_key": {
        "type": "tendermint/PubKeyEd25519",
        "value": "EbIqepd8q2+8XnTjvlqjnWb1aptxLEkjiSuvX05nuBg="
      },
      "nonce": "2"
    },
    "qos": "696455",
    "qscs": null
  }
}

从设计上来说,转账金额为零值的情况应该在入参检查时就不允许通过。

qos version:branch -> develop
the bug has been fixed。the result of verification below:

[vagrant@vagrant-192-168-1-201 qos]$ qoscli tx transfer --senders 'acc0,0qos' --receivers 'acc1,0qos'
Password to sign with 'acc0':
{"check_tx":{"code":1,"log":"{\"codespace\":\"sdk\",\"code\":1,\"message\":\"TxStd's ITx ValidateData error:  ERROR:\\nCodespace: transfer\\nCode: 201\\nMessage: \\\"QOS and QSCs in transfer are zero\\\"\\n\"}","gasWanted":"9223372036854775807","gasUsed":"18000","events":[]},"deliver_tx":{},"hash":"0FF5437457E3AF1DBE9B3EC8740A39B68F05F61FE7D0C478C40F79FD69D36445","height":"0"}
ERROR: {"codespace":"sdk","code":1,"message":"TxStd's ITx ValidateData error:  ERROR:\nCodespace: transfer\nCode: 201\nMessage: \"QOS and QSCs in transfer are zero\"\n"}

从结果看出提示修改为:QOS and QSCs in transfer are zero