No Forks Given | Algorand’s Proof of State Q&A after show

Recorded: July 26, 2022 Duration: 0:22:51

Player

Snippets

Hello and welcome everyone to another episode of the Algrant No Forks Given Post Show. I'm Ryan Fox developer advocate here at Algrant and I want to welcome you as our as our as our algal fam to come
and join with our guests today. We have Anne Kenyon, Senior Technical Product Manager and Jason Palos, Senior Software Engineer for Smart Contracts. Both are my colleagues here at Algorand and we just wrapped up a show with them
streaming, learning about the updates that are in the latest release of Pytel 0.14.0 that dropped just a handful of hours ago. And we also learned about what is an ABI.
What is an application binary interface? What's it used for? And then importantly, how can you implement a smart contract that is ARC4 compliant with this ABI specification? And then distribute that so that everybody
knows how to interface with your smart contract. So I want to welcome to the stage and and Jason thank you guys both very much for being here. Hey Ryan glad to be here. Good good good. All right we are going to
Use this time with the algal fam to bring you guys up to the stage and ask questions of our guests. Hopefully you saw the live stream and you are a bit familiar with what the Pytale release has in it. So we want to turn it over to you to ask some questions. So let's
just take a look. I've got to handful that a request it. So let me bring them up now and why they get connected. I guess I wanted to ask a question to the both of you, which was
All right. I wanted to ask a question to Anna Jason to kick us off. When you look back at adding the ABI to PyTill, can you tell us like what was the most difficult portion of doing that?
Yeah, great question. I guess I can start So you know people always say like a developing new languages is is really difficult and What what they mean I think one of the things that they mean is you know if you're a programmer you know that naming things is
hard, especially if you're naming things as a group, you'll argue over one name a lot, like for an hour or more, multiple hours. And then if you're designing a language, it's like you're naming 30 different things at the same time when you're adding a feature. So I think with
respect to this project over the last six months, I feel like the code was rewritten a couple times and after some discussions where there was just a lot of discussion of what should the interface be to make it easy for developers to use this product. It's a very
like non-trivial problem. So that's sort of on the product aside. And I think Jason can speak more to the engineering side. I mean I know that building compound types has been a huge challenge. I mean
If you're familiar with Teal, you know, you know, Davey M, right, supports you in '64 and byte strings and now, right, with the ABI, we're encoding in a generic way so that everybody can use them, you know, tuples and arrays of things like at very complicated types. So you can just imagine
the teal that's generated from this is very, very long. And getting that just right so that everybody can use it with confidence has been, I think, a big challenge. Anyway, I'm sure Jason, who's been in the weeds more than me, has more to say. Sure. Thanks, Sam.
Yeah, there has definitely been a lot of engineering challenges associated with this. Really to echo what Anne said. Compound types, adding those to PyTill, these are things such as arrays, tuples that can store
multiple values in them. This is a concept that until now, Pytel has not had. I know multiple community members have attempted to implement these things for their own purposes to varying degree of success. We have
For us to do this in a generic way, with no other assumptions other than you're using PyTiL and you want to have these abstract compound types, it is a really big challenge and we've had to rethink really from the ground up
the Pytel type system, how that works, how variables work, in order to actually deliver these compound types that behave in a way, how you would expect them to, and that aren't horribly, horribly inefficient to the point where
If you use an array, it adds a thousand lines to your generated teal from your program. That's definitely been a really big engineering challenge. I think you can tell when you look at the user guide
and you see some of the new additions. They really redefine some of the Pytale fundamentals. And for good reason, we've had to challenge our assumptions and make these kind of low-level sweeping changes or to support these features.
Great. So do we find any breaking changes? I mean, if I've been a pie-tale developer in the past, is the new features that are added here related to ABI breaking anything that I've done in the past? Great question. So we've been able to
Add all of these new features without breaking any existing code, which is always a really big concern for us since if developers are Trusting us enough to write their code in Python. We really don't want to Break that their code in the future with updates.
We try to avoid breaking changes as much as possible and I'm happy to say we don't have any of this release Well, that's definitely a release or I'm sorry. That's definitely a relief Thank you Algo fam out there. I want to make sure that you guys are requesting and coming up to the stage to ask questions of Jason and Anne
and about anything that you might have questions about Pytale related or ABI related. We have one listener who has come to the stage. Nope, has dropped back down. So let me ask you guys a question here and maybe I'll direct this one towards you first.
So the release just came out 014 0 and it's pretty easy to get to all you got to do is go hit pip install pie teal but I'm wondering do you feel like you got it all or do you have a bunch of stuff on your road map for the future.
Well, that's a great question. If I felt like we had it all, we would be at 1.0, right? But we're still at 0.14. I think there are definitely still some challenges with Python. I mean, it's relatively speaking still a young language.
And there are some syntactic challenges that people still face that we're thinking about fixing. If you've ridden it, you know that writing a for loop is pretty annoying. So those are on our minds. The other thing that's on our minds is not in vital itself, but how you
to test your smart contracts, your Pytel smart contracts. So these are the types of things we're thinking about. We're not at 1.0 yet, but we're starting to think about what 1.0 will look like. So maybe in the foreseeable future, we'll get there. - Ooh, excited to hear that. Jason, anything to add?
Do you feel like a specifically, ABI related? Do you feel like you got it all or there's some things that you will be adding in future releases? Right. So we have deliberately not supported every single possible ABI feature. Namely, there are a few ABI types that we have not supported.
it. And these, you know, this decision, it was a hard one to make, but ultimately we decided for some of the, or for what we anticipate to be less popular types. We would not support those initially in order to take it this release to you as soon as possible. And
Yeah, based on community feedback, I'd say if you really want something more or something that's missing, let us know and we're happy to hear that. And where is the best place for us to provide that feedback to you? Sure. I know Anne,
mentioned the Discord, specifically the Product Feedback channel. So that is, I think, a really good avenue for feedback. But if you have something that's more code focused or very specific, definitely
opening an issue on the Pytel GitHub repo or opening a PR is a really good way to get our attention as well. Yeah, and don't be afraid to do that even if you don't, you know, some people don't want to open a GitHub issue. They only want to offer like
a solution with a PR. But in reality, if you open a PR, we, you know, that might actually make it harder to get it accepted. But we want to be aware of the issues that you're having. So please don't be afraid to submit them to GitHub.
Yeah, definitely. So when we think about these ABI files, this JSON file, this representation of the methods that are contained within the installed smart contract, how do we
How do we find those out there? How do I access that as an end user or as a front end developer who wants to interface with a given smart contract?
Yeah, that is a really good question. At the moment, I don't think we have a great answer for you. We're still kind of seeing how the community is going to use these things and observing the patterns that are going to form there.
But I think this is not something we're finished with yet. We're definitely taking a step in the right direction towards having a really good smart contract ecosystem. What we're really happy with now is deciding on
the format for these ABI files because that is something that just did not exist up until recently as Anne presented during her slides in the show. This has been kind of a year in the making really to get to this point.
So we're really happy with the format. I don't know yet. I'm completely what the best way is for some more contract authors to get clients to distribute these documents. But generally, that's the code that we anticipate. Yeah. Well, my recommend
I mean GitHub is quite ubiquitous and until we have a different way that we all agree on sharing these things, I would publish my JSONs, ABI spec for my smart contract on GitHub in my repo and then people can just find it there if they're interested in using my project.
All right, well that sounds good. I know that as Anne Slide talked about, right, it's been almost a year since you started this discussion and that discussion really started as an arc, as an algorand request for comment on
the foundations GitHub site. And that's where ARK4 was born, which describes how you should specify this JSON file. And I know that there is ARK23 that isn't a draft right now that talks about, well maybe we could store
or a hash of that file somewhere within the Teal Program. As we look forward, is that really where we go to have those next-level conversations back in ARCs or are there other places in the community where we should be having those discussions?
Yeah, that's a good question. I personally think arcs are a good place to have these kind of improvement focused discussions because
a lot of people have their eyes on that and are willing to comment and work on drafts for new features. I don't know, and do you have any other recommendations?
No, I think the ARC system is pretty good. I mean, we see right on Ethereum, they've got thousands of ERCs. So there's room to discuss. So it's already a pretty established format. And I think we can continue with that until something better comes along.
Well good. We will keep doing that. Take a look at ARC 23. Obviously take a look at ARC 4 because that is what the specification is all based on. To our listeners out there in the Algo fam, if you have questions for our guests, hit that request button. We'll get you up here to answer those questions here.
And then I wanted to ask you guys a little bit about probably some alpha here, right? Like this this this beaker thing that's going out there kind of behind the scenes My colleague bar and G has been working on beaker can either of you
give us a little description of what that is and what's to come and how that relates to Pytale. Well I'm pretty sure Ben is on the call so maybe he should speak for himself. Oh man well let's see if he comes up Jason are you willing to take a little shot just before or while he comes up?
I'll just say very briefly, I think it's an innovative new way, a new take at least on writing, piteo smart contracts, and I think there's a lot of potential there. And I'm eager to see where a Grozen who uses it.
Awesome, I'm getting I'm getting a DM from Ben right now and he's saying unfortunately his mic is a no-go so he can't come up but he was he but he appreciates the plug there so good Let's see I had had another cool question for you
guys which had to do with oh yes of course. Where do we find the demo that you presented to us Jason? Yeah that is a good question. I have a GitHub gist with all the commands that I used. Ryan
I don't know the best way to distribute this. I can tweet it out and we can maybe have it place some other more central place to. Yeah, for sure. Yeah, if you tweet it out, then we can pin it up to the top. Tony knows how to do that stuff behind the scenes for us. We appreciate his efforts there. He's behind the
show gets posted to our time sorry to our youtube.com/algorand. YouTube account and we have a section for developers there. You can see all the shows that we've done in the past and then you can take a look at the show notes and they have links to all of those different bits so we'll be sure to put Jason's
to the code in there. Yes. All right. Is there anything important that you guys want to share with us? You know, we always love to hear alpha on these shows. So anything you want to tell us about what's coming out soon?
What can I reveal or not reveal?
Yeah, I don't know. I wasn't prepared for this question. Well, I mean, as I mentioned, I think that what we're, what we're most focused on now is helping people test their smart contracts more easily because we recognize that, I mean, especially with
I guess the piteal to teal translation can be a little difficult to handle. You write your piteal contract and you generate the teal. You can test the teal using sandbox. And then you get an, at best, you get an error that you can figure out what line of teal it was at. But what line of
I feel was it. So, you know, we recognize this is a major sort of pain point right now that we're trying to tackle. And then it's another, you know, challenging problem to tackle, but we're taking it. Yeah, we do the hard things where we're tackling it head on right now. So I guess that's a little taste of
something that will hopefully come in the next few months. Sounds good. Outside of Pytelo, maybe Jason, what are you most looking forward to in some of the upcoming releases that are going to be coming up later on this summer?
Sure. I think we're doing kind of to echo what I said. We have our focus set on kind of the dev tooling space.
So taking a step back from just writing a smart contract, what are the tools you used to actually develop with that? So she spoke to kind of
figuring out in a more streamlined way how errors have originated from your PITO program. And I think there's a few other things kind of related to debugging as well that I'm personally excited to see.
Yeah, we also do have some interesting updates coming down the road and I'd say check out the Go Algorand repo if you want to know more than that that can explain it better than I can. That sounds good. Yeah, definitely some exciting things coming in the Go Algorand.
consensus upgrades that'll be coming. And you want to step in and say anything there? Well, it's coming. They proofs are almost here and performance improvements. I mean, you'll hear about all that very soon. I don't want to spoil anything.
So yeah, that's that. Fair enough. Yes, good, good, good, good idea. We're focusing today on, on Pytale, the latest release at 0.14.0, which just really was released yesterday. And the newest feature to be added was support.
for ARC4 and being able to author smart contracts that then generate an ABI compliant document. We really appreciate Anne and Jason coming on the program proof of state show.
And talking to us about what was in that release and then also providing some demonstrations about how to actually author those smart contracts and how to make use of that ABI file. So Jason and Anne, I want to thank you.
Once again for joining us here on the Algarand No Forks Given Post Show. And thank you for joining me on the Algarand Proof of State Show as well. Thank you, Ryan. Thanks for having us here to be here. Wonderful.
All right, Ago fam, well we do this every week and we look forward to seeing you back here next week with another show and we will enjoy having you continue to build on Alvarez. So have a good time. Talk to you soon. Take care.

FAQ on No Forks Given | Algorand’s Proof of State Q&A after show | Twitter Space Recording

Who are the guests in this episode of the Algrant No Forks Given Post Show?
The guests in this episode are Anne Kenyon, Senior Technical Product Manager, and Jason Palos, Senior Software Engineer for Smart Contracts.
What is the purpose of the latest Pytel release discussed in the episode?
The latest Pytel release, version 0.14.0, adds support for Application Binary Interface (ABI).
What is an ABI?
ABI stands for Application Binary Interface and is used to define how to interact with a smart contract.
What was the most difficult portion of adding the ABI to Pytel, according to the guests?
The guests mentioned that the most difficult portion was designing the interface to make it easy for developers to use and building compound types such as tuples and arrays.
Were there any breaking changes in the latest Pytel release?
No, there were no breaking changes in the latest Pytel release. The update was done without breaking any existing code.
Is the Pytel project complete now that the ABI has been added?
No, the Pytel project is still ongoing. While the ABI has been added, there are still challenges with Python and other areas of improvement that the team is working on.
What is the best way to provide feedback to the Pytel team?
The best way to provide feedback to the Pytel team is through the product feedback channel on Discord, opening an issue on the Pytel GitHub repo, or submitting a pull request.
What is the purpose of an ABI?
The purpose of an ABI is to define how to interact with a smart contract.
What were some of the challenges in adding compound types to Pytel?
The challenges in adding compound types to Pytel included rethinking the type system and how variables work to make these abstract compound types behave properly and not add unnecessary lines of code to the generated TEAL.
What are some improvements the Pytel team is looking to make in the future?
Improvements that the Pytel team is looking to make in the future include fixing syntactic challenges with Python, making it easier to test smart contracts, and creating a clearer roadmap for the project.