All Projects → xiaoyao1991 → manspreading

xiaoyao1991 / manspreading

Licence: MIT License
Manspreading is a proxy server that helps you greedily occupy a peer seat in a remote geth node

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to manspreading

Tokenbalance
Simple Ethereum API to get your ERC20 Token Balance along with useful information
Stars: ✭ 163 (+379.41%)
Mutual labels:  geth
geth-connector
This repository served as an experiment playground for the alpha version of AKASHA desktop application. Now it is considered deprecated and seen as a stepping stone in the R&D of the AKASHA world framework. 🚀🌍🚀
Stars: ✭ 52 (+52.94%)
Mutual labels:  geth
gethexporter
Monitor your Geth Ethereum Server with Prometheus and Grafana
Stars: ✭ 103 (+202.94%)
Mutual labels:  geth
Dagger.js
Simple library to connect with dagger server and manage subscriptions for Ethereum Blockchain.
Stars: ✭ 179 (+426.47%)
Mutual labels:  geth
ethereum-ingest
JavaFX and commandline application to import events from the Ethereum blockchain into ElasticSearch, MongoDB, Hazelcast, CQEngine and SQLite.
Stars: ✭ 34 (+0%)
Mutual labels:  geth
baseline
The Baseline Protocol is an open source initiative that combines advances in cryptography, messaging, and distributed ledger technology to enable confidential and complex coordination between enterprises while keeping data in systems of record. This repo serves as the main repo for the Baseline Protocol, containing core packages, examples, and r…
Stars: ✭ 565 (+1561.76%)
Mutual labels:  geth
Web3 By Example
Node.js with Web3 javascript examples for getting basic information (transactions, balances, network stats, and tokens) from the Ethereum blockchain.
Stars: ✭ 156 (+358.82%)
Mutual labels:  geth
geth exporter
geth metrics exporter for Prometheus
Stars: ✭ 14 (-58.82%)
Mutual labels:  geth
dao1901
French 1901's Law for non-profit organizations, now on Ethereum
Stars: ✭ 29 (-14.71%)
Mutual labels:  geth
web3j-example
Android web3j example
Stars: ✭ 27 (-20.59%)
Mutual labels:  geth
Ethereum
以太坊开发 HelloWorld for Java
Stars: ✭ 191 (+461.76%)
Mutual labels:  geth
GethDesk
GethDesk - is a web based application to simplify work with Ethereum "Geth Go" console client.
Stars: ✭ 16 (-52.94%)
Mutual labels:  geth
bane
Chainlink security and orchestration tools for Ubuntu server
Stars: ✭ 6 (-82.35%)
Mutual labels:  geth
Go Ethereum Hdwallet
Ethereum HD Wallet derivations in Go (golang)
Stars: ✭ 178 (+423.53%)
Mutual labels:  geth
ethereum-light-wallet-android
react native based light ethreum wallet
Stars: ✭ 24 (-29.41%)
Mutual labels:  geth
Crowdfunding
基于区块链(以太坊)技术的安全众筹系统
Stars: ✭ 159 (+367.65%)
Mutual labels:  geth
e7mon
Ethereum clients monitor
Stars: ✭ 30 (-11.76%)
Mutual labels:  geth
Nethereum.BlockchainStorage
Library for processing the storage of the Ethereum blockchain in Azure Table Storage
Stars: ✭ 35 (+2.94%)
Mutual labels:  geth
docker-geth-lb
MyEtherWallet AWS set up. Deploy public-facing Ethereum nodes using AWS CloudFormation / Docker / Parity / Geth / ethstats
Stars: ✭ 127 (+273.53%)
Mutual labels:  geth
geth-devnet
Simple geth node running a private development network
Stars: ✭ 15 (-55.88%)
Mutual labels:  geth

Manspreading

Manspreading helps you greedily occupy a peer seat in a remote geth node. seat-occupied

Introduction

Sadly, due to the fact that many nodes on Ethereum network do not change the default --maxpeers settings, most nodes are full and won't accept new peers. Although there are static-nodes.json and trusted-nodes.json where a node owner can hardcode peers that will always connect regardless of the restriction by --maxpeers, these options are buried deep in the document and codebase, so that few knows they exist. Preserving a node peer seat at a peer becomes essential in the development/research on geth.

Manspreading is a proxy server that can be run as daemon and occupies a "seat" at a remote geth peer, so the real geth instance behind the proxy can stop and restart anytime without worrying the seat at the remote peer been taken during the restart period.

Prerequisite

  • Golang (v1.8+)
  • You need to install geth as the dependency by running go get github.com/ethereum/go-ethereum

Usage

  1. go build .
  2. ./manspreading --upstream="<remote node enode url>" --listenaddr="127.0.0.1:36666"
    A log line will show what's the enode url of the manspreading proxy in the format of enode://<nodekey>@<listenaddr>
    or if you have a nodekey file that you'd like to use:
    ./manspreading --upstream="<remote node enode url>" --listenaddr="127.0.0.1:36666" --nodekey="<path_to_your_nodekey>"
    Upstream node will be configured as both a static node and a trusted node, therefore even if the upstream disconnect itself, manspreading will attempt to reconnect indefinitely.
  3. Start your real geth instance and add the manspreading enode url as a peer by running admin.addPeer("<manspreading enode url>")

TODO

  • Making manspreading a 1-to-many or even a many-to-many proxy
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].