diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-29 10:02:55 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-29 10:02:55 +0000 |
| commit | 41944ca1f9d4e91ab7a7a9eafc3fd02f246c65ab (patch) | |
| tree | 23eb7d18605f85491bbc64136680022d63eabcaf | |
| parent | 6d9bc2e8cdd4072674a6afabec4c844d8406a799 (diff) | |
automatic import of python-ethereum-input-decoder
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-ethereum-input-decoder.spec | 258 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 260 insertions, 0 deletions
@@ -0,0 +1 @@ +/ethereum_input_decoder-0.2.2.tar.gz diff --git a/python-ethereum-input-decoder.spec b/python-ethereum-input-decoder.spec new file mode 100644 index 0000000..f699c01 --- /dev/null +++ b/python-ethereum-input-decoder.spec @@ -0,0 +1,258 @@ +%global _empty_manifest_terminate_build 0 +Name: python-ethereum_input_decoder +Version: 0.2.2 +Release: 1 +Summary: Decode transaction inputs based on the contract ABI +License: GPLv3 +URL: https://github.com/tintinweb/ethereum-input-decoder/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/88/64/067c42a1d21757ceea7106f5141849f76bcbe2289264a05b700743a7d9e8/ethereum_input_decoder-0.2.2.tar.gz +BuildArch: noarch + + +%description +# ethereum-input-decoder +Decode transaction inputs and constructor arguments based on the ethereum contract ABI. Tries to lookup function +signature hashes from 4bytes.directory. + +* python3 +* suggested as a PR to [eth-abi #69](https://github.com/ethereum/eth-abi/pull/69) +* the heavy lifting is done by `eth-abi` +* utilized in [pyetherchain](https://github.com/tintinweb/pyetherchain) to decode and dump smart contract code with inputs + +Decode transaction inputs and constructor arguments to contract at [0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e](https://etherscan.io/address/0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e#code) to a more human friendly notation. + +#### Example: Decode providing the ABI as .json + +Usage: + + python -m ethereum_input_decoder -a ./test/contract_abi_ab7c74abc0c4d48d1bdad5dcb26153fc8780f83e.json -c 000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b -t 0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707 -t 0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707 + +Output: + + ==[Constructor]== + Raw: '000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b' + Description: constructor None ((address[]) _owners = ('0x2903cadbe271e057edef157340b52a5898d7424f', '0xba7ca1bcf210c1b37cf5818816c4a819c3040ea7', '0x14cd6536d449e3f6878f2d6859e1ff92ae0990e6', '0x0c24441e42277445e38e02dfc3494577c05ba46b'), (uint256) _required = 2, (uint256) _daylimit = 1000000000000000000) returns () + + ==[Input]== + Raw: '0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707' + Description: function confirm ((bytes32) _h = b'\x98\xd7\x90\xd3\x13>\x00I!Vi\xe0\x9bU\xa0\xb5\x9dXl\x95\xf9L-V\xb2\x81 @\x13=w\x07') returns ((bool) ) + + +#### Example: Decode without providing the ABI and forcing an online lookup from 4bytes.directory + +Usage: + + python -m ethereum_input_decoder -t 0x166eb4cb962ee1f494711b8726972fc3b23519008854ca46e73383da53aea339ee82ee7d0000000000000000000000000000000000000000000000000000000000000000 + +Output: + + **online lookup** + + + ==[Input]== + Raw: '0x166eb4cb962ee1f494711b8726972fc3b23519008854ca46e73383da53aea339ee82ee7d0000000000000000000000000000000000000000000000000000000000000000' + Description: function Put ((bytes32) arg0 = b'\x16n\xb4\xcb\x96.\xe1\xf4\x94q\x1b\x87&\x97/\xc3\xb25\x19\x00\x88T\xcaF\xe73\x83\xdaS\xae\xa39', (uint256) arg1 = 107881794066862459943708362605633226548906029344009971714560720257241323667456) returns () + + +## API + +```python +from ethereum_input_decoder import ContractAbi + +ca = ContractAbi(json.loads(json_abi_str)) +print(ca.describe_input(b'797aaf...3d7707')) +# function confirm ((bytes32) _h = b'\x98\xd7\x90\xd3\x13>\x00I!Vi\xe0\x9bU\xa0\xb5\x9dXl\x95\xf9L-V\xb2\x81 @\x13=w\x07') returns ((bool) ) +print(ca.describe_constructor(b'000000...5ba46b"))) +# constructor None ((address[]) _owners = ('0x2903cadbe271e057edef157340b52a5898d7424f', '0xba7ca1bcf210c1b37cf5818816c4a819c3040ea7', '0x14cd6536d449e3f6878f2d6859e1ff92ae0990e6', '0x0c24441e42277445e38e02dfc3494577c05ba46b'), (uint256) _required = 2, (uint256) _daylimit = 1000000000000000000) returns () +``` +```python +# online lookup without having an ABI ready +from ethereum_input_decoder AbiMethod + +print(AbiMethod.from_input_lookup(Utils.str_to_bytes(txinput))) +# function Put ((bytes32) arg0 = b'\x16n\xb4\xcb\x96.\xe1\xf4\x94q\x1b\x87&\x97/\xc3\xb25\x19\x00\x88T\xcaF\xe73\x83\xdaS\xae\xa39', (uint256) arg1 = 107881794066862459943708362605633226548906029344009971714560720257241323667456) returns () +``` + + +%package -n python3-ethereum_input_decoder +Summary: Decode transaction inputs based on the contract ABI +Provides: python-ethereum_input_decoder +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-ethereum_input_decoder +# ethereum-input-decoder +Decode transaction inputs and constructor arguments based on the ethereum contract ABI. Tries to lookup function +signature hashes from 4bytes.directory. + +* python3 +* suggested as a PR to [eth-abi #69](https://github.com/ethereum/eth-abi/pull/69) +* the heavy lifting is done by `eth-abi` +* utilized in [pyetherchain](https://github.com/tintinweb/pyetherchain) to decode and dump smart contract code with inputs + +Decode transaction inputs and constructor arguments to contract at [0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e](https://etherscan.io/address/0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e#code) to a more human friendly notation. + +#### Example: Decode providing the ABI as .json + +Usage: + + python -m ethereum_input_decoder -a ./test/contract_abi_ab7c74abc0c4d48d1bdad5dcb26153fc8780f83e.json -c 000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b -t 0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707 -t 0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707 + +Output: + + ==[Constructor]== + Raw: '000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b' + Description: constructor None ((address[]) _owners = ('0x2903cadbe271e057edef157340b52a5898d7424f', '0xba7ca1bcf210c1b37cf5818816c4a819c3040ea7', '0x14cd6536d449e3f6878f2d6859e1ff92ae0990e6', '0x0c24441e42277445e38e02dfc3494577c05ba46b'), (uint256) _required = 2, (uint256) _daylimit = 1000000000000000000) returns () + + ==[Input]== + Raw: '0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707' + Description: function confirm ((bytes32) _h = b'\x98\xd7\x90\xd3\x13>\x00I!Vi\xe0\x9bU\xa0\xb5\x9dXl\x95\xf9L-V\xb2\x81 @\x13=w\x07') returns ((bool) ) + + +#### Example: Decode without providing the ABI and forcing an online lookup from 4bytes.directory + +Usage: + + python -m ethereum_input_decoder -t 0x166eb4cb962ee1f494711b8726972fc3b23519008854ca46e73383da53aea339ee82ee7d0000000000000000000000000000000000000000000000000000000000000000 + +Output: + + **online lookup** + + + ==[Input]== + Raw: '0x166eb4cb962ee1f494711b8726972fc3b23519008854ca46e73383da53aea339ee82ee7d0000000000000000000000000000000000000000000000000000000000000000' + Description: function Put ((bytes32) arg0 = b'\x16n\xb4\xcb\x96.\xe1\xf4\x94q\x1b\x87&\x97/\xc3\xb25\x19\x00\x88T\xcaF\xe73\x83\xdaS\xae\xa39', (uint256) arg1 = 107881794066862459943708362605633226548906029344009971714560720257241323667456) returns () + + +## API + +```python +from ethereum_input_decoder import ContractAbi + +ca = ContractAbi(json.loads(json_abi_str)) +print(ca.describe_input(b'797aaf...3d7707')) +# function confirm ((bytes32) _h = b'\x98\xd7\x90\xd3\x13>\x00I!Vi\xe0\x9bU\xa0\xb5\x9dXl\x95\xf9L-V\xb2\x81 @\x13=w\x07') returns ((bool) ) +print(ca.describe_constructor(b'000000...5ba46b"))) +# constructor None ((address[]) _owners = ('0x2903cadbe271e057edef157340b52a5898d7424f', '0xba7ca1bcf210c1b37cf5818816c4a819c3040ea7', '0x14cd6536d449e3f6878f2d6859e1ff92ae0990e6', '0x0c24441e42277445e38e02dfc3494577c05ba46b'), (uint256) _required = 2, (uint256) _daylimit = 1000000000000000000) returns () +``` +```python +# online lookup without having an ABI ready +from ethereum_input_decoder AbiMethod + +print(AbiMethod.from_input_lookup(Utils.str_to_bytes(txinput))) +# function Put ((bytes32) arg0 = b'\x16n\xb4\xcb\x96.\xe1\xf4\x94q\x1b\x87&\x97/\xc3\xb25\x19\x00\x88T\xcaF\xe73\x83\xdaS\xae\xa39', (uint256) arg1 = 107881794066862459943708362605633226548906029344009971714560720257241323667456) returns () +``` + + +%package help +Summary: Development documents and examples for ethereum_input_decoder +Provides: python3-ethereum_input_decoder-doc +%description help +# ethereum-input-decoder +Decode transaction inputs and constructor arguments based on the ethereum contract ABI. Tries to lookup function +signature hashes from 4bytes.directory. + +* python3 +* suggested as a PR to [eth-abi #69](https://github.com/ethereum/eth-abi/pull/69) +* the heavy lifting is done by `eth-abi` +* utilized in [pyetherchain](https://github.com/tintinweb/pyetherchain) to decode and dump smart contract code with inputs + +Decode transaction inputs and constructor arguments to contract at [0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e](https://etherscan.io/address/0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e#code) to a more human friendly notation. + +#### Example: Decode providing the ABI as .json + +Usage: + + python -m ethereum_input_decoder -a ./test/contract_abi_ab7c74abc0c4d48d1bdad5dcb26153fc8780f83e.json -c 000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b -t 0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707 -t 0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707 + +Output: + + ==[Constructor]== + Raw: '000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b' + Description: constructor None ((address[]) _owners = ('0x2903cadbe271e057edef157340b52a5898d7424f', '0xba7ca1bcf210c1b37cf5818816c4a819c3040ea7', '0x14cd6536d449e3f6878f2d6859e1ff92ae0990e6', '0x0c24441e42277445e38e02dfc3494577c05ba46b'), (uint256) _required = 2, (uint256) _daylimit = 1000000000000000000) returns () + + ==[Input]== + Raw: '0x797af62798d790d3133e0049215669e09b55a0b59d586c95f94c2d56b2812040133d7707' + Description: function confirm ((bytes32) _h = b'\x98\xd7\x90\xd3\x13>\x00I!Vi\xe0\x9bU\xa0\xb5\x9dXl\x95\xf9L-V\xb2\x81 @\x13=w\x07') returns ((bool) ) + + +#### Example: Decode without providing the ABI and forcing an online lookup from 4bytes.directory + +Usage: + + python -m ethereum_input_decoder -t 0x166eb4cb962ee1f494711b8726972fc3b23519008854ca46e73383da53aea339ee82ee7d0000000000000000000000000000000000000000000000000000000000000000 + +Output: + + **online lookup** + + + ==[Input]== + Raw: '0x166eb4cb962ee1f494711b8726972fc3b23519008854ca46e73383da53aea339ee82ee7d0000000000000000000000000000000000000000000000000000000000000000' + Description: function Put ((bytes32) arg0 = b'\x16n\xb4\xcb\x96.\xe1\xf4\x94q\x1b\x87&\x97/\xc3\xb25\x19\x00\x88T\xcaF\xe73\x83\xdaS\xae\xa39', (uint256) arg1 = 107881794066862459943708362605633226548906029344009971714560720257241323667456) returns () + + +## API + +```python +from ethereum_input_decoder import ContractAbi + +ca = ContractAbi(json.loads(json_abi_str)) +print(ca.describe_input(b'797aaf...3d7707')) +# function confirm ((bytes32) _h = b'\x98\xd7\x90\xd3\x13>\x00I!Vi\xe0\x9bU\xa0\xb5\x9dXl\x95\xf9L-V\xb2\x81 @\x13=w\x07') returns ((bool) ) +print(ca.describe_constructor(b'000000...5ba46b"))) +# constructor None ((address[]) _owners = ('0x2903cadbe271e057edef157340b52a5898d7424f', '0xba7ca1bcf210c1b37cf5818816c4a819c3040ea7', '0x14cd6536d449e3f6878f2d6859e1ff92ae0990e6', '0x0c24441e42277445e38e02dfc3494577c05ba46b'), (uint256) _required = 2, (uint256) _daylimit = 1000000000000000000) returns () +``` +```python +# online lookup without having an ABI ready +from ethereum_input_decoder AbiMethod + +print(AbiMethod.from_input_lookup(Utils.str_to_bytes(txinput))) +# function Put ((bytes32) arg0 = b'\x16n\xb4\xcb\x96.\xe1\xf4\x94q\x1b\x87&\x97/\xc3\xb25\x19\x00\x88T\xcaF\xe73\x83\xdaS\xae\xa39', (uint256) arg1 = 107881794066862459943708362605633226548906029344009971714560720257241323667456) returns () +``` + + +%prep +%autosetup -n ethereum_input_decoder-0.2.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-ethereum_input_decoder -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.2-1 +- Package Spec generated @@ -0,0 +1 @@ +335a6824d22a1451eec5ae89c4837775 ethereum_input_decoder-0.2.2.tar.gz |
