Skip to content

Releases: Ackee-Blockchain/wake

v3.4.1

12 May 19:53
Compare
Choose a tag to compare

Fixes:

  • fixed crashes of the LSP server on macOS and Windows
    • vulnerability detectors are run in a subprocess on Linux and in the main process on macOS and Windows (where forking is not recommended/available)

v3.4.0

12 May 13:49
Compare
Choose a tag to compare

Features:

  • implemented LSP hover with helper text for Yul instructions
  • implemented LSP parser allowing new LSP features:
    • document links now work even with compilation errors
    • auto-completion for file imports
    • quick-fixes for some compiler warnings and errors
  • references count in LSP code lens are now clickable
  • implemented helper on_revert decorator for deployment & testing scripts
  • implemented API to import Address from private key, mnemonic or alias
  • added support for Solidity 0.8.20

Changes:

  • added --transaction-block-keep to default Anvil args to avoid high memory consumption
  • modified pytypes generator to better handle cyclic imports in original Solidity files

Fixes:

  • fixed access list/tx type set in BSC transactions - thanks to @aurel-fr
  • fixed LSP references to variable declarations
  • fixed LSP/compiler crashes caused by source unit aliases created in import directives

v3.3.0

24 Apr 12:06
Compare
Choose a tag to compare

Features:

  • added support for Avax C-chain
  • added client_version prop to Chain
  • added list of supported chains to the documentation

Changes:

  • now using 2 * base fee of pending block instead of 1.25 * base fee of pending block in deployment
  • 10% margin is added to the gas limit reported by eth_createAccessList

Fixes:

  • fixed issue when deleted files not detected in the LSP server
  • fixed compiler watch mode - newly created files that should be ignored are still compiled
  • compiler-errored files are now not included in build artifacts
  • fixed compiler watch mode crash when files renamed
  • fixed compilation/LSP server crash when IdentifierPathPart refers to SourceUnit
  • fixed gas estimates on Polygon occasionally fail
  • fixed unfinalized data cannot be queried on Avax
  • fixed Bad Request HTTP error thrown by some clients
  • fixed detection of the Hermez client
  • fixed nonce too low occasionally in deployment

v3.2.0

12 Apr 19:41
Compare
Choose a tag to compare

Features:

  • improved performance when running multiple tests in a single command by re-using already running development chain instances
  • added support for the Bor client (Polygon)
  • implemented --no-ask and --silent CLI args for woke run
  • added support for the Nitro client (Arbitrum)
  • added support for Binance Smart Chain
  • added support for the Hermez client (Polygon zkEVM)
  • added more chain explorer URLs to the index
  • migrated from pdbr to ipdb
  • implemented tx.raw_return_value property

Fixes:

  • fixed blockchain explorer API URLs (Goerli Etherscan, ...)
  • Account.balance now can be assigned using string literals with units
  • fixed unnecessary invocations of debug_traceTransaction when fetching events
  • fixed infinite loop of generating pytypes due to the watchdog dependency update (pinned version of the watchdog dependency as a temporal solution)
  • fixed test functions not detected in woke fuzz when decorated
  • Address(0) is not recognized as a precompiled contract in call traces anymore
  • fixed development chains kept running in some cases
  • fixed fuzzer subprocesses kept running in some cases
  • fixed handling of unpickleable exceptions in fuzzer
  • fixed massive memory consumption in long-running tests caused by implicitly storing all txs info

v3.1.0

25 Mar 10:27
Compare
Choose a tag to compare

Features:

  • implemented coverage analysis for woke test and woke fuzz (can be viewed using the Tools for Solidity VS Code extension)
  • generated pytypes contain Source file links to original Solidity sources
  • already deployed contracts can be recognized in call traces in forking mode with corresponding blockchain explorer API keys set
  • precompiled contracts are recognized in call traces
  • console logs are now supported with Ganache, Geth, and Hardhat
  • woke accounts list prints accounts in the sorted order (by their alias names)
  • woke run executes scripts in the sorted order
  • better error message when no fuzz flows are available to run

Fixes:

  • fixed AttributeError exception when detecting flows and invariants in FuzzTest
  • eth_createAccessList is not used in deployment by default if not available
  • access list from eth_createAccessList is only used in deployment by default if cheaper
  • fixed call traces with contracts that cannot be recognized from the creation code
  • fixed call traces with function calls with badly ABI-encoded data

v3.0.0: Deployment

15 Mar 12:01
Compare
Choose a tag to compare

Breaking changes:

  • transaction calls (request_type="tx", default for non-pure non-view functions) now always return a transaction object, this behavior cannot be changed
    • this does not apply to the .deploy() method that still returns a contract instance and a transaction object can be requested using return_tx=True
  • the latest available transaction type is now used instead of type 0 (legacy) transactions
  • ContractType.deployment_code() was renamed to ContractType.get_creation_code()

New features:

  • implemented woke.deployment module that automatically sets transaction fees, gas limit and prompts users to confirm transactions and interactively shows sent transactions
  • added support for Geth
  • chain.connect context manager now accepts gas_price and block_base_fee_per_gas kwargs
  • implemented chain.set_min_gas_price()
  • added support for type 1 (EIP-2930) and type 2 (EIP-1559) transactions
  • added effective_gas_price property to TransactionAbc
  • added support for access lists
    • access lists can be passed as kwargs to transaction calls or generated using the access_list request type
  • call requests now accept block kwarg to set execution context of the call
  • .deploy() methods now support request types
  • implemented woke accounts CLI commands
  • implemented Account.new() to create a new account with a random private key
  • implemented support for importing accounts from private keys, mnemonics and aliases
  • implemented raw message signing, structured message signing and message hash signing
  • implemented __bytes__ on Address
  • functions accepting Wei argument now also accept string literals with units (e.g. 10 gwei)
  • added tx field to TransactionRevertedError to access a transaction object of the transaction that caused the revert

Fixes:

  • estimate request now by default uses pending block execution context instead of latest
  • fixed @overload declarations in pytypes
  • type field is not longer set in type 0 transactions
  • tx.block and tx.tx_index are now always fetched from a transaction receipt
  • fixed Address comparison and hashing

v2.2.0

08 Mar 14:05
Compare
Choose a tag to compare
  • Added experimental support for Python 3.11
  • eth-ape, eth-brownie and web3 pytest plugins are no longer activated with woke test
  • Created Compilation and Migrating from Ape & Brownie documentation pages
  • Increased minimal version of rich to 13.3.2
    • Fixes issue: dataclasses (events and errors) without fields printed as an empty string

v2.1.0

23 Feb 11:36
Compare
Choose a tag to compare
  • added support for Solidity 0.8.19
  • implemented chain.set_next_block_base_fee_per_gas
  • pytypes now include pure and view functions of libraries
  • Address is not EIP-55 checksummed anymore for performance reasons
  • added new LSP command for generating imports graph
  • introduced new kwargs when launching a new dev chain - accounts, chain_id, fork and hardfork
  • Account labels are now applied in call traces
  • changed highlight range of some detectors in LSP server
  • added Shell completions section to docs Installation page
  • various bug fixes and user experience improvements

v2.0.0: Testing framework

07 Feb 18:48
Compare
Choose a tag to compare
  • Introduced Woke testing framework, see more info in the documentation
  • Added examples directory with testing framework examples
  • Introduced enhanced compiler module with binary artifacts
  • Changed default paths for storing the global config file and compiler binaries, files from old paths are automatically migrated
  • Fixed Solidity import paths resolution with remappings
  • Added new detectors:
    • Empty Byte Array Copy compiler bug detector
    • missing return detector
    • msg.value used in non-payable function detector
    • proxy and implementation contract selector clashes detector
    • unsafe use of tx.origin detector
    • unused contracts detector
  • Started using Poetry
  • Fixes and stability improvements

v1.3.1

13 Dec 20:48
Compare
Choose a tag to compare
  • Fixed reusing LSP build artifacts causing code lens glitches
  • Fixed compiling two contracts with the same name in the same compilation unit resulting in contract build artifacts overwriting