watcher-ts/packages/solidity-mapper/README.md
Ashwin Phatak d4db1f5d28
Get value for dynamic arrays (#66)
* Implement getting values of dynamic arrays.

* Add tests for dynamic arrays of value types.

Co-authored-by: nikugogoi <95nikass@gmail.com>
2021-06-15 18:20:12 +05:30

83 lines
2.2 KiB
Markdown

# solidity-mapper
Get value of state variable from storage for a solidity contract.
## Pre-requisites
* NodeJS and NPM
https://nodejs.org/en/ or use https://github.com/nvm-sh/nvm
## Instructions
Run the tests using the following command
```bash
$ yarn test
```
## Different Types
* [ ] Value Types
* [x] Booleans
* [x] Integers
* [ ] Fixed Point Numbers
* [x] Address
* [x] Contract Types
* [x] Fixed-size byte arrays
* [x] Enums
* [ ] Function Types
* [ ] Reference Types
* [ ] Arrays
* [x] Get all elements in array
* [x] Get element in array by index
* [ ] Fixed size arrays
* [x] Integer Type
* [x] Boolean Type
* [x] Address Type
* [ ] Fixed-size byte arrays
* [ ] Enum type
* [ ] Dynamically-sized byte array
* [x] Struct Type
* [ ] Mapping Type
* [ ] Dynamically-sized arrays
* [x] Integer Type
* [x] Boolean Type
* [x] Address Type
* [ ] Fixed-size byte arrays
* [x] Enum Type
* [ ] Dynamically-sized byte array
* [ ] Struct Type
* [ ] Mapping Type
* [ ] Nested Arrays
* [x] Fixed size arrays
* [ ] Dynamically-sized arrays
* [ ] Dynamically-sized byte array
* [ ] Bytes
* [x] String
* [ ] Structs
* [x] Get struct value with all members
* [x] Value Types
* [x] Get value of a single member in struct
* [ ] Reference Types
* [x] Struct type members (nested)
* [ ] Array type members
* [ ] Bytes and string type members
* [ ] Mapping type members
* [ ] Mapping Types
* [x] Value Type keys
* [ ] Fixed-size byte array keys
* [x] Dynamically-sized byte array keys
* [ ] Reference Type Mapping values
* [x] Struct type values
* [ ] Array type values
* [ ] Dynamically sized Bytes and string type values
* [x] Nested Mapping
## Observations
* The storage layouts are formed according to the rules in https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html#layout-of-state-variables-in-storage
* Structs can occupy multiple slots depending on the size required by its members.
* Fixed arrays can occupy multiple slots according to the size of the array and the type of array.