UNPKG

solidity-shell

Version:

An interactive Solidity shell with lightweight session recording and remote compiler support

140 lines (106 loc) 5.71 kB
# 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 ![shell-fetch-interface](https://user-images.githubusercontent.com/2865694/183062446-c952b308-9fc7-49f9-8308-3eac09ca3b4a.gif) ## 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