• T
    [release/1.4.7] accounts/abi: Negative numbers not properly converted in ABI encoding · 39f1d909
    Thomas Bocek 提交于
    When converting a negative number e.g., -2, the resulting ABI encoding
    should look as follows:
    fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe.
    However, since the check of the type is for an uint instead of an
    int, it results in the following ABI encoding:
    0101010101010101010101010101010101010101010101010101010101010102. The
    Ethereum ABI
    (https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) says,
    that signed integers are stored in two's complement which should be
    of the form ffffff.... and not 01010101..... for e.g. -1. Thus, I
    removed the type check in numbers.go as well as the function S256
    as I don't think they are correct. Or maybe I'm missing something?
    
    (cherry picked from commit 89c6c5bb)
    39f1d909
numbers.go 3.0 KB