solidity-shell
Version:
An interactive Solidity shell with lightweight session recording and remote compiler support
140 lines (106 loc) • 5.71 kB
Markdown
# Change Log
All notable changes will be documented in this file.
## v0.2.4
- new: configure an etherscan.io apiKey `.config set etherscanApiKey <newApiKey>` (default: `YourApiKeyToken` demo key) #25 #24
## v0.2.3
- update: dependencies
## v0.2.2
- new: inspection commands: `.inspect` contract raw storage, show generated bytecode, opcodes, storageLayout - #23
<img width="941" alt="image" src="https://user-images.githubusercontent.com/2865694/183737870-8faa103d-2564-435b-8789-d9b4cde94c10.png">
```
.inspect
bytecode ... show bytecode of underlying contract
opcodes ... show disassembled opcodes of underlying contract
storageLayout ... show variable to storage slot mapping for underlying contract
storage <slot> <num> [<address>] ... show raw storage at slot of underlying deployed contract
deployed ... debug: show internal contract object
```
## v0.2.1
- fix: feed current compiler version into abi-to-sol; strip attribution and other code #20 #21
- update: compiler list
- update: built-in solc -> 0.8.16
## v0.2.0
- new: new command to fetch & load interface declaration from etherscan.io #19

## v0.1.2
- fix: support require(), type, abstract, library
- update: compiler list
- update: built-in solc -> 0.8.15
- update: dependencies
## v0.1.1
- fix: return appropriate error message when trying to return an uninit storage pointer - #17
- fix: support enums
```
🚀 Entering interactive Solidity ^0.8.13 shell (🧁:Ganache built-in). '.help' and '.exit' are your friends.
» enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }
» uint8(FreshJuiceSize.LARGE)
2
```
- fix: case insensitive bool match for `.config set <var> True|False|true|false`
- update: dependencies
## v0.1.0
⚠️ pot. breaking changes: `solidity-shell` now ships with ganache. use `.chain set-provider` to switch chain providers. the `built-in` ganache provider is used by default.
- new: built in ganache provider
- new: `.chain` subcommand
- `.chain restart` - restarts the service (formerly known as `.restartblockchain`)
- `.chain set-provider [fork-url]` - switch between the internal or an external `ganache-cli` command or url-provider. Optionally specify a ganache fork-url.
- ` .chain set-provider internal https://mainnet.infura.io/v3/yourApiKey `
- `.chain accounts` - show ganache accounts
- `.chain eth_<X> [args...]` - arbitrary eth JSONrpc method calls to blockchain provider.
- e.g. `.chain eth_accounts` returns the blockchain providers response to the `eth_accounts` JSONrpc call.
- new: command line switches:
- `--fork` overrides fork-url option for internal ganache provider `solidity-shell --fork https://mainnet.infura.io/v3/yourApiKey`.
- `--reset-config` resets the config file.
- `--show-config-file` prints the path to the config file.
- fix: better error handling. prevent vicious cycles where broken config trashes the app 🤦♂️
- update: dependencies and solc references updated
## v0.0.11
- new: configurable call and deploy gas
- new: `.restartblockchain` command to restart ganache e.g. after config changes
- fix: fixed returnval for some keywords
- fix: show result for functions declaring multiple return vals
- fix: naive fix to resolve function declarations for multi returnval function invocations.
<img width="670" alt="image" src="https://user-images.githubusercontent.com/2865694/157049887-d8e8f763-94e4-43fa-bf23-042e2bbe90d9.png">
## v0.0.10
- new: update to solc@0.8.11
- new: basic autocomplete for built-ins (configurable via `.config`) - #11
- fix: return value of unit constants (e.g. `2 ether`) - #12
- fix: distinguish between/ autoguess const signed and unsigned int return values - #12
- update: minor refactoring - #11
## v0.0.9
- new: support the `import` directive - #8
- new: experimental support for `https` imports, i.e. `import "https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/master/contracts/token/ERC721/IERC721.sol"`. This can be disabled by setting ` » .config set resolveHttpImports false`.
- fix: `localhost` alias may not be available on some systems - #9
## v0.0.8
- new: Passthru ganache-cli settings as options to solidity-shell #7
```shell
solidity-shell -- -fork https://mainnet.infura.io/v3/yourToken
```
Query a live contracts `ERC20.name()`:
```solidity
» interface ERC20 {
multi> function name() external view returns (string memory);
multi> }
» ERC20(0xB8c77482e45F1F44dE1745F52C74426C631bDD52).name()
BNB
```
- fix: `.config set` handling of strings and multi-word arguments
- fix: `exit` exits solidity-shell completely
## v0.0.7
- fix: rework remote compiler
- added a remoteCompiler wrapper
- fix: always use latest compiler shipped with this package by default
- new: ship with solc 0.8.10
- preference: use solc shipped with package by default, else check static solcVersions list and fetch remote compiler, else update solcVersions list and fetch remote compiler.
- fix: better error handling when changing compiler version
- new: support `error` keyword and fix memory/storage type declarations
## v0.0.6
- fix: handle interface declarations
## v0.0.5
- fix: support blocks/loops - #2
- fix: better ganache error handling and minor refactoring
## v0.0.4
- new: dynamic compiler selection via pragma directive
- changing the solidity version pragma attempts to load the selected compiler version remotely. e.g. type `pragma solidity 0.8.4` to switch to solidity v0.8.4.
## v0.0.1 - 0.0.3
- first alpha