Commit Graph

241 Commits

Author SHA1 Message Date
SuBPaR42
6e357a53c8 Updated Server Name for Bitcoin-Segwit (#247)
A better (long-term) server address.
2017-09-07 11:31:30 +07:00
Anoxy
76581c3b4e Added support for Bitbay (BAY) (#249)
Added support for Bitbay (BAY)
2017-09-07 11:30:07 +07:00
Neil Booth
9c25685eb9 Handle client protocol range requests.
Add more tests.
2017-09-06 17:11:18 +09:00
Neil Booth
135ab68f74 Simple protocol negotiation and setting of handlers
It turns out clients pass 0.10 instead of 1.0 as the protocol version.
Distinguish some handlers for 1.0 and 1.1 protocols.
Log protocol version request
Add tests of new library function
2017-09-06 16:24:56 +09:00
Neblio Team
2a6fa0489e Add Neblio support to electrumx (#240)
* add neblio

* update daemon & deserializer and add header_hash

* remove LegacyRPDaemon usage for Neblio

getblock() RPC was updated in nebliod to eliminate the need for LegacyRPCDaemon support in electrumx
2017-09-01 08:22:44 +07:00
Neil Booth
137236712f Add EVENT_LOOP_POLICY environment variable
Based on #215 by JustinTArthur.

- Accept EVENT_LOOP_POLICY of uvloop
- Move initilisation from electrumx_server to controller
- SocksProxy now requires a loop
- Update tests
2017-08-26 14:03:02 +09:00
Neil Booth
1f3e942cbc Some further cleanup 2017-08-26 12:47:47 +09:00
John L. Jegutanis
885872f0b5 Various improvements (#233)
* Fix formatting

* Refactor daemons

Replaced FujiDaemon with FakeEstimateFeeDaemon that simulates estimate
fee calls and provide the same functionality.
Removed the parameter False for LegacyRPCDaemon's getblock RPC call as
it is not needed.

* Fix Crown coin P2SH_VERBYTES and add REORG_LIMIT
2017-08-26 12:33:20 +09:00
Neil Booth
3d4d382178 Remove 2 segwit peers from Bitcoin cash list 2017-08-24 23:54:28 +09:00
Neil Booth
e5101e4757 Change the not.fyi server on request 2017-08-22 21:13:11 +09:00
Neil Booth
fab3f5affe Have proxy.create_connection use kwargs
Fixes #227
2017-08-21 23:38:54 +09:00
Neil Booth
ab62092afc Add note about new NET assignments. 2017-08-21 20:59:51 +09:00
Neil Booth
00504b695a Split peer lists post fork 2017-08-21 20:30:21 +09:00
FujiCoin
b4ac4b6a05 Add Fujicoin (#218)
* Add Fujicoin

* Add explanation of FujiDaemon
2017-08-18 15:05:54 +07:00
cryptcoin-junkey
761213607c Add PEERS to Monacoin. (#219) 2017-08-12 10:27:00 +07:00
Extrememist
2031e88c20 Add Crown (#217)
* Add Crown

* Fix Parse
2017-08-11 07:05:19 +07:00
Riccardo Casatta
97ec00338d Adding regtest parameters (#213) 2017-08-04 23:12:34 +09:00
Neil Booth
620ee35af9 Merge branch 'master' of github.com:kyuupichan/electrumx 2017-08-03 23:13:23 +09:00
Neil Booth
f65fa2fd19 Update server list for BCC servers. 2017-08-03 23:12:56 +09:00
Justin Turner Arthur
28764936c4 Remove semicolons and a couple unused variables. (#212) 2017-08-02 15:55:44 +09:00
cryptcoin-junkey
ecad494f28 Add Monacoin. (#210)
Signed-off-by: Cryptcoin Junkey <cryptcoin.junkey@gmail.com>
2017-08-02 15:32:16 +09:00
Neil Booth
f696a7933d Prevent unnecessary copying of raw blocks 2017-07-30 20:47:54 +09:00
Neil Booth
3eef0ba4cf Rename block_full to block.
Retain the raw block in the named tuple.
2017-07-30 20:41:08 +09:00
John L. Jegutanis
350ed82711 Add Vertcoin support (#208) 2017-07-25 07:39:09 +09:00
Thomas König
164d0cd924 update FairCoin genesis block (#207)
update server list
2017-07-23 22:25:48 +09:00
Neil Booth
8a18da61c2 Add bitcoin-segwit 2017-07-20 13:12:38 +09:00
Neil Booth
3ca464e5b1 Update BTC server list 2017-07-16 15:01:23 +09:00
Neil Booth
3612b88e2e Permit underscores in hostnames.
Add tests.
2017-07-16 13:58:02 +09:00
Neil Booth
9dfaedc727 Add bip32.py and tests. 2017-07-12 14:39:55 +09:00
Neil Booth
7a77637586 Add comprehensive tests of lib/hash.py 2017-07-10 19:01:03 +09:00
John L. Jegutanis
b48465a065 Add Reddcoin support 2017-06-11 01:37:49 +03:00
John L. Jegutanis
fe30086795 Digibyte switched to SegWit 2017-06-11 01:37:49 +03:00
John L. Jegutanis
74f899e544 Add support for Blackcoin and Peercoin 2017-06-11 01:37:49 +03:00
John L. Jegutanis
1e9a65dccb Handle legacy daemon RPCs
Add support for daemons that don't have the new 'getblock' RPC call that
returns the block in hex, the workaround is to manually recreate the block
bytes. The recreated block bytes may not be the exact ones as in the
underlying blockchain but it is good enough for our indexing purposes.
2017-06-11 01:37:45 +03:00
Neil Booth
661883732c Update nolnet parameters 2017-06-07 23:47:17 +09:00
Neil Booth
4cc3720589 Disable IRC for bitcoin mainnet
Only require IRC_CHANNEL if IRC_PREFIX is given.
2017-06-07 23:47:17 +09:00
John L. Jegutanis
232d6be72c Remove dead code 2017-05-18 15:07:34 +02:00
TheLazieR Yip
8d21eae2bb Move import lines to top of class 2017-05-15 04:12:15 +00:00
TheLazieR Yip
f179c67935 Add support for Dash Masternode methods
+ Add DashDaemon class
+ Add DashElectrumX class
+ Update coin configurations for Dash
2017-05-14 16:36:02 +00:00
TheLazieR Yip
b0e23e903d Allow custom ElectrumX class 2017-05-14 16:26:17 +00:00
John L. Jegutanis
a4e4f80ad7 Allow custom Daemon and BlockProcessor classes 2017-05-07 14:22:23 +02:00
SuBPaR42
400388336a Change to default server peers
electrum.trouth.net is no longer active.  Replaced with another E-S server ;-)
2017-05-01 08:35:09 -05:00
SuBPaR42
b52628143b Update coins.py
Updated to more recent block height and TX count
2017-04-30 08:21:42 -05:00
pooler
961936245c Allow multiple P2SH address versions 2017-04-30 09:48:52 +02:00
Neil Booth
92584cc3c6 Update Litecoin entries as Segwit has activated. 2017-04-28 22:31:40 +09:00
Neil Booth
8a2821d542 Reject invalid hostnames in Env 2017-04-09 14:15:10 +09:00
John L. Jegutanis
9549158115 Add Einsteinium support 2017-04-05 14:38:34 +03:00
Neil Booth
2c43e89b05 Only set last_good if successfully verified
Rename last_connect to last_good
2017-04-03 21:37:51 +09:00
Neil Booth
9f27ea875c Fix peer replacement logic
- drop the IP address peer
- update the remaining peer with fresh info
2017-04-03 20:07:46 +09:00
Neil Booth
a94d320e5d New feature: force peer discovery via proxy
Set FORCE_PROXY to non-empty to force peer discovery to go
through the proxy.  See docs/ENVIRONMENT.rst

Wait for an attempt at proxy discovery to be made before beginning
peer discovery.
2017-04-02 15:06:29 +09:00
Neil Booth
77a441ad06 Improve proxy handling
Have a background proxy detection loop; removes need to check
specific peers at startup.
Consider proxy down once attempts to use it fail 3 times in a row.
Regularly attempt to rediscover a proxy if it is down.
2017-04-02 14:27:49 +09:00
Neil Booth
0aa9195fc5 Remove bad onion default peer 2017-04-02 10:58:56 +09:00
romanornr
7e8141c62d
Add Viacoin - Segwit Auxpow 2017-03-31 00:37:43 +02:00
Neil Booth
9620aa8bb6 Restore dummy NAME and NET 2017-03-26 12:29:04 +09:00
Neil Booth
a88fc75610 Tweaks to coins.py 2017-03-26 11:49:57 +09:00
protonn
122d78d25b Argentum; support for AuxPow 2017-03-25 19:02:24 -05:00
Neil Booth
8236aaf234 Be more strict on form of features dictionary 2017-03-25 13:28:42 +09:00
Neil Booth
be5397a853 Validate hostnames before accepting a new peer
Don't retain non-public addresses

Closes #157
2017-03-25 11:58:54 +09:00
John L. Jegutanis
bc31df8ee0 Fix support for Namecoin and Dogecoin, add Zcash support
Closes #83
2017-03-25 11:35:55 +09:00
Neil Booth
37602d4eae A couple of tweaks to the prior commit. 2017-03-25 11:35:55 +09:00
John L. Jegutanis
ed7d8a319d Refactor block parsing API 2017-03-25 11:35:55 +09:00
Neil Booth
9238fe397d Drop ports from top level of features 2017-03-25 11:35:54 +09:00
Neil Booth
af67536598 Set reorg limit to 8k on testnet 2017-03-21 20:04:51 +09:00
Neil
5c050e1d31 Merge pull request #151 from erasmospunk/master
Set the correct XPUB, XPRV bytes for dogecoin
2017-03-18 11:53:01 +09:00
John L. Jegutanis
fe544eae7f Set the correct XPUB, XPRV bytes for dogecoin 2017-03-18 03:27:53 +02:00
pooler
11a3c77fdb Fix Litecoin parameters 2017-03-17 12:16:44 +01:00
Neil Booth
30bb832ef8 Prepare 1.0 2017-03-05 13:22:09 +09:00
Neil Booth
42dfd16b14 Add Bitoin Unlimited nolnet 2017-03-04 09:52:47 +09:00
Neil Booth
56130e4a66 Fix uninitialized variable 2017-03-03 08:03:48 +09:00
Neil Booth
85f17b75c8 Remove stray commas 2017-02-27 19:39:22 +09:00
Neil Booth
ac8e38a87c Tweak prior 2017-02-27 07:36:52 +09:00
John L. Jegutanis
6b1b9d01f2 Better handle base58 version bytes and allow for a >1 byte version 2017-02-27 07:36:33 +09:00
Neil Booth
d36d222489 Maintain more than one self-identity
Rather than just retaining our clearnet identity from the environment,
maintain any tor one as well.  This is a little cleaner and avoids
confusion over port assignment when converting to real names.

Fixes #136
2017-02-26 10:22:22 +09:00
Neil Booth
f8f5d4429f Merge branch 'develop' 2017-02-19 19:05:24 +09:00
Thomas König
b6be653f4f Adding FairCoin (#122)
* Adding FairCoin

* remove redundant 'header_len' function

* removed serializer
added missing commas
removed assertion from read_block and replaced it with a comment
2017-02-19 19:03:21 +09:00
Neil Booth
86f6a148b9 Separate async item processor per session
Improve daemon wait logic

Fixes #100
2017-02-19 19:01:41 +09:00
Neil Booth
23b7ec3fb5 get_extra_info fix 2017-02-19 10:52:34 +09:00
Neil Booth
0149f2785f A few peer handling improvements
based on suggestions from hsmiths
Set transport to None if a connection is lost
Only subscribe to peers if the peer is verified on same network
2017-02-19 10:21:17 +09:00
Neil Booth
9d6b353eec Fix typo pointed out by hsmiths, thanks 2017-02-18 23:42:24 +09:00
Neil Booth
3f35bc0298 More PEP8 stuff 2017-02-18 13:05:26 +09:00
Neil Booth
33cdfa4fc8 Merge branch 'nmarley-pep8' into develop 2017-02-18 12:54:01 +09:00
Neil Booth
9bd7b5a9f9 Merge branch 'pep8' of https://github.com/nmarley/electrumx into nmarley-pep8 2017-02-18 12:51:58 +09:00
Neil Booth
151da40d5b Implement peer discovery protocol
Closes #104

DEFAULT_PORTS now a coin property
A Peer object maintains peer information
Revamp LocalRPC "peers" call to show a lot more information
Have lib/jsonrpc.py take care of handling request timeouts
Save and restore peers to a file
Loosen JSON RPC rules so we work with electrum-server and beancurd which don't follow the spec.
Handle incoming server.add_peer requests
Send server.add_peer registrations if peer doesn't have us or correct ports
Verify peers at regular intervals, forget stale peers, verify new peers or those with updated ports
If connecting via one port fails, try the other
Add socks.py for SOCKS4 and SOCKS5 proxying, so Tor servers can now be reached by TCP and SSL
Put full licence boilerplate in lib/ files
Disable IRC advertising on testnet
Serve a Tor banner file if it seems like a connection came from your tor proxy (see ENVIONMENT.rst)
Retry tor proxy hourly, and peers that are about to turn stale
Report more onion peers to a connection that seems to be combing from your tor proxy
Only report good peers to server.peers.subscribe; always report self if valid
Handle peers on the wrong network robustly
Default to 127.0.0.1 rather than localhost for Python <= 3.5.2 compatibility
Put peer name in logs of connections to it
Update docs
2017-02-18 12:43:45 +09:00
Neil Booth
251dca4da9 Update match groups 2017-02-17 21:42:34 +09:00
Neil Booth
4dcd7f25a5 Further fix regex for hex chars 2017-02-17 07:59:49 +09:00
Neil Booth
82d57dc90f Accept IPv6 addresses in DAEMON_URL
Fixes #126
2017-02-16 08:00:08 +09:00
Nathan Marley
a03665696c recommendations from pycodestyle (pep8 style) 2017-02-07 20:12:50 -08:00
Neil Booth
6db9cb967c Require attributes to be specified for a coin 2017-02-06 19:48:30 +09:00
shsmith
169f5df91f update hostnames (#120) 2017-02-06 07:28:52 +09:00
Neil Booth
f1251766b6 Merge branch 'master' of github.com:kyuupichan/electrumx 2017-02-05 09:50:29 +09:00
Neil Booth
1856cbe6c0 Coin fixes/cleanup (erasmospunk)
2 out of 3 from #118
2017-02-05 09:41:27 +09:00
Neil Booth
a019fde853 Show uptime in RPC getinfo result 2017-02-04 10:35:36 +09:00
TheLazieR Yip
0e51c80156 Add PEERS for DASH (#117)
* Add PEERS for DASH

* Update PEER_DEFAULT_PORTS for DASH Testnet
2017-02-02 11:32:38 +09:00
Neil Booth
97557fa437 Don't send batches for now 2017-01-31 20:05:40 +09:00
Neil Booth
06c8eda161 Preparations for peer discovery
DEFAULT_PORTS is a now a coin property.
Other miscellaneous updates to get things closer
2017-01-29 06:47:43 +09:00
Neil Booth
f43c08d979 Log fatal messages once only 2017-01-29 06:08:29 +09:00
Neil Booth
e4c206e123 Namespace fix 2017-01-25 20:38:28 +09:00
Neil Booth
551c04a3bc Remove all uses of "except:" 2017-01-25 20:28:19 +09:00
Neil Booth
a7462a6ea3 Complete rewrite of JSON RPC infrastructure
Aim to be easier for clients to use, because to do peer
discovery we must act as a client to other servers.

Split out JSON session concept from the asyncio protocol
concept.  This makes the JSON RPC support more easily
testable and usable as a stand-alone library.

In addition, support JSON RPC v1 and v2, and auto-detection
of peer's version.
2017-01-23 23:36:02 +09:00
Petr Kracík
5343c1a286 Changed litecoin genesis block hash (#109) 2017-01-22 23:41:45 +09:00