-
Notifications
You must be signed in to change notification settings - Fork 242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add community run bootnodes to ensure Chaos Unicorn Day Resistance #1616
Comments
thoughts on using a smart contract repository to register nodes? |
As part of the network incentives initiative, we already implemented a
smart contract approach that rewards well behaving nodes and bans
misbehaving ones.
A POC has already been implemented in status-react ( not sybil resistant
and easy to game), but the app can be run using a set of nodes pulled from
a smart contract that police themselves.
…On Mon, Sep 23, 2019, 16:31 Corey Petty ***@***.***> wrote:
thoughts on using a smart contract repository to register nodes?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1616?email_source=notifications&email_token=AAHYJMFKSZP44NBGIC5MA33QLDHKTA5CNFSM4IZLSFP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7LBWCI#issuecomment-534125321>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAHYJMDXJOWEZZEQIAPOVITQLDHKTANCNFSM4IZLSFPQ>
.
|
thoughts on including the same curve dynamics dapp discovery uses? so a misbehaving node can be downvoted, but all staked with SNT |
I think that's a great idea to explore, but not for v1. Too many unknowns and risk factors imo. I'd rather keep it as simple as possible, and we can extend in iteration after. |
agreed |
yes, definitely not v1 material, in terms of staking, other similar
projects avoid it (DASH, loki), likely because false positive are possible,
and it is relatively easy to cause a dos to a node.
…On Mon, Sep 23, 2019, 16:43 Corey Petty ***@***.***> wrote:
agreed
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1616?email_source=notifications&email_token=AAHYJMF6I3IR2MN5WPT4JPDQLDIXPA5CNFSM4IZLSFP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7LC6ZY#issuecomment-534130535>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAHYJMHJD7N7IF54JDWXP2LQLDIXPANCNFSM4IZLSFPQ>
.
|
you need to be in sync with the network to read the contract though, so kind of a catch 22? |
kind of, you need to ask a synced node, if we were to use this strategy service nodes would be expected to be synced with the ethereum chain, so that you have a few options:
This is no different from ethereum, ultimately we will need a list of hardcoded bootnodes/contract address |
Ping @jacqueswww any luck with this? @adambabik are all the docs up to date here? I believe there were some issues running a node but don't know details. Also cc @3esmit and fyi @andremedeiros |
How we would deal with dynamic IPs? |
That is indeed a problem. With the current architecture, it is recommended you have a static IP. The cluster has specific static IPs (decoupled from ad hoc VPSes) for that reason. No worries! |
I'd love to find a way to handle dynamic IPs. It is $500 for a static IP from my provider. Most webservices get around this through proxy services like dyndns, but AFAIK our node discovery only takes IPs. |
I wonder if something like handshake could help with this. |
Mobile routers connecting with data-only SIM cards generally have static IPs if they stay put in an area. I have one such router running on my nodes and it costs $20 per month for flat rate 4G. I don't know how other countries handle this but maybe look into it. |
We need a way to support dynamic IPs. In case of an active censorship over the use of bootnodes, static IPs are easy target. I see that this problem goes deep in rabbit hole. |
I think it is an OK requirement for bootnodes to be static IPs. You want that mechanism to be as KISS as possible, since it is how you discover the rest of the network. For nodes that are being discovered (Whisper relay nodes / mailservers / etc) that's a different question. The only thing that seems similarly KISS is to add support for DNS a la Bitcoin, but that's a bigger change. The problem with something like ENS is that you need to actually sync up your chain to get to it, which in itself requires bootnodes. So you haven't really solved any problem if you just require some other static nodes (or Infura DNS), just added another layer of indirection. |
In geth 1.9, discovery based on DNS was implemented:
I can do a POC with @jakubgs this week I believe. It does not necessarily simplifies things for folks who have dynamic IPs, though. They would need to update their DNS every time an IP changes to make it useful. Also, updating DNS takes time. |
Actually this is can usually be setup on your router just look for DynDNS settings, I used to be very happy using freedns.afraid.org to host my own dynamic DNS. Using DNS bootnodes is one more way to improve censorship resistance (it's obviously not full proof but it's one more layer). |
Oh right, forgot about that EIP! Nice one, poc would be awesome |
Ping @jacqueswww |
I've added two simple ways of running bootnodes, can be read about here: |
Cool thanks; will check it out. |
Alrighty; My new node is running at: Bootnode:
Mailserver
I believe it's a v1 node; so I get a PoW() error message from my Playstore Status client. Anyone want to give it a go? |
@jacqueswww I think I've added you and connected but current V1 doesn't show previously added bootnodes (new bug I think) |
after adding mailserver, I got "The mailserver couldn't be reached" |
I don't think it works, your port doesn't appear to be open. Either a NAT or a firewall issue:
|
Down again:
How do you run your node? What do you see in logs?
|
@jakubgs so I think the moment I log out the job kills itself.
|
I think for my use case i.e. for being able to logout of my machine however be able to keep the process in the background I should use |
Well, the way If you want to make it into a system service you'd have to remove it as a user service and use the same kind of
That should make it into a system service that will run with system boot. |
In hindsight this might be something worth adding to our @jacqueswww please review and test the branch to see if that works for you: #1755 |
@jakubgs great thanks; just tested worked for me. |
I used new configs; so:
Mailserver:
|
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Was this solved? It is still a problem :) Though perhaps more on status-react as a user-facing issue |
@oskarth because I thought Chaos Unicorn Day was over =]. |
It's never over! You know, you could just shut down the whole cluster and watch people panic... |
Now that you say it... that does sound fun. |
Problem
If all our servers are down, e.g. during a Chaos Unicorn Day event, Status stops functioning. This is due to all bootnodes being hosted by us. It'd be good to have this in v1 since we'll likely want to do a CUD fairly soon.
Implementation
Issue PR that updates default bootnodes with community (Status core contributors primarily) run nodes.
Acceptance Criteria
Things still work. Bootnode can be connected to.
Notes
See https://discuss.status.im/t/increasing-bootstrap-node-diversity-kiss-edition/1138
Future Steps
The text was updated successfully, but these errors were encountered: