All Core Devs - Execution #47
All Core Devs - Execution · 28 Sept 2018 · 1:35:35
Ethereum core developers cover Constantinople, with Geth, Parity, aleth, ethereumj, mana and Nethermind having implemented all EIPs and testing still in progress, EIP-1108 on altbn128 precompile gas costs, ProgPoW benchmarking and fuzz testing.
Speakers
Topics
From All Core Devs - Execution, hosted by Ethereum Foundation.
Transcript
[Music] [Music]
[Music] [Music] [Music]
[Music] [Music] [Music] you
okay let's go ahead and get started everybody welcome to the call we're gonna go ahead and get started on the agenda let's see the first item is testing I think Demetri might not be able to make it here so what we'll do is we will start with Martin who might have some updates on other types of testing yes so we've been doing with a we got the last six merged into parity to run state tests Fosters and I've been doing about half a million fastest since done during
the last couple of days we need to work a lot on improving the status generator but we have no blockers in terms of the engines and false positives and yeah that's about it for now great okay so next we have client updates let's just start with guess I guess that would be me again because Peter is on trip somewhere yeah we just made some maintenance releases nothing really major to spend a little time on in this
meeting pull anybody from parity here okay I guess Alfre couldn't make it let's go with LS nothing important to mention we have constantly not already for some time I think that was Sir in the case in the last meeting and we mostly working on some internal changes I don't think Piper's here for Trinity so we'll go ahead and go to aetherium J okay they were not working on anything
except Constantinople have finished it and but have not finished that's for Constantinople and that's all we are working on charging cool all right Pantheon if you have any updates or significant anything to talk about yeah so one significant update from us is that we're now sinking to a chain hadn't made that Congrats yeah thank you cool I don't come so you guys can check it at home great yeah all right
Alexi turbo gas yes so not much to report I mean you might have seen my latest blog post where I was saying about private beaches so essentially we started working on the some thing about testing which will include sinking into the main net and trying to she would do some performance tests either you see in Fuhrer and I've been chasing some bugs and so but I wanted to in terms of Constantinople I noticed that there's a screed geez up code where you to be guests with needs a special handling for that and that's because something which a lot of people didn't realize but I
think it would be useful for people who are listening to this call to kind of think about it and to come up with the their own scenarios is that I think Martin has added some clarification to the IP that create to essentially allows you to using the self-destruct to basically replace the code in the contract in a certain way by retaining the same address but basically replacing the code but a religion the storage and the balance and I think it's it's something which a lot of people don't don't realize and then I would like them everybody to kind of think about this and sort of give us a shout out of any anybody finds anything in interesting or kind of potentially
dangerous with that yeah so that smart Dame cool did you have something Martin Chad well just that I think and I want to who were present the only cold core dev channel while we discussed the first iteration of great to is already aware of this but it's probably correct that it might not be understood in it like general sense by the community I see okay and we can bring this also back up during our Constantinople portion of the
meeting if we want P if anyone wants Alexei or Martin to go into more detail about that potential pitfall next we have Nimbus is anyone here from there so we've slowly been making our progress through the blocks syncing and executing them through DM and hearing various kinds of bugs I think we're up to 48 thousand hours and thing on the other side were you working on f 2.0 there's being curves coming out there's a serialization tests for the simple sterilized that's being proposed cool
thank you do we have anyone from aetherium J s do we have anyone from mana okay I think I got them all let me check and see do we have anyone from another mind what about X Tyrion we have so many clients now guys this is great yeah I do havean released a new release new alpha yesterday called ada lovelace I believe I don't know the
particulars of that but it's definitely getting to the point where if you want to pull it down and give a shot might be which time you know I just downloaded it and started white syncing it right now and it's already at 700 K nice okay cool I think that's all for the clients we can go into ewaz um now does anyone have any was an update hey yeah we're very focused on test net so we did a public he was him call earlier she's I don't know what day it is anymore a few days ago I think it was last week and we did our first like public demo of the test
net and the tooling we have around it so we have like a black Explorer we have this thing called II was in studio where people can deploy contracts written in lost which is webassembly text format we have a few nodes up and running it seems to be reasonably stable you can connect to it using meta mask we have a faucet that's working etc so yeah pretty exciting stuff we're still ironing out you know some issues and bugs we've had a couple Forks on the test net improving the tooling yeah and getting ready to release a bunch of documentation and stuff for Def Con so look look for that coming soon great thank you let's do research starting with Casper and Danny and then Vitalik with the rest
generally on my front and it's joe is client sir being implement and as we're doing that we're sorting through that a little bug and then in the spec and also just beginning to come around on standards like networking and realizations that I record the tower codes running if there's an here Ava teleconnections
cutting up we can hardly hear you I can't tell this mayor Bravo sir the pie lady doing it it's a little bit better now it just kind of feels cut up and slow but yeah might be your connection still bad I can hear you now okay that it was probably my browser more than the pie um um we're just trying to basically figure out what are the kind of attack vectors and centralization vectors and so forth
so at this point spec wise is definitely a sort of more verification than research already I there ahem there is also a lot of work that's happening on the P on the peer-to-peer protocol side and that's honestly the thing that I'm probably thinking you to be worried about more than the other parts but even there there's been a lot of progress no he's like at least my impression is that it's the protocol is increasingly the good kind of stable agreed great anything else
sounds good okay next up we have Constantinople on the agenda item four you can click on it and it shows the table of Constantinople progress and death parity Aleph aetherium J mana and nether mind have completed all of the implementation of the e IPS not all of them are compatible with actually testing them yet but that's profits usually referenced either in the comments on that page or in the meta the meta release issue that they have created and then some of the ones who are still working on it Trinity's almost
done and I'm still looking to see if X theorem has some stuff going on so yeah that's that's kind of the update on the constants no bolt for the client side we should probably figure out a block number today if possible for the test net hard fork if not we can do it on chat but usually it's better to do it live because people can drag their feet so does anyone have any suggestions I kind of forgot the date that we had set up was it the 14th no it was 9th of October 9th of October okay that is one
and a half weeks from now roughly how early do clients need to release and have the block number hard-coded in before it's kind of problematic to like really do something like release the day before is that something we need to watch out for I mean it's Rob's turn which is mainly used by people who really want to run Rob's them and I don't know if we need to take into consideration a really
large window for people to update do we I'd say no I don't think we do so I mean if it's let's then we get the classic Rob's than a new Rob Stone it's not the end of the world yeah that's true I'm thinking we could decide the block number a week before then does that sound crazy I don't remember how we've done it before so the thing is though it's would be nice to know the block number so we can include it in the next bi-weekly release which is maybe before the next heart for before the next court of call okay the next court have calls on the
12th I believe so the fork or the tests net fork would be the 9th which would be a few days before I see so so you when you do your bi-weekly release when's the next release forget it less than 2 weeks well weeks maybe okay so would it be before the 9th cuz if not we can just push it a little bit and just have it on like the 12th or something like that yeah it's not set in stone really
depends on other factors as well okay I'm just saying it would be I think it would be nice if we could decide on a on a number for Austin today yeah I'd love that I think that'd be great is anyone at a place where they can kind of do a calculation on when the middle of the like bit roughly the 9th of October when that block number would hit and check the block time or Robson thanks yeah I was looking to either scan I
don't think either scan actually publishes that information for Roxton hmm let me check and see either chain either chain might oh no they don't have Rob stone no I know ether scan has the block time for Rob's Tanish oh they do oh yeah I think they do actually whew I couldn't find a link but if you had a Rob stinky fish granddad io / chard / block time it looks like it's around it's just below 15 seconds right now okay around 14 seconds so how many
seconds until the 9th of October I'm working on it okay sounds good Lane I was gonna work on it too but if you're doing it I can do it I'll come back and like yes sir I can't do that math in my head so quickly it's 11 days so that looks like around a million seconds 950 thousand seconds maybe someone could double mm-hmm and if we're looking at 14 seconds per block that is 67 thousand eight hundred sixty-eight thousand blocks basically from now which puts us at block where we at now we are at block
four point 1 3 1 million by the way if you want to double check then you can go to Wolfram Alpha and and just type seconds until 9th of October midday or something and parachute that nine nine thousand three 938 thousand one hundred sixty three seconds right so there's a time zone heading as well so yes if we want a clean number assuming we can round slightly I'm gonna say 4.2 million it's very close I'm assuming we don't care if it's exactly on that day but it should be yeah we we just want it around that day yeah so 4.2 million 4.2 million mm-hmm
okay I'm see I'm seeing four one nine nine two one one so I'm rounding up to 4.2 million yeah anybody think that's a bad idea so what would be the estimate of the block 4.2 million and B what time and it so that would be exactly 11 days from this moment so that would be 10:30 in the morning Eastern Time whatever this is UTC time on that day what which day is that perm 4.2 look through the little tomato on October October which day was it that we
said 9:00 that's October 9th like basically midday midday on the 9th 4.2 million okay sounds good so I think we'll just go with that unless anyone has any other comments okay great so 4.2 million midday October 9th let me just write that down real quick thanks for double-checking my math there Danny thank you all for an awful for them and
double checking their mothers oh yeah I'll be impressed when we can directly type in the Wolfram you know what block number will Robson be on the stage that'll be fun okay um does anyone else have anything about Constantinople yes I wanted to talk about Krejci very quickly yeah go ahead let's see if anyone else has comments on that after your discussion so I probably did not go down into the cause where it was originally discussed at so I've kind of discovered this a few days ago when I was thinking about updating trooper guests for the for the Constantinople but essentially because of the way that the the the
contract address is calculated in the create tomb which means it includes the MSG sender some salt and the the hash of the init code that actually means that as long as the init code and the salt and the MSG Center stays the same you can basically redeploy the contract so it only was going to work if you first self-destructed so it gets removed from the state and then later on it cannot happen in the same block as Martine pointed out so some later on you after yourself destructed it and it got deleted from the state you can actually
recreate it using the same init code but if that unit code actually loads the the actual deployed code from somewhere else then it it adds a potential to actually instantiate the contract with a completely different code at the same address however the balance will be wiped out and the storage would be wiped out so a couple of things you can do with that is that you can upgrade the contract but of course you you have to think about the storage and imbalance somehow but also it allows you to basically very easily to clear out the large storage if you kind of if you to you found the borders like getting a loop over the whole storage and you can
just self-destructed and redeploy the same code kind of thing but I'm sure that people if you think they think about it it can come up with all sorts of use cases for that so that's what I was gonna say cool does anyone have any comments on that I have a question and apologies if it's a if it's a slightly naive question but like to what extent is this possible today like is any of what you're describing can that be done with sort of current version of ethereum how much of a sort of president no it cannot be done because there is nonce so in the case of if you create a contract for an external account the notes of your external account is included in a calculation of
address so you basically never generate the same contractor the rest and if the contract is created from by the other contract then the the creative contract walls have a nonce which will be included into calculation so essentially currently whenever you create a contract it will also always be unique address but in the future you will be able to create contracts with repeated addresses yeah technically you're totally right but like from a developer perspective there are ways to achieve a credibility and it's kind of a big thing that they've been working a lot on like the waiter I never achieve equivalent functionality to what you'd what you would be able to do with create too as
if you use any kind of second layer registry so like for example if the way that everyone accesses your contract is by accessing a certain EMS record and then you self-destruct the contracts and you create a new one and like there's some way by which the new one takes ownership of the ens record then you know like that it basically gives you an upgrade so there are ways to do this but they're just like ugly and require you to do non-standard stuff right anyway that is using a delegate called proxy so this basically offers a cleaner way to do it and it obviously has drawbacks as well can be probably used for bad
things and yes and I also heard recently another thing about this delegate called proxy is that although it works really well to essentially proxifier anything and upgrades but it does have a although minimal kind of overhead which which doesn't make matter if you call it like a few thousand times but if you start calling this thing million times and then overhead kind of adds up the great ability stuff from create you has no overhead obviously because you completely replace the contract I just wonder if so if that's actually a
feature maybe we should consider Inc make it more explicit I mean I just started thinking about that but it's not so easy to do it this way because you need some additional contract I guess two of them actually mm-hmm well that's why I wanted to bring it to the wider attention because it has not been widely circulated so it's something it's a cool at the moment it's like a quirk that only few people know but I want I want to basically it have to be to be known to the wider audience so that they can think about all sorts of ways that it could be used and maybe like we get some new ideas after that so I I just wonder
what to do happen if we actually keep in it code hash affinity code we became very bad because that would like allow explicitly to do this replacement and might be if if we if we if we will still have it as a feature because that's how it would be then the main reason why init code has to be included is because if you do not want the upgrade ability if you're in it code essentially it's completely deterministic and it doesn't go anywhere else then you will be able to prove your counterparty that what you what you're deploying at this address or not the point we will be exactly that
code so you say okay this is the unit code which completely deterministic and therefore whatever is deployed at this address will be totally deterministic and then you can open a state channel on that basis and do some sort of inter-country factual stuff so that's why the unit code is important there okay thanks any other comments ok I think that's it for Constantinople unless anyone has anything else we'll go to the next item which is item 5 e IP 1108 to reduce the
alt underscore B in 128 pre-compile gas cost we had talked about this before and we know we can't get it into Constantinople but there were some new benchmarks ran by Antonio so I'll just have him take it away with what he found was that the NGO etherion performance improvements that VIP 1108 kind of based the new gas costs off of were not at all reflected in the parody client so we ran some benchmarks because their husbands
he new code merged into parodies being library since then and found a pretty large improvement in performance of parody as well so we merged some adjustments to the IP based on those improvements they're still not quite as dramatic as the ones that we spawn go aetherium but they're still fairly significant pretty pretty serious boost firms narcan and BLS verification work so yeah the the new numbers in the AIP are based off of parodies performance which is slightly worse than build with
areum's buts syllabic change those are the highlights benchmarks or in the chat they're also linked from the awesome anybody have any comments on that or any questions yes I have some comments so in the updated EEP you recommend a lowering of easy mo and easy ad and also the pairing check and for each ad you change it to 150 which as I see is quite well it's hard higher
than what the benchmarks should just know okay on the 26 trying to compare it with the old ones for gif area simultaneously so for guess that would be a bit drastic it looks like yes appears to be needing about around just slightly below 400 and for the mouth I'm like likewise
so yeah I see see sorry good yeah you have only in the updated gas hose for the pairing check what would your the formula that you have in the e what would that have been on the actual pairing check benchmark so the the original Eve had 5500 k plus eighty thousand which was aggressive I think even with your benchmarks for death so what we did was look at the the formula that came out of the benchmarks that you didn't July as well as the benchmarks
that we did against parity and kind of chose the higher formula that fell out of that which was based on the many numbers which was 2300 k plus 35 450 which is current version of the div we also cranked up to the ec add east mole numbers from the original VIP to again reflect the higher also worth mentioning that there's a contract called price for the pre-compile to keep in mind when we're looking at these gas buzz sorry what was the last thing you said
there's also the call price for the pre-compile that is that ends up being part of the gas cost for these guys true but that really only matters for for the mode expand the ad because in other cases the man is only 700 compared to 40,000 for the multiplication and for the pairing current it looks like with the latest optimizations parity goes below but not by a wide margin yeah but I'm these are great numbers I was really nice to see that the progress that has been made so yeah
looks awesome and I'm hoping we can reduce it but I'm yeah as I said I don't think it's something for Constantinople the one note I wanted to make on that front given the fact that these are relatively straightforward code changes that we're willing to put all our developers on to push forward we do think that it's really important that these get in as soon as possible 9 months is a really long time to wade through the gas cost adjustments so whether it's Constantinople I know there's potential discussion of another hard fork shortly thereafter with work it would be really really nice if we
could figure out a way to get what ends up being I think it could fake change for parity and a 40 to 50 line of code change for the etherium in as as soon as we can manage whether that's Constantinople or something shortly thereafter what are people's thoughts on that generally you know at this point I would say that you know we've already decided what he IPS are going into Constantinople etc but I mean if everyone really wants to put it in that's obviously something we can sitter what are what are everyone's thoughts on that I think the biggest the
biggest thing is always a testing so it's like how is this going to be tested and you know I I would say that I would suggest that to the work on this now but just presume that concern to know what's gonna happen as it is we are also willing to put like working on on testing if that's helpful just throwing that out there are there plans to evaluate any other clients according to a bench works on the subject of testing so yes and no I mean we know that the Python implementation for example will
not I mean most clients will not be as fast as careful parity on these unless they link directly to some optimized C library and assembly code so there's that on the other hand it's Gotham pear tree that's 99 percent of the maintenance and I don't know if we should cater for every client where at least those times who wants to be your main it should be capable of linking to highly optimized libraries that's my personal opinion yeah makes sense to me but I was wondering if maybe Antonio was just saying that they'd be interested in
doing all the requisite testing and that maybe it'd also be interested in evaluating the performance of Pentium yeah I think we can absolutely put in put in some legwork to do some additional benchmarks I think we're we're getting good at it sounds good maybe we could connect offline or something yeah sounds great mr. ennis Silla actually C library that is optimized with the new new new code there is AC library that we have not had a chance we've done a little bit of worth to try and see how we can integrate it into some of the other
clients python-based ones and what have you we're not quite there yet so don't have anything to share quite yet but once we've done a little bit of that work I'd love to share it and see what others think of what's there the specific library that we're using is MCL and it is Harumi who created it it's got support for quite a few different curves but I'll be okay so yeah I personally would be interested in I I don't know if you want to make it public around but I could replace mmm this code like their library Aleph is using currently with
this new one if that testing and so on yeah we would we would love to help with that I think from the perspective of getting the gas cause changes sooner rather than later I do think that changing the underlying library I did haven't like I wasn't trying to to make it requirement I just still find the seal I see code to be it's dead easiest accessible for for for languages like
Python I mean I think we don't have good twinky at for us for example to ship it to fight on easily that's why I'm asking because I would be willing if that library works and we can replace ours I I will be willing to add PI to bindings to that as well if that's something we want to have but about the Constantinople I'm I'm rather in the direction that if any change is not ready at some point in
time it's just not included and that's that's quite heavy pressure if we will keep at even small changes in the last minute so I I'm rather in on this opinion that it should go to the next heart or annuity any change should be first tested on a test network what least a couple of months yeah okay Oh Demetri welcome I didn't even see you come in here so Antonio just to be clear as your company Claire Maddox
no we're keep Network keep Network okay because I know Claire Maddox also had a stake and getting these numbers changed at one point yeah they they wrote some of the early blog posts kind of pulling through this but we've been doing some [Music] pool well I appreciate you being so forward and getting this done and dedicating some dev hours to it and also being open to the fact that we might not be able to put it in sooner than later but being respectful of that so the thank you and your team thank you so anybody else have comments on that or
antonioni anything else anybody so I agree that I mean from from the client perspective this is a trivial change but it means regenerating a lot of tests and to do that they need we need to yeah do some work on the underlying test generator and stuff like that and it's semi manual work which currently unfortunately we have not automated enough so yeah it's harder than it seems yeah for that particular trade out also considering the additional fast testing of that we did it before and we found
some issues think that's kind of good opportunity to maybe add to tweak the the fast tester the way it will find long running yeah run quality executions yeah on my end oh yeah I I think I've mostly already said everything that I had to say just that we do feel that the sooner the better on this nine months is a pretty long time to wait for it whatever whatever we can offer we'd love to do that but
whatever whatever needs to be done to get that done sir so we do have a PR forgetteth ready we've looked into how to update it for parity we've looked into some of the other clients and how we would do the updates there so one thing though that we might want to look more into if we load the gas cost is to find out do we actually does our test vectors actually cover the worst case scenario so where are they even worst case scenarios that's numbers that course is even worse run times and that's something I'm I'm not sure it's fully covered but right now we're very restricted with the gas
costs so it's probably not the denial service vector anyway but if we lower it to be closer to the limit then we would need to spend some more time checking that in my opinion I will give one other piece of context there are certain pls signature check operations and smart operations that currently they can easily dominate a block taken a quarter of the block so that's kind of the the numerical context for why we think the system for the current gas cost in doing even one of these operations is just a huge huge
drag on the network yeah agreed okay thanks everybody for your comments on that let's go ahead to the next agenda item that's prog pal there's been renewed interest in getting it into potentially getting it into a future hard fork and I know that Powell has been working on some benchmarking I think Martin worked on it and get a little bit and I saw offeree say that they were going to work on maybe getting something going in the
rust side of things so let's reintroduce missive and mr. death if y'all want to just give a quick any updates on your side for prog pal and then we'll go over Powell and whoever else wants to kind of give their impressions based on their benchmarking and if anyone has any questions for Miss afore mr. death this would be a great time to bring them up if you'll have any questions on prog pal so we'll start with Miss if and then go mr. death great put me on the spot Hudson yep well as as the public knows not much has changed we I mean the C++
client is fully finished the death client is almost finished we had a CPU any verification slowdown that is now been fixed and that's really all there is to it once once we see more interest from the etherium development community to to adopt prog pal then we will have developers accordingly working on all clients but until that that time actually happens I don't think it's worth worth wasting the man-hours or the money to throw them at a project that
most likely would just be ignored so that's really my statement on the matter how ever I did have a wonderful meeting in person with Nick Johnson and I it's come to my attention that there is a lot of misinformation on how hardware actually works on how prog POW is tuned to hardware and in general how how the algorithm remains tuned to a GPU card and sort of balances out the efficiency difference between a GPU and an ASIC and I believe that that information is is our fault
as if def else because as creators of the algorithm we need to make sure that we're educating the entirety of the community and the development team on how it works so I urge you all if you have questions very specific questions on how it works now is the best possible time to ask we're also available by email at any time we will be making an appropriate medium post along with test results the community has been doing wonderful testing on propel prog Kali is currently implemented into a coin it's a very small unnoticeable coin it's called Bitcoin interest but many miners are happily mining for pal in a in a safe
test safe environment production environment I think that's really all on my end great and yeah just real quick on my part I have been with Powell communicating with some major I guess like major video card company kind of things and looking into that a little bit more and that's shown promise we'll go next mr. death if you have any comments otherwise we can go to questions after that I don't really have any additional comments ok who wants to start talking about what they've explored prog pal wise or any opinions
on that Powell did you have anything you wanted to say or I think Martin also I'd looked into it a little bit yeah yeah couple number of comments so first first of all I I must disagree with with the statement that C++ clear disks is almost ready already so from the code perspective I tried to use the library that was that was it's hard it's a fork of if hash library and this number of
issues with this change when first of all it's it just replaced the if hash with proper so that's not something we can merge because we need both of the algorithm side by side are you talking - yes yes oh meaning the C++ aetherium client that one is what we've done not pro cache sorry so so what do you mean by this C++ if deaf L slash C++ etherium that was the one that we've that we've completed pro cache was more for us to
get familiar with the your implementation which yes needs to be revisited and addressed okay so I started with this one so maybe I skipped like and I couldn't get any benchmark from Pro cache I mean obviously I mean the only one I got yesterday it took over one second to verify header there must be something obviously not right I didn't have time to check it on this level and I started like implementing some pieces of myself just to be more familiar with that so it's it's possible I can finish
myself this part I didn't I haven't seen any pre request that was submitted to any project I maintain so that's that's kind of a bit worrying I I'm sure if you plan to submit some changes to any of the libraries or we should take it ourselves we we have been implementing them and just keeping it on our github repo we haven't done any full requests for sure we can do that but I think it would be better to work closely with the client developers because as our guest implementation has proven obviously we are not masters in all
these different languages so where we are going to need some some assistance like we have development force to basically do grunt work but we're gonna yeah I'm not I'm not worried like it's it cannot be done and I'm definitely it's it's that is able to be implemented so one more comment is about d IP itself so this so it's actually two comments first of all the the official discussion board is if few magicians and I mostly posting questions there and it's usually not very easy way to get response there
may be days work wait to go out but so in DI Peters there is many many details that are not explained and [Music] I mean it's not so difficult details so that I can go like what what pop countess and won't see this and like like so I mean for some people it's obvious what what it should be but I think we need a bit more details about how rotation works and so on like if you can rotate by more than the size of that and suck it right at the edge cases so I
must need to implement proper I have to actually go to some implementation you did to figure out some details and the IP is not enough I mean it's definitely hard to get the implementation based on ILP only and the last one the last comment is about cataract hash function so I try to figure out what the parameters of that and this is kind of exotic construction let's say that way and definitely so the I think the effect if I calculated that correct indeed are you talking about the 32 / 64-bit shift
yes I mean I did before what I already moved to the next next item on my list okay so so I'm now I'm talking about the Catterick hash function yes and so it has permutation of size 800 which is it's different from Jeffrey and so if I calculate it correctly the the output in terms of security bits some say it's 107 to 6 so this is much lower that the one we I mean a bit lower than the one we
used yes and more and more to that it's only 64 bits taken from that anyway I have any crypto crypto background in cryptographic background but I wanted to ask if that is any concern in terms of security yeah I have a I mean it's it's a little public that my identity now and what kind of background I do have in cryptography but no it's not a security concern the specific change from F 1600 to f800 was simply because GPUs they're
natively the 32-bit architecture and F 1600 is just twice as alone on a GPU and that actually gives you a nice little speed up with Asics whereas we don't require if we don't we can't consume all of those bits very efficiently so just reduce the size it doesn't decrease your security at all and we can go actually it's quite public I can elaborate on that on the EIP that's a very good point there's been a public study on every 1600 versus f800 so yeah I'm not worrying about the permutation sighs
okay I'm I'm a bit worried about that the beat beat right what is cultural right it's like it's quite high comparing to that the permutation size because so yeah that's only I can say about that from my perspective any explanation of that and also there's no padding to this high fracture at all I mean so this is did you know this this question is is put also in this if theory magician board so if you can explain that one I was happy to have it as a part of VIP sure cool
all right so yeah there so that sounds good does anyone else have comments yeah so I can add a bit I have not gone into the same detail as Paulo but what I've done is I've taken Lee and implemented it for gas and then done some benchmarks and see how kind of how it integrates yes and it turns out it's very very simple change the verification time about doubles which is not a big problem in my opinion the so the other day I was I
mind a bit on the CPU and even on the lowest difficulty I did a chain which switches over from hash motor to power at block 5 and it takes about a couple of minutes to mine you know the first five blocks is just keeps on ticking very quickly and then they started to come to profile and it takes a couple of minutes to mine each block yes that's at the lowest of difficulty which is just observation and it doesn't really matter probably other than for generating test chain stuff so I I would have liked to generate a long chain
which has multiple epochs turns out that's quite difficult to do from a testing perspective I have the feeling that if we for testing this it we really shouldn't and cannot use the regular testing infrastructure because this has nothing to do with the EVM semantics this is nothing to do with you know the block rewards and the ankles and what have you this is only the only thing that's needed for testing are snippets of chains and the like only quirky behavior is if there's a the switchover block the probe
Cass uncles which have Hashimoto's style prefer work and stuff like that so I think that yeah I really think this change could be implemented in parallel with Constantinople and from technical perspective they have nothing to do with each other from a political point of view yes they might be very related yeah that's about what I had to add and yeah I can add also that if we if the technical underpinnings are there that Powell thinks this is good and that
people who are in the know deems this to be a secure systems then I am I think it's a very good change and I'm for including it as soon as possible on the implementation side Martin are you able to give us um sorry you mentioned something about the epoch right now you prefer to have it you'd prefer to generate a very very long chain is that correct would you like us to make a test vector implementation of that yes piece so there will be minimum 30,000 blocks yeah so um bye-bye just to make sure everyone understands by
implementation in the implementation prog how is meant to change every 25 blocks this is actually very hard to do because you need a sort of a bridge between the minor and the pool which would be some sort of stratum implementation so instead the next easiest thing to chain it to is per epoch so this is why it does that but obviously it's not very nice for testing so we can we can do a test implementation where you can just keep training it but it would definitely don't put that in a production environment to simply Laura I'm not sure if we're gonna stood each other
so what I talking about was a sequence of blocks or APA encoded blocks whatever you meant also yes yeah okay that's noted Oh I'll have someone work on that this week thank you and did we we got it down to nine milliseconds as well um any assistance with other optimizations that folks might see would be very very helpful because it is meant to be eight eight milliseconds in in theory it's just that it go is an our strongest language on the development team so yeah I mean I
don't think yeah I'm sure it can be lowered and it can probably be lowered a lot with assembly but I think the the most interesting thing to do is to make sure that all the things that Powell has listed that are required for proper adoption that those things are implemented so that there is support in the minor mining protocols and the mining software and what-have-you yep where I've noted those down and most of those are either clarity needed the EIP clarity needed in the code and more [Music] public reference so and also checking
the bitrate size versus permutation size and padding etc so all that's been noted and will be done that's a really good feedback thank you so much guys yeah thanks for coming on and answering some of these questions do we have other feedback or ah yeah have one to add two more comments I think Martin match so I listed some time ago I listed the list list of changes that are in my opinion required to do the switch and I will try to find it just just in a second so it's something that is outside of the
proper implementation itself so so in my opinion we had to propose also a stratum protocol that would include information of the algorithm is supposed to be used for for minors because that's there's no information about that sir I'd opposed to the link there in the yeah so yeah I do remember I think that's that's the the the biggest one and that can be started work on very soon because it's nothing related even to client
implementations and I might find some people that willing to work on this so I plan to propose a IP describing this protocol and implement that in F minor on the client side I'm sure about like on the mining pool side if there's a chance someone will adopt that but I think KP is good starting point for it anyway yeah I thought there was some other changes that I mean maybe I'm wrong about some some of that so please take a look to her as well leave some comments
and yeah and one more thing so I have some struggle with commenting especially it this level of complicated VIP as proc bar because it's not in any kind of review mode anymore it's it's smart as a draft and there is no way to leave a comment at a particular point in the IP to address some issue I think it would be much easier to to put this crashing about single line put discussion about single line instead of having it that's
very much separated on some Media so that's I think as as as a group we we might consider Inc maybe there's a way to improve that process for firms Molly IPs I think that works because there's not a lot of lines to comment about but in this one I would really like to just pin some comment in particular point to make it also much easier to to address by the outer I think that yeah the I understand your concern there and that could be a
consideration for changing the EIP process in the future but I think the reason that we have it the way we do is that you can you know you can have multiple discussion links so on the EIP if they wanted to add a github repo that had the most updated EIP that was outside of the main a IP repo that you could comment on line by line as it's being iterated that would be a solution I believe so we would have both the etherium Magicians link as the discussion link and then also a link to a repo that they maintain that you can line by line comment on the EIP and any other implementation in that repo so I think that would probably be a
good idea and I think miss if has to go who was that yeah we can definitely bug mr. death okay goodbye Nyssa lutely so first of all I did look at the go theorem code when I think it was Martin's pull request and I think when it was reported it was whatever 18 millisecond verification time and I I tried to optimize it and there was actually just attached that pull request which contains some optimizations which most
is like about avoiding remove extra locations and copying things around but realize that these these optimizations actually don't make any difference because the my biggest cost is is simply the access to this data it item and then later on the I think the change was made to reduce number of accesses right so and the second comment I have is that I still I think that we need a bit more exposition about why I mean we kind of believe that this is you know from reading for the from the description of the algorithm that it's supposed to be doing what it's doing like getting it harder to implement in Asics and I get a general idea but I do believe that these people
do really know what's the reason they can actually explain it in some simple way maybe not in a very simple but at the moment I think I feel like a lot of people including me either I'm really kind of dumb or I'm just kind of don't really know what I'm doing I'm just trusting that somebody else who is cleverer than me kind of understands this but I don't and I also got some like people privately talking to each other or something that I can't disclose and it just doesn't have a good feeling so maybe somebody can write out down I mean I know it takes some effort write down some exposition about why exactly the current technology of isacs will not be able to do this thing efficiently in
the more detailed way so that like people can apply the critical thinking rather than just trusting that somebody is you know somebody says that they they have experienced and then they just said okay that will be fine that's that's my comment hey Alexa I think that's totally fair it would be helpful to get specific questions on on areas where you want more information and and I think we have been very bad about handling the etherium magicians discussion and so we will improve that in the future and be a little bit more responsive in
of why this algorithm is asic resistant it I think we we should all start from the point that the algorithms goal is not exactly to be ASIC resistant it's I mean GPUs we started from this discussion or Thea the effort from the perspective that GPUs are Asics right and we're actually designing not to be ASIC resistant but actually to be friendly or to be very much tied to a single type of ASIC which is a GPU and so that that's the perspective that we start with and and so in optimizing for
a specific type of hardware the goal is to maximally utilize all the functions of that Hardware write a large register space that's big that's expensive and and of course not to forget the starting point of why eath hash is strong which is it's still memory bound right so the re aluminium algorithm starts from a place where it's memory bound and it's still going to be predominantly memory bound and in addition we also has to use also has to use the additional register space register space for from required
from that that GPUs are able to provide and are needed for additional math calculations and on top of that adds the programmability aspect or the programmatic aspect which is the exact math series of math operations that you're running is changing in every epoch or actually miss if proposed with the stratum implementation would change every 25 blocks or 50 blocks or something like that to change even faster now when you do something like that the problem with in diplom ending
a sick for something like that or a different basic or more custom ASIC would be that you would have to design the ASIC to either be flexible enough to capture all the possible variations or evolutions of the algorithm right or you'd actually have to pre do have an ASIC that already pre designs for every variation or every kind of math ordering in kind of this evolving algorithm right so if you pre the pre designed for every possible variation while you're a sick just explodes you're just burning silicon area that's mostly unused and if
you if you try to design for the programmability and the register space that you would or the register file size that you would need then you basically have something that is a very big ASIC that is also applicable to many other general math problems right which is fine because if you're going to design a general math processor I think I think that's that's the goal of this project right I don't I I think having more general math processors in the world is is a good thing and having these more flexible computing computation units is a good thing at least until we have
proof of stake so so leveraging off of an existing installed base of more general math units what was the goal of this project and that that's the standpoint right so it we're basically trying to force say a custom design to be not that custom right because you have to be flexible to very varying and changing math and a very rapid pace and you have enough variation that you can't pre design for all of it and you have to pay additional silicon right to to capture to be able to even execute the math and that's that was quite simply
the goal now if you have implement implementation questions in terms of why Asics can't keep up with it or it can't design the for these math variations we can certainly do deep dive on this and and I think our responses your question responses it would probably be best to put it on some public forum like with your magicians so that once you've asked a question it's a very valid one that people everyone can see the response and we can just point people to that to that forum if other people have similar questions and I know that miss if also mentioned that you all
are doing a medium post that might answer some more of these questions and make sure that people understand why it's it's certain types of asic resistant right and to be clear on another point it's not that a GPU is we tried to make a GPU as optimized as we could or so sorry I make the algorithm as optimized as we could for the GPU but it is true when you see some statements that it is not the most optimized piece of hardware simply because things like GPUs have floating-point paths that's not really appropriate for cryptography but that's only a small part of the
silicon that's unused there's other parts of the silicon including display outputs and things like that that of course is also unused and in working and having the GPU makers assess and review this this algorithm the conclusion was that it's roughly 220 percent of the area would be unused and it's not would not be a 20 percent power penalty but simply a 20 percent area penalty or basically an area savings that you could have if you stripped it out all the unnecessary bits of a GPU and then we
also asked them to do an economic analysis of of what that savings would be in terms of having a basic bi more economically efficient in in you know saving that that's a like an area and we we did basically there's online you can go look at basically die area assessments of how much it would cost and if you look at GPUs that are most popular in the mining world today I guess that's the the 480 or 580 and then and then maybe some of the GP 106 GP ones for silicon then it's roughly 50 $60 for a piece of silicon
and then you you save roughly 20% of that which is $10 and for the total manufacturing cost the board that's roughly $200 you're really saving an insignificant amount of the total cost of the board so yes the Asics you can have a more custom hardware design for prog pal than GPUs and save some silicon area but economically speaking it's not a significant and impact to the economics where it would cause someone to go do a custom design especially given the
amount of volumes that GPU manufacturers have access to versus someone who would be doing custom design the costs just would not be the economic structure of doing an ASIC just would not be worth it now there's also been other comments that we've seen where GPUs are moving further away from doing simple math and that that might be true but at least in this generation until we get to proof of stake I think this is a reasonable kind of interim for for proof of work before proof estate comes in
cool good commentary Alexi did that kind of meet some of your concerns and you all can come up under Theory magicians and all that yes I mean I did read the most of the things that were said actually I read in it on the on a github which is fine it's now I kind of understand that you were do two things you optimizing for the GPU and then you introducing some of the things that are harder for for Asics I couldn't get it so what I would like is to have this when you said that we talked to the GPU manufacturer and we asked them to do this and that is this information somehow available or say say again the
information somehow when you said that you were like you asked some of the GPU manufacturers some questions about how much it's gonna cost to do this or like how much of the GPU air GPU area will be used by this algorithm like is this some kind of documentation or just some sort of chats that you had with some people yeah so we reached out to the manufacturers based on the connections we had I don't think this is public information however we can we they advised that there are some very good reverse engineering analysis already
existing technical analysis of this generation of silicon I think for for the generation of silicon or I referred to let me go try to dig it dig that up and see if I can point those out I think in general the I would suspect that GPU manufacturers would not be that excited about doing exact detailed area analyses because they have competitive concerns about doing doing exact breakdown but and that's why it that we ended up with a hand wavy rough
okay so what I would suggest if it's possible at all I mean I know I done some GPU programming myself few years ago so I know that they when you run some algorithm you can actually kind of profile it so that it tells you like how much the bandwidth you have consumed and how many registered to you've used and also to face how much of the you know these operations on that operation it would be useful if you have access if you can run that and then basically just have some data to demonstrate that this algorithm is actually utilizing these resources on a GPU like let's say that utilizing let's say 90% of bandwidth yeah it's very good possible yeah yeah it's it's possible I think that's a
wonderful suggestion let me let me get on get on that and what we'll have somebody put thank you very much yeah thank you awesome four minutes Alain did you have anything oh just super quick I know that you said that you and poeple have been in touch with some like GPU manufacturers did I understand that correctly you said earlier on the call yeah so right now we're keeping those conversations private just because we don't we want to respect the privacy of the manufacturers we're talking to but yes sure yeah I was just wondering if if this hasn't already been part of the conversation but maybe just getting some confirmation of some of the same ideas that mr. death has
shared with us here would be would be helpful absolutely that's exactly why we're talking to them so we can come on the next one of the next calls and say we've confirmed what they're saying with the manufacturers awesome cool so we have a couple minutes left I want to give the last two minutes to Dimitri to give the testing updates and then we can in the call mr. death thank you so much for joining and providing some clarifications sure I may hop off now yeah absolutely thanks bye-bye bye all right Dimitri go through real quick on any testing updates and then we'll be done okay I've been mostly revealing all of the tests
is a recent changes from CBP need and so state tests are done for Constantinople it generated VM tests are updated I'm changing the way the hash of the tested is calculated so that's why all of the tests are now more if you the different hash and I trying to fix a Python script on a test repository to match this hash check and I'm currently working on bakshi and test regeneration I would like to keep some of the blockchain tests being mined with eg hash proof of work that's because there
are some interesting cases where blocks have ankles where a block have many different uncles or that many blocks so I would like to give those tests with proof of work just to see how difficulty is generated and one of the interesting features of the blockchain tells that I could deliberately change some parameters of the blocks so there are some tests where blocks I'm getting in different timestamp shift whether it is forward to backwards in time and some interesting cases is a difficulty checks that in the blockchain test is this way so if we are
to implement a new way of mining I think that some changes to be done to blockchain tests on an interface level cuz I would like to manually set which blocks should be mined with a new difficulty algorithm and with the old one and currently yes so this proof progressive proof of work is not happening and constant in our pool is correct that is correct yes that's nice but I think eventually we will implement something like different proof of work so I will work in the towards that direction
revealing blockchain that takes a lot of time if it if it has mining and I have to fix a CPP client there are some errors happening when my knee or when refilling the test it takes some time to understand what was being changed in CPU and how it affects the test generation well yeah it will take some time for me to regenerate all of the blocks in tests but overall it's going to find so mitri when you sell the status were done or they merged or they in a PR so let me think oh that's I think I could not
merge this pierre until I fix the Python script in tirstrup oh so it's all green and I kind of stuck because of the llamó test at the moment I remember hyperman suggestions are helping his bitin validation knows I'm Jason hash it's not good I would appreciate that well I could design this hash check for yama for now and i could merge those tests if it's necessary to do it you know near future you could as well just pull from sam to request and see how i was working are
there any other comments okay thanks everybody for showing up we will talk to you all in two weeks after the hard for contests net sounds good Thank You Hudson bye-bye [Music] [Music]
[Music] [Music]