 and after to introduce Mike. Thanks everyone, so it's great to have you for this semi-face-to-face meetup, the first one we're doing like this. So, yeah, today, actually it's been a while since we did our last Java user group, so I'm glad to see you guys again. Tonight we will have a presentation about the Internet of Value and Digital Assets and we are glad to have Mike Anderson with us. So, yeah, Mark is a partly CTO for a company called DataCraft and partly the managing director of the Convex Foundation, which is a foundation for the Internet of Value and with the framework. So the idea is first to present the Internet of Value to you and what this means and then we will do some as usual some live coding. So, yeah, thank you everyone and we will have as usual questions and answers in the end. Thank you. Yeah. And last for the newcomers, if you want to rename your name as Jedi or whatever, you can, it's to celebrate May the Force. So May the Force be with you tonight with Mike. Thank you, Mike. You can start and you can open your... Lovely, thank you very much. So let me just turn my screen, just double-check this works. Yes, and you can open your mic and your volume. I can open my volume. And soon, I can share your presentation. Okay, can everyone see this okay? No, you need to reshare your presentation. Yes, and now you can share. Yes. Okay, looking more promising. All good? Fantastic. Well, great to meet you all. So today, I'm going to be doing a talk about Internet of Value and digital assets and how we can use that with Java. So I've been a Java coder since about 1997, right about when the first versions are coming out. So it's quite exciting still to be using the Java in this day and age to build a system for the Internet of Value, which I think is a very exciting space that's really going to become a big game changer in the world that we live in. And that includes obviously the things like cryptocurrencies, but I hope in this talk, I'll give you a bit of a flavor that there's actually a lot more that can be done with these kind of technologies in the future. So it's a very, very exciting time to be alive and working on these kind of products. So I wanted to share a bit of these ideas today. So what I'm going to talk about, first of all, I'm going to go a little bit into that. Okay, so what are digital assets and why should we be interested and why is this different from what's been done before? Second, I'll spend a bit of time talking about Convex, which is a platform that we're building for the Internet of Value at the Convex Foundation. It's an open source platform and I'd say it's an improvement over some of the more traditional blockchain technologies. And it is, of course, 100% Java implementation. So it's all Java technologies going through. So I'll give you a flavor of what we're doing with that. And then finally, I'll go more into the practical part where we'll actually do some stuff with digital assets and show how you can use the Java libraries to trade digital assets, to launch new kinds of smart contracts and how working with these kind of technologies might look in the future. So I wanted to start with sort of a big idea, which is what's making the whole Internet of Value and decentralized space possible. And an observation of the original Internet is that what you fundamentally have is this amazing open network. But the actual entities which are connected to this network are these private servers that have their own databases, have their own application code, their own application logic. And the Internet is really just serving as a communications channel between all of these different systems. And we regard these maybe centralized systems because they're generally under the control of a single entity, whether it's Google or government or a small business. These are systems which are basically operated by a single organization. Even if they might be distributed, they might have big clusters, they might have many, many components, but they're still under a centralized control of thought. Now the big change which is happening right now is that the system of storing data and code is moving into the network. So rather than having all of these decentralized systems connected by a communication channel, we're actually putting the systems into the network itself, a decentralized system which executes code and which stores data as part of a network. And this is a network that nobody controls, it's an open decentralized network. And that enables us to do some very interesting different things. You can see what's happening and you can trust what's operating in this decentralized system. It's no one has the ability to change the data or execute code without following the rules. So why is this important for economics? Well, having this decentralized state, this database that's sort of shared and operated according to some defined rules, you can actually use that database to store things like who owns what assets. So the classic case would be to have some kind of token when different people could own a different amount of different tokens. And you might have Alice with a thousand tokens, Bob with 300, Charlie with 100, etc. And rather than having all of it, many different systems trying to track who owns what, you can rely on this single source of the truth, which is the decentralized database. And this is exactly what Bitcoin does, it's what Ethereum does and various different blockchain systems basically work on this point that you've got the decentralized ledger that stores the ownership of various different assets. And you can imagine these assets being a cryptocurrency, but they could also be something more practical for a business like let's say reward scheme points or pretty much anything that you wanted to create, you can build some kind of digital asset which represents these amounts, loans, derivatives. I'll go into some more examples later, but the flexibility of this concept is very wide. It's just ultimately a database with some code that supports it. So you can implement whatever kind of asset is interesting to you. So what makes a digital asset, what's important about it? The properties are, in order to be an asset, it has to be something that has value in it. So someone's got to want it or find it useful in some way. Even if that's just a subjective value, they want to own it because it's interesting to you. It can represent a right to use some other system or resource. So we have these things called utility tokens, which give you the right to consume various different kinds of decentralized resources or network resources. It needs a method of defining ownership, which in turn requires some sort of sense of identity, but you have to say who owns these assets. And generally it also requires a notion of quantity. You've got 10 of them, you've got 100 of them, you've got a million of them. A million of them. It also needs this concept of control. So having ownership of an asset typically gives you some special bytes. The kind of bytes you might have is you might be able to use that asset in a smart contract. So you might be able to exchange the asset for other assets, or you might be able to put the asset into an auction so different people can bid on the asset, if you imagine some kind of asset that represents property, for example. Or you might have rights like destroying an asset. If you want to get rid of it, you could only the owner or the creator of the owner of the asset, which typically have that ability. And finally, there's generally got to be a sense of transferability. It's a digital asset. There's got to be a way of moving that ownership to someone else. Now, if you've got these properties and everyone understands and trusts these properties, then you can start using digital assets to represent things of real value in the real world, or indeed new kinds of digital assets, virtual assets that might exist in a purely digital sense. And how do you actually... I mean, this is the conceptual view. The conceptual view about how you make use of these assets is, first of all, you're starting with some initial state that describes the database, the state of the world, who owns what assets. You then have a transaction, and the transaction is some kind of instruction to the decentralized network performance of operation. But in the case of digital assets, you have a command something like, I would like to transfer 150 of my tokens to someone else. And of course, this needs a digital signature. So in order to ensure that only the owner can spend the assets that they possess, we typically use a digital signature to achieve this. So the initial state plus the transactions go into an execution engine. And this is not just a normal computer. This is the decentralized execution engine, the entire set of systems that make up the entire network. It processes the transfer of the assets according to whatever rules are defined for that asset. And then of course, this results in then in a final state, where the final state is the new allocation of assets. So in this case, it could be Alice making a payment to Bob for 150 tokens. So ultimately, if we want to make this kind of system work at scale and be useful in the real world, we need this idea of an internet of value. This is a different kind of internet, or maybe an extension of the internet that builds in these capabilities so you can work with digital assets. So the kind of properties we want, we want it to be global. Like the internet, it should be a worldwide network. It should be borderless. Anyone should be able to access it from any location. It should be open. You want to make it possible that everyone can participate and join the network, which generally means it has to be neutral to who is using it or maybe it doesn't even know, maybe you've got some pseudonymous identifiers that are able to use it to send it anonymously. It's got to have a sense of automation. And automation is important for a couple of reasons. One, you want to be able to build smart contracts involving digital assets. But also, you can use smart contracts to actually implement digital assets to define the rules by which the assets operate. We want it to be secure. So this really means using best-in-class cryptography so that you can be sure that only you can sign a transaction to use your own assets and that there aren't any security holds in these kinds of situations. I'd say it also needs to be extensible. If you build one of these networks with only supports three kinds of assets, it's not going to be much use. You want it to be possible for people to build all kinds of different solutions on top of this sort of factor. It's going to be fast. And that means realistic real-world transaction volumes, so something like you might see on a user network. And it's going to be cheap. If it's expensive to use, that's going to be a barrier to making use of this in real economies. And what might you use it for? Well, literally thousands of applications. Consumer applications, for one thing, is an area which I think is going to be very exciting over the next few years. One of the hot topics at the moment are non-fungible tokens. Someone recently sold an NFT for about $69 million, an artwork NFT, which is, you might say is quite incredible, but it shows that these digital assets can have real values. You can use it for games. You can use it for banking solutions. You can use it maybe for social networking. There's a host of different consumer applications that can exist on these kind of decentralized systems. I think there's also a very important space around trust and identity. You can build systems like autonomous organization, which effectively companies that operate in an entirely virtual way and just use a system of incentives and payments to interact with other entities or with their users. There's things like also self-subwin identity and trusted credentials, how to issue a credential that people can trust in a global sense. And then you have to obviously mention also like the decentralized finance applications. So these are things like digital banking, decentralized exchanges, central bank digital currencies, all super interesting areas. And I think we've seen a lot of innovation in the space and there's going to be some big revolutions that change the way that the financial system operates using these kind of capabilities. And I think I agree with this quote from Don Tapstot that the blockchain, I wouldn't let you say blockchain, decentralized networks represent a second era for the internet. It's adding a fundamentally new capability which enables these kind of value systems to operate. I'll just pause very quickly. I mean, that's a quick overview of the digital asset space and why I personally think it's interesting. Are there any sort of thoughts or questions or comments on that? If not, stop plowing. Okay. So I'll talk a little bit about convex and convex is a platform that we are building at the convex foundation as an open platform for the internet of value, which is, of course, a Java implementation. I would define it as a full-stack IOV solution. So we're building a system that really goes from the base layer, the infrastructure we want to use, right up to what's ultimately interesting, which is the applications. So they can be mobile, they can be web, they could be enterprise systems or integration for any kind of other black-end systems if you like to use. And in between, we have a couple of important layers. First of all, we have this base protocol layer. That is what actually enables the decentralized network to work. How does it actually agree to the consensus algorithm? How does it agree about the state of the digital assets? How does it agree which transactions have been executed and which transactions have completed? And it also needs this compact virtual machine, which is effectively a virtual machine that runs on the network. And this is what is actually executing all the smart contracts, executing the transactions and making sure that all the rules that people define for their digital assets get faithfully executed in a predictable, reliable way. And this is actually all the different machines that nodes in the network collaborate to make sure they've all got exactly the same answer. And this is obviously really important. You can't have some people thinking they own an asset and other people thinking that someone else owns the asset. That would be a bit of a disaster. So this needs to be done in a very consistent way to get a global consensus. Now on top of that substrate, there's then a bunch of services. So these are things like registries, some of the trust tools. There is different kind of user libraries that you can use to generate the program code that you need. And what a typical smart contract developer then would be doing is using those services to build their own business logic, whether it's smart contracts, whether it's the logic of their enterprise application, or whether it's a new kind of digital asset that they want to run on the system. And then the application layer is interacting with the network to access those digital assets and those smart contracts. And then everything else just goes once, operates down the stack in a consistent way. So this is the kind of architecture that we believe is going to be the future of these systems. The substrate is something that the Convex Foundation provides for everyone. But the top layer is totally open. Anyone can build any of these. There's nothing special. And we've got plenty of open source examples of these things and people building these sort of applications. I think what I think makes Convex special is three things that it combines at the same time. One is this scalable performance that we can actually do internet scale usage. And talking about thousands of transactions per second, the sort of scale that a visa network would need to provide. And it has this concept also of universal transactions. So it is actually a global state model that the entire registry of digital assets is all updated in a single transactional operation. So if you swap one asset for another asset, there's never any danger of consistency. It all happens in a single atomic operation. And this is super important consistency and it's super important for making sure that things don't go wrong halfway through a transaction and you don't get your side of the exchange and lose money. And then the final area that's super important as well is it is fully decentralized. So people have been able to do smart contracts for decades, but the novelty is really doing it fast and in a decentralized way so that you don't have a single central system being the arbiter to all of these transactions is actually running in a truly open network that nobody owns. So kind of like your Bitcoin or Ethereum that pioneered this space, but this is really giving performance and program more programability to those capabilities. And just a couple of benchmarks. So we're certainly running in tens of thousands of transactions per second range. Visa, I think, I think Visa can do a lot more than this, but typically it's normally running at about, you know, a couple of thousand transactions per second. Ethereum and Bitcoin really cannot do many transactions per second and they're really constrained on capacity for various different reasons. And that's a big problem. It's one of the reasons why, you know, there is a need for alternative ways of doing things compared to the super important thing is confirmation time. If you're making a payment or if you're playing a game, you don't want to wait a long time to confirm if that transaction went through. You want a quick response. So we've really put a lot of emphasis on getting the latency for a final digital asset confirmation down as quick as possible. And the final point, of course, is it's got to be cheap. If you want people to use it, particularly consumer applications or retail applications, we need to make sure that it's very cheap to execute. And of course, having the performance helps, because it means you can run a lot of transactions for low cost. I don't want to talk too much about blockchain, but I just wanted to highlight a couple of issues with the blockchain approach which would cause a challenge. A key one is these blocks are mined sequentially. If you build a block in a blockchain, you have to attach it with a reference to the previous block. So you're always adding the blocks one at a time and you have to have this complex process for choosing who is going to mine the next block. And sometimes that results in burning a lot of energy like you would with Bitcoin and very wasteful algorithms. But more importantly, you can't issue blocks concurrently because you have to wait until the previous block is finalised before you can add the next one. So this is a huge bottleneck on these systems. And there's often a lack of clarity over actually which is the latest block. It's actually a new one that's come after. And you have to have a various different complexities to deal with these sort of issues. So convex doesn't actually use a blockchain. It's a new kind of consensus algorithm convergent proof of stake. I won't go into it too much detail, but basically it's a way of solving this problem of how do you collect all of these transactions and execute them without so many bottlenecks and without some of the challenges that exist in the blockchain. A few things for building with this. So one product is a token factory. So if you wanted to make a token, let's say you want to make air miles token or something like that. How can you make it really easy for people to create and operate these tokens? Preferably without writing any smart contract code because that's quite risky and quite security specialized. And we want to make it super easy for people to do that. We might really make templates. We've built a decentralized asset exchange. This lets you swap different kinds of assets. So if you imagine swapping a digital currency for your air miles or for some other kind of token, this basically acts as a stock exchange for a different token on the system. We have a non-fungible token engine as well. So you can create these unique non-fungible tokens to represent whatever you like. But this might be an artwork or it might be items and game. It might be even identities or ownership of some other kind of non-virtual asset. And we're also building some banking technology. So a very interesting project to say, okay, what would it look like if a bank wanted to run some of its core systems on a decentralized platform, which you think could be very interesting for some innovative banks in this space? And of course, we're huge focus on developer tools. So we have this live interactive sandbox so people can try out the DNS network. We have a mobile app, digital wallet. So you can use this as a typical user would do. So it's like an example of how you've got a mobile application. That's actually one of the few things which isn't in Java. That's actually a Flutter application. We will Flutter. We have then the tool kit. So lots of open source libraries to help people build digital assets. And we have the peer server. So if you actually want to run a node in the network yourself, you can. Although for most applications, you don't actually need to do that. But there might be some reasons you want to. For example, you might want to have a copy of the entire database so that you can do some quick analytics locally rather than doing some remote queries. So there's some reasons why you might want to run a peer server yourself. NFT marketplace. This is nice. It's a good example of different kinds of digital assets working together. So non-fungible tokens represent some kind of artworks. But you can buy them with other kinds of currencies. So for US dollars or for convex coins or any other digital taker. I'll do a quick. I think I've got time. So I'll do a quick. Yep. Sure. So convex between blockchain technologies and traditional blockchain effects? I think it should not. It's very similar to a blockchain. Great question, by the way. It's very similar to a blockchain in the sense that it's a decentralized system that executes transactions and has a decentralized ledger. It is different from a blockchain in the sense that the blocks are not chained together. Yeah. They're not got a pointer to the previous block. So that's the key difference. Convex does actually have a concept for a block, but they can be reordered up until the point that the consensus is finalized. And what that enables is people can concurrently create new blocks and then they all get ordered together. And then finally that order gets stabilized by the consensus algorithm. But there's no actual physical dependency or information dependency. That causes those blocks to be linked to a chain. So it's not technically a blockchain, but it's very similar in some of the ideas. I just do a super quick demo actually of the absence we're here. If this works and my screen is too small, this is a tragedy. If I can quickly just get this running. Yeah. So this is I'm just running here a good old Android studio little Android emulator. And this is what a mobile wallet might look like. So we've built a mobile wallet. You can see I've got some Convex coins. I'm actually Alice at the moment. My account number is 559. I can see what digital assets I've got. I've got 66 US dollars. I've got 10 pounds sterling, 10,000 Japanese yen. I created an INSCAD token which I have a lot of. If I want to, for example, buy some more Japanese yen, I can buy 100 Japanese yen. And I might want to buy it with my US dollars. So I've got some US dollars. That's going to cost me 92 cents. I'd buy 100 Japanese yen. And that's now I've got an extra 100 yen in my in my that's how quick the transactions go through. That is a full settlement. So that is not simply getting the confirmation for the transaction. The full supply chain is finished. So it's actually transferred to funds. So you might compare the stock exchange. The actual settlement comes at a time lag after the trade is made. Here, the trade happens in a single transaction. So the transfer of funds happens sort of instantaneously. I can also see some of the NFTs that I own. So I've got a few NFTs here. Some digital art that someone made that I quite like. And if I want to go and buy some more NFTs, there's an NFT shop. So let's say I like this the beginning. And I want to pay 10 US dollars for that. Again, I can just I can just buy that asset and should now be in my should now be in my library area. At the beginning. So you can see how you can use these kind of these kind of capabilities to build pretty nice easy to use mobile applications and tools that work with that work with these financial assets. Oh, there's also a tool I won't go into too much. You can launch your own tokens. If you actually want to create your own token, you can create your own currency. There's an interesting idea about in the future, will companies and individuals actually have their own individual currency? So it's a very interesting idea to explore what possibilities these kind of capabilities open up. And that wouldn't be practical on some of the blockchains to use TSO for expensive. But with Convance, it's a feasible kind of possibility. So that's that's a mobile app. And it's all open source. So if you want to play around with it and sort of test out some of these, some of these tools, it's all there in Fluffer and Android Studio. It's lost my position in the presentation for a second. Sorry, sorry, technical issue there. It's apparently not going backwards. So it's having a very, very careful. Yeah. Yeah, sure. Is there a question there? How can we be sure that mobile won't be attacked and why it's emptied by malicious items? A great question. I can't go too much into the consensus algorithm. I'd love to, but we just don't have time. But there's basically a threshold of how many peers in the network need to be following the protocol in order for you to be completely safe from any interactions. So it's about it's two thirds consensus for the network to continue to operate normally. If malicious actors got more than one third, they could potentially delay transactions. But they still couldn't rewrite transactions. So your transactions and your assets are still safe. It's still protected by the digital signature. Yeah. So liveness requires two thirds. And as long as that's there, you're basically 100% safe. If malicious actors get a large percentage of the network, they can potentially censor block transactions or do a few other things that disrupt the network. But they still can't stem your asset because they still can't sign a transaction with your private key. So as long as your private key is kept secure and you've got good key security, your asset should be safe. To be a very important point, critical to all of this. Okay. Okay. What interesting idea is that every account on the convex network, whenever you create one, is in fact a fully fledged computing environment. You basically get your own little virtual computer. You can define your own code, your own definitions in this environment. And this is protected again by your digital signature. So only you can change things in your environment, which is very important. And there's actually two types of accounts. User account, which is one that a user has created and is using to either write code or execute transactions or manage their own assets. Or you can also have actor accounts which don't have any user. They're fully automated and they're just operating according to smart contract rules. So you'd use an actor to implement a system that executes smart contracts. So for example, the shop that I just demonstrated where you buy NFTs from, that is an actor. It holds those assets in its warehouse until someone buys them, who takes the money, pays the original owner of the asset and gives the asset to the purchaser. So all of those rules are in a smart contract and they basically get executed according to that logic. And that's another kind of account. They're actually very similar. The only difference is kind of user executing transactions. A bit of technical magic, getting into the nitty-gritty. We do actually have a on-chain compiler. So we actually compile code to a sort of bytecode format, but smart contracts can actually generate that bytecode and actually compile an executed on-chain, which is quite a powerful capability. And that lets us do some quite funky things. Like you could have a single line of code that actually calls some other smart contracts and does code generation to build a digital asset. So we provide these template digital assets that basically just do code generation and compile a full digital asset that then other people can use. Now, we have a trust monitor. So we have quite a sophisticated trust model. So obviously your accounts are protected by digital signature, but you might want to do something a bit fancier. You might want to have a white list of like, which users have the admin rights to your shop. These kind of things. This is what the trust model is all about. And we have these upgradable contracts so that you can live. This is dangerous, but there is facilities if you want to like live upgrade smart contracts or upgrade the code, you can add that capability in. Obviously use at your own risk because it's a slightly dangerous feature, but it's powerful capability for people who want to continue upgrading and continue enhancing their smart contracts. We have a fancy storage engine. We realize that to get this level of performance, we actually had to build our own storage engine. It was very, very specialized for the kind of data structures that are needed. And we do that in fact, using the Java mapped memory. So mapped byte buffers. And that gives us very fast disk access, random access. And let's us get to that, millions of reads per second and quite a lot of writes per second, both of which are critical for the byte transaction throughput. And then we also have this system of memory accounting which is quite interesting. There's like a memory quota for each account. You can buy more whenever you need. But what this does is it creates an incentive for people to be efficient with memory space. You don't want people to be just allocating gigabytes of data on chain because that's going to slow everyone else down and it's going to cost people money and it's not a good use of the network resources. So we basically create this very strong incentive for people to keep their code as small as possible. And that is consistent with the vision of the internet of value. You want all of the smart clever stuff, the graphics, the user interface, the big resource hungry computations. You want to run that on the various different systems whether it's client or the endpoint servers or app servers. You're still going to need those to do the heavy lifting. You want to use the incentive value, the smart contracts and the on-chain computation, literally to do the transactions that everyone needs to see and everyone needs to trust. And that's all you need to do. So the core is very focused on that. You want to discourage people from putting heavy computation on the app. So I'll go into a bit then of a bit more of the Java side which is ultimately really important. And we really do love Java and the JVM the complex foundation. A few reasons that I think are particularly important. One, we get all these great libraries. So the crypto algorithms is really state-of-the-art crypto algorithms available in Java, which are no danger of being hacked anytime soon, probably not for a few hundred years. We get things like NIO which gives us amazing networking performance, all the open source tools, stuff like parsing. So just a great ecosystem of capabilities to build complex. Garbage collection is super important. And I could talk for hours about this. If you have immutable data structures where you can't mutate them, you've got to have these big things that are trusted and have been verified. These perform really badly if you have to copy the whole thing. You have to have different pointers and you have to have different data structures sharing the lower parts of the tree or large branches of the tree. So actually what these are are directed acyclic racks. Now it is really hard to make these perform well unless you have a really good garbage collection. So the Java GC actually is critical to make this efficient. And the other thing that goes along with this is this idea of soft references. So I don't know how many of you use soft references in Java, but they're basically references that if you start running low on memory, they can be deleted. They can be garbage collected. And it does this in a safe way. And the reason we need this is because many of these data structures are actually going to be bigger than memory. If you imagine the entire state of the entire combats virtual machine with maybe millions of accounts and thousands of digital assets and lots of transactions going through this, you're not actually going to fit this in memory on a single machine. So we use soft references so that the garbage collector can get rid of stuff that we're not currently using. And if we do need that data, we can always put it back in again from storage and soft references really give us this capability. And then, of course, the general JBM in performance is great. So we can do a lot of, we can do a lot of, get a great run-time performance out of it. In fact, the performance bottlenecks are more the crypto algorithms rather than the code execution speed on the JBM. So it's never been a problem for us. And tools like JMH is very useful to help us just to prove this before. We have actually a LISP, a language on convex, which is sort of the native smart contract language. We can compile other things to the CVM, but this is sort of the most natural language to use. And if anyone is familiar with closure, it is very much inspired by the closure language, which is another great JBM language. And these compile down to the sort of the raw CVM operations. We actually have another experimental compiler, which looks more like JavaScript. And we made someday, make something that's a bit more like Java. And that's probably a bit of, not a great fit for the CVM itself. It's more of an implementation of the CVM. So we have a Java client library and I'll go and show some of these things. But there's a few key classes that we use. So we have a convex class that represents a connection to the network, handle all the security for you, kind of how you'd expect. We have sort of synchronous and async mode. So you can have a future if you want to fly off a transaction and wait a couple of seconds results, come back. You might want to get on a few other things in the meantime. So that's a very useful feature. We have a token builder. So generating, you've got to generate your own digital tokens. And we have a fungible asset class that basically is what you interact with when you're using a fungible token. So if you want to check your balance or transfer to other people. And this is the convex Java line we have from GitHub has all of these classes. I would caveat that it's still an active development. We might change the API a bit still, but it's quite complicated. So I'll just drop in and actually show a bit of code here. I've got my my beloved attempts, which I've been a user for many years. And for some reason, it is not looking different. I have to do it the fashion way of keyboard. So I just put together a quick sort of a demo of what application code using convex might look like. So we have, first of all, just a quick URL just to say who we want to connect to. So this is the convex.world testnet server. Because we're going to be transacting on the network, we actually need to generate a key pair. So in this case, I'm just generating a new key pair. It's using the Java secure and basically, and then the Java probably libraries to generate a ED25519 key pair, which is what we use for digital signatures. So if I actually look at the code, what we're going to do is first of all, we're going to connect to our SPS. We want to get an active connection. We're going to put an interesting check what's going on. We're then going to actually create a new account. So creating an account is going to use our key pair and build a new account on the network. We send a request to be allocated to your account. And we also need some convex coins. So in order to transact on the network, there's like a utility coin that you use to pay for computation or for memory. So we just request some of those. They're free on the testnet. So we're getting 10 million just in case. And we're setting up then our network to use the address we've just created and the key pair we've just created. You could actually work with multiple addresses if you want. So then we're going to actually, we're going to create a new token. So we have a token builder. So creating a token builder. And one of the parameters you can optionally provide to the token builder is saying, okay, how many tokens do you want to exist in the entire university on your token? So we're doing 999 million. And then we're going to deploy the token and we're going to get back a fungible instance. The fungible instance lets us interact now with the token that's been deployed. We just confirm that that exists. And then just to check that it's all working, we're going to see okay, what's our balance? How many tokens do we now own in the future? So just a short example, but just a quick illustration. So let me just run this. For some reason, Zoom is messing up mine. Does anyone know the P-PASS first? I'm just going to run this. So we're connecting to convex.world. Oh, I think that's worked anyway. So we're getting the output coming through. So we requested convex points. We created our fungible token. So with the address 9998 and the balance for 997, which would be the account that we just created. And we got 999 million tokens in that account. So actually the whole thing ran in just a couple of seconds, just to see the transactions on the network. What I should be able to show, if this is working, is we have in the convex.world, this is the testnet site, we should be able to see that some new transactions have just come through. So we can see that a few 59 seconds ago, account 997 ran a transaction on the network. Let me just let me just see what happened. And what it did is executed this code to build to build and launch this new token. And that token result was 9998, which is an actor. So it's a smart contract on the network. And if I go into the accounts and I look at 998, you can actually see the code that was generated to implement the different features of this of this smart contract. So how does it check about, how do you check the balance? How do you make a transfer, et cetera, et cetera. So that's all the code that you need for a fundable token has just been created and deployed to the network. And you can actually do the same thing here with a sandbox. So there's a live sandbox. If you want to code the same kind of things, you can just execute any commands here and run them in the same for the same way. So this plays a bit messed up, but all of that sort of vein of going into a live coding environment. Okay, so that was all the quick demo I had to do. Let me just move this. So yeah, so that's about it. So I hope you found that interesting. We do have a Discord server. If anyone wants to join the discussions, find out more, we're a lot of interesting technical discussions about the libraries we're building, how we're building these kind of tools and having on this kind of technology. So if that interests anyone, do come along and join that. And obviously, you can explore the developer website and sandbox if you want to play with the live network. And it is an open project. So all contributors are very welcome to come in and get involved. And we will be allocating convex goals to people who make contributions to the system. So that's how we get the convex goal out there in the first place. So anyone wants to answer crypto currency, it's a good way to do it. So thank you very much. I hope that's interesting and obviously happy to take any questions. Yes, I think I have a few questions in the comments section. I'm just going to stop for a share. Okay. Okay, so I think we answered network won't be attacked. So it's a shrug back out of your application, shouldn't you? Yeah. So from both the federal things first, why are you showing memory size on a user app? Good question. I mean, the user app is currently, it's an example app which we mostly use for testing and demos. So developers want to see some of these kind of things. I think for a regular end user, you probably wouldn't show it unless there was a reason why a user might be consuming a lot of memory. I think they're creating a lot of NFTs or something. Maybe they consume a lot of memory for that and they might want to know how much they're using. So probably not normally necessary, but it's an option. Hopefully that answers the question. So for the demo, where are the assets stored and where does the combat ends as well? So it's actually a hybrid system. So the images for the NF, I assume this is talking about the NFTs, but it probably applies to more of the different digital assets as well. The image, particular web servers. So any image URL can be provided to visualize your assets. It could also be video. It could be any kind of content. And that's true for consumer applications. It's probably also true for business content. If you imagine you have contracts, you probably wouldn't be uploading the contract text themselves to the online system. You would be maybe storing a hash. So you would keep the contact itself as it's stored somewhere. The convex engine is running on a network of peer nodes. I think they're actually in Europe at the moment, but that's the decentralized system. So the convex virtual machine is basically being operated by different peers on the network and the one connected to the convex.world one. But in the main network, it could be maybe hundreds of peers around the world that would be executing the same crap code and verifying that all the other peers are behaving correctly according to the protocol. But I think the future is definitely hybrid applications. You have normal client-side code. You have the on-chain CVM code. And you'll also have backend systems that are actually as a traditional app service. And I think that hybrid model is probably the way that it's going to develop. So over your own, our consensus algorithm is part of convex. Yes, there is the convergent proof. Oh, we are coming back. So Mike, you can come here. We can continue here. Hey there. So sorry, some technical issues on my laptop there. Consensus algorithms part of convex. So yes, there is a consensus. Could you choose between different consensus algorithms before creating your coin or your digital asset? I think you kind of have to have the network running on the same consensus algorithm. So ultimately, all of the peers need to be running the same consensus algorithm in order that you get this agreement on the global state or the allocation of digital assets. So I don't think it's possible to have a choice of different consensus algorithms as such. There might be some ways to participate in a consensus algorithm. So for example, you can potentially place a stake on one of the peers and maybe earn some rewards by staking on a good peer who behaves well. So there are a few interesting ways that you can interact with the consensus algorithm. But I think the network kind of has to pick one consensus algorithm and run with that rather than having a set of different choices. Is that all the questions? Yes. This one was the last one. Where's the problem? Cool, awesome. Well, some great questions. One more question. Can you set up closed systems for a company and possibly an hour of the links? Yes, this is actually quite interesting. So theoretically, you could run just a private instance of convex if you wanted to. I would say that if you were to do that, you'd be losing a lot of the advantages of having this sort of decentralized network and this ability to do global transaction with anyone in the world. It would just be for whoever's got access to that particular system. So yes, it's possible. I mean, there are people who do private blockchains and these are popular in some areas, but I think they're fundamentally quite limited. You know, it's more like building a little private network rather than using the internet. So it's kind of for different sorts of use cases. But yeah, it's certainly a possibility and we've got some people wanting to do that already with convex. Okay. Awesome. Great. Well, thanks for all the great questions. Thank you. I think Jeremy would like to share your own brain map of them. I'm very excited to see this picture. So yeah, thank you all. Here is a little something which has been built during the time. If you still have some questions, I'm sure Mike will be able to answer it. And actually we are all happy to have you there today and hope you enjoy the presentation and do not hesitate to subscribe to the Meetup group and speak. If you didn't like it, speak to it to your friends and if you liked it, do the same. Thank you, everyone. Thanks, everyone. It was nice to have you. You are more than welcome. You can disconnect and have a real life. Thank you. Bye-bye. Bye.