In many client programs, a signature failure occurs when an operation such as a transfer is performed.
(图源 :pixabay)
A temporary and useful solution is to replace symbols such as “HIVE” and “HBD” in operations (such as transfer) with “STEEM” and “SBD”. But it feels strange.
Today I’m trying to figure out what’s causing this problem.
I created a transaction like this one:
1 | {'expiration': '2020-04-16T09:30:55', |
Then use get_transaction_hex
to serialize it. I got the result like this one:
Hex b’o\xd4\xbemfw\xcf%\x98^\x01\x02\roflyhigh.test\x08oflyhigh\x01\x00\x00\x00\x00\x00\x00\x00\x03STEEM\x00\x00\x05Hello\x00\x00’
It’s not hard to see “oflyhigh”, “oflyhigh.test”, “Hello”, etc., but why the “STEEM” character? Shouldn’t it be the HIVE character?
I tried to sign and broadcast on top of that, what happened? It worked!
Therefore, it is not difficult to conclude that the server-side (chain side) serialized token symbol is “STEEM” “SBD”, which also explains why many client programs have errors like “Missing Active Authority”.
Because on the client side, “HIVE” and “HBD” are typically used as token symbols and serialized on the client side, The result of serialization is not the same as that of the server-side (chain side) .
So the best approach is not to replace “HIVE” &” HBD” with “STEEM” &”SBD” in the client script, but to solve the problem completely on the server-side (chain side) .
But as far as I know it’s a super complicated thing and there’s nothing I can do about it.😳
This page is synchronized from the post: ‘Wrong serialization result 与签名错误’