Proposal to stabilize Web3 1.x #3070
Description
At Nomic Labs we’ve been collaborating with the Ethereum Foundation to improve the developer experience on Ethereum, and we believe an important part of this process for the short-term is to help stabilize the web3.js library. In this document we propose a plan to move in this direction.
First, some quick context:
- The 1.0.0-beta-38 release of the library broke backwards compatibility
- Recently, the library was split into two branches
- 1.x branch continuing from where the 1.0.0-beta-37 left off
- 2.x branch, continuing from 1.0.0-beta-55. This branch isn’t backward compatible with 1.x.
The versions that are widely used across the ecosystem right now are the 1.0.0-beta-37 and its subsequent 1.x releases. These releases still contain a significant amount of known bugs that have been reported, are fixed on the 2.x branch, but remain live in the versions used in production depoyments due to the releases that now exist in the 2.x branch not having significant adoption.
The fixes done on 2.x represent a ton of work that’s already been done, and it would be great if it were repackaged in a form that is usable on the web3.js deployments across the ecosystem.
We’ve gone through all the releases between 1.0.0-beta-38 and 1.0.0-beta-55 (the latest release that became the 2.x branch) and collected the list of issues that have been fixed. Thankfully @nivida has done a great job at documenting each release.
Our simple proposal consists of backporting these bug fixes from the 2.x branch to the 1.x branch, where it makes sense. We assume there may be some issues in the list that shouldn’t be included or aren’t relevant anymore.
The main objective here is stabilizing the 1.x branch, so we believe stability should be the main driver for decision making throughout this process. From our perspective this would mean, at least:
- None of the backporting work should break backwards compatibility against the 1.0.0-beta-37 release
- If an issue in this list isn’t a bug it should be removed from the list
- If the bug reported in an issue in the list was introduced in a version later to beta-37, then the issue should be removed from the list
- Release management should be thoroughly considered
If an issue is removed from the list because of 2 or 3, it would be valuable to keep track of this.
When it comes to releases we think there should be an RC release, which teams relying on the library can test comfortably, and once any issues that arise are fixed then the proper release.
Prioritizing this list represents a difficult task to us, so we invite people with a more intimate knowledge of the codebase to highlight issues of major importance that should be included in the first release. The list is ordered in the exact same order the fixes were released on the 2.x branch, so we assume there’s been prioritization done by Samuel already. Overall, given that projects relying on the library have been a long time without a release that’s compatible with their deployments, and the work doesn’t need to be done from scratch, we think that just aiming to follow that same release order and getting them all released as soon as possible on 1.x is a reasonable approach.
When it comes to the cadence of the releases containing these fixes, we wouldn’t prioritize speed. We think that appropriately spaced releases that allow the community to properly test each release candidate is important. The objective of such a stage in each release is to identify any new issues that might have been inadvertently introduced, and fix them before moving on to the final release. Given that the amount of issues is significant (244 in the unfiltered list we collected), there should be enough time in-between each release for proper testing. We believe this is somewhere between 3 and 6 weeks between each release.
In addition, given that the 1.x branch is considered the stable release and the 2.x branch is considered the development branch, we suggest the default branch on the Github repository be set to 1.x. The rationale being to help the userbase easily access the code they’re using as a reference when needed.
We welcome any ideas and suggestions that would add to this proposal for a short-term plan to bring more stability to web3.js.
If you agree this should be the way forward, please voice your support below in the comments or with a thumbs up reaction.
These are the items on @alcuadrado's / NomicLab's original list, organized into 4 categories:
- Needs investigation
- Triage (e.g we've identified that these need back-porting, regression tests, or both)
- Removals with a documented reason (e.g. is fixed, wont-fix, duplicate, etc)
- Removals based an initial pruning of the list by @nivida, waiting for a documented reason.
- Many of these may only be relevant to the 2.x branch
(Goal is to move everything into the Removals with Reason
category.)
@joshstevens19 has added an additional set of PRs relating to stabilizing Typescript on 1.x in a second comment below.
There's a copy of the original list here
Editors: (if you're editing, pls add your name here)
Needs investigation
Bundling / Publication
- Uncaught TypeError: Cannot read property 'node' of undefined. #1986 Uncaught TypeError: Cannot read property 'node' of undefined.
- 'TypeError: t.XMLHttpRequest is not a constructor' when using web3.min.js #2061 'TypeError: t.XMLHttpRequest is not a constructor' when using web3.min.js
- @@any-promise/REGISTRATION #2100 @@any-promise/REGISTRATION
Dependencies
- Security vulnerability: extend 3.0.1 module in web3-bzz #2792 Security vulnerability: extend 3.0.1 module in web3-bzz
Security
- Insecure credential storage: https://nodesecurity.io/advisories/877
- breaking change should be done on the 1.3.0 release and applied in 2.x as well
- Issue: Feature Discussion - Let's Upgrade Security On the Wallet #2739
Other
(Added back in because of recent reports that it's alive...) (cg)
- sendSignedTransaction failing when calling getTransactionReceipt #1255 sendSignedTransaction: failing when calling getTransactionReceipt
- It looks like this might have been a bug Geth fixed in 1.8.x wrt tx availability?
- aionnetwork maintains their own web3 fork and fixed by letting error ride
- See also this comment about still being a problem for Parity .... (cg)
Broken
- Confirmation of transaction each second #1239 Confirmation of transaction each second (nv)
- Needs fix here (cg)
- PR: Fixes transaction confirmations with the HttpProvider #3140
- tests: E2E
- docs: n/a
Typescript
@joshstevens19 will solve all of these.
These can probably all be addressed by a single back-port PR from 2.x, after modifying
the latest types as necessary and double-checking everything makes sense.
- Web3 typescript definition has no default export #1248 Web3 typescript definition has no default export
- 1.0 beta.27 not working for typescript "resolves to a non-module entity" #1259 1.0 beta.27 not working for typescript "resolves to a non-module entity"
- TypeScript definition CommonJS compatibility #1408 TypeScript definition CommonJS compatibility
- web3.version.getNode() alternative in v1.0 using typescript #2514 web3.version.getNode() alternative in v1.0 using typescript
- Typescript return type of web3.eth.accounts.signTransaction() is incorrect. #2228 Typescript return type of web3.eth.accounts.signTransaction() is incorrect.
- fix - 2819 - Block transactions on some instances returns an array of… #2844 fix - 2819 - Block transactions on some instances returns an array of…
- fix: make auto-resolve to the root module when importing typings #2645 fix: make auto-resolve to the root module when importing typings
- Write better types for ens and update the docs #2618 Write better types for ens and update the docs
- docs: show how you can get the types to work in a
commonjs
module #2550 docs: show how you can get the types to work in acommonjs
module -
objects
toany
on typing's return + dtslint fix + general test fixes #2516objects
toany
on typing's return + dtslint fix + general test fixes -
Sign
needed to have a signature on typing's + fix incorrect docs #2471Sign
needed to have a signature on typing's + fix incorrect docs - fix:
AbiItem
was missinganonymous
#2422 fix:AbiItem
was missinganonymous
- fix: Accounts typings #2417 fix: Accounts typings
- fix:
TransactionReceipt
typings #2416 fix:TransactionReceipt
typings - fix: turn allowSyntheticDefaultImports to false #2415 fix: turn allowSyntheticDefaultImports to false
- add postinstall script in
files
in package.json #2336 add postinstall script infiles
in package.json - remove reference comment to see if build passes #2322 remove reference comment to see if build passes
- fix: add
status
ontoTransactionReceipt
#2288 fix: addstatus
ontoTransactionReceipt
- allow web3-utils to work in projects with
"noImplicitAny": true,
#2280 allow web3-utils to work in projects with `"noImplicitAny": true, - write missing typing for
web3-eth-personal
#2278 write missing typing forweb3-eth-personal
- fix: patch the angular
browser.js
to allow `{crypto: true, stream: … #2262 fix: patch the angularbrowser.js
to allow `{crypto: true, stream: … - Fix/types reference node types #2261 Fix/types reference node types
- remove redundant comments #2253 remove redundant comments
- fix types for contract methods #2231 fix types for contract methods
- fix: install
@types/node
so you do not need to add types > node in … #2219 fix: install@types/node
so you do not need to add types > node in … - fix:
fromWei
andtoWei
typings #2218 fix:fromWei
andtoWei
typings - fix:
signTransaction
should returnPromise<SignedTransaction>
#2217 fix:signTransaction
should returnPromise<SignedTransaction>
- Fix - allow web3 to work in iframes with third party cookies turned off #2203 Fix - allow web3 to work in iframes with third party cookies turned off
- Run all types tests #2134 Run all types tests
- Final web3 types PR #2133 Final web3 types PR
- Web3 shh typings #2128 Web3 shh typings
- Web3 bzz types #2125 Web3 bzz types
- Web3 types #2123 Web3 types
- web3-eth typings #2122 web3-eth typings
- Web3 net types #2121 Web3 net types
- Web3 eth contract types #2119 Web3 eth contract types
- Web3 eth accounts #2118 Web3 eth accounts
- Web3 core types #2114 Web3 core types
- move
web3-providers
down the tree toweb3-core
#2113 moveweb3-providers
down the tree toweb3-core
- Web3 provider types #2112 Web3 provider types
- Web3-eth-abi types #2096 Web3-eth-abi types
- Web3 eth iban types #2090 Web3 eth iban types
- Web3 utils full test coverage for types #2084 Web3 utils full test coverage for types
- fix unneeded
{}¬ in
bzz{}¬ in
bzz - Web3-bzz types #2073 Web3-bzz types
- Declaring types within the repos packages itself #2056 Declaring types within the repos packages itself
- Transaction.to can be null #2753 Transaction.to can be null
- Fix callback types #2672 Fix callback types
- Web3ModuleOptions interface updated #2643 Web3ModuleOptions interface updated
- Add index to Wallet type #2619 Add index to Wallet type
- eth.subscribe types improvement #2585 eth.subscribe types improvement
- Types for HttpProvider options updated #2575 Types for HttpProvider options updated
- DeployTransactionResponse renamed to ContractSendMethod #2557 DeployTransactionResponse renamed to ContractSendMethod
- EventOptions interface types updated #2556 EventOptions interface types updated
- Use genuine BN type #2529 Use genuine BN type
- Separate Transaction and TransactionConfig in typings #2479 Separate Transaction and TransactionConfig in typings
- AbiInput and AbiOutput interface update #2478 AbiInput and AbiOutput interface update
- Types/fixes #2233 Types/fixes
Lower priority
- Wrong encoding and decoding tests for two-dimensional variadic arrays #1570 - updated incorrect tests for abi encoding and decoding
- code: n/a
- test: might need change per comment in 1570 (cg)
- docs: n/a
- [1.0] account management inconsistency #1204 [1.0] account management inconsistency
- block timestamp - "Error: Number can only safely store up to 53 bits" #1905 block timestamp - "Error: Number can only safely store up to 53 bits"
PR Opened (back-porting...)
- Where is
dist
folder andweb3.min.js
? #1041 Where is dist folder and web3.min.js?- code: needs fix here ((see build dist into packages/web3/dist,fix #1041 #1336) (cg)
- test: E2E/regression (vs. virtual registry & build-checker in CI; let us plan this in the e2e issue (nv))
- docs: n/a
- Provider does not reconnect after failure #1085, [v1.2.1] Connection not Open. #3092, Websocket provider reconnecting timeout and reconnection event added #2994 Provider does not reconnect after failure, see Full support for websocket reconnection/resubscription #1966 (The PR from @gabmontes I've used as base for the implementation of it in 2.x could be used (nv))
- feature: detect subscription support in provider #1015 feature: detect subscription support in provider (see supportsSubscriptions added to providers #2632, backport) (cg)
- setter and getter method for TIMEOUTBLOCK #1581 setter and getter method for TIMEOUTBLOCK (nv)
- PR: The transaction confirmation workflow can now be configured #3130
- tests: regression
- docs: need updating
- Contract.methods.myMethod.send receipt is missing on error event #1859 Contract.methods.myMethod.send receipt is missing on error event (nv)
- PR: receipt is missing on error event #3129
- tests: E2E/regression (as commented in the PR do we have to clean up the contract tests (nv))
- docs: need updating
- 'request.withCredentials = true' breaks CORS #1802, CORS issue with 1.2.0 on Firefox and Safari #2978: 'request.withCredentials = true' breaks CORS
- code: fixed by HttpProvider: CORS issue with Firefox and Safari #3112 (nv)
- test: E2E/regression (cg); let us create new issues for adding e2e tests (nv)
- docs: investigate
- Invalid signature with web3.eth.accounts.signTransaction on testrpc #1169 accounts.signTransaction: Invalid signature with testrpc
- code: fixed by Use eth_chainId when signing transactions #3097 (cg)
- tests: E2E/regression vs ganache (cg)
- docs: n/a
- Possible invalid gas check #2381 Possible invalid gas check
- PR: Gas check fix back-ported to 1.x #3123 (nv)
- tests: E2E/regression (cg) let us create new issues for adding e2e tests (nv)
- docs: n/a
- Documenting web3.eth.getChainId() #2534 Documenting web3.eth.getChainId() (nv)
- PR: Add eth.getChainId method to 1.x #3113 (nv)
- tests: added (nv)
- docs: n/a
- Possible incorrect parsing of receipt status #2183 Possible incorrect parsing of receipt status
- PR Allow 'null' receipt.status values #3090
- code: see comment in Possible incorrect parsing of receipt status #2183 (cg)
- tests: regression (cg)
- docs: n/a
- web3.utils.randomHex does not produce consistent length strings #1490 web3.utils.randomHex does not produce consistent length strings
- PR Fix randomHex #3085
- code: back-port from: randomHex fixed #2794 (cg)
- test: regression ((cg)
- docs: n/a ((cg)
- hexToNumberString sometimes interprets string as decimal #2184 hexToNumberString sometimes interprets string as decimal (nv)
- PR Fix hexToNumber and hexToNumberString prefix validation #3086
- code: back-port from fix(utils): hexToNumberString prefix validation #2884 (cg)
- test: regression (cg)
- docs: n/a
- isBN breaks in production #1777 isBN breaks in production
- PR Fix utils.isBN #3087
- code: back-port utils.isBN fixed #2793 (cg)
- test: n/a
- docs: n/a
- Utils functions mention BigNumber instead of BN in error messages #2468 Utils functions mention BigNumber instead of BN in error messages
- PR Update error strings in utils module #3088
- code: back-port Error strings in utils module updated #2705 (cg)
- test: regression
- docs: n/a
-
fromBlock: 0
defaults tolatest
,fromBlock: 1
works correctly ineth.getPastLogs
#1100 fromBlock: 0 defaults to latest, fromBlock: 1 works correctly in eth.getPastLogs (nv)- PR Allow 0 fromBlock, toBlock values #3089 (nv)
- code: 1.x needs fix (cg)
- test: regression (cg)
- docs: n/a
- Add mention of the "Ethereum Signed Message" prefix to the eth.personal.sign documentation #2293 Explain "Ethereum Signed Message" prefix to the eth.personal.sign documentation
- PR Clarify eth.personal.sign docs #3091
- docs: see [GH-2293]-Adding clarification of how data needs to be prefix #2295. (Adds clarifying example using ecRecover ) (cg)
- Invalid chainId used to sign transactions #2378 Invalid chainId used to sign transactions
- PR Use eth_chainId when signing transactions #3097
- code: see 2378 (cg)
- tests: updated (cg)
- docs: n/a
- Unhandled Promise Rejection on 'sendRequest' #2062 Unhandled Promise Rejection on 'sendRequest'
- PR Bubble up tx signing errors #3105
- code: see also Bubble up tx signing errors #2063
- tests: needs E2E/regression (PR Add more wallet signing tests #3163) (cg)
- docs: n/a
- eth-util signing... (nv)
- docs: n/a
- PR: eth.accounts.signTransaction method fixed #3141 (in-review)
- code: use ethereumjs-tx, see Local signing fixed #2580 (cg)
- ethereumjs-tx api is tricky to map to the function signature.
- see comment in 3125
- tests: accounts.signTransaction E2E test is failing (cg)
- PR: Signing fixes back-ported from 2.x #3125
- Incorrect error from invalid private key for signTransaction #1998 accounts.signTransaction: incorrect error from invalid private key
- Don't kill 1/2 bytes from private keys please #2033 accounts.signTransaction: Don't kill 1/2 bytes from private keys please
- web3.eth.accounts.signTransaction produced errant bytecode #1074 web3.eth.accounts.signTransaction produced errant bytecode
Removals (with reason)
Duplicates
- build dist into packages/web3/dist,fix #1041 #1336 build dist into packages/web3/dist,fix (Dup: Where is
dist
folder andweb3.min.js
? #1041) (cg) - Question: Keepalive for ws subscriptions? #1391 Question: Keepalive for ws subscriptions? (Dup: Provider does not reconnect after failure #1085) (cg)
- Reconnect on Websocket Drop #1558 Reconnect on Websocket Drop (Dup: Provider does not reconnect after failure #1085) (cg)
- #1570 - updated incorrect tests for abi encoding and decoding #1591 (Dup: Wrong encoding and decoding tests for two-dimensional variadic arrays #1570)(cg)
- Reconnect feature is missing when websocket connection is closed. #1852 Reconnect feature missing when ws connection is closed. (Dup: Provider does not reconnect after failure #1085)(cg)
- Can't assign more than one handler to connection events #1933 Can't assign more than one handler to connection events (Dup: Provider does not reconnect after failure #1085)(cg)
- new Buffer is deprecated and unsafe #1952 new Buffer is deprecated and unsafe (Dup: new Buffer is deprecated and unsafe #1950) (cg)
- Include minified file in npm release #2013 Include minified file in npm release (Dup: Where is
dist
folder andweb3.min.js
? #1041) (cg) -
PromiEvent
event listeneron
confirmations
not returning correct confirmation information #2418 confirmations not returning correct confirmation information (Dup Confirmation of transaction each second #1239) (cg) - Async methods never finish on non-200 HTTP responses #2781 Async methods never finish on non-200 HTTP responses (Dup HttpProvider promise doesn't resolve on invalid RPC endpoint. #2396)(cg)
-
returnValues
doesn't exist on event object #2265 returnValues doesn't exist on event object (Dup decodeLog() is broken after updating to beta.41 from beta.35 #2268)(cg) - on version 1.0.0-beta.41,
web3.utils.randomHex
is undefined #2270 on version 1.0.0-beta.41, randomHex is undefined (Dup web3.utils.randomHex does not produce consistent length strings #1490) (cg) - Docs say to link "dist/web3.min.js" but there is no web3.min.js. #2383 Docs say to link "dist/web3.min.js" but DNE. (Dup Where is
dist
folder andweb3.min.js
? #1041) (cg) - Release / Debug build generated json-rpc calls are different #2501 Release / Debug build generated json-rpc calls are different (Dup ProviderResolver is not minification safe #2484) (cg)
- Web3@1.0.0-beta.50 (Webkit, Gecko) CORS Error #2559 Web3@1.0.0-beta.50 (Webkit, Gecko) CORS Error (Dup 'request.withCredentials = true' breaks CORS #1802) (cg)
- Subscribe to logs is broken in beta.49+ #2563 Subscribe to logs is broken in beta.49+ (Dup myContract.events.MyEvent is broken in beta.49-51 #2611) (cg)
- Can't get tx receipt of reverted transaction #2612 Can't get tx receipt of reverted transaction (Dup No receipt after contract deploy #2601) (cg)
- sendRawTransaction returns "Invalid JSON RPC Response" #1517 sendRawTransaction: returns "Invalid JSON RPC Response" (Dup Invalid signature with web3.eth.accounts.signTransaction on testrpc #1169) (cg)
- Cannot read property of blockNumber of null #2246 Cannot read property of blockNumber of null (Dup sendSignedTransaction failing when calling getTransactionReceipt #1255) (cg)
- sendSignedTransaction is not working #1134 accounts.signTransaction: is not working (Dup web3.eth.accounts.signTransaction produced errant bytecode #1074) (cg)
Wont fix
- Return events on sendTransaction #1377 Return events on sendTransaction (Wont fix see comment)(cg)
- Rename sha3 to keccak256 #2707 Rename sha3 to keccak256 (Wont fix fixed on 2.x / internal cosmetics)(cg)
- Send a transaction using passphrase and private key #2247 Using passphrase and private key (Wont fix: is gitter question)(cg)
- EIP-1193 updates #2856 EIP-1193 updates (Will be done after the EIP got finalized (nv))
- Getting contract deploy error even though deploy was successful ("The contract code couldn't be stored, please check your gas limit") #1477 Getting contract deploy error even though deploy was successful
Is fixed in 1.2.1
- getTransaction breaks trying to access blockNumber of null response #2375 getTransaction breaks trying to access blockNumber of null response (nv)
- (1.0 branch) 'new web3' overwrites the previous Contract._eth #854 (1.0 branch) 'new web3' overwrites the previous Contract._eth (nv)
- Update WS library to newest version ^5.2.0 #1681 Update WS library to newest version ^5.2.0
- Package bignumber.js is not up-to-date #1760 Package bignumber.js is not up-to-date (complaint about the Frozeman fork)
- deps are bignumber.js 4.0.0 & ethers.js (cg)
- Cannot read property 'name' of undefined at Contract._generateEventOptions #1926 Cannot read property 'name' of undefined at Contract._generateEventOptions
- Switch to different linting tool. #528 Switch to different linting tool.
- linting LGTM (cg)
- new Buffer is deprecated and unsafe #1950 new Buffer is deprecated and unsafe
- Setting gasPrice to 0 has no effect (web3 1.0-beta.30) #1458 Setting gasPrice to 0 has no effect (web3 1.0-beta.30)
- sendTransaction: unhandled promise rejection #2500 sendTransaction: unhandled promise rejection (on eth_gasPrice failure)
- could not reproduce, (looks like issue opener is mis-formatting currentProvider.send)
- TypeError at NewAccountMethod.set #2269 TypeError at NewAccountMethod.set
- Verified this works on 1.x using geth v1.9.5 (cg)
- web3.eth.accounts.hashMessage() does not accept arbitrary hex input #2300 web3.eth.accounts.hashMessage() does not accept arbitrary hex input
- Verified this works on v1.2.1 (cg)
- Use regular functions and not arrow functions in the index.js file of the modules. #2503 Use regular functions and not arrow functions in the index.js file of the modules.
- Verified there are no
() =>
fns in 1.x. (cg)
- Verified there are no
- ecRecover issue, please help #2565 ecRecover issue, please help
- Verified
ecRecover
works as expected on 1.x in Clarify eth.personal.sign docs #3091 (cg)
- Verified
- Personal ECRecover validates sig as address #2377 Personal ECRecover validates sig as address
- Verified
ecRecover
works as expected on 1.x in Clarify eth.personal.sign docs #3091 (cg)
- Verified
- BN example does not work #2687 BN example does not work
- Cannot set provider on provider-less Web3 instance #2763 Cannot set provider on provider-less Web3 instance
- Verified works as expected on 1.x (cg)
-
isBigNumber
is not available in web3-utils #2835 isBigNumber is not available in web3-utilsisBigNumber
is exported here on 1.x
- contractInstance.options.jsonInterface is undefined #2494 contractInstance.options.jsonInterface is undefined
- sendSignedTransaction fails for rawTransaction with leading zeroes #1126 accounts.signTransaction: fails for rawTransaction with leading zeroes
- Fixed with Return r, s, and v without leading 0's #1288
- Accounts.getGasPrice() invocation error in Accounts.signTransaction() #2578 accounts.signTransaction: getGasPrice() invocation error in
- Encoding incompatibility in status transaction receipt #2401 Encoding incompatibility in status transaction receipt
- code: 1.x already handles case correctly (cg)
- regression tests adding in Allow 'null' receipt.status values #3090
- Error on Ubuntu #2482 ecKey.getPublic(...).slice is not a function (Ubuntu)
- sendSignedTransaction failing when calling getTransactionReceipt #1255 sendSignedTransaction: failing when calling getTransactionReceipt
- It looks like this might have been a bug Geth fixed in 1.8.x wrt tx availability?
- aionnetwork maintains their own web3 fork and fixed by letting error ride
- Couldn’t reproduce it (nv)
Only relevant to 2.0 Branch
I've commented out the list here because the listed issues arent relevant to stabilize 1.0. (nv)
I've uncommented out this list so we can see the complete survey (cg)
- this.methods.contractConstructor is not a function #2431 this.methods.contractConstructor is not a function (nv)
- web3-eth-accounts/dist/web3-eth-accounts wording error #2469 web3-eth-accounts/dist/web3-eth-accounts wording error (nv)
- Misleading error message: "Can not send value to non-payable contract method or constructor" #2488 Misleading error message: "Can not send value to non-payable contract method or constructor" (nv)
- Not possible to call methods on existing contract #2499 Not possible to call methods on existing contract (nv)
- Wrong addresses when instancing two contract in contructor #2502 Wrong addresses when instancing two contract in contructor (nv)
- Whisper and IPCProvider (1.0.0 beta 48) #2508 Whisper and IPCProvider (1.0.0 beta 48) (nv)
- Filter in options to filter contract events is no longer a valid parameter #2532 Filter in options to filter contract events is no longer a valid parameter (nv)
- Subscribe to pendingTransactions fails while using IPC Provider #2539 Subscribe to pendingTransactions fails while using IPC Provider (nv)
- Contract function send does not return the provider error. #2553 Contract function send does not return the provider error. (nv)
- Sending signed tx returns an error while tx was successfull #2587 Sending signed tx returns an error while tx was successfull (nv)
- WebsocketProvider on React-Native url == null #2602 WebsocketProvider on React-Native url == null (nv)
- Problem with decoding complex types returned from contract function #2607 Problem with decoding complex types returned from contract function (nv)
- Error when when connection close while getting logs #2614 Error when when connection close while getting logs (nv)
- ContractModuleFactory expects only three arguments, receives four. #2670 ContractModuleFactory expects only three arguments, receives four. (nv)
- Calling new Web3() without a provider breaks #2689 Calling new Web3() without a provider breaks (nv)
- WebsocketProvider event emitter problem #2711 WebsocketProvider event emitter problem (nv)
- Improve error handling of subscriptions #2731 Improve error handling of subscriptions (nv)
- Incorrect behavior for signTransaction function #2733 Incorrect behavior for signTransaction function (nv)
- Fix error on contract method proxy when method parameter is null. #2815 Fix error on contract method proxy when method parameter is null. (nv)
- Memory leak in 55 #2851 Memory leak in 55 (nv)
- Fix JSON-RPC response validation #2862 Fix JSON-RPC response validation (nv)
- convert salt to Buffer instance before encrypting #2950 convert salt to Buffer instance before encrypting (nv)
- implement fallback from built-in scrypt to scryptsy/scrypt packages #2952 implement fallback from built-in scrypt to scryptsy/scrypt packages (nv)
- Providers Improvements #2955 Providers Improvements (nv)
- Error handling fixed with callbacks for BatchRequests #2993 Error handling fixed with callbacks for BatchRequests (nv)
- clearSubscriptions method in AbstractSocketProvider fixed #3007 clearSubscriptions method in AbstractSocketProvider fixed (nv)
- web3.eth.getBlockTransactionCount do not return any response #2369 web3.eth.getBlockTransactionCount do not return any response (nv)
- Consider bumping the version of dependency scrypt.js from 0.2.0 to 0.3.0 #2385 Consider bumping the version of dependency scrypt.js from 0.2.0 to 0.3.0 (nv)
- 1.0.0-beta.46 subscribe events without callback throw exception:
TypeError: callback is not a function
#2364 1.0.0-beta.46 subscribe events without callback throw exception: TypeError: callback is not a function (nv) - indexed parameters are shifted by one when decoding logs #2368 indexed parameters are shifted by one when decoding logs (nv)
- payable is not assigned in the contructor (AbiItemModel) #2285 payable is not assigned in the contructor (AbiItemModel) (nv)
- web3.js 1.0.0-beta.41 batch.execute() : Error: Given input "function (err, res) {....}" is not a number. #2289 web3.js 1.0.0-beta.41 batch.execute() : Error: Given input "function (err, res) {....}" is not a number. (nv)
- Update ProviderResolver for the new EIP-1193 spec #2342 Update ProviderResolver for the new EIP-1193 spec (nv)
- Mistake a typing of EthereumProvider.send #2329 Mistake a typing of EthereumProvider.send (nv)
- 1.0.0-beta.39 - External transaction signing with web3.eth.accounts.signTransaction(tx, privateKey) does not work without default account #2243 1.0.0-beta.39 - External transaction signing with accounts.signTransaction does not work without default account (nv)
- Registry creation in ENS module throws an exception #2424 Registry creation in ENS module throws an exception (nv)
- web3-utils types not compatible with current @types/bn.js #2290 web3-utils types not compatible with current @types/bn.js (nv)
- Cannot find name 'Buffer'. Can't find module 'net'. #2260 Cannot find name 'Buffer'. Can't find module 'net'. (nv)
- [types][web3-utils] Use bn.js directly for class BN instead of wrapper #2350 [types][web3-utils] Use bn.js directly for class BN instead of wrapper (nv)
- [typescript] Account interface does not seems to be right #2374 [typescript] Account interface does not seems to be right (nv)
- filter should be optional in EventOptions #2554 filter should be optional in EventOptions (nv)
- web3.eth.subscribe("logs", ..) types issue #2583 web3.eth.subscribe("logs", ..) types issue (nv)
- web3.eth.accounts.wallet typings and documentation #2591 web3.eth.accounts.wallet typings and documentation (nv)
- web3.eth.getBlock return Block type in typescript have misleading transaction property #2819 web3.eth.getBlock return Block type in typescript have misleading transaction property (nv)
- Web3 1.0.0-beta.38 TypeError: DeployTransactionResponse estimateGas() arguments and return type incorrect #2230 TypeError: DeployTransactionResponse estimateGas() types incorrect (nv)
- Rename DeployTransactionResponse #2551 Rename DeployTransactionResponse (nv)
-
allowSyntheticDefaultImports
is too opinionated #2382 allowSyntheticDefaultImports is too opinionated (nv) - Fix TypeScript 'ContractOptions' interface #2939 Fix TypeScript 'ContractOptions' interface (nv)
- Fix Subscription Type #2919 Fix Subscription Type (nv)
- Correctly list dependencies in subpackages #2667 Correctly list dependencies in subpackages (nv)
- ProviderResolver is not minification safe #2484 ProviderResolver is not minification safe (nv)
- insufficient funds for gas * price + value #1021 insufficient funds for gas * price + value (see comment) (cg)
- Cannot find module '@babel/runtime/helpers/classCallCheck' #2225 Cannot find module '@babel/.../CallCheck' (see comment) (cg)
- invalid bytes32 value #2256 invalid bytes32 value (see comment)(cg)
- Send transaction to smart contract don't parse "from" option #2341 Send transaction don't parse "from" option (see comment)(cg)
- HttpProvider promise doesn't resolve on invalid RPC endpoint. #2396 Promise won't resolve on invalid RPC endpoint (could not repro on 1.x) (cg)
- Documentation for eth.signTransaction incorrect #2442 Docs for eth.signTransaction incorrect (see Documentation for eth.signTransaction incorrect #2442 desc.)(cg)
- Return array in methods.myMethod.call #2449 Return array in methods.myMethod.call (see comment) (cg)
- Return multiple values #2453 Return multiple values (see comment) (cg)
- Web3 constructor docs are wrong #2490 Web3 constructor docs are wrong ( see Documentation updated #2644) (cg)
- Getting Error: Invalid bytes string given: 0x [web3@1.0.0-beta.48] on simple Solidity view function #2527 Invalid bytes string given: (could not reproduce on 1.x) (cg)
- NodeJS Web3 1.0.0-beta.38 and 1.0.0-beta.39: Cannot find module '@babel/runtime/helpers/classCallCheck' #2221 beta.38 Cannot find module (see comment) (cg)
- Web3 1.0.0-beta.38 TypeError: Invalid attempt to spread non-iterable instance #2223 beta.38 TypeError: ... non-iterable instance (see comment) (cg)
- [web3@1.0.0-beta.41] getPastEvents not working - {"code":-32603,"message":"request failed or timed out"} #2311 beta.41 getPastEvents not working (see comment) (cg)
- web3.eth.Contract.getPastEvents doesn't support "allEvents" anymore #2316 .getPastEvents doesn't support "allEvents" (see comment) (cg)
- Websocket closes immediately in < beta41, "too many arguments" err with beta41 #2327 Websocket "too many arguments" err with beta.41 (see comment) (cg)
- Wrong network ID and network type #2239 Wrong network ID and network type (see comment) (cg)
- ETH Receipt errors in 1.0.0-beta.38 #2252 ETH Receipt errors in 1.0.0-beta.38 (see comment) (cg)
- decodeLog() is broken after updating to beta.41 from beta.35 #2268 decodeLog() broken after updating to beta.41 (see comment) (cg)
- Truffle and Ganache providers, Metamask Provider Engine no longer accepted as valid by web3 #2266 Ganache providers invalidated by web3 (see comment) (cg)
- Property 'status' does not exist on type 'TransactionReceipt'. #2287 Prop 'status' DNE on type 'TransactionReceipt'. (see comment) (cg)
- [web3 1.0.0-beta.41] 'getPastEvents' - {"code":-32603,"message":"request failed or timed out"} #2296 beta.41 'getPastEvents' request timed out (see comment) (cg)
- web3 v1.0.0-beta.38 or higher cannot find module '@babel/runtime/helpers/typeof' #2249 >= Beta.38: cannot find module '@babel/.../typeof' (see issue desc) (cg)
- Subscription stopped working after 1.0.0-beta.37 #2330 Subscription stopped working after 1.0.0-beta.37 (see issue desc) (cg)
- MetaMask is Broken in 1.0.0-beta.41 (works with 1.0.0-beta.37) #2340 MetaMask is Broken in beta.41 (works with beta.37) (see issue desc) (cg)
- 1.0.0-beta.43 when execute
contractInstance.methods.myMethod.send
, metamask throw exception #2349 beta.43 when .send, metamask throws exception (see comment) (cg) - 1.0.0-beta.46 send transaction, when confirmed throw exception:
TypeError: Cannot read property 'anonymous' of undefined
#2365 beta.46 send tx, when confirmed throw exception: (see comment) (cg) - methods.call() returns
anonymousFunction()
recursively #2411 methods.call() returns anonymousFunction()recursively (see comment) (cg) - Error: Transaction ran out of gas. Please provide more gas: #2441 Error: Transaction ran out of gas. Please provide more gas: (see code) (cg)
- web3.eth.Contract can't parse ABI correctly [web.1.0.0-beta.47] #2444 [beta.47] web3.eth.Contract can't parse ABI correctly (see comment) (cg)
- UnhandledPromiseRejectionWarning: Error: invalid json request [1.0.0-beta.47] #2447 beta.47 Error: invalid json request [1.0.0-] (see comment) (cg)
- getPastLogs generates wrong topics array after beta.37 for JSON RPC #2457 getPastLogs: wrong topics array after beta.37 (see issue desc) (cg)
- web3.js does not work when building in vue production mode (likely any webpack production build) #2465 web3.js does not work n vue production mode (see comment) (cg)
- getPastEvents fails when called with 'allEvents' #2467 getPastEvents fails when called with 'allEvents' (see comment) (cg)
- Shh newKeyPair first arg not optional #2507 Shh newKeyPair first arg not optional (see comment) (cg)
- npmjs package 1.0.0-beta.49 return 1.0.0-beta.48 #2533 npmjs package 1.0.0-beta.49 return 1.0.0-beta.48 (see issue desc) (cg)
- The parameters that are sent to eth_sign is swapped #2555 The parameters that are sent to eth_sign is swapped (see comment) (cg)
- this.getGasPrice is not a function; GasPriceMethod vs GetGasPriceMethod #2558 this.getGasPrice is not a function; GasPriceMethod vs GetGasPriceMethod (cg)
- Sending contract method through infura and wallet account doesn't work #2569 Sending to infura and wallet account doesn't work (see comment) (cg)
- Returning of BigNumber objects instead of strings #2570 Returning of BigNumber objects instead of strings (see Returning of BigNumber objects instead of strings #2570 thread) (cg)
- Account.signTransaction(tx, callback) error #2571 Account.signTransaction(tx, callback) error (see comment) (cg)
- No receipt after contract deploy #2601 No receipt after contract deploy (see comment) (cg)
- myContract.events.MyEvent is broken in beta.49-51 #2611 myContract.events.MyEvent is broken in beta.49-51 (see comment) (cg)
- web3.eth.accounts.wallet errors when using #2647 web3.eth.accounts.wallet errors when using (see comment) (cg)
- Increasing of the block number for the confirmation workflow over HTTP is wrong. #2661 confirmation workflow over HTTP is wrong. (see comment) (cg)
- Assign correct JSON-RPC response to validate on Web3EthereumProvider.send method #2854 Async validate on Web3EthereumProvider.send method (new provider arch.)(cg)
- fix typo #2806 fix typo (2.0 docs)(cg)
- 'syncing' event subscription crash the code #2833 'syncing' event subscription crash the code (see comment) (cg)
- TypeError: miner.startMining is not a function #2877 TypeError: miner.startMining is not a function (2.0 extension API) (cg)
- The signTransaction method does not work correctly. #1793 The signTransaction method does not work correctly. (see comment) (cg)
- stripHexPrefix fixed #2989 stripHexPrefix fixed (?; 2.x related helper function (nv))