All Core Devs - Execution #81

All Core Devs - Execution · 21 Feb 2020 · 2:02:58

Ethereum core developers move EIP-2315 to eligible for inclusion, revisit EIP-2456, discuss EIP-2515 on updating the difficulty bomb and consider a proposal that Berlin ships when the BLS precompile is ready, with ProgPoW the next third Wednesday after that.

Speakers

Topics

From All Core Devs - Execution, hosted by Ethereum Foundation.

Transcript

[Music] [Music] [Music]

[Music] so [Music] [Music] hello

Hudson Jameson: and welcome to ethereum core developer meeting number 81.

this is um hudson let's see real quick okay i just muted someone who was typing um let's go ahead and start with the agenda this is going to be a super packed agenda today so let's try to be cognizant of uh getting through your topics really quickly and with um yeah with like minimal interruption and uh not too much off topic discussion when it comes to the technical aspects if it can be talked about in getter or the magicians just make sure to keep that in mind thank you all very much

and now we are going to start with actually we're going to start with efi but is anyone here for open rpc because i remember from last meeting we said that we would start with that is anyone here for that okay we can skip that for now let's start with the efi stuff um and i'll just let's um tag team this with james is that okay with you james

James Hancock: yeah i would actually discuss um any of the efi or eips that are looking to be in berlin and then have a general the general efi

discussion happen after

Hudson Jameson: okay do you wanna just take it away

James Hancock: um yeah i can do that

Hudson Jameson: thanks

where

James Hancock: let me grab the agenda so i have the list of the number of vips clicking around so for berlin coming up the there's been a couple eips that are almost ready to get in and then there's recently been in um

the eth2 deposit contract is looking to use a pre-compile so they can validate um the bls curves within the contract itself which they can't do in solidity so that gives us a schedule to schedule around and so the eips that are close to being ready and then that eip should be a scheduling window the ones i have seen as at that stage would be greg's eip greg colbin three two three one five um 1962

or the bls one that uh the eth2 team has created and it has created a proposal for a simplified version that only has the curves that they need so we can talk about that at the at the time that happens we should do we can do that at the as the last eip and that list then there's danos eip which is about scheduling um doing schedules for the um scheduling but with block time for the forks and just making it so it's easier so we can predict when those happen then there's the the difficulty bomb eip that i wrote for updating the difficulty bomb changes the algorithm and that one is

two um two five one five so let's first go into greg are you here

colbin he's on mute okay

Greg Colvin: yeah i'm here

James Hancock: so we could talk about that one first as possibly for inclusion for berlin and then after this discussion i had the first scheduling starting to talk about scheduling and then we also can talk about

uh praguepal which is on the agenda today as well

Martin Holst Swende: sorry if i may i just i think it's wrong to say talk about inclusion for berlin i think we should talk about eligible for inclusion period and then once the test cases exist and implementations work we can see if it's uh well kind of what upgrade window it goes into but i don't think we should do like we've done previously and say this goes for berlin and then kind of halt everything due to something that doesn't make it

into that

slope yeah

Greg Colvin: i agree we need to get the implementations much closer to ready and then say let's go

okay

Martin Holst Swende: i do agree that we we could make call today like and say yes we're all for this e or some other um go for it

that i think we should and can do yeah then

James Hancock: that was more of what i was intending and the as far as the scheduling goes the only one to really figure out when it when it could happen is the is the signature for the eth2 contract

and then whatever ends up is ready by that time can also be it just would be helpful for me to get an idea of who wants to kind of hit that timeline and if and then as a group are uh getting the general okay for that not saying it will or will not

could

Greg Colvin: uh could you remind us what the timeline is

um craig

James Hancock: the other greg are you here from the e2 team so the eth2 deposit contract was supposed to be july i believe july

29th

Tim Beiko: i thought maybe i'm wrong here but i thought

that uh the e2 deposit contract would happen uh sorry the e2 beacon chain launch was to happen around july which means the deposit contract would probably be you know weeks to month ish before that yes so i think like june is probably

oh in the system i realized i logged in from the cather's accounts my bad yeah i should mention that 1962 elsa has a complete implementation so it's it's not that showstopper

James Hancock: yes so the the bigger conversation is by june which of those could be ready so

that the deposit contract could be made and then which of the eips could would would be would we accept as like efi for that kind of before for that so that the authors of the ips can either get ready and be and make it for this window or make it in the next window when as the next fork happens is that kind of does that feel all right martin the way i said that

Martin Holst Swende: uh yeah

okay

James Hancock: so then for greg's vip is there any uh any updates

and is there do we have the sentiment that if if it was ready at that time that it would be able to go in

well

Greg Colvin: it's fine by me but i'm not i'm not currently implementing a client um so i think martin um who else dano here

Hudson Jameson: yeah dana's here um i would say greg can you give like a two sentence overview of what your um eip is again just as a reminder i see there's a lot of new people here today

Greg Colvin: okay um the proposals out there essentially essentially it adds three op codes at this point possibly

two um there's just to begin sub up code to mark the beginning of a routine martin and i have been discussing that maybe just a jump test would do um but you have to have some something to go to and then two two op codes one of them is just jump sub go to a subroutine and the other one is return sub come back um for most for most implementations you would simply have a a return stack so when you jump to a subroutine you push the current pc uh onto the stack and when you return from the subroutine you pop the stack and uh

resume execution where you jumped from and so it's it's really just that simple it's a two-stack design just like fourth so it's uh basically getting the evm up to uh 1970 standards

uh yes i just want to add something to greg's comments basically uh i think that's basically what other machines are doing so like with some subroutine jumps and uh return address stack uh yes so that's pretty standard so um uh and also uh the the lvn compiler could support that uh with a few uh modifications so uh

yes i think this is a good uh eip that we should put it in thanks so one thing that

Péter Szilágyi: we've been discussing with martin about the cip is that uh on the surface it looks uh really nice and we are wondering how much time would it be to hack solidity so that it actually can use this so that we might somehow try and run some benchmarks against existing contracts because it would be really nice to be able to see the actual number of what what this would mean

from uh yes but it's up to the solidity compiler to do the uh change and it has nothing to do with any uh uh solidity language level uh

modifications basically it's just a compiler change and the real change yeah

Péter Szilágyi: i know but the question my question is that uh it seems so the whole point of the of this subroutine is of the subroutines are to make the generated code faster but it would be nice to actually confirm that it does indeed make it faster before shipping it

Greg Colvin: is anyone here from solidity

doesn't sound doesn't sound like anyone's here but i think like like from the perspective of the compiler i think our

lvn based compiler could support it very easily so the

Felix Lange: the request was not to um like you know have all the compiler changes ready just before the hard fork including this eip but the idea was that since it is unclear if you know it provides an actual like benefit to the performance of let's say solidity smart contracts i think it would be very good to validate this eep before deploying it in a hard fork by basically just trying out the changes i mean the the the evm changes are implemented at this time so it is

possible to actually spin up a a a small uh laptop uh network and then you know use a modified compiler and then just run some benchmarks and this is basically what we we were thinking on the guest side would be the next step for this eip because um it is such a low level change and you know just i think it deserves to be evaluated before inclusion

Greg Colvin: okay it's unfortunate the solidity people haven't come

James Hancock: um i can help connect you you with them as far as like assuming that we have this the solidity benchmarks is there any opposition to

having this in

our strong feelings no we we discussed this a bit in the gut

Martin Holst Swende: team and i think yeah as a whole we're supportive of this uh proof of it to be eligible for inclusion and there was one thing though um so one thing greg already mentioned that's another stack a parallel stack so that's a kind of big change to dbm but it's it's not a show stopper in our opinion another thing worth pointing out is that if we do have the begin data sorry begin sub op code it means that when doing the jump test

analysis we also need to mark out begin subs and forget this is easy we do a one pass and mark code sections and data sections but other implementations which specifically look for the jump desktop code they would have to either convert to our style or they would have to do one more jump test analysis basically begin

sub-analysis yeah just an implementation detail at the

Greg Colvin: at the end of the eip there's an example laying out how subroutines

are going to show up in the assembly code so i think it's pretty clear there the the difference in gas count um actual measured performance i think would have to be better but that would have to be measured but certainly it's going to save on gas substantially

yeah so we are expecting the same thing it would just be nice to actually confirm the numbers before we ship this eip

Greg Colvin: of course

so we can have

James Hancock: let's add that as the next step for the eip and consider that good

Hudson Jameson: sounds good to me

so um i have a quick

question though so i think so there's a awesome implementation attached to the eip against the gas code base yeah

Greg Colvin: there's a pr

the ip mentions three up codes whereas uh the implantation does too

Greg Colvin: yeah the implementation is uh earlier

yeah okay okay

Péter Szilágyi: that's fine i was just wondering which one is the canonical version then but yeah okay then the

ip cool thanks yeah

Greg Colvin: i did the pr earlier just to be sure the things would actually work going into geth

okay great um dano

James Hancock: do you have any updates on your eip

i'm not remembering the number right now

two four five six two four so one thing i was thinking of the possible change uh one of the i don't think um jason carver's on call out not close to my zoom spring his concern was going back a thousand blocks to check might be uh too much load for lighter clients that don't store as many blocks so one thing that crossed my mind is instead of going back a thousand blocks to check the trigger we could go back to ten blocks to check the trigger and uh with those ten blocks back that's going to be far enough so that the armors will have the armor limit of six so we won't have straight armors for when we trigger the upgrade so if 10 before a thousand is after the times another thousand we

would do the upgrade so that is one change i'm considering i posted on eight magicians and i haven't gotten any feedback on on that particular suggestion so you know mostly i think we're just um haggling over how far the look back is um and whether it's going to be you know zero or ten or a thousand for this and uh probably a discussion that's better to have on the e positions than on the call but i'm willing to have another call if people want to

James Hancock: assuming that number gets worked out and and you have that conversation with jason dano is there any strong feelings about

having this be included or not included after that point from the group that's more of what i would like to get out of this conversation

is um i think we would need some testing the current uh testing structure for these activations i don't think quite would support the look back so it needs some updates to the reference test files and i'd also like to see some live transitions before we go to a test net so there's there's more of a testing burden on this and it looks like the uh most of the work on this is in the test code so that's mostly where i think the big work for this is yeah

Martin Holst Swende: maybe in particular because in testing scenario

we're going to run into problems with we have to use synthetic

times right yeah multiple objects like but

James Hancock: i think he means that you have to do fake times in order to test that the time is actually happening right

Martin Holst Swende: yes

no i'm thinking like a purpose test let's see the purpose test net where we would have people come on and get a few miners you know kind of an hour before forks do the fork and then dispose of it just like we've done with some of the other testaments before a transient testing not a persistent test net

Martin Holst Swende: yeah i was thinking more about actual test cases um high test but maybe that's not a problem because it can just ignore the system talk and use old timestamps for all blocks so that's not a problem

yeah the time step is into actual block centering that's the type stamp we would use so we can totally set up a stream of fake data to validate as well

James Hancock: so for testing in the live transition things is that something you see as could be done in the next month and a half or that you'd be wanting to pursue for hitting a june window

that's not going to have to happen i

think we should come back to this for two weeks and make sure my schedule will support that okay so just a question for me i i can't really make it or tells did we decide anything regarding ep 2315 because as far as i know only the guest team gave a thumbs up and i'm not sure if that's sufficient i would assume not well yeah so i think dana said good um i have

Hudson Jameson: a question for way and anyone who was on the parity team like parity ethereum client team what is your involvement um right now in the open ethereum initiative and is that something that is we should consider you guys having

like an up-down opinion on this because what i heard was that parity technologies won't be supporting parity ethereum slash open ethereum after q2

uh we will um i mean

Wei Tang: we will still provide support for opening serum for at least the next artwork and there are a lot of other teams for example the geniuses they are uh taking a lot of the development job over so yeah so i think we should be should be finally should uh open ethereum should continue to be considered a usable client implementation

great yeah and

Hudson Jameson: the question wasn't as much that because i knew it was going to continue is more can i turn to like you or someone else from the team who should i do you know who i should ask for an up or down on certain questions like if eip 2315 is okay for the client i think you're the only one from parity here so you might be the one to give an up down if you're comfortable with that

Wei Tang: yeah you mean the the the eip for the

uh structured uh which one is it the simple subroutines the one greg had oh yeah yeah so uh i i think that should be fine for us it requires an actual stack but so i don't see any problem of that

Hudson Jameson: awesome and then i don't know if nethermine's here today that would be the only other really active client except c plus plus who doesn't always come to these meetings am i right james or who am i missing

no that's

James Hancock: that's right trinity

Hudson Jameson: oh that's right sorry trinity that that's another good one they've been focusing so much on beam sync and 1x i uh forget when they come to the calls who who's from trinity here most of the time they're good with stuff so if they're not here i think we have enough teams saying that it's okay to move up move with greg's ahead as an efi

i agree well

Martin Holst Swende: sorry for interrupting james you can continue

James Hancock: oh that's perfect so um greg's eip which is the number of two three one five moving to efi dano's eip did we move it to efi or we did we i believe we we had like a general thumbs up but you wanted to talk to jason did we move it at that time or did we say we were going to move it after that time

Martin Holst Swende: i'm not sure if we officially thumbed it up did we

Hudson Jameson: i thought we did last time i thought we officially said it's an efi meaning we've given a thumbs up for it being a good idea but i don't know

you know what actually you're you're right i don't know if we did or not dana do you remember

why did you take my sample oh say that one more time it cut out i didn't think we gave any you don't think we gave it an efi

Hudson Jameson: okay sounds good we can continue to not have it in that status um as as long as you haven't talked to jason

yeah i think moving the time from 0 to 10 to 1000 is

Danno Ferrin: such a fundamental enough change that it shouldn't be considered

um state on october past where it's at

James Hancock: so then let's wait for that conversation to happen and then we can revisit this as

efi

exactly come back in two weeks i'll try and get all the games in the next two weeks

James Hancock: okay so that is it for that um the next one i i've i wrote a proposal for this one is two two five one five which is an eip to address the difficulty bomb or update it and i wrote the proposal last week and sent it out and had a lot of good feedback from from the core devs and people on twitter and the general idea is to have a have a block activation number where the

difficulty freezes and then after that point increase the difficulty at a consistent rate and so we uh so there's there's an eventual uh that leads off until eventually the network can't uh support the block times become too big for the network and i'm not exactly sure how to run any how to run a conversation on an eip i'm doing so maybe that should be you hudson

sure so looking at this um eip let me just pull it up real quick so it's eip21 um was it two one two five one five i believe it's only in

um is it even in draft right now it looks like it's just written it's in a yeah it's in a and it's it's in a pr it hasn't been merged

Hudson Jameson: perfect okay that sounds good i was just making sure i was on the right page um all right there's a few things so since my assumption is you're not a client dev so you wouldn't be able to put this in but i think that um as far as implementation and testing goes but let's just talk about and just a paragraph or two the general idea of how this is laid out and then we'll get some opinion and then after that we'll see if there's you know a lot of support some support no support that kind of thing

James Hancock: so the the general layout is that the difficulty bomb has gone off a few times sometimes due to um moving a chain having to delay a fork and so it goes off for a while and then most recently it went off because um i had missed the miscalculated it and then it and it wasn't double checked so we we weren't sure when it happens and that's primarily right it's primarily because the difficulty bomb adjusts is affected by the network uh there's the adjustment factor that happens within the the out within the block like trying to make sure

the is between 10 and 20 seconds and if the when the difficulty bomb is unsurmountable by that adjustment period it depends on the current difficulty on the network and because we don't know what the difficulty will be in the future we can estimate it and there was a great um calculator from

um from oh ether mine

Hudson Jameson: or well it's they have like three names bitfly ether mine etherchain

yeah

James Hancock: they made a great calculator for predicting that the difficulty bomb as it is now it still relies on assuming what the difficulty will be at a certain time and

over time that will get more accurate and i think it would just be a lot easier if we removed if the if we split those two abstractions and kept the difficulty bomb because i've as i've heard from the community there's a lot of people who have strong feelings about keeping it we can at least make it more usable for knowing when it will happen and how and its effect and so it's easy we can address it easier as core devs

Hudson Jameson: so any questions on that anybody have um comments

um so i'm asking

Martin Holst Swende: as i understood it first

we would freeze the difficulty but you were talking about some linear increase

James Hancock: yes the original proposal was to freeze the difficulty and leave it at that but after feedback from the community it made sense to have it freeze and then linearly increase at that point so at block 10 million and 500 000 the parent difficulty equals the block difficulty the block difficulty equals apparent difficulty plus 10 or plus one percent and that will just continue to increase

Martin Holst Swende: is that reflected in the actual specification on there magicians or anywhere else

James Hancock: it's in

the pr i haven't i haven't i just need to read it's in the pr yes i need to write that it the pr has been updated on updated on these magicians this is also after talking with tj for a long time at eve denver who is one of the big critics of my approach

Martin Holst Swende: yeah as for my part i think yeah this is kind of a good trade-off between removing it entirely and having it in its current form which obviously isn't that great so i'm tentatively positive but i'd love

to hear other people's take on it

it

Hudson Jameson: might be a situation where people need a little more time to read it and if that's the case um i'd say it's a good idea james to just shop it around to the different teams in the uh awkward devs getter or just people you talk to individually and then once it's in draft stat if it's in draft status by next meeting that would be um good to um yeah um that'd be good to do

Tim Beiko: i have a question maybe this is a dumb question but um wouldn't like freezing the difficulty and then linearly

increasing it make it it kind of goes against the whole difficulty adjustment so i'm i'm not sure i haven't read the whole ep but maybe just trying to clarify how those two mechanisms would like interact so what's like the trade-off of of not having the difficulty adjustment um yeah and the security potential security implications

so after the so the

James Hancock: the difficulty adjustment would be removed after the point of act of block activation

Tim Beiko: yeah so that's what i mean but right so say you know this kind of a a toy scenario but say

you freeze the difficulty and then 2x the amount of miners start mining on ethereum um you know are we gonna have seven second blocks instead of 15 second blocks because our difficulty is kind of frozen and i understand over time it'll grow but if the amount of hash power kind of grows quicker than the rate at which the difficulty bomb slows the network um we have like a quicker network

so i and and i'm just not sure like no yeah yeah you're

James Hancock: you're totally right and and the so once it's frozen there is an incentive for miners to jump on assuming that that the main chain is the one we're talking about right now yeah for miners to jump

to jump on and increase the hash rate and because the difficulty is now adjusting up slowly that it would like block times would increase quite a bit for a short amount of time and it would they would accelerate their pace into the into the linear increase and the the risk there is that if block times are too fast the uncle rate could be high enough to result in sort of a fracturings of the network or but um uh or just block times becoming very very quickly for a short time until eventually there isn't enough miners

on the planet to yeah

Tim Beiko: i think the mining reward would also play into that right like how profitable is it for them and whatnot

but i think to me that's like one one thing where i'd like to see someone who understands it much better than me like the various incentives and and kind of talk through the possible cases like what happens if you know there's like 50 more miners there's like half the amount of miners you know um because we kind of lose this like dynamically adjusting parameter

and i wrote a little bit

James Hancock: i wrote a little bit about that on the on the in the eip as well

cool

James Hancock: is there any other thoughts on that before and we can just we can decide more on it next week

next two weeks

yes

Martin Holst Swende: i'm curious as to why freeze at all and not just the linear increase from a certain point in time

that is that is what it what i guess the

James Hancock: freeze to me is removing the difficulty adjustment piece and then it will just linearly increase and that's it right is that what you mean

Martin Holst Swende: no not quite i meant why not instead keep the difficulty keep the adjustment but also add not an exploding bomb but a linear increase bomb which has less chaotic kind of

effects so that we for example once once we hit this new soft bomb it starts to target 15 second block time and then 16 second block time and then 18 second time but doing so in not as yeah large

hops the

James Hancock: the reason and that i think that would have the same problem is not really being able to predict effectively when that first increase would happen because as long as the difficulty adjustment piece is in there and the increase is some static function that inc that can can

adapt to it then there is this requirement to guess or to predict what the difficulty of the network is in order to be able to predict the effect of the bomb

so

Martin Holst Swende: i think what i'm proposing would be to instead just change the desired block time remove the bomb and modify the desired block time

so there isn't

James Hancock: because of how the the the adjustment algorithm only adjusts up and down depending on if

it's between a 10 and 20 second block window so we we don't really have a capacity to target a block time as far as my understanding we have an equilibrium equilibrium that happens because of how the mechanism if it's below 10 seconds then it then it um increases the difficulty if it's above 20 seconds then it decreases the difficulty for every amount of 20 seconds it's above for every 10 seconds it's above that [Music]

so i don't know how we could we can move that window the the other concern i would have with that approach is the the people that are most affected by this going off or for us for it not going for it going off is the miners in there and that isn't that never was really the intention of the difficulty bomb was to make it so miners are are less able to pay for their electricity that month so as like while it is less impactful for us we are also not this really impacted by having block times increase in the same way as other stakeholders on the network and so making it so it is more

real to us what the consequences are as in visceral for us in in this room then we who are the ones who can address it will also be more likely to address it in a timely manner

Hudson Jameson: any other comments okay we can probably just go to the next one and just um shop it around some more i guess james

that sounds like a good idea to me

yep

James Hancock: i can do that if there's a way to target like that martin i would definitely be open to how to make the adjust the mechanism to be targeted around that i just wanted to figure out how that works how that would work

so

James Hancock: then the next eip is alex vlasov you're here correct

uh yeah yeah uh so just following the discussion which was on the last call people wanted to get uh someone outside of this like

call and implementation of the eip every time so i have invited few people zack and kobia here unfortunately joseph from eui couldn't join due to personal reasons i got an email from him an hour ago else unfortunately this week it wasn't the best one to also get more people because now it's standard blockchain conference and it's 6 a.m in here yep a little bit inconvenient uh but still i think people who were actually interested in getting something new in terms of uh elliptical cryptography and serum here so uh in principle if you want to ask them about the difficulty of the pre-compile or something else you can talk with them uh i also chatted uh

on telegram police uh people who implemented cryptography like shambo and definitely for example it's not a problem uh the difficulty of such pre-compile and its age cases documentation elsa didn't rise any questions for them um so and in general in total what was also like adjusted over the last two weeks between the calls a gas price is very calculated to increase the constant of gas per second now it's 30 even while it's way above what my laptop has for uh bn pre-compile i mean current implementation was being pre-compiled

oh oh josef sent his colleagues that's great um yeah um so uh lc gas formulas were adjusted a little but it's it's not a large difference otherwise all implementations are ready and what we do now is just sayed who is most likely listening to the skull but never joins uh another of going implementation he boards a gas metering routine to go which is the most real part of the of the quick compile so in principle all implementations are ready in rust c plus blossom so i think zach or kobe can say

something um yeah i'm happy to have a couple of thoughts um uh if now's a good time um so yeah i just i just kind of wanted to give like a bit of an external viewpoint on kind of um the value of this eip um so it's quite quite a few companies working in this space um like the current pre-compile situation uh means that it's difficult to deploy kind of um state of the art for cutting-edge cryptography to ethereum um especially given the amount like there's been a lot of new developments that have come out in the past year that we can't currently leverage because of the limited pre-compost support and i guess yeah this erp is kind of um i see it as a way of future proofing

ethereum so that it can become a test fed for a lot of the advanced cryptographic techniques and that in turn should provide a lot of value to the community to the to the wider ecosystem particularly in the form of roll-ups in the form of you know using starks and snarks for proof of data availability and for scaling um and um sorry hang on so just lost my place there a minute oh yes and basically um there's also been some research lately um spared by kirby actually which highlights the fact that um if you want 128 bits of security for snarks roll up scaling solutions that kind of thing um the bls 12 381 curve isn't really sufficient um

so whilst it would be it would be a big improvement for for ethereum to support to have the bls 12 pre-compiles the ability to use more secure curves um which eip cip supports would be extremely valuable um when it comes to implementation um i'm about to add a few thoughts uh otherwise i just echo alex says it is a complicated erp and there is there is a lot of um like a lot of potential attacks that need to be closed off uh but like fundamentally it's not new cryptography that's being deployed or new techniques um and also the teams that would be using these precompiles um as part of

the tech stack they all have quite significant ones that i know for quite significant in-house cryptographic expertise so they would also be you know providing auditing validating this code themselves they wouldn't be treating it like a black box yes so the we

James Hancock: i can see the value of it i think all of us here agree the value of it the concern is how do we do it in a way that is secure given previous experience with alt bien and other and others so um if your organizations or others could could um i mean not if not audit ends in the formal way but look at the implementation and look at the specification and just say yes both of these things are lining up as a

vote of confidence for those things that would be very helpful for us

yeah we'd be happy to do that

Martin Holst Swende: i would like to voice some opposition here i'm i've done it before i'm i'm opposed to this eep because it's so broad and so sorry that's maybe the wrong wording that is very huge and it's a generic pre-compile it's basically a virtual machine for a modern crypto which i don't think suitable for ethereum i think we should add pre-compiles for well-defined use cases

um and if we need some particular pre-compile for some well-defined use case such as c cache interoperability or ease 2.0 then we can add a precompiled with that but i think it's two largest step to take to add this big generic recompile and it's there there are several concerns one is the actual crypto correctness uh and there i can only you know trust that cryptographers know what they're doing the other large concern is that these are extremely large code bases so even if the crypto is right there may still be mistakes in the implementation and like i i briefly looked at the code

the goal line code base and solar that like 12 days ago there was a commit which fixed a simple mistake that set copied a value into the wrong destination in one edge case and it's like these things happen but if they slip into production there we have then we would have a consensus issue on our hands and when you have 10 20 000 lines of code there's quite a high chance that these kinds of bugs exist in the code

basis well i think i should hear a little bit

explain uh uh about why supreme compile is what like was made universal at the first place it was actually to eliminate ever a discussion about like how many people want this feature how many people want this curve and who is to decide uh like whether we will increase it or not seconds for code based size and similar things this is the reason why we run the classic testing to find such mistakes and if you look at the implementation of for example if you would ever want to add bl b ls 12 curve uh three 81 bits is the base field and if you ever

after this would want to add bls 12 curve 377 it's different one let's give you like huge other set of capabilities which people would potentially want they will have an intersection in the code base of around 90 percent just because the most of it will take failed arithmetics and current matrix which is the same on every curve same goes and in this pre-compile this common part between the curves which is much easier to solve and which actually has no zero edge cases uh actually is this well not eighty percent as in my previous example but most likely 75 um

so if i can a little bit explain how it works uh for go implementation we originally said that for now it's uh it's only for what they're 64-bit processors like performance one especially done uh by uh handcrafted assembly which was later cross-checked and i mean still independent orientation and it's not didn't hit the uh like we we didn't hit the inclusion we didn't hit the hardware so we can fix the mistakes that at least the gas price inform was very calculated on the lisa last week so this small correction is not a big deal uh i also included a set of like what can be called the downgrades or

like a white listing feature which people have discussed before unfortunately when i started to collect the list of the curves which are of the like kind of known of the good use in the mod for a lot of various applications uh by modern crypto and i mean for existing projects already when i got into the list of these curves i collected a quite huge one it's also listed in the uh document and my main readme uh file this insta repository uh it says so at the end this precompiled wants to eliminate any form of uh like centralized decision to like which curse goes in which curse that's

not going if you want to implement it in a set of specialized pre-compiles but this is the state of some modern uh cryptography and specifications that now so with recent discoveries there are more choices which give you a lot of different features another one talking about whether you use narcissistics it just kind of separates discussion uh so it's why it's universal is why you call it a virtual machine i call it a calculator which is actually much simpler if you ever implemented it at least once um so i'll go ahead yeah i want to sorry i just want to react on top of

this um you you see i mean understand the logic of implementing one and for all crypto and be done with it at the same time uh you can ignore that it's a attack vector and i'm just going to go back to one specific mistake that happened with windows we had a very thrilled crypto team uh that happened like a stream just one month ago so my concern at this point concerning cip is like having it's not encrypted itself because the crypto the math works and we can write we can verify the map it's it's okay the right is probably in the implementation level and what concerns me here is that we i mean i mean we don't have like i know

you told me that there is another team but they i haven't come up to to present i am and also we don't have like sort of um other known figure and copy or being one of them or it's like being one of them actually doing the implementation and saying that this current spec is enough for anyone to implement according to the spec how would you address this concern uh i mean we cannot ask someone uh like specifically if he doesn't want to implement or do the duplicate work because as far as they know zak usually writes in c plus plus and c plus plus implementation exists if he wants to find unit but change it a fork it

uh just for his own interest he's free to do this uh but if no one volunteers to make an alternative implementation according to suspect uh because a set of languages in which it's already implemented is kind of wide enough and what are most usable we cannot force anyone to do this according to the windows hack which you mentioned as far as they know the problem was not even the cryptography itself it was in parsing format and this is equivalent to the api part of this pre-compile which is likely much simpler than uh their encoding format in usual certificates uh but i mean attack surfaces chapter is also covered in the documentation so

there were only three main parts and i spent a few pages to explain by say are not like how they addressed and uh like why this way of addressing attack services is enough i mean uh recompile documentation and readme document was updated quite a lot over the past weeks and i mean i cannot force people to actually look at it and pay attention because it's quite a large document i mean for these questions there is a formula well no well um i think that's

Martin Holst Swende: a bit of a strong argument i mean i have read the attack service description uh i just don't agree with the conclusions there actually

uh yeah what can i say there's there's one little paragraph about it being consensus breaking where you somehow you say that it cannot be consensus breaking because of conventions um yeah i don't agree sorry

so

Felix Lange: um i would like to also expand on that so uh yeah i think with this eep uh our main concern is really that is is really like with the complexity of this of this particular precompile and um this definitely would definitely also be my concern um it is definitely possible to to

create a large programs which behave correctly uh and are in consensus across multiple implementations as the ethereum implementation shows but um especially with this pre-compile i think it it might be stretching the limit a little bit as to how big a precompile can be and i do understand that basically it is quite important for applications today to have access to uh these kinds of cryptographic features but i do disagree with the notion that um the process of adding pre-compiles is like too complicated right now to uh make that happen

so i think um as client implementers i don't think there's any problem with adding any particular pre-compile as long as it is reasonably simple and there is a use case for it and these things are like with this particular eip there is definitely use case for it but it is not simple and i think as such is it doesn't really meet the criteria for like um a good pre-compile

so

Hudson Jameson: i don't want to spend like too much time on this alex go ahead and

do a rebuttal and then i'll no no i i mean i wanted to answer these questions this kind of uh like a stock border like for

difficulty you may ask like there is a list of cures which would be potentially end of interest to use uh unfortunately this is quite large so it would at the end of the day will result in making uh let's say eight different uh heaps each of those will take something like three to six uh pre-compile addresses and i can easily and i mean i can definitely split this breaking pile by just doing calculations for uh some coded set of parameters and even by using the same code base as a reference to like say well let's include these eight curves but the problem and all of those curves

are usable and people want to use them for some or one or another particular application what would be the chance to actually get this included in a time frame of a few months and i mean it's eight pre-compiles with huge set of addresses but they all have this vanishing uh vanishingly smaller difficulty in this case i just want to uh i mean because this is what i wanted to avoid with this pre-compiler avoid this specific decision for every time what would be second three chances for this case is it okay if i give my view as well i know that you want to move on but yeah sure thing yeah yeah right

um i just want to comment on some things that happened so i won't go again into saying the value of the of the i think we all understand it's valuable and we have a bunch of use cases that we want to use it for so i won't go into that um i will say to the to alex's credit or like to metrolabs credit this is has explicit explicit formulas how to implement the specific crypto features that are needed which is quite unusual usually people implement from papers and the papers are scattered and all around and people

go to different websites and implement different ways to add or multiply points so having these explicit formulas is super helpful to make independent implementation so this is a very good positive point about the cip um one thing that for example i don't completely understand yet or i i can't internalize yet is the guys schedule calculations which kind of like i understand the ideas but it's hard for me to internalize it and i think this is somewhat related to

[Music] how people can perceive the complexity of this ap because it feels like it's a big very big unit that you must take as a whole all over nothing and that is kind of scary and that is kind of um problematic like like or not maybe not problematic but this makes you look at this 20 000 or whatever lines code base and say this is very big and i can say i disagree with it and it's it's

i think it might come down and maybe we could discuss that at some point um of how to [Music] to make this at least lighter so like alex mentioned yeah you could divide this so you won't have like five compiles you would have 60 recompiled for all the different curves that we want and maybe even eap eap1962 would be the underlying implementation and then you could have specific gas formulas for each curve and so on but that would also mean that you would require a hard fork every time you want

to care which to be honest i'm not totally aggressed dude you would

Felix Lange: still need a hot fork every time you add a curve even with this particular

erp it's not an opening i mean not with this one no not yeah that's kind of like saying oh it's such a pain to push to push a new eep through the process so we'll kind of clump this all together and so actually one actually i was building up to a point so maybe i'll finish that um so yeah so you could divide this into

60 ap 60 compiles and do that but then it would require a hard fork every time which is maybe fine um and i think something that we could discuss um is to if for example we do go through the process of adding for example six eight pre-compiles per curve and even if the underlying implementation is 1962 does this improve the complexity worries or for example even including one curve is already scary and even that should be really evaluated

further and these are things we could discuss as to how we can actually move something like this forward because i totally understand the worries and the complexity of what it introduces um and i think it's mostly about the discussion of how can we modularize it so it is not received as complex

Péter Szilágyi: so just uh to [Music] add something to it so our biggest concern with the code with regard to complexity is that uh i'm almost certain that there are bugs in it

because i don't believe that three times 20 000 lines of code is bugless so from my perspective there will be a consensus issue that's for sure and the question is that uh parity is currently maintained by i don't know two people and in the progress of being switched over to open ethereum with uh god knows what governance model and who will be actually maintaining it uh geth is again maintained by a handful of people and if hits the fan who is going to fix it

Hudson Jameson: that's what i'm saying actually so just real quick peter i was wanting to get like buy-in from some of the cryptographers in the community including people on this call who either

built or support this eip to be in a getter or telegram or you know something bridge channel so that if hits the fan we can call on you all to jump in and within a very reasonable amount of time fix things uh and when i say fix things more identify the problem that kind of thing so so peter what about that idea

Péter Szilágyi: to jump in with a reasonable amount of time i would like to mention the time when doing the shanghai attack you called me at 4 am in the morning to get up and solve some issues so is anybody is a group of cryptographers willing to be able to be called at 4am in the morning and fix it at 4am because if not then that's a huge

problem because we cannot fix it

Hudson Jameson: i think the time zones probably is what i'd be guessing but i want to hear from them what do you think alex

kobe uh et cetera yeah i mean yeah zac i mean this the cip if it went through i mean aztec would definitely use it and we would be great and we'd be very happy to fix it if circle hits the fan 100 so we if we can collect who those people are willing to be i mean uh i saw this as a world responsibility i would i mean i didn't know that it existed but i thought it's by default so i can count it as yes from my side

um i cannot answer for saeed who is an astro go implementation but he's must i can i will ask him to write on the guitar for this he usually listens to the quote but never joins and i'd

Hudson Jameson: take responsibility for keeping this channel up to date as far as people on it and then alex if you continue to run this type of fuzz testing or someone runs this fuzz testing i think that'll also be something that'll help regardless of i mean it's not going to fix the concerns that the guth team has for sure but anything if this goes through anything that we can have in addition to just putting it in and everybody leaving like having this supported until well after each two

becomes a thing i i think is going to help um like some concerns not all concerns uh peter you can continue because i interrupted you earlier

so

Péter Szilágyi: i'm not sure where i want to get at but uh where now i want to something make something particularly clear is that in if this eip goes in the gas team will take absolutely zero responsibility for it i mean we don't have the knowledge to do this

and

Hudson Jameson: what you're saying is when you say not taking responsibility that's not by choice as much as you don't have the knowledge right

Péter Szilágyi: yeah yeah so i mean i would gladly fix something and obviously if hits the fan i would be super pissed and i would i would be staying there but um but if it's something that i cannot that i don't understand then so i think it's it's also really important to see to consider what are the consequences on on the network of the whole thing so yes everybody everyone wants everything to go really smoothly and uh yeah of course but what happens if um let's suppose the implantation is huge so you can have two two types of issues one of them is you can have a consensus issue um which for example currently if there's a bug in let's suppose in the go

implantation and eighty percent of the network goes off in a different direction and let's suppose or whatever let's suppose 80 of the miners go in in the direction which has the bug then the only way to solve it is to roll back the chain which is like this horrible situation or pause the chain like iota style so do are we willing to do that probably not then if um even if the whole implantation is implantations are in consensus and there is a bug in the cryptography itself i cannot verify it i can say that the five

of the different implantations do the same thing but whether that makes sense or not is beyond me but if something like that happens then great game it's a catastrophic failure for ethereum and these are the risks that we are talking about and the reason why martin is kind of against this and was suggesting that the individual eips that introduce curves one by one can help is because it's much easier to to say that yes bn256 or whatever is bls signatures is uh even adding that one curve can be really dangerous but i mean it's a tiny surface compared to enabling a touring complete cryptography machine

uh well it kind of gets us back to the

ideas that for like we can roll it out gradually but not by making individual curves as individual pre-compiles and addresses and all other things so people don't really know what's under the hood we can just white list the curves by still i mean as copy mentioned well even we set it as a set of independent pre-compiles for different cures and still use the same machinery underneath uh then it's not that different from just making a white list which is in this case it's just a prefix uh matching for whatever user wants to call to speak compilers can their proposal for this could we imagine providing the cip has

um sort of a bitter testing like that testing mode like where we offer a bounty for like no one can use it except to to to to sure to display an attack on this vip like things

Felix Lange: because then they would wait for uh for it to go

a minute no no like it's true but like at least research like people from universities who find fun like hacking and breaking you know cryptography which can you know could try to break something that will have money on it later on yeah so crowdsource audits which is nice yeah because as as martin said like there is

100 percent like 99 standards there is probably a bug there and if someone that is individual implementation we would have a consensus issue and at least having a hash like challenge for this cryptography library probably could help uh sort of uh limit a limited the sort of attack vector in the first in the first first phase and maybe like letting it run for like six months or whatever until until it gets uh it gets like sort of a bit trusty enough so

Tim Beiko: maybe this is like a separate conversation um but i feel like with this eip and what you're mentioning lewis uh and and just like having this longer testing it kind of reminds me of what we were talking about with eip 1559

on a previous call where it's like we we maybe want something more than you know activate it on a test net for six weeks and then fork the main net um i'm not sure how we do this i don't think the 17 minutes we have left is enough to discuss like a a proper plan to it but maybe it's worth thinking about like what's a what's a better way to test these like complex eeps because there's more coming down the pipeline um so that we're we're kind of you know confident with them and i know we wanted to talk about progpal today as well that's another one of those i feel the unjustine will have the same exact conversation uh so what's like the how do we test hard that's a good question and i just need

to oh i

James Hancock: i want to kind of time box this a little bit

because we have we don't have much time to do the rest of it can i bring just one more element you can just bring one in i want just to ask who among the cryptographer of the community will be in eve paris because i think an in-phase discussion will probably help a lot in in solving sort of a of the core concern here uh i'll be there or i don't know could you just name it because i'm on the phone right now zach i'll be there too uh i'd like to be there great so let's maybe coordinate something in if paris on the killer and and get you know

start discussing there

Hudson Jameson: yeah i think that's a great idea also uh just before we end this just uh just a like as quick as you can dano and way and um we we know geth's position but i haven't heard from bae su or from parity um and there's particular concern over parody not being kept up with so i just want y'all's perspectives we can go

dano first i'm in a car dropped off my kid so i'm not in a good position to discuss it say that one more time i'm driving my kid to school i'm

Danno Ferrin: in a bad position to discuss it

oh no problem we'll do we'll save that for next time uh way i believe this is 1962 so uh i mean it's uh the the there's an implementation in us so that's good for us but we also think uh the the this pre-compile is uh is quite complicated and uh uh yeah so that means we are slightly against it for implementing okay

Hudson Jameson: this is something that is why we have this type of governance system and i think having in-person meetings at ecc where it could be longer form discussion and

individual discussion uh is going to help clear some things up but in no way can we confirm this eip is going in because at this point there are clients who would not want to implement it right now or what i should say have serious concerns implementing it so as unfortunate as that is for people who are wanting to use these curves this is just how the process goes but i do thank everybody for coming uh here to discuss this especially the people who took their time on the west coast during stanford blockchain week to discuss this particular eip um and the cryptographers who were

offering to um lend support uh given if this goes in uh peter do you have one last thing

i saw you pop up yes so just um you mentioned that so i don't think that

Péter Szilágyi: so i don't want to say that the guest theme opposes uh the features itself so i we have absolutely nothing against adding whatever cryptography is deemed useful and necessary we just want to make sure that it's added in a way where you can more or less guarantee that things don't go horribly wrong

Hudson Jameson: is that something you can guarantee with anything though i guess you're saying minimize it

right

yeah yeah minimizes i think what he was going for it's like kind of like ethereum it as it said you know ethereum has a

Felix Lange: large amount of complexity already and uh we have been pretty good at slowly um expanding the complexity and not adding like a whole bunch of complexity all at once and i think this is something that you know over time as ethereum 1 evolves there will be more and more and more and more complexity in the execution because this is where all of the interesting features are and there are many many things that could be done to improve what you can do in a smart contract but this also kind of

i think there are certain things where like we really have to like slow down and then really check okay so like what is the thing we really need right now that will like add the most value and then maybe we go for the next thing and then for the next thing and i think doing it this way will it basically allow us to vet each feature more or less completely like i mean the last few times we added cryptographic pre-compiles there was a lot of exhaustive testing done and i see there has been a lot of exhaustive testing on this particular eip with all the fuzzing that's been going on on this you know like 32 core server that is mentioned in the rig me i'm i believe 100 that you know like everything that could be done has been

done to verify that you know the implementation is secure and everything and you know it's will will behave under consensus however you know just adding this large chunk of complexity all at once is just a really scary thing and uh maybe we're all going to be able to absorb that scare and you know know like in a couple weeks or whatever we're all going to say you know why did it what what were we even thinking about this is the best idea ever but i think at this time it just feels like this is too much all at once

yeah okay and let's move on yeah let's move on yeah uh if if i may have like a 10 second closing word first of all 20 lines the 20k

lines of code isn't most likely not the right estimate because more than half of this are testing uh second one if j if martin has a a counter example for why there will be no consensus breaking uh if implementation is done correctly i would see this contract i would like to see this counter example uh because otherwise i believe it's my kind of semi-formal analysis it was correct okay but it's all that's all from my side um so going there there is a pre-compile that we want to look into individually to getting in and i and i can see that this is something that will take longer a longer amount of time for everyone to be comfortable with and i don't want to continue the conversation on that

i think also we don't have two people here today that i can see so that's why i've been i've been talking with with them and i've been meeting with him so i'm representing them okay i think alex who was one doing his pls felt like proposal he's also here in stanford most likely it's just purely before stanford and and i talk i'm i'm here at stanford as well i'm just i'm representing them at this moment because it's very early for them but alex has an eip written i put it in the chat for the bls signature and then having a target for june so that it can be used in the eth2 deposit contract as far as hard fork

scheduling that i think is important to target okay um so yeah i agree that we need to figure that out would there be an appetite for meeting in one week and fleshing out specifically this eip after discussion on getter and magicians um who would be able to come to that yeah i actually have a conflict too this might have to wait for two weeks and given the text stuff and that's unfortunate because of the timing of um

you know that that might put off some of the other discussions but i guess this is the process now if it doesn't get in at berlin it doesn't get in at berlin we can only do so much with the time we have um james if it's okay with you i was wanting to get the open rpc discussion going if that person is still here because we promised last time that they'd be able to have a little bit of time and we're at the end of the meeting again with like eight minutes left so i think that's exactly is that okay with you james uh yeah i think we should do that and then we should also discuss proc pal i know things might go over but i think it's important to talk about as far as in in conjunction with berlin going in for

each e for eth2 stuff anyway continues we'll do light discussion on progpal that won't be anything binding if people have to leave so uh yeah let's start with uh zach though go right ahead cool yeah thanks for having me uh yeah sorry i turned up a little bit late today uh but yeah glad to be here um so i just wanted to quickly maybe start by saying a little bit about what openrpc is so um yeah openrpc is what is called a service description uh specification so a way of describing a service uh there's other ones that exist open api is probably the most well definitely the

most popular one and that's the one that i've used a lot in the past and i found that there was some particular challenges when using open api with json or pc services because open api is you know structured as this individual route it's based on http um it also has a lot of features that are specific to rest based apis um and so that's why we made open our pc which we started out as a fork of open api and worked with the guys that maintained that to figure out basically how to set this

thing up and so yeah like started out by deleting all the stuff that only pertained to rest and the beauty of json rpc is really its simplicity um and you can really tell that by like how much stuff we are able to we are able to remove from open api and we also worked a lot on tooling around it as well so the motivation behind all this is really we wanted the same sort of tooling that you get from open api um but specific to json or pc um and because and there's a couple other things that we

added in there as well like uh the the concept of uh service discovery maps really well on to json or pc whereas for the open api stuff they have they have ways of doing it um but it's a little bit different and it's uh so like for example we have a rpc.discover which is a method that you can add to your jsonrpc service rpc dot being a reserved prefix for json rpc and the idea there is that that method would return the service description for itself um and so you can sort of ask a service hey what

what methods do you have you know what parameters they take what do they return so you know fundamentally we built this stuff for json rpc not for any particular one technology just json rpc in general um then um you know of course it has specific applications within blockchain because most crypto you know most blockchain clients use json or pc um but also there's a lot of say like within ethereum ethereum classic whichever there's multiple client implementations all trying to uh you know hopefully adhere to some common base set of methods uh and

interface right and maybe some clients add certain functionality and whatnot um but moreover having a way to communicate these differences is really important um and so yeah that's pretty much the gist um we've put together one like a specification for ethereum as like like the base level set of methods for ethereum um haven't had too many eyes on it really but uh we're we're using it uh inside of multi-guest so like multi-gath is supporting those methods and it's return and it's implementing the service discovery as well um but yeah there's there's also like a lot of interest outside of blockchain as

well so yeah happy to answer any questions that you have and also we're really happy to help out um you know hopefully make this tooling stuff work for you guys or yeah talk about it and just to make sure i understand is the ask to implement this at the client level and um for those who might not be familiar this is not a consensus breaking change right this is just like something at the like client level yeah totally yeah it's yeah definitely it's at the client level um it also like uh i guess the there's

i have a couple examples i don't have the links handy right now but um one example of a way that it could be used is when proposing an ec or an eip uh if if the eip includes a new json rpc method or a change to the existing json rpc method or something like that uh it can be you know specified as a in like a structured format that's you know like you can just include the open rpc definition of the method right um so that's quite nice but um aside from that like yeah each client it's on it's up to them to implement this stuff or not

like you said it's not consensus breaking or anything like that it's just something that uh for example with uh multi-geth whenever whenever the you know specification changes we just rerun the generator and we get new clients for javascript and rust right now working towards go and python and the near future but like these are generic right so like of course you can generate clients for any json rpc api uh same with uh documentation so yeah the idea is to just save time and not really um like force it on to anyone i guess is

a good way to put it uh so like there's no need for anyone to implement anything if you don't want to it's just a tool cool uh anyone have questions or peter i have a small reaction so generally the problem with these generated apis is so before ethereum i i used quite a lot and hacked quite a lot on the on google apis and google is famous for they have these api descriptors they are super complex and you have api generators for pretty much everything and uh essentially i was using the go apis and the problem is that yes you do get these apis generated

but they are more or less useless on themselves because uh after the api reaches certain complexity the generated code is just you just essentially map function calls to or api calls to you just translate them to your language but most often the user doesn't really want to call do the low level calls individually and assemble and pass in all the configurations so at the end at the end of the day you will need to write a proper client and that that was my experience i mean uh agreed there are some cases where um the complexity is too great for for a generated client to really fit the bill

but um like uh similar to in open api world um there's many rest sort of pattern or there's many patterns that people use that don't necessarily fit rest or open api and in that case uh you either accommodate with by adding like plug-in interfaces to the generators or like you like as you said you just you're stuck with having to write your own um and if that is the case that is the case right so um but certainly there's a lot of cases where you know what you want is just a very light wrapped uh interface to your methods

that includes uh static uh typing and uh and and like um like uh say like if it's the j if it's a js or javascript generated client then you want like js doc annotated functions uh so that you know in your editor when you're calling like if.call or whatever you you don't have to go look up the docs for how to use it right it's just your editor will tell you how to use it so if this is already in multi-geth would that mean it works for geth already uh yeah certainly so it should be the base level set of methods there so the thing is i think we are happy to add uh the server side for this uh i doubt

that we will change in in mainline guest uh we won't necessarily change the client uh based on this because i think we are still uh on that part that basically like we do have a handwritten client which i think is basically includes the functionality that you would need to interact with the chain and it's kind of we do add to it from time to time but it's not uh in general we're more trying to provide a stable sort of go api instead of providing uh like even if the if the underlying mechanism changes that is used by this particular go api and we do strive for the stable api on the client side also and so i i don't we'll be using the

generator but we're super happy to just add the like rpc.discover endpoint and return whatever stuff needs to be returned there like that's not that big of a deal yeah cool i mean uh the the intent is for you know this stuff i guess to highlight differences between clients really so you know if you're ah so it would kind of mean though that we basically have to because since since the the server that we use i actually don't know if multicat uses a different rpc server i think would be kind of silly but usually yeah so what do you mean the gold one like the just the one that everyone uses

like the you know put up same one as gaff anyway oh yeah okay so uh the thing is that uh in within that server implementation uh it's kind of like we basically need to have a way to like auto generate this like schema from the provided methods and that's not something we are not doing right now right so um it's a very good point that you brought up uh so i'll first start by saying that we have uh a fella on our team named isaac who is working on this stuff exactly um and what he's trying to do is uh yeah like infer from the code what the

what the scheme like what the document like the service description document ought to look like um and so that's uh like sort of in the realm of like document introspection uh which is definitely one avenue uh another one being like starting from the document and then updating the the typed interfaces in your code which you know breaks compilation you go and fix it and now everything's happy okay you've implemented the change to the interface right um so they're sort of two different schools of thought i suppose uh i so there's a big benefit to this so

the big benefit if we'd go down the path where basically we would define the official sort of like ethereum rpc interface as you have done as a schema like that then loading it into the server we'd also be able to provide canonical parameter names which is something that we cannot do right now so at this time all of the methods are you know by position and that can actually be a bit of a hurdle because you actually have to remember which thing goes into which place and some of the methods work around it by just taking an object as a parameter but that's kind of a hack so i do feel that like this is something that could provide like a big benefit to you know users of the rpc interface because they'd be able

to use name parameters finally people have been requesting that feature for a long time yep yeah definitely yeah you you nailed it there um i want to time box this a bit absolutely but uh zach if you could just tell us how to get in touch with you or are you on the all core devs getter um just basically how to get in touch with you or your team if people are interested in this uh that is a good question uh github is definitely the best place to chat about this stuff um if it's a related to the specification uh there's the spec there's the open rpc slash spec repo happy to chat there entertain any questions

um otherwise uh i'm on you know telegram discord twitter all that stuff uh getters mostly used for these type of things are you on there yeah yeah so actually we've been talking about this uh sort of having the need to maybe start a getter for these exact reasons so uh maybe i'll get to that uh this week or today and get back to you perhaps yeah feel free to come back and give any announcements of better communication methods um if you'd like even if it's not talking about the whole thing y'all are always welcome here oh well well thank you very much for your time and uh it was nice to meet some of you in east denver last weekend oh yeah

thanks again all right thanks zach all right uh on to praguepow

Hudson Jameson: uh thanks for staying over everybody um james did you ha or actually i should put it this way we could have james go ahead with it or martin you put it on the agenda so maybe it's better to hear what you wanted to do with it today and then go to james

uh yes sorry um so

Martin Holst Swende: my idea was basically i think we should have another discussion of this proposal and see what the next step is i would for example propose that we launch a new testnet with the updated 093 implementation and

uh yeah i don't i don't really know where we're at in the discussion uh or in the decision-making process i seem to recall we have decided it for implementation

but i don't know so andrea um or

Hudson Jameson: andrea i'm really sorry if i'm not pronouncing your name correctly where do you see uh where we are in the process if you have an opinion at all i'll just kind of put you on the spot there we can't hear you if you're talking you might be muted on your end no we can't hear you

oh okay while you fix your mic i think james had something to say

yeah so they have a

James Hancock: they have an 093 test net or there are there's a mining oh i think i can hear you know you're better now you're just very quiet yeah if you can up your mic volume yeah we still get here just go ahead james yeah so they're the readiness of their like they have some testing of some test nets or they're they're

mining on the 093 spec and it's in my opinion the closest eip to being ready to launch so as far as status of implementation they're very they're pretty much ready to go if um unless andrea has an opposing opinion to that my i do have a proposal for a a hard fork scheduling proposal for this which is the bls pre-compile getting in sometime for june having a fork scheduled for that as the as the whether it's with the 18 um one white listed or if it's in the

specific as if it's a specific pre-compiled there the eth2 team is working on that right now and and it's important that we get that done before the deposit contract so things can be validated on chain then for progpal and its inclusion i would suggest that it is a contentious upgrade but i've as i have done research and around that there isn't uh the likelihood of a network split is very very low because i haven't actually seen someone willing to be on the other side of that but i do agree that it is a contentious upgrade so my proposal is that we have a fork for the bls precompile and then three

the next third wednesday after that we have a fork that includes only proctol and and that's the the suggestion and there are there's a lot to go in on why i don't think we have a lot of um any more time to really go over that

Hudson Jameson: my main question is uh when you say three weeks is that we're testing them at the same time but we're just including them in forks at different times in order to make sure people have the opportunity to fork off if they want to

is that correct okay

James Hancock: yes so berlin would happen in when the bls precompile is ready and

then a prague pal would happen the next third wednesday after that

Hudson Jameson: any other anybody have comments concerns etc

i'm

Tim Beiko: concerned it's not much too close i think from a community perspective uh and enough people opposing prog pal i i feel like putting e2 and e2 like pre-compiles at brockpow a month apart is kind of conceptually weird for some reason um i you know if you told me like three months or two months between the

two sure i'm also unsure if like i know we've had a lot of discussions around like if people want frog pow and and or not and what um and given how contentious it is i'm personally a bit uneasy about about including it i think kind of deciding through a network split is is far from ideal um so yeah i i yeah i'm i'm a bit uh i'm a bit uneasy about program general but i'm especially uneasy about having it very close to uh an e2 related upgrade just because of the the potential confusion

that's so the both the

James Hancock: as far as the releases go we could have the release for berlin as soon as that's ready and we could release the progpal one shortly afterwards and um it's more of giving if we wait another three months then progpal eats up six months of our development cycle where really proctol is actually the most ready to go out of any pay right now but the reason we aren't scheduling it is because of the we don't want to just do the only proc pal one first so how and as far as timing goes getting the the bls uh signature the precompile in is is more important than having proctol come in first

and the so having multiple releases before and then having people to like upgrade to the one that they want um and them is i like that that has already worked and so it isn't like a okay once berlin is done then we'll release the version for frogpal it's more of we'll release everything for berlin as soon as it's ready and then we can release a procter one shortly after and have people also upgrade that as that's the next one but as far as act fork activation happens it would happen at that amount of time

yeah and i mean three

Martin Holst Swende: weeks it's not like we're just

trying to slip in prog pile the day after nope nobody noticed i mean i don't really think

uh i think three weeks is sensible

Hudson Jameson: what about giving exchanges and other network service providers time to upgrade their clients twice it's three weeks enough

well i mean we could

Martin Holst Swende: we they don't actually have to do that we could bundle code wise it could all be implemented and activatable or deactivatable via switches so if we just code it right you don't actually wouldn't actually have to update the software twice

Hudson Jameson: so what i remember from the dow is that there was a lot of um pushback on a switch because that that

implies a default to the switch uh whereas running an entire client where the default is one or the other is a much more explicit switch than having a software enabled switch that you have to like manually go in and do

Martin Holst Swende: i mean yeah so so the default obviously would be pro prog power because that's what we kind of decided right

Hudson Jameson: yeah

yeah and but then yeah

James Hancock: if the exchanges and things seem they have they like to upgrade the moment before and there already have been shown to be

capable with that in a much shorter and crazier timeline which was mere glacier um and if we did a release of berlin and then a release of broad pal then that is people could just go to the release that they they choose and we would be supporting going to the proc power release

Tim Beiko: i think one thing that's also worth considering is the exchange have the biggest incentive to support two coins right like if ethereum splits the best you know it's bad for everybody except exchange fees um and it's worth being mindful this is basically how etc came into exit existence um so this is just you know i can i can absolutely see the first

exchange the once the first exchange is like we'll let users decide we'll run both etc or sorry ethrogpow and eta etch then it's almost like a you know every other exchange has to do it because they end up competing for the fees and we've kind of split the network um so again this is kind of why

i'm personally uneasy on this yeah yeah and i and i i understand that and as as i've read

James Hancock: from the community there are people who are who oppose praguepow but their stance is that we would all go to the prague pal state we would all go to the non-prog pouching and if that is actually the case then there is no network split they're just we go on with the one without product

power or we go on the one without and i have not seen any evidence that there is there is an ideological or people willing to step up to actually have a network split and if if i'm wrong about that i'll resign as hardcore coordinator

Hudson Jameson: yeah that probably wouldn't be necessary but what i'd say is i've seen very little the only person i can just call it out i'll just say amin's the only one who said they'd step up and i'm not sure if they still have that position today and even if they did uh just kind of seem like i i don't know i'm i'm skeptical of that happening but again i don't want to like i don't want to be proven wrong but if i am then that's just how things go

so i think

yeah and i mean

James Hancock: i am serious that if i'm wrong about this i would i would quit my job

Hudson Jameson: please don't please i would really like you to stay

out okay go ahead tim what are you saying yeah i was gonna say another another uh sort of broadcast critic i found is like

Tim Beiko: the gnosis team um and martin specifically and and you know i think it might be worth uh getting their thoughts on it on a cordes call especially because they're gonna be maintainers of open ethereum um i personally would feel much more comfortable with this plan if you know gnosis as maintainers of parity ethereum or open ethereum um say they're kind of okay with this you know like i i know for a fact they

don't actually martin is not gnosis

no no he is

James Hancock: he's talking about the right one and and all right so i have i have gone back and forth with him a lot on this yeah and his views that prague would collapse would would be nothing and we'd all be on the other side so so those are those are the two big objectives and neither of them are saying yes i will i will move forward with a network split

yeah so i think yeah again i would

Tim Beiko: be much more comfortable if gnosis uh martin k from gracis you know agrees that like open ethereum will implement that and kind of be okay with it even though say you know he's personally somewhat opposed to it um because i think that's the other kind of credible

like the two people yeah

Martin Holst Swende: i don't know i mean we've had discussions back from everything that's going to be said that has already been said uh i think we kind of just need to go forward uh that's my view

yeah and i think

Hudson Jameson: i agree with that view however tim if you want to ask them uh and make sure they're aware of it uh or at least stefan um uh from gnosis um uh yeah yeah just feel free to ping them and like let make sure that they know this is happening because the last thing the the the thing that got me last time was people saying this is being snuck in so i'm gonna make a effort to make sure

that's not the case this time um as i'm sure james and others will do as well and there'll be plenty of time for open descent that won't really change the decision necessarily because we've already gone back and forth and approved it twice but at least they'll be aware so if people want to do that they can it's that's what that's why um forking off is the ultimate consensus mechanism

yeah just a quick question is there a better way to advertise this than through your twitter account like a more official venue

Hudson Jameson: good call um i'd say i can't think of one what about you

uh the ethereum blog i mean if you were

really serious about this hmm there's a

Hudson Jameson: there are trade-offs to doing that and when i say that what i mean is it looks like it's an endorsement by the ef which it really isn't because geth acts autonomously from the ef although it is funded by the ef um with as far as their decisions as in no one outside the geth team influences any or has ever influenced any decision for what goes into a network upgrade um within the ef so like aya or any of that stuff don't just they don't go in and be like you have to put this in and so that would be one misconception the other one would be

giving it more it would be kind of fanning the flames of something that like is not really needed to be fanned but i'm open to other suggestions if enough people want that to happen i'm perfectly comfortable bringing that up to the other blog editors

no that's that's true good perspective

James Hancock: um mine would be if you have grievances come to me i am taking responsibility for this uh um to an extent yeah yeah as much as i as i can in my role and i'm i am i i do listen and i have had many of these conversations and i look forward to having more of them and i am sure essentially putting my reputation on the line for

this decision

announcement of like the decision uh the like you know this would this basically you know awkward is deciding that like

Felix Lange: the way forward is to include profile is kind of something that i feel like is newsworthy and it's definitely something that can be announced on the ethereum block even without seeing it as an endorsement because it's basically just documenting the fact that um yeah all quartus has you know collectively decided that you know pro crowd is the way to go and if the community doesn't accept power and we turn we all turn around and we're like okay um you know maybe it wasn't such a good

idea and then we just go with the other chain that's fine as well but at least having like an explanatory write-up that on the blog that actually explains why proper was adopted and you know like that it is being adopted because of the decision in all cortex i think these things can just be included in the block and it's not an endorsement

yeah

Hudson Jameson: there's a happy medium we can definitely approach once things get closer um especially if we very early um if we very early put a blog out there rather than like two weeks before like i've been prone to doing

Tim Beiko: uh i think we should probably do it now i don't know if now is the right time or like after the next

cordev's call but that seems like yeah

we should have it we should have the uh yeah next next shortcut

Hudson Jameson: i think we should do it after whatever bls eip is going in has decided so we can make both announcements so i'm not doing it eip by eip

yeah

Felix Lange: it's not that it's not about the heart frognance it's more about it's more about the like you know the decision that you know the official decision is now will happen and that doesn't really mean that's not a heartfelt announcement that's just informational post

yeah and

James Hancock: and when it will happen will be after this the third i like we can if we don't say when it happens i don't think it will happen so having it be the third wednesday after the bls pre-compile

is a way of saying this is it it is happening when it will happen

Hudson Jameson: okay we'll discuss this more next meeting because it's not going to happen before next meeting and i can definitely draft something up just so that we don't keep everyone here all day

uh and

Hudson Jameson: artem makes a good point um that we should definitely invite stefan and amin if they want to come on and give their perspective of like why they would like that they're splitting just so people are aware but i'm going to talk to amin and just see if what his position is now uh he knows i think he knows any way that he can just come on and say that if he wants to but that's kind of i don't want to create drama for the sake of drama so i'm avoiding that as much as possible

while still giving people while still making sure people are aware of what's going on and giving them voice so that's a hard thing to balance and i think james is doing a good job of that and i'm going to try to also do a good job

of that

Hudson Jameson: any other final comments before we close out the meeting and what we'll do is for the next meeting let's look at what we missed this meeting and try to prioritize that um along with the bls curve stuff obviously but it sounds like eth paris is going to be a big place where that's discussed but if we can have an eth2 person on next time james i know you were representing them so actually that might be sufficient

but um yeah next time we'll we'll have someone and the actual eap will be written and

finished oh great okay

Hudson Jameson: that'll help a lot so yeah let's re-prioritize the ips next time so we're not leaving stuff out and other than that any other final comments

Felix Lange: i have a quick request yeah so um i know that you know so it's been quite a while since we've had the uh eep 778 and 868 merged so uh this is something that uh to refresh you guys this is ethereum node records and the node discovery v4 enr extension um these things have been live for quite a long time and there is implementation in trinity geth and um and an alif but we are not really seeing many other

implementations on that so it would be very useful to have these things because we we have just rolled out another critical piece of infrastructure that will deprecate the bootstrap nodes in the long term and that is the dns based discovery and i would really watch for people especially like client implementers to go ahead and just um add these features to the discovery implementations they do not take a lot of time but it would be very helpful for the network

um okay okay

Artem Vorotnikov: uh if i may i have just finished working on it 64 implementation for open ethereum so it's just hit the master and and now uh

i will also be working on ethereum node records and integrating it into the

uh open ethereum's networks text oh that's very nice

Felix Lange: that is very very nice so uh do note that basically the um just contact me if you have any questions um regarding that and i'm very happy that this is finally happening and i can really recommend that you look into the uh rustly p2p ripple because they have already implemented all that stuff as part of the discovery version five uh draft work so you can just use the implementation from there you don't have to implement in or again

Artem Vorotnikov: uh in fact i have been in contact with sigma prime and they have yes and they have split their uh implementation of enr into a separate

crate so will reuse it and uh yeah very very helpful okay yeah so

Hudson Jameson: felix if you could get on the all core devs getter uh put your specification and ways to contact you and then tag nethermind and baysu that sounds like those are the ones that uh we are not accounted for for if they've implemented this or not uh just if you could do that today or monday maybe monday might be better so people are like not ending their day um that

that would be helpful

so with these heaps is basically the

Felix Lange: the situation is a bit unclear anyway because uh we have approved them on all quarters a long time ago but that but the status in the eep was never updated so they're all still in draft but actually you know like we have discussed these two or three times on all quarters even more than a year ago and by now because uh the enr was it was proposed in november 2017 right so that is like more than two years ago yeah and i think it's kind of like it's been it's been around all this time and i kind of feel like moving these things to final would be great but also i don't really know like we still don't know what the process is for for those networking things

because it's kind of like you know

is it move to final when everyone has it or is it move to final when we've discussed it enough or like yeah there's a there's

Hudson Jameson: a process being changed in the eips right now to make that more clear there's eipip meetings which are eip improvement process meetings so um yeah and you're welcome to come to those there every other wednesday but basically uh right now the next step as the current system stands would be to put it in final call or last call

which is a pr to do that yeah yeah i made a pr for that already james already yeah yeah so

Felix Lange: we're currently in the waiting for merge

state oh perfect okay yeah

Hudson Jameson: just uh ping me i can merge it okay thanks all all right any other final stuff

all right we went over exactly half an hour not bad all right thanks everybody uh thank you artem for your update artem just for the record you're on you're on open ethereum are you with i just totally forgot are you with uh uh parity technologies

or are you with uh different i'm from gnosis actually so i am employee i'm i'm employing diagnosis

Artem Vorotnikov: to work on open ethereum so i'm the first of the hires and we are currently expanding so yeah we're looking for more people welcome work on this

yeah welcome to the calls um i think you've been on before a little bit maybe but um yeah yeah i was just a mute so okay cool all right see y'all in two weeks bye everybody

thank you so much thanks bye [Music] bye [Music] [Music]

[Music] [Music] so [Music] [Music] [Applause]

[Music] so

[Music] [Music] [Music] [Music]

[Music] [Music] [Music] you

Speaker names adapted from ethereum/pm, CC BY-SA 3.0.