sbt-ethereum 0.5.1

Update: There’s a potentially dangerous bug in this release, introduced by my reworking of the ABI representation for v0.5.0. The ordering of arguments to multiargument functions may become scrambled, leading usually to execution failures but potentially to costly mistakes. Please do not use sbt-ethereum releases v0.5.0 and v0.5.1. If you have imported ABIs under either of those releases, use ethContractAbiDefaultDrop to delete and reimport them, and ethContractAbiAliasDrop to delete any aliases pointing to them. If you’ve compilations in you shoebox database produced with these version, please get in touch with me and I’ll try to help resolve those. This issue will be fixed in sbt-ethereum v0.5.2.

sbt-ethereum v0.5.1 has been released!

This is a very minor update, with a few tweaks and fixes.

The main reason to jump to a release now is that having to mess around to force an update the ABI alias cache on ethContractAbiImport is very annoying. This was a bug in the implementation of an sbt-ethereum 0.5.0 feature.

Highlights

  • Fix issue where ethContractAbiImport failed to update the parser’s ABI alias cache, requiring a session restart (or some other cache-updating access) before the alias could be used.
  • Via consuela, generate more informative Exceptions in response to smart contract failures, including decoding and access to any revert message text (both programmatically and in Exception messages)
  • Let unsigned integer values be entered as 0x-prefixed hex more generally, as well as in decimal
  • Let ethUtilHashKeccak256 accept quoted strings, decoded as UTF-8 bytes, to hash, as well as hex-formatted byte strings.
  • Minor message tweaks and typo fixes.

Examples

Get the Keccak256 Hash (standard Eth1 hash) of a quoted String

sbt:eth-command-line> ethUtilHashKeccak256 "Error(string)"
[info] 0x08c379a0afcc32b1a39302f7cb8073359698411ab5fd6e3edb2c02c0b5fba8aa
[success] Total time: 0 s, completed Feb 24, 2021, 9:00:40 PM

Note that the first four bytes of this string, a canonicalized function signature, constitute the function identifier.

sbt:eth-command-line> ethUtilFunctionIdentifier Error string
[info] Canonical signature: Error(string)
[info] Identifier: 0x08c379a0
[success] Total time: 0 s, completed Feb 24, 2021, 9:03:10 PM