From b1aa95b563516b4d5457ae5d27ab971fec9cebbb Mon Sep 17 00:00:00 2001 From: Hsiao-Wei Wang Date: Tue, 24 Oct 2017 17:15:31 +0800 Subject: [PATCH 1/2] Accept peers without DAO header If the peer returns empty header list as the dao answer, it may be because the peer is not in Mainnet or the peer hasn't finished syncing yet. --- pyethapp/eth_service.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyethapp/eth_service.py b/pyethapp/eth_service.py index 86befb53..95795624 100644 --- a/pyethapp/eth_service.py +++ b/pyethapp/eth_service.py @@ -86,9 +86,11 @@ def run(self): try: dao_headers = self.deferred.get(block=True, timeout=self.request_timeout) log.debug("received DAO challenge answer", proto=self.proto, answer=dao_headers) - result = len(dao_headers) == 1 and \ + # Accept peers without DAO header + result = len(dao_headers) == 0 or ( dao_headers[0].hash == self.config['DAO_FORK_BLKHASH'] and \ dao_headers[0].extra_data == self.config['DAO_FORK_BLKEXTRA'] + ) self.chainservice.on_dao_challenge_answer(self.proto, result) except gevent.Timeout: log.debug('challenge dao timed out', proto=self.proto) From c9126728e397148fef120ae5b97663b3928a52ae Mon Sep 17 00:00:00 2001 From: Hsiao-Wei Wang Date: Tue, 24 Oct 2017 17:39:09 +0800 Subject: [PATCH 2/2] Get rid of serpent --- pyethapp/console_service.py | 8 +------- pyethapp/jsonrpc.py | 22 ---------------------- pyethapp/tests/test_console_service.py | 10 ++++------ pyethapp/tests/test_jsonrpc.py | 19 ++++++++----------- requirements.txt | 1 - setup.py | 15 --------------- 6 files changed, 13 insertions(+), 62 deletions(-) diff --git a/pyethapp/console_service.py b/pyethapp/console_service.py index cf436fe3..62ff397c 100644 --- a/pyethapp/console_service.py +++ b/pyethapp/console_service.py @@ -240,13 +240,7 @@ def block_from_rlp(this, rlp_data): solc_wrapper = None pass - try: - import serpent - except ImportError: - serpent = None - pass - - self.console_locals = dict(eth=Eth(self.app), solidity=solc_wrapper, serpent=serpent, + self.console_locals = dict(eth=Eth(self.app), solidity=solc_wrapper, denoms=denoms, true=True, false=False, Eth=Eth) for k, v in list(self.app.script_globals.items()): diff --git a/pyethapp/jsonrpc.py b/pyethapp/jsonrpc.py index 24ccd888..8b1209b6 100644 --- a/pyethapp/jsonrpc.py +++ b/pyethapp/jsonrpc.py @@ -716,12 +716,6 @@ def __init__(self): def compilers(self): if self.compilers_ is None: self.compilers_ = {} - try: - import serpent - self.compilers_['serpent'] = serpent.compile - self.compilers_['lll'] = serpent.compile_lll - except ImportError: - pass try: import ethereum.tools._solidity s = ethereum.tools._solidity.get_solidity() @@ -744,22 +738,6 @@ def compileSolidity(self, code): except KeyError: raise MethodNotFoundError() - @public - @encode_res(data_encoder) - def compileSerpent(self, code): - try: - return self.compilers['serpent'](code) - except KeyError: - raise MethodNotFoundError() - - @public - @encode_res(data_encoder) - def compileLLL(self, code): - try: - return self.compilers['lll'](code) - except KeyError: - raise MethodNotFoundError() - class Miner(Subdispatcher): diff --git a/pyethapp/tests/test_console_service.py b/pyethapp/tests/test_console_service.py index 6b330f5c..cf9a4815 100644 --- a/pyethapp/tests/test_console_service.py +++ b/pyethapp/tests/test_console_service.py @@ -1,7 +1,6 @@ from builtins import str from itertools import count import pytest -import serpent from devp2p.peermanager import PeerManager import ethereum from ethereum.tools import tester @@ -121,12 +120,11 @@ def fin(): def test_send_transaction_with_contract(test_app): - serpent_code = ''' -def main(a,b): - return(a ^ b) -''' tx_to = b'' - evm_code = serpent.compile(serpent_code) + # Serpent code: + # def main(a,b): + # return(a ^ b) + evm_code = b'a\x00K\x80a\x00\x0e`\x009a\x00YV|\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x005\x04c\x97\xd8W\xaa\x81\x14\x15a\x00IW`\x045`@R`$5``R``Q`@Q\n`\x80R` `\x80\xf3[P[`\x00\xf3' chain = test_app.services.chain.chain chainservice = test_app.services.chain hc_state = State(chainservice.head_candidate.state_root, chain.env) diff --git a/pyethapp/tests/test_jsonrpc.py b/pyethapp/tests/test_jsonrpc.py index caf5eeb4..1e535bc7 100644 --- a/pyethapp/tests/test_jsonrpc.py +++ b/pyethapp/tests/test_jsonrpc.py @@ -12,7 +12,6 @@ import pytest import rlp -import serpent import ethereum import ethereum.config import ethereum.tools.keys @@ -580,12 +579,11 @@ def test_send_transaction(test_app): def test_send_transaction_with_contract(test_app): - serpent_code = ''' -def main(a,b): - return(a ^ b) -''' tx_to = b'' - evm_code = serpent.compile(serpent_code) + # Serpent code: + # def main(a,b): + # return(a ^ b) + evm_code = b'a\x00K\x80a\x00\x0e`\x009a\x00YV|\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x005\x04c\x97\xd8W\xaa\x81\x14\x15a\x00IW`\x045`@R`$5``R``Q`@Q\n`\x80R` `\x80\xf3[P[`\x00\xf3' chainservice = test_app.services.chain chain = test_app.services.chain.chain state = State(chainservice.head_candidate.state_root, chain.env) @@ -616,12 +614,11 @@ def main(a,b): def test_send_raw_transaction_with_contract(test_app): - serpent_code = ''' -def main(a,b): - return(a ^ b) -''' tx_to = b'' - evm_code = serpent.compile(serpent_code) + # Serpent code: + # def main(a,b): + # return(a ^ b) + evm_code = b'a\x00K\x80a\x00\x0e`\x009a\x00YV|\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x005\x04c\x97\xd8W\xaa\x81\x14\x15a\x00IW`\x045`@R`$5``R``Q`@Q\n`\x80R` `\x80\xf3[P[`\x00\xf3' chainservice = test_app.services.chain chain = test_app.services.chain.chain state = State(chainservice.head_candidate.state_root, chain.env) diff --git a/requirements.txt b/requirements.txt index 17065682..5d7864ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,4 +21,3 @@ pyelliptic==1.5.7 tinyrpc[gevent,httpclient,jsonext,websocket,wsgi] pycryptodome==3.4.6 future -https://github.com/ethereum/serpent/tarball/develop diff --git a/setup.py b/setup.py index 4c081903..388cf0cf 100755 --- a/setup.py +++ b/setup.py @@ -30,18 +30,6 @@ def run_tests(self): LONG_DESCRIPTION = README + '\n\n' + HISTORY -# requirements -install_requires = set(x.strip() for x in open('requirements.txt')) -install_requires_replacements = { - 'https://github.com/ethereum/serpent/tarball/develop': 'ethereum-serpent', -} -install_requires = [install_requires_replacements.get(r, r) for r in install_requires] - -# dependency links -dependency_links = [ - 'https://github.com/ethereum/serpent/tarball/develop#egg=ethereum-serpent-9.99.9', -] - # *IMPORTANT*: Don't manually change the version here. Use the 'bump2version' utility. # see: https://github.com/ethereum/pyethapp/wiki/Development:-Versions-and-Releases version = '1.5.1a0' @@ -73,10 +61,7 @@ def run_tests(self): 'Programming Language :: Python :: 3.6', ], cmdclass={'test': PyTest}, - install_requires=install_requires, - dependency_links=dependency_links, tests_require=[ - # 'ethereum-serpent>=1.8.1', 'mock==2.0.0', 'pytest-mock==1.6.0', ],