Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Feb 28 2019 19:45
    @Arachnid banned @merkle_tree_twitter
  • Feb 17 2019 00:56
    @jpitts banned @Aquentson_twitter
  • Apr 09 2018 04:14
    @holiman banned @JennyJennywren_twitter
  • Oct 21 2017 19:12
    @Arachnid banned @Musk11
Nick Johnson
@Arachnid

But does anyone know/remember why the square root, and why cannot we just propagate to all peers?

Propagating to all peers would lead to O(nm) messages being sent, where n is the number of nodes and m the number of peers per node - this devolves to O(n^2) in a fully connected network.

If we propagate to sqrt(m) peers, then in a fully connected network we send O(n * sqrt(n)) messages, which grows much slower.

Log would probably make more sense than sqrt here, but I don't think it makes a big difference.
Ghost
@ghost~55c3ed250fc9f982beac84b3
It looks like Transactions are currently flooded to all peers though: https://github.com/ethereum/go-ethereum/blob/7c71e936a716794709e7a980b7da9010c4d0a98c/eth/handler.go#L737
:)
5chdn
@5chdn

Good morning, if we want to hard-fork ropsten in October, isn't it too late to wait with a block number until next core dev call?

I'm proposing 4_230_000 for ropsten, but happy to hear other opinions if we want to relax the timeline even further towards the end of october.

paritytech/parity-ethereum#9562

Péter Szilágyi
@karalabe
@AlexeyAkhunov the reason transactions are propagated to all peers is to avoid gaps
if we start propagating transactions to sqrt peers, we'll fill up every txpool with nonce gaps, causing transactions to be dumped
I agree with enforcing a minimum of 4 nodes to propagate the entire block to btw
that could help with smaller networks
I missed the last 2 core dev calls due to being on holiday, so I don't want to have too much say, but are the tests completed yet?
AFAIK most clients have the forks EIPs implemented, but it would be really nice to have a full test suite before announcing the fork, even on ropsten
Lane Rettig
@lrettig
On Friday Dimitry said he needs a couple more months to finish the Constantinople tests completely but we had consensus on moving forward with a testnet fork before this
Welcome back @karalabe !
Péter Szilágyi
@karalabe
Fair enough
Ghost
@ghost~55c3ed250fc9f982beac84b3
@karalabe Thanks for your comments! I will keep digging and thinking :)
Péter Szilágyi
@karalabe
@AlexeyAkhunov Feel free to open a PR to enforce block propagation to 4 peers :)
Martin Holst Swende
@holiman

So yeah, I think the general idea was that it doesn't matter much if we have consensus issues on Ropsten (we don't need to wake anybody up at 2 am). And with that reasoning, we figured we could fork it even without all tests being done.

Now, if this is not a correct sentiment, feel free to yell about it.

Ghost
@ghost~55c3ed250fc9f982beac84b3
@karalabe Great, I will do it (today most probably). I would also open another PR to prioritise block propagation over tx propagation, i.e. swap the order of these case statements: https://github.com/ethereum/go-ethereum/blob/cc21928e1246f860ede5160986ec3a95956fc8d4/eth/peer.go#L116
Eth-Gitter-Bridge
@Eth-Gitter-Bridge
[W Dimitry] are we doing this or not?
ethereum/tests#488
Péter Szilágyi
@karalabe
@AlexeyAkhunov select statements are theoretically random, if multiple channels are ready
but we can prioritize via 2 selects if it's important
Ghost
@ghost~55c3ed250fc9f982beac84b3
I am thinking of a situation where we have "transaction storm" and that stops block propagation for a while, because queuedTxs never goes empty, could this happen?
but having 2 selects (first for blocks, and then the second for transactions, only if there are no blocks to propagate) sound like a good idea
Jason Carver
@carver

Propagating to all peers would lead to O(nm) messages being sent, where n is the number of nodes and m the number of peers per node - this devolves to O(n^2) in a fully connected network.
If we propagate to sqrt(m) peers, then in a fully connected network we send O(n * sqrt(n)) messages, which grows much slower.

Is a fully-connected network a desired/desirable goal? It surprised me that that it was a consideration.

Andrei Maiboroda
@gumb0
As we approach Ropsten fork, would be nice to see more clients on Ropsten's ethstats, see http://ropsten.ethstats.ethdevops.io/
I think @nonsense can provide details on how to connect to it
Anton Evangelatov
@nonsense
@gumb0 yes, I can do that. If someone wants to connect, please PM me.
Noel Maersk
@veox
@gumb0 Mine are listed on https://ropsten-stats.parity.io/. :/
Alex Beregszaszi
@axic
What is the current version of the CREATE2 instruction ? The EIP1014 lists a couple of different versions.
Eth-Gitter-Bridge
@Eth-Gitter-Bridge
[W Dimitry] Martin run the create2 tests on geth. So looks like geth implemented the one I sent you, axic
Martin Holst Swende
@holiman
I've made a PR against the Eip
To make it align with what we've agreed upon
Ghost
@ghost~55c3ed250fc9f982beac84b3
@karalabe I have done the PR to put lower bound of 4 onto the block propagation peers: ethereum/go-ethereum#17725
I will do another one a bit later to prioritise blocks over transactions
Jacek Sieka
@arnetheduck
morning folks - when's the next PM call? ethereum/pm#56 is still open (there's also plenty of recent commentary on that issue) @lrettig @Souptacular
Lane Rettig
@lrettig
Hey @arnetheduck! Thanks for the reminder. Just opened a new one. Should be a week from today.
Jacek Sieka
@arnetheduck
@lrettig sweet! I got as far as putting my headphones on charge to be prepped for a meeting today before someone pointed out the date for me :)
Lane Rettig
@lrettig
Haha sorry about that. I've done that a few times
Ghost
@ghost~55c3ed250fc9f982beac84b3
Hi! I have reviewed ProgPow Pull request and also played around with the code a bit. I concluded that the reason it is so slow is simply that it tries to access dataset around 100x times more than Hashimoto. Not sure it is intentional. So I would send it back to the original authors to think about
See my comments in the PR
Ghost
@ghost~55c3ed250fc9f982beac84b3
I have just realised (perhaps it has been discussed before though), that the current spec of CREATE2 opcode allows the original creator of the contract to revive it after it has been self-destructed. Obviously, with the same code. Self-destruct moves (or burns) residual ETH, so it cannot be used for fund-recovery. And the storage will be also clear on such a revival, right? It is not necessarily bad, but a quirk worth knowing about.
Danny Ryan
@djrtwo
revive the previously existing code or create an entirely new contract at the same address with different bytecode?
Ghost
@ghost~55c3ed250fc9f982beac84b3
revive the previous existing code at the same address. Essentially, it would make self-destruct not really terminal state of a contract. It can be further created and destroyed many times
I do not see a problem with that (so far)
Danny Ryan
@djrtwo
makes auditing code and dependencies a little trickier because it is not immediately obvious how the code will or had been deployed
and seems to break the semantics of self-destruct