firefly-ethconnect
firefly-ethconnect copied to clipboard
"value" cannot be passed as a hex string on a SendTransaction request
If I have a smart contract function that is payable
I need to set a value
field in the JSON object of the request body for a SendTransaction
request.
Today if I set this to a string like this:
{
"value": "0x01"
}
I get the following result in the FireFly explorer:
{
"id": "default:25a46a6d-961a-47e2-a7e0-5e3aaeb431f3",
"message": "json: invalid number literal, trying to unmarshal \"\\\"0x01\\\"\" into Number",
"success": false
}
I think some of the backslash escaping craziness there is actually just added by the UI.
Ethconnect logs the following:
[2022-06-15T12:57:33.507Z] WARN Failed to process message MsgContext[SendTransaction/default:25a46a6d-961a-47e2-a7e0-5e3aaeb431f3]: json: invalid number literal, trying to unmarshal "\"0x01\"" into Number
That’s certainly the behaviour as designed today. That those inputs a base 10. The new FFTM connector toolkit is more permissive, using the utility helper FFBigInt from firefly-common.
A PR for an enhancement to also support base16 numbers in ethconnect would be cool.
It does let me pass value as a string though, as long as it is base 10, so I can still express large numbers which is good.
Yep - I think it uses the “json.Number” string type today