Releases: jmhickman/web3.fs
version 0.3.1
Version 0.3.0 is alive
It's been awhile. Web3.fs has matured, and I've streamlined a ton of things, renamed functions, etc.
This is a breaking changes release. Function names and signatures have changed.
Largest change is probably the representation of EVM types. Because of how function argument data is actually sent to the EVM, things like 'Uint8' or 'Int176' or whatever are mostly a formality. In the end, the data looks the same as the 256bit version of whatever numeric. As a result, during early development, I chose to simplify the type system in order to just muscle through and get something that worked.
Of course, it's weird for users who expect to be entering a specific size of integer and supply an argument that doesn't match the actual type.
function(address,uint8)
[Address "0x443..."; Uint256 "5"]
Mostly, I didn't want to bloat up the type system with over 200 types, many of which will never be used in the real world. The system I came up with still increases bloat, but at least it's not all types and is mostly comprised of functions. You can dive the history of ABI.fs
if you're curious.
I have added functions (with very long names) for importing ABI and bytecode refs from a file. solc
and the output of Remix-IDE pasted into a file are supported.
Contract loading and prep/deployment have gained public functions for making the process more terse. See Helpers.fs
for those. Additionally, optimisticallyLoadDeployedContract
will do exactly what it says, not checking for the error side of the Result
and will just crash the application if there was an error.
I added colored terminal printing, as well as organizing how most RPC output is emitted to the console. Should be easier to read and understand at a glance.
Checksum addresses are supported now, and are emitted automatically wherever it matters, which is mostly on contract deploys and a few other places.
The makeEth__
functions are renamed. contractCall
, contractTransaction
, deployContract
, rpcCall
.
Many checks have been added to every pipeline. Prepare to see more Web3Errors (unless you're not logging. But you log things, right anon?)
I made an effort to update comments on public functions, as they had drifted from what some functions did rather substantially over time.
I think that's about it. This version has been in use for a couple of months now as I've moved through various Ethereum/solidity coursework and challenges. Ethernaut and DamnVulnerableDeFi have provided many chances to find bugs (so many bugs). The library is in a good place. Not perfect, but it can sustain use from people who understand what's going on.
Release v.0.2.2
Fix and feature, please see commit message.
v0.2.1
Version 0.2.0 is live.
Web3.fs is a little older and wiser now, hitting v0.2.0. Many things have changed since 0.1.0. Function signatures for the main Ethereum interaction functions, internal pipelined checks for common issues and mistakes. Tons of bugs, both dumb and subtle.
I've been using the library to perform the Ethernaut challenges, and I found most of the major mistakes and errors in 0.1.0 there. I took steps to reduce boilerplate with the createWeb3Environment
function, returning a convenient record with functions and a logger in it.
Terminal output is now colorized, which I feel is generally helpful.
I had intended to have a documentation wiki up for 0.2.0, and actually wrote a lot of it. But the code had so much churn that it ended up going stale very quickly. For now, the excerpt of the 'unit testing' script in .fsx on the README will have to suffice for those interested.
v0.1.0
This is the first release of Web3.fs that could be called reasonably working. In testing I have deployed contracts, made calls and transactions against the Rinkeby network. That said, there is a lot missing, and you still shouldn't use it unless you want to go spelunking the code and looking at the tradeoffs and gotchas.
Most notably, there is no testing apparatus, certain EVM datatypes aren't supported (most notably multi-dimensional arrays, the fixed
precision types, functions as arguments/return types) or have concessions in order to avoid diving into reflection.
Web3.fs was developed using the Frame wallet, available at here and here on github. Frame holds your private keys and makes available a localhost listener on http or wss. As such, there is no Accounts
module similar to web3.py.