5. Implement contracts abi abstraction and contract compilation (solc)
- Implement abi functions and events parsing
- Implement function construction and deceralisation
- Implement solc compiler (https://github.com/ethereum/solidity)
- Implement extraction of compiler meta data
@biboran/z please, pay attention to this issue
@rockfridrich could you elaborate on what does this mean?
The data of a variable or array element is not interleaved with other data and it is relocatable, i.e. it only uses relative “addresses”
~~For future reference: structs are encoded as tuples.~~
update: this is not currently possible.
enum is not a part of ABI as of now and is converted to the minimally needed capacity uint
@bashalex specification on tuple (X) encoding says:
enc(X) = head(X(1)) ... head(X(k-1)) tail(X(0)) ... tail(X(k-1))
There is tail(X(0)) but there is no head(X(0)). Where does the head(X(0)) go? Should you drop it or is it just a typo in the specification?
@bashalex there is a similar issue with specification on variable-length array vs fixed-length array.
For fixed-length it is:
enc(X) = enc((X[0], ..., X[k-1]))
and for variable-length it is:
enc(X) = enc(k) enc([X[1], ..., X[k]])
is it supposed to be X[1] to X[k]?
As of now the following constraints also apply:
- Structures cannot be an external dependency
- There is no such type as tuple of tuples.