Skip to content
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

Implement clique sealing logic #44

Closed
5chdn opened this issue Jan 23, 2019 · 59 comments
Closed

Implement clique sealing logic #44

5chdn opened this issue Jan 23, 2019 · 59 comments

Comments

@5chdn
Copy link

5chdn commented Jan 23, 2019

a parity node should be able to seal valid blocks in a clique network according to spec

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 2500.0 DAI (2500.0 USD @ $1.0/DAI) attached to it as part of the Görli Testnet Initiative fund.

@gitcoinbot
Copy link

gitcoinbot commented Jan 23, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 2 weeks, 2 days ago.
Please review their action plans below:

1) shamardy has applied to start work (Funders only: approve worker | reject worker).

I would like to work on this issue. I have experience working with Rust and Parity. I am also familiar with Clique and Golang. I can have a PR ready for review in a week.

Learn more on the Gitcoin Issue Details page.

2) jwasinger has been approved to start work.

Sealing has been implemented for parity in #29 and currently works: the client syncs to Goerli and Rinkeby, the client can function as a sealer (tested locally using Docker: openethereum/parity-deploy#82 ). The implementation is awaiting review and further testing.

Learn more on the Gitcoin Issue Details page.

@thefallentree
Copy link

thefallentree commented Jan 24, 2019

this part is mostly in the code now, and it also heavily involved with other clique code,. I don't think it should/is possible to have someone else independently working on this.

However, I really would like to see an refactoring of consensus module from other part of the parity codebase. the current consensus engine interface is very confusing, error prone and due to the crate layout, its compile time is ridiculous long and an change basically force everything else to recompile, would love to see someone understand and propose an new interface instead.

It would be wonderful to be able to write/compile/test consensus engine independently from whole client and better unit integration support.

@5chdn
Copy link
Author

5chdn commented Jan 24, 2019

Yes, I give this @jwasinger who already started working on this.

@gitcoinbot
Copy link

gitcoinbot commented Jan 27, 2019

@jwasinger Hello from Gitcoin Core - are you still working on this issue? Please submit a WIP PR or comment back within the next 3 days or you will be removed from this ticket and it will be returned to an ‘Open’ status. Please let us know if you have questions!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

@ghost
Copy link

ghost commented Jan 28, 2019

@thefallentree

However, I really would like to see an refactoring of consensus module from other part of the parity codebase. the current consensus engine interface is very confusing, error prone and due to the crate layout, its compile time is ridiculous long and an change basically force everything else to recompile, would love to see someone understand and propose an new interface instead.

It would be wonderful to be able to write/compile/test consensus engine independently from whole client and better unit integration support.

If I understood you correct, this should be the same that I mentioned as "Task B" :

eth-clients/goerli#9 (comment)

I've not yet looked at the code, but I expect that this would take weeks to be completed. The result would be of course that the effort for newly implemented engines would be reduced. Not to mention the benefit of easier maintenance.

@thefallentree
Copy link

It wasn't that bad. I think it's at most a weekend's work. I plan on doing that after I finish the code anyway.

@gitcoinbot
Copy link

gitcoinbot commented Jan 30, 2019

@jwasinger Hello from Gitcoin Core - are you still working on this issue? Please submit a WIP PR or comment back within the next 3 days or you will be removed from this ticket and it will be returned to an ‘Open’ status. Please let us know if you have questions!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

@thefallentree
Copy link

thefallentree commented Jan 31, 2019

working sealing is implemented in 100b149 and the released in clique-v4

There are a few TODO here:

  • make sure signed blocks are braodcasted immediately
  • step_service need to be an single thread with fix-delay scheduling, right now its fix-rate I think.
  • Implement wiggle delay for signing NOTURN blocks
  • Implement vote casting
  • workaround --reseal_min_period and --release_max_period , investigate potential to get rid of step_service.
  • Test and fix case when period=0, with instant sealing.

and I'm actually working on it

@jwasinger
Copy link
Member

jwasinger commented Jan 31, 2019

Sealing was working around abc625d before the refactor.

Implement wiggle delay for signing NOTURN blocks

This was already implemented pre-refactor inside generate_seal :

if state.turn_delay(&block.header) {

I haven't really had time to look at the code after the refactor but I guess a lot of stuff needs to be re-implemented.

@thefallentree
Copy link

Sealing was working around abc625d before the refactor.

Implement wiggle delay for signing NOTURN blocks

This was already implemented pre-refactor inside generate_seal :

parity-goerli/ethcore/src/engines/clique/mod.rs

Line 359 in abc625d

if state.turn_delay(&block.header) {
I haven't really had time to look at the code after the refactor but I guess a lot of stuff needs to be re-implemented.

don't worry, I have reimplemneted it in latest change.

@thefallentree
Copy link

Wiggle and Vote casting are implemented in
dbf54d7 and df1a38b

@5chdn
Copy link
Author

5chdn commented Feb 6, 2019

Thanks. I will try to setup a network and test sealing these days

@5chdn
Copy link
Author

5chdn commented Feb 7, 2019

screenshot at 2019-02-07 14-06-10

@5chdn
Copy link
Author

5chdn commented Feb 7, 2019

This works for me. Two Parity Ethereum sealers and one Geth syncing the chain.

There is one hiccup though, Geth seems to reject the first block with:

WARN [02-07|14:04:42.856] Discarded bad propagated block           number=1 hash=b8cd8a…19d6c7
WARN [02-07|14:04:55.469] Discarded bad propagated block           number=1 hash=b8cd8a…19d6c7

@5chdn
Copy link
Author

5chdn commented Feb 7, 2019

But afterwards this accepts the chain (after block #2)

~/.opt/parity-goerli master*
❯ geth --datadir /tmp/g0 --networkid 106                
INFO [02-07|13:53:46.050] Maximum peer count                       ETH=25 LES=0 total=25
INFO [02-07|13:53:46.053] Starting peer-to-peer node               instance=Geth/v1.8.21-stable-9dc5d1a9/linux-amd64/go1.11.4
INFO [02-07|13:53:46.054] Allocated cache and file handles         database=/tmp/g0/geth/chaindata cache=512 handles=262144
INFO [02-07|13:53:46.074] Initialised chain configuration          config="{ChainID: 106 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: 0 EIP155: 0 EIP158: 0 Byzantium: 0 Constantinople: 0 Engine: clique}"
INFO [02-07|13:53:46.074] Initialising Ethereum protocol           versions="[63 62]" network=106
INFO [02-07|13:53:46.146] Loaded most recent local header          number=0 hash=7589a4…14386f td=1 age=49y9mo3w
INFO [02-07|13:53:46.146] Loaded most recent local full block      number=0 hash=7589a4…14386f td=1 age=49y9mo3w
INFO [02-07|13:53:46.146] Loaded most recent local fast block      number=0 hash=7589a4…14386f td=1 age=49y9mo3w
INFO [02-07|13:53:46.147] Regenerated local transaction journal    transactions=0 accounts=0
INFO [02-07|13:53:46.148] Stored checkpoint snapshot to disk       number=0 hash=7589a4…14386f
INFO [02-07|13:53:46.158] New local node record                    seq=1 id=992583e250f129eb ip=127.0.0.1 udp=30303 tcp=30303
INFO [02-07|13:53:46.161] Started P2P networking                   self=enode://1a84804231dbb8e6bc8e6feb6356381938bd81f6184da80ac460bfec454558235f8fd9183d135539467197deafad2d8b972d50e3897636a83438479357902e93@127.0.0.1:30303
INFO [02-07|13:53:46.165] IPC endpoint opened                      url=/tmp/g0/geth.ipc
INFO [02-07|13:53:47.362] New local node record                    seq=2 id=992583e250f129eb ip=89.245.190.29 udp=30303 tcp=30303
2019/02/07 13:53:48 ssdp: got unexpected search target result "upnp:rootdevice"
2019/02/07 13:53:48 ssdp: got unexpected search target result "upnp:rootdevice"
2019/02/07 13:53:48 ssdp: got unexpected search target result "upnp:rootdevice"
2019/02/07 13:53:48 ssdp: got unexpected search target result "upnp:rootdevice"
2019/02/07 13:53:48 ssdp: got unexpected search target result "upnp:rootdevice"
2019/02/07 13:53:48 ssdp: got unexpected search target result "upnp:rootdevice"
WARN [02-07|14:04:42.856] Discarded bad propagated block           number=1 hash=b8cd8a…19d6c7
WARN [02-07|14:04:55.469] Discarded bad propagated block           number=1 hash=b8cd8a…19d6c7
INFO [02-07|14:05:01.574] Block synchronisation started 
INFO [02-07|14:05:01.577] Imported new block headers               count=2 elapsed=795.635µs number=2 hash=8de614…29fb8f
INFO [02-07|14:05:01.578] Imported new chain segment               blocks=2 txs=0 mgas=0.000 elapsed=499.541µs mgasps=0.000 number=2 hash=8de614…29fb8f cache=0.00B
INFO [02-07|14:05:01.579] Fast sync complete, auto disabling 
INFO [02-07|14:05:20.368] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=395.145µs mgasps=0.000 number=3 hash=c64786…906ce7 cache=0.00B
INFO [02-07|14:05:39.086] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=362.303µs mgasps=0.000 number=4 hash=e0cefe…8347c6 cache=0.00B
INFO [02-07|14:05:57.878] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=390.749µs mgasps=0.000 number=5 hash=9ccf2b…61dadf cache=0.00B
INFO [02-07|14:06:16.595] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=335.092µs mgasps=0.000 number=6 hash=53e2cd…91e8d2 cache=0.00B
INFO [02-07|14:06:35.386] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=314.669µs mgasps=0.000 number=7 hash=907336…78d99e cache=0.00B
INFO [02-07|14:06:54.111] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=365.305µs mgasps=0.000 number=8 hash=283a62…224b73 cache=0.00B
INFO [02-07|14:07:12.895] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=1.146ms   mgasps=0.000 number=9 hash=a34c4e…fb92ad cache=0.00B
INFO [02-07|14:07:32.121] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=336.254µs mgasps=0.000 number=10 hash=364cd2…2b7f79 cache=0.00B
INFO [02-07|14:07:50.409] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=283.138µs mgasps=0.000 number=11 hash=df8540…c5ad5e cache=0.00B
INFO [02-07|14:08:09.633] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=302.236µs mgasps=0.000 number=12 hash=107de8…f21144 cache=0.00B

@5chdn
Copy link
Author

5chdn commented Feb 7, 2019

Parity Sealer:

~/.opt/parity-goerli master* 2m 38s
❯ target/release/parity --base-path /tmp/p2 --chain ethcore/res/clique.json --ports-shift 200 --force-sealing --engine-signer 0x13fe6c62876ceab7c1bd48453ebdae52827f1911 --password /tmp/pass --bootnodes enode://1a84804231dbb8e6bc8e6feb6356381938bd81f6184da80ac460bfec454558235f8fd9183d135539467197deafad2d8b972d50e3897636a83438479357902e93@127.0.0.1:30303,enode://469b91843186ec08fad1f8140eb7297f654a70c8c3f7b8358014b45bc359366516c4ce1617659ba251365cb85d2253c399e25c9579671084f8645434487ede5a@192.168.1.135:30403,enode://434835bf9a8bab1a61f8c91d0ac6e70abeb49f2d68f9abed1ad4bb1b397af8f6591625914a6d2e8a15a7c095d22fc5d401aef34921bd84abd330a9b3524506e4@192.168.1.135:30503
2019-02-07 14:04:54  Starting Parity-Ethereum/v2.4.0-nightly-97303717d-20190129/x86_64-linux-gnu/rustc1.32.0
2019-02-07 14:04:54  Keys path /tmp/p2/keys/clique
2019-02-07 14:04:54  DB path /tmp/p2/chains/clique/db/599db7c0ea3b4096
2019-02-07 14:04:54  State DB configuration: fast
2019-02-07 14:04:54  Operating mode: active
2019-02-07 14:04:54  Configured for TestClique using Clique engine
2019-02-07 14:04:54  Public node URL: enode://434835bf9a8bab1a61f8c91d0ac6e70abeb49f2d68f9abed1ad4bb1b397af8f6591625914a6d2e8a15a7c095d22fc5d401aef34921bd84abd330a9b3524506e4@192.168.1.135:30503
2019-02-07 14:04:54  Listening for new connections on 127.0.0.1:8746.
2019-02-07 14:05:01  Imported #2 0x8de6…fb8f (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB) + another 1 block(s) containing 0 tx(s)
2019-02-07 14:05:20  Imported #3 0xc647…6ce7 (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:05:24     2/25 peers   9 KiB chain 8 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:05:39  Imported #4 0xe0ce…47c6 (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:05:54     2/25 peers   9 KiB chain 8 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:05:57  Imported #5 0x9ccf…dadf (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:06:16  Imported #6 0x53e2…e8d2 (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:06:24     2/25 peers   9 KiB chain 8 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:06:35  Imported #7 0x9073…d99e (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:06:54  Imported #8 0x283a…4b73 (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:06:54     2/25 peers   9 KiB chain 8 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:07:12  Imported #9 0xa34c…92ad (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:07:24     2/25 peers   11 KiB chain 9 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:07:32  Imported #10 0x364c…7f79 (0 txs, 0.00 Mgas, 1 ms, 0.59 KiB)
2019-02-07 14:07:50  Imported #11 0xdf85…ad5e (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:07:54     2/25 peers   11 KiB chain 9 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:08:09  Imported #12 0x107d…1144 (0 txs, 0.00 Mgas, 1 ms, 0.59 KiB)
2019-02-07 14:08:24     2/25 peers   11 KiB chain 9 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs
2019-02-07 14:08:27  Imported #13 0xa14b…a9da (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:08:47  Imported #14 0x12f6…b35e (0 txs, 0.00 Mgas, 0 ms, 0.59 KiB)
2019-02-07 14:08:54     2/25 peers   11 KiB chain 9 KiB db 0 bytes queue 37 KiB sync  RPC:  0 conn,    0 req/s,    0 µs

@5chdn
Copy link
Author

5chdn commented Feb 7, 2019

Good work. Next step would be sealing on Görli and see how this works out.

This is my test genesis and chainspec: 9dbe5b3

@thefallentree
Copy link

@5chdn is this same issue with ethereum/go-ethereum#14945 ?

@5chdn
Copy link
Author

5chdn commented Feb 8, 2019

Yes, it is! Otherwise it looks good! Was running for 24h without any issues.

@gitcoinbot
Copy link

@jwasinger Hello from Gitcoin Core - are you still working on this issue? Please submit a WIP PR or comment back within the next 3 days or you will be removed from this ticket and it will be returned to an ‘Open’ status. Please let us know if you have questions!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

@gitcoinbot
Copy link

gitcoinbot commented Feb 17, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


@jwasinger due to inactivity, we have escalated this issue to Gitcoin's moderation team. Let us know if you believe this has been done in error!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

@jwasinger
Copy link
Member

Hi, I'm not sure how to proceed. Significant work towards sealing has been contributed by @thefallentree and myself. As such, it doesn't really make sense to have this whole bounty assigned to one participant.

@thefallentree
Copy link

I'm addressing the final PR comments, so this will be done within next week

@5chdn
Copy link
Author

5chdn commented Feb 28, 2019

@thefallentree @jwasinger I will pay you both a significant part of the parity clique bounty before I hand over this project to MP/ChainSafe. I'm sorry for the lack of communication recently but it was a rough ride.

Please confirm that you are consent with paying out the bounty via Gitcoin? This is easiest for me, so all I need is your Github account to send it.

@thefallentree
Copy link

I have reservations about the split here. @5chdn can we chat?

@mariapaulafn
Copy link

Hello there @thefallentree, I'm MP, one of the three custodians. I am trying to help all parts be aligned. you can talk to me. What's the best way to reach you?
Also, would you please confirm you have been compensated accordingly for your work in the last few days?

@jwasinger
Copy link
Member

jwasinger commented Mar 10, 2019

@thefallentree If you are implying that I deserve less money for the work I have done, then I respectfully disagree.

During this whole process, you have not been forthcoming in communication around code design and I feel like some of the refactoring was "forced" without actually having a discussion about it. When a refactor requires re-implementation of features that were previously working and introduces new issues, that creates additional work (see my DM regarding the consensus issue). Your refactor around sealing created issues and I disagreed with the design.

I wanted to collaborate but you have made that excessively difficult. I cannot continue to hit a moving target if you dictate the direction without communication. I am happy with the amount I have received. The hours I have invested into this project are fairly reflected in that number.

Jared

@mariapaulafn
Copy link

Hey @jwasinger I dont think @thefallentree has said anything about you, but I'm committed to dig deeper.
You have been compensated accordingly, and you deserve every DAI. We consider both of you valuable collaborators, and this is why we have been paying special attention to this issue.

Of course we cannot weigh into your internal issues, and understand your PoV, Jared, and if its lack of communication what's preventing you from collaborating, we'll find you a new opportunity, and talk with Yucong separately to hear his concerns.

Nevertheless, both parties are accordingly compensated, and Görli will not change anybody's compensation based on statements of others.

@jwasinger
Copy link
Member

jwasinger commented Mar 10, 2019

Yeah, I have my issues with the communication around design. That being said, @thefallentree has been pushing very hard on this project and is a very important asset to Goerli.

@ghost
Copy link

ghost commented Mar 10, 2019

When a refactor requires re-implementation

then it's not a refactoring. Refactoring is an Art, which can usually be performed only by "naturals". All others mess it up, and start reDESING / reIMPLEMENTATION.

See, when I personally perform "The Art of Refactoring" (tiny steps, on code which is in production), then it is mostly sub-consciously driven: I cannot explain steps, cannot discuss, am kind of a semi-autistic lab-rat.

having said that, I have reservations about the split, too:

I should get the 15K for #50, the 2 devs here should split my 1K !!!

$^%&#%^^@(&^(&

.

@roninkaizen
Copy link

roninkaizen commented Mar 10, 2019

Hello @ALL

to state honestly, i wrote with yucong before understanding some but not all,
knowing both devs from reading, knowing about "money-questions" about this,
i personally would suggest a "participating-parties-vote"- in the future (and only if needed)
background: i use the software (clique.v5), as the only visible person running parity on one of the stats- asking kind "is my voice also worth to be heard within this discussion?"
both commited work to the code, how much worthful each "participation" of both of them was,
in its results it lead to a valid parity-codebase, which allowed it for me to participate within goerli-
i wanted to state thankfulness to both of you,
and insist in finding a better future solution for such questions.

@ghost
Copy link

ghost commented Mar 10, 2019

...kaizen, you runied my closing-joke!!!

As for voting: this is for puppies.

A fight to the death, winner takes it all!

@thefallentree
Copy link

thefallentree commented Mar 10, 2019

@lazaridiscom @jwasinger I choose to not debat and furtuer your obvious trolling. However I will still talk with @mariapaulafn and be sure my case is preseneted clearly. I will reconsider if in the future I still want to invovle in goerli project after that.

And congrats you two just made to my new blocked user list. Cheers.

@ghost
Copy link

ghost commented Mar 10, 2019

a) Try "Thank you for the payment" as an intro, next time.
b) If I wanted to troll, I would "attack" your photo (but me civilized, not doing such things...)
c) The fact that you committed more code does not mean that you worked more that your co-worker. An analytical mind usually collapses by "moving targets" - that's my experience. So, its easy to "knock out" a co-dev (intentional or not), simply by checkin in changes fast.
d) why would you even mention that you blocked folks? Get serious, please!

Next time just negotiated clearly before(!) you start work, thus you won't need to have "reservations" afterwards.

And may I remind you that this is a public project, with a public grant and public processing:

I protest that this is discussed in private.

I'll die from curiosity!!!

.

@jwasinger
Copy link
Member

It's a shame that my attempt to engage in honest conversation was instantly shut down. But I guess I can't expect any less given our past history of "collaboration".

@ghost
Copy link

ghost commented Mar 10, 2019

No worries. At the end, even lava cools down.

@mariapaulafn
Copy link

@lazaridiscom please drop this chat. you have no say on this conversation and are distracting the real parties that need to express their opinion, this is a warning.

@mariapaulafn
Copy link

I think both @jwasinger and @thefallentree have expressed fair concerns, and also jared's been open to communication. Thank you both, and we will make sure to hear all voices.
That said, please avoid tagging each other as trolling. None of you are trolls, but contributors, and we expect decorum and to avoid name calling here. That's final.
Appreciate @roninkaizen's perspective as well.

The decision to fund both contributors alike stands, and will not change. I ask you to stop focusing on each other's compensation and contributions, and focus on your own. We assessed this fairly and YES, by accepting your compensation it means you accept everything else. If you are not happy with something, then choose to reject all, and we'll listen.

@ghost
Copy link

ghost commented Mar 11, 2019

Naturally, I have a say here. The fact that you fail to see it does not change that.

Funny thing, what a little bit authority and power can do to people.

Warn as much as you want, couldn't care less!

.

@mariapaulafn
Copy link

@lazaridiscom there are two people here with issues, and i am trying to mediate.
you are trying to sensationalize and enjoy the show.
How does this give you a say in a 3 people conversation, I don't understand. Don't stir the fire and respect the people that are trying to resolve their conflicts. You are only adding noise and stress here.

@ghost
Copy link

ghost commented Mar 11, 2019

I don't understand

Obviously.

@jwasinger
Copy link
Member

@mariapaulafn you are wasting your time. Trolls gonna troll.

@ghost
Copy link

ghost commented Mar 11, 2019

Thanks for saving me, clown.

@thefallentree
Copy link

thefallentree commented Mar 12, 2019

I rewrote this comment a couple times, see next one for final version.

@thefallentree thefallentree reopened this Mar 12, 2019
@thefallentree
Copy link

thefallentree commented Mar 12, 2019

since I can't seem to reach @mariapaulafn reliably, I have decided to make an public post for the record.

  1. @jwasinger you must know it yourself that you didn't deliver a single version of working sealing code implementation, period (as defined in common sense of working, that is , able to be used to connect to goerli testnet). There had been plenty of time and support for you to do it, but you didn't deliver anything that is working.

Since you don't seem to want to admit, thanks to git, it is all recorded in history.

image

After the last commit by @jwasinger , the entire codebase is unable to compile for 2 weeks (it works before and I have implemented the syncing function, and explorer.goerli.net was using my version of parity.) . when on Jan 22 I reached out for current status, @jwasinger claim that he doesn’t know how to fix this compile issue, and he is unable to continue.

As recorded in history, anyone can try checking out this commit and see if you can fix this compile error and test how sealing works. I trust that you will find that nothing is actually working, in fact what was working before has also been sabotaged. @jwasinger also has not written any comments about what he had implemented, what he didn't implement and what he plans to do next, in fact it wasn't even clear why half the code is the way it is, it is clearly unfinished. So, I claimed this issue on that day, and I consider that he has made 0 valuable contribution to the project on sealing implementation so far. After all, coding is not typing contest, you can't just copy paste stuff and claim that you did work. (It is clear that there was copy & pasting from authority round implementation, even if it clearly didn't make sense).

  1. After I fixed the compile issue, I then restored syncing functionality. Then Suddenly @jwasinger jumps out here claiming my refactoring has ruined his work. I told him I had to fix syncing first, otherwise there is no foundation to further build on. And He agreed. Since then, @jwasinger has made 0 further attempt to continue working on sealing. He has made no code changes, no comments, and participate in no discussion at all. I know he is probably busy involved with some other work, and I'm okay with it. So, I continued work by myself and released several working version of parity code, including the last version that I currently run as an authority node.

  2. All my subsequent code release is working and I'm the one that kept pushing on getting reviewed and merge into trunk. The review has gone around for at least 5 times and I have addressed most of the comments. In total, I've probably spent over 200 hours on this implementation and I'm glad that I have something working.

  3. There are numerous statements made by @jwasinger that I consider dishonest. In many conversations he specifically emphasized that he and I have worked on this issue for months. (in fact, it's in the comments above") where I disagree. In my honest opinion that he hasn't been involved in this for an very long time, and he is just here to be "part" of the team. I personally don't like such behavior, but also, I don't judge what everyone else spends their time on either, it's a common corporate white lie. But I draw a line where this type of "white lie" is used to claim reward that don't belong to them. And when confronted with fact they will resort to complain about "communication issue". Yes, there was communication issue, and it is because of @jwasinger is not involved anymore. No one can communicate to a dead ear and no one should be forced to. And making this type of complain also turn this issue into a personal attack on the honest party, which is precisely why I must respond to, in public, specifically to @jwasinger. @jwasinger there is a common Chinese tradition that we allow other parties to "save face", which is why I didn't want to respond before, but you crossed the line (and you know it) when you accused me of communication issue, that is not an fact, it is a direct assault that commonly used in corporate politics. I don't like corporate politics and don’t want to participate in it in general, especially in OSS work, but I am also not afraid to. so, you have made me an enemy and brought this onto yourself.

I've been working on this issue long before goerli is created. In fact, my first few commits is there to make it work with rinkbey. Any monetary compensation happened afterwards is an after fact , it is an incentive for delivery, it is not an employment contract, and so far it has been kept me going stronger in the project, until now.

Please let the record show that I have 0 interest in how much money or compensation @jwasinger or anyone beside me get for his "effort" in other areas/project or whatever hourly rate * hours spent are. In fact, I congratulated @jwasinger on gitter after seeing that he have got an reward, good for him. But I do have an issue with rewarding this bounty to him. Because, yes, he has put in some hours for this project, sure, but the net result is 0. and Since this "reward" or "bounty" is for the delivery of "clique sealing implementation", of which, like I pointed it out in the above paragraph, I consider he has made 0 valuable contribution in total, beside claiming that he has done some "work" and checked in some code. To award such behavior is like saying typing junk into codebase is of equally valuable work that I delivered and I actually consider that this is a personal insult and slap of face to the work I put in (In fact I think it is an insult to me as a programmer in general, but that is just my own opinion.).

I personally detest the attitude of "I have put in hours so I earn what I owe" in this context, because OSS is not an employment. no one owes anyone anything.

What I also detest is that “you can only argue if you reject the award" as I am not recruited/employed by this award, rather this award is specifically created for incentivizing delivery. In my opinion. I designed, implemented and delivered working code by myself, I wrote high quality comments (I even wrote a mini design doc on how syncing/sealing code works in general, which is entirely new to parity codebase, because I spent hours tracing the code and figured it out, there was 0 documents) and I am currently running an official authority node using that code, with cost out of my own pockets.

I consider that I am 100% fully qualified for this "bounty" as it is stated. However, as a project collaborator I had issue with the split decision and I am here to raise my point to whomever in charge. I urge whoever manage the funds for goerli project in the future to put in more thoughts on how to utilize it. I somewhat understand because of what @5chdn has apparently been going through something in the past few months, that he may not be 100% on point on what's happening, but that doesn't resolve the fact that the decision is flawed, and it hurt the project more deeply than helped.

@mariapaulafn
Copy link

Hi @thefallentree give me some hours to read this (got a couple meetings first) and will give you an answer, both on gitter and here.
@jwasinger please till then, try to not take this personal, I'll make sure to cover everyone's concerns

@jwasinger
Copy link
Member

This is slanderous and unnacceptable. Many statements made above are patently false.

@jwasinger
Copy link
Member

I trust that you will find that nothing is actually working, in fact what was working before has also been sabotaged.

Lie. The client was sealing blocks (even as part of the CI) after I implemented it.

@jwasinger
Copy link
Member

what was working before has also been sabotaged.

Please clarify.

@soc1c
Copy link

soc1c commented Mar 12, 2019

Stop insulting contributors. I will remove offending comments here to secure the integrity of the project. If anyone thinks they personally received too much, please feel free to send it back to the goerli multi-sig wallet. 0x6974df01bf293ab9af66127c03aac79b81d494c7

@soc1c soc1c closed this as completed Mar 12, 2019
@goerli goerli locked as too heated and limited conversation to collaborators Mar 12, 2019
@mariapaulafn
Copy link

Final statement from Görli:
We are extremely disappointed with the situation here. I mentioned to @thefallentree that we would have a bit of an issue communicating due to my workload and timezones, I was expecting to talk this through today.
Till we read that awful message. Targetting a contributor in the way @jwasinger was targetted is NEVER okay, and will NEVER be okay. @thefallentree I had asked both of you to focus solely on your work and assess if the compensation of YOUR work was fair, not the others.
We know how this rolled out, no need to bring up a timeline of accusations. We funded Jared not only based on this but previous work.

I personally detest the attitude of "I have put in hours so I earn what I owe" in this context, because OSS is not an employment. no one owes anyone anything.

Well, your attitude is not very OSS either, it's petty and wrong. Finger pointing is not OSS at all. Degradation instead of collaboration is not OSS either. Neither is questioning another person's income (however you wanna call it, this is income - and OSS is a job). And you owe people basic decency and respect.

What I also detest is that “you can only argue if you reject the award" as I am not recruited/employed by this award, rather this award is specifically created for incentivizing delivery.

Well, that's your opinion. Here nobody has expected anybody to work for free, we want to create a healthy sustainable community, and it involves incentives, salaries, bounties or how you wanna call it. It's still money for work. Pays rent. Period.

I consider that I am 100% fully qualified for this "bounty" as it is stated. However, as a project collaborator I had issue with the split decision and I am here to raise my point to whomever in charge. I urge whoever manage the funds for goerli project in the future to put in more thoughts on how to utilize it.

You are technically qualified, that's 110% accurate. But not suited for the best interests of our community and our vision. Therefore, we have made the hard decision to remove you from the organization to protect other contributors and our project's culture.

We are deeply sorry for everyone that got upset by reading all this thread. My DMs and Gitter are open. OSS IS ABOUT CODE, BUT ALSO ABOUT BEING EXCELLENT TO EACH OTHER.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants