Comments (2)
The reason this is thrown is because is_address
calls is_binary_address
:
https://github.com/ethereum/eth-utils/blob/v2.0.0-alpha.0/eth_utils/address.py#L23-L32
Since that method checks whether the passed in address is bytes
and valid length, there would be no way to discern from the response of is_address
what actually caused it to be False
, just that it didn't pass the validation. And since str
type works for hexstrings:
>>> from eth_account.account import Account
>>> import eth_abi
>>> acct = Account.create()
>>> acct.address; type(acct.address)
'0x73445e747C4103638F84d9D91e7b01239599D7e5'
<class 'str'>
>>> eth_abi.encode_single('address', acct.address)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00sD^t|A\x03c\x8f\x84\xd9\xd9\x1e{\x01#\x95\x99\xd7\xe5'
I don't think we can just add an is_bytes
check here.
from eth-abi.
I'm thinking something like this:
if not is_address(value):
if is_string(value):
raise EncodingTypeError("Unable to parse {0} as an address. Supported formats are ...")
else:
raise EncodingTypeError("Cannot encode value of type {0} as an address")
from eth-abi.
Related Issues (20)
- ImportError: cannot import name 'encode' from 'eth_abi' HOT 2
- Is there a way to match calldata/memory encoding conventions? HOT 1
- Decoding data of type byte[] array results in an an empty element at the end HOT 3
- Byte value of length 32b results in decoding error using 'decode' HOT 2
- Decoding an array type returns a tuple instead of list HOT 5
- `ImportError: cannot import name 'getargspec' from 'inspect'` in Python >= 3.11 due to outdated `parsimonious` dependency version
- Wrong encoding output when using uint256[] HOT 1
- Decoding arbitrary length bytes fails due to expected padding HOT 2
- encoding tuple with nested tuple containing dynamic types HOT 3
- [Project Management] When will eth-abi>=4.0.0 be released? HOT 2
- Dependency errors for newer versions of uth-utils>=2.0.0 and eth-abi>=3.0.0
- Different behaviour: `encode_single` vs `encode` HOT 9
- typing/linting tools review
- Add utility method for getting an acceptable byte range from a list of ABI types
- OverflowError: Python int too large to convert to C ssize_t HOT 4
- decode failing on input that is not divided by 32 HOT 1
- Replace `functools.lru_cache`
- OverflowError when decode an event data with empty fields HOT 4
- Decode input data with bad padding
- Invalid pointer error when decoding transaction input HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from eth-abi.