JCON EUROPE

Building a Digital Product Passport with Java and Cardano | Fabian Bormann (EN)

46:54 · 20 Apr 2026 – 23 Apr 2026 · YouTube

За тази лекция

This talk discusses the development of digital product passports using Java and Cardano blockchain technology. The speaker, Fabian Bormann, provides an overview of the digital product passport concept, which is a European Union regulation requiring products to have a verifiable digital representation through barcodes or QR codes. The session goes into the fundamentals of blockchain technology, including transaction types, consensus mechanisms, and the advantages of using Cardano's extended UTXO model for storing product passport data. Bormann highlights the Java ecosystem's maturity within Cardano, encouraging developers to engage with the platform and create applications related to digital product passports by making use of various APIs and development tools. The talk also touches on potential use cases, such as ensuring product integrity and traceability and leveraging decentralized storage solutions alongside blockchain.

Пълен транскрипт

[music] >> Thank you for joining me today um with the talk about building digital product passports with Java and Cardano. Um I give you a brief introduction about myself. So, my name is Fabian Bormann. I have background in computer science. I studied neuron bioinformatics back in the days when we were not allowed to call it AI. You had to call it machine learning. And um then I

joined in the automotive industry. I was working at VW as an AI AI engineer. But it's actually the fault of Brave browser that I'm here in front of you uh because in 2018 and 19, I actually want to understand um how this um basic attention token works. And then I went deep into the rabbit hole and came out again. Um but I joined uh Cardano Foundation in

um 2022. We build a lot of cool use cases, actually actual use cases with blockchain technology, which is um always has to do with a lot of community and uh builders. And we are always close to the developers. And we have a very mature Java ecosystem in the meantime. before we start, maybe just a temperature check. Who of you already heard about blockchain technology or but actually

get their hands dirty? Oh, wow. That's more than I expected. And who of you specifically heard about Cardano? The same crowd. That's That's cool, actually. Um I hope you I don't bore you if I continue, but that's that's actually good because then I need less time to explain the the very basics, but I will explain the very basics for the other so Um, but I also realized

when I did the talk or when I created the the slides, oh my god, actually I want to tell you something very simple and we will deep dive into code and it's not that much lines of code at the end of the day, but to make you fully understand what we are doing, I need to not only explain Cardano, I need to maybe also explain blockchain technology

and really not from a coin perspective or something, but really from a technology perspective and then also digital product passports. So, let's start. If you have any questions in between, just raise your hand and then I will I will answer the question. Just interrupt me. Don't feel bad, right? what is a digital product passport? So, you might initially think like, okay, digital product passport sounds like a

passport for a product and that that's completely right. So, a digital product passport is actually an EU regulation which ensures or which wants that each and every product of different categories should have a way um, that there's a QR code, barcode or something attached which allows you to open the passport and then it depends on the category actually. So, there's a general framework and also different frameworks

and it depends on the category what data will show will be shown to you. So, for example, for batteries, it's also um, for example, when they when there was an incident or for cars when they were at at the service shop and so on. Um, but it's not only for cars and batteries. You may heard about digital battery passports because it's now coming slowly also in the

media, but there is a timeline behind different um, different product categories and um as we now have digital product passports for batteries, but then it's not about only raw materials and uh and furniture even, it's also about toys, for example, for kids. And I bet if we are in um 1st of January in 2029, manufacturers of toys will realize they need a digital product passport. So, um

if we talk to people uh to actual manufacturers and ask them, for example, "Hey, are you aware of that there's a digital product passport regulation?" Then most of them answer with the question, "What is a and actually, it's a cool thing. There are a few things that we need to highlight or I need to highlight out of the um out of the regulation. And it's you need

to ensure that no one has tampered with your digital product passport. So, if you have a digital product passport entry, then you can just append to it. You should not be able to change something. And uh you need to ensure integrity. Also, it needs to be public um accessible, so you need to have an access so that there's no vendor lock-in. And what's um what's basically could

bother some manufacturers is that you even need to be able to provide a product passport if your company's not around anymore. So, if your if your company goes bankrupt or something or you decide not to manufacture furniture anymore, then the product passport should still be accessible after 10 years. It depends of uh in in the different frameworks, but 10 years of the usual lifetime after the usual

lifetime of the product. So, now that we know what a digital product passport is, so we know, okay, um there's some data need to be stored somewhere, but what is actually a blockchain? So, that we then have the link why this technology actually fits. So, blockchain I will break it down in a very generic way. It's It consists of transactions. So, usually you want to change something

at the blockchain like a state. And that's This is a transaction. You want to send something from A to B. You want to attach some data. if you would put all the transactions directly on chain, then this would be too much. That's why you need to batch it somehow, and that's a block basically. And if you have a block and if you have the data in the

block and also the the data of the block header, which basically has the block height and some information like also time, then you create a hash of a block. And this hash with second block you basically do the same, but in the header is also the previous block hash. And that's why the previous block becomes part of a chain, and that's why we call it blockchain. These

blocks will be distributed on a network worldwide. So, each node some blockchains behave in a different way, but each node usually has a copy of the full chain. And then they need consensus. So, they need to ensure that the data is the same, or at least they need to know what the majority of of nodes should go with when it comes to a state and finality. And

there are different things that are important for for example transactions. Some of them just allow you sending something from A to B. Some of them have metadata. Some of them have like an account format or UTXOs. We'll look into this in a moment. And also the size is important. So, some transaction cannot carry much data. Some blocks cannot carry much data. And also the finality is is

a point where which matters because essentially that's the point of of true when you know that the data really has been settled across the world. And and there are different consensus algorithms. Probably you heard about proof of work. Um that's for the Bitcoin blockchain. when I said you can hash the block, then you can actually also say like, "Okay, and the hash should start with an F.

It should end with a five. And in the middle there should be two A's or something like this." Usually, if you hash this, then you don't get something that matches this constraints. That's why I put a random number into it, then you try again. Random number, try again. And you try it so often that at the end of the day you get a block, but you need

a lot of tries. You can compute this how much tries you may need. And you use a lot of energy. And why you And you used a lot of energy and because you used a lot of energy, you want to get the block block reward. That's why you're not publishing fake blocks or blocks with malicious data because it's actually hard to produce, easy to verify. And if

you miss your block reward, then you just had huge costs, but no reward. At the end of the day, there are different consensus mechanisms. For example, proof of authority where you just trust a subset. That's sometimes happens for private blockchains in companies. Or if you have proof of stake where you show that you have some skin in the game to then also uh be able to create

a block. And there is a lot of game theory involved, but at at the end of the day, it takes you less energy, but also um there's a kind of triangle of um then also security and how fast it is. So, you need to play with it. And not every blockchain, so that's that's a point, actually. If you talk to some people which are using blockchains just

for trading or coins, cryptocurrencies, then usually they're very hyped about their blockchain, but actually it is a tool. And and usually you have tools to do things, and sometimes one tool is better fit than the other. And this is something you need to keep in mind. So, blockchain for DLT PP solution uh makes sense as it allows you the or it gives you the immutability, so you

can sure ensure with the data since you put it on chain or even a fingerprint of it on chain. It gives you transparency. If you use an open and a public permissionless blockchain, everyone can actually validate and look into the data. And it gives you also the decentralization, so you have no owner and no shutdown risk, and it's permissionless, so even if the data is on the

blockchain, there could be different services actually which consume the data and gives you like an like a front end to nicely display the DLT PP, but if this service disappears, some other could pick it up, do the same because they uh look at the same point of truth. there are also different kinds of That's what I said when it comes to transaction, there are different kinds which

um which we can classify into account and UTXO-based. There are also others, but these are the the majority. Account-based, I will start with this because this is uh somehow the natural way if I would pick a random guest, it's the natural way actually you would uh design the system. So, um think of it like a bank account. There's one global state. You have a lot of um

a lot of addresses, and then you're just sending something from A to B, so you're reducing one account, you're increasing actually this scales, so pay fee. Yeah, there are a lot of network operators, so there are actual machines involved, and people have run running costs, so you need to pay a fee for a transaction. And usually if congestion, then you pay there is a fee market or

tipping procedure with account-based blockchains to ensure that your transaction will go faster to the chain or would will hit the the chain faster than others. And sometimes this is also not really predictable. And it's always hard as developers we know this to have one global state and mutate this, so you need to make sure that you have actual algorithms in place work around this problem. Ethereum, Solana,

BNB for example, these are chains that use account-based the account-based [clears throat] system. There's also UTXO. UTXO stands for unspent transaction output. And you can think of it like actual coins. Like if I would give you my wallet and you open the wallet, you see actual coins in it. You tell me you need 2 euro. I just have 5. So, we agree on that I give you

2 and 3 go back to me. This is what an UTXO is. It's like a container, like a coin. It can hold um value. And it always has also some return value that goes back to me. Inputs must be fully spent. So, once a UTXO is used, obviously you it's not unspent anymore. It becomes spent. So, the UTXO disappears. It will create new UTXOs. So, new new

coins. But actually, if your neighbor has a wallet, you have a wallet, the neighbor is paying his child, you're paying your child's for the piggy bank or something. there's a lot of parallel things that could happen at the same time. You don't have one global state. And UTXOs are deterministic, so you can chain them actually. And if you also have a deterministic fee model, then you can

already calculate if you have one transaction and then you chain the second transaction or maybe something is relying on this, you can calculate how much this will actually cost. It's used by Bitcoin. So, Bitcoin is following the UTXO model. Cardano is also following the UTXO model but in an extended version. But now, why Cardano and not just a random blockchain? Um Cardano, to keep this the previous

slide alive, is is a blockchain that allows you to put metadata on the transaction. So, you can think of just sending yourself a UTXO but then it within this transaction you can attach transaction metadata, which is then immutable on the blockchain. And a transaction can have up to 16 kilobytes and a block can have up to 88 kilobytes currently. These are network settings. Um we're not only

decentralized network but there's also decentralized governance system. So, you can actually vote on changing parameters. You can suggest changing parameters. And there's in when I joined the ecosystem, so the Cardano ecosystem, there's an unexpected huge community of developers that are also very passionate and are talking very deep about should we change this then the costs will be higher. So, there's always debate but but it's it's an

actual cool debate. we have a block times of 20 seconds. So, every 20 seconds on mainnet there will be created a block. usually you can so you need to wait because if you distribute the the block then it needs still to to hit every node in the network. So, I would say after 3 to 5 minutes you're actually pretty go pretty good to go with the result.

If you wait for 15 minutes is something exchange great. So we would really want to make sure that there's no rollback which means that the chain decides to go with another branch basically. And after 12 hours if you really need to ensure it's it should be there. So I think I never saw a rollback longer than 3 minutes but if you really want to ensure it cannot

change anymore than you need to wait 12 hours on We have delegated proof of stake algorithm which means that you if you have either you can delegate your either to a pool a pool will create a node a pool will be picked randomly so that there is a lottery if this pool has more delegations so if you trust the pool then it gets the block. It just

built the block once so not hashing all the time. It just provides one block to the network. If it does it in a not correct way then it misses the block. It misses the rewards and you as delegators you also get delegator rewards which you would also miss. So this would mean that you would delegate and redelegate and go with a different pool. These pools sometimes also

have sustainability aspects. There there are pools that for example they don't pay out delegator rewards but what they do is they use something to do something good or to to support an nonprofit organization or something. And but they are also pools that the majority of them that still behave normal on and pay out delegator rewards. Our node is so we have kind of node diversity now but

our node can run on a Raspberry Pi for example so there's no need for for big hardware or you can also have your pool, so I don't want to make you becoming stake pool operators. I want to actually have you getting your hands dirty with Cardano when it comes to programming in Java, but you can also run it on a cloud to ensure the uptime and everything.

Um in the past, Cardano already has this narrative of hey, it's the the Haskell chain. I bet, and I even heard this before, if you ask an LLM, uh can I use Java and Cardano, then the LLM will probably tell you like, ah, it's it's some academic uh mature stuff, but please use Haskell or go with an outdated JavaScript library. that's not the case. We have a

mature Java ecosystem. We from the uh Cardano um ensure and stuff the the open source organization that is building the stack, so we ensure and also we use the Java ecosystem in our team a lot. Um why Haskell? Maybe that's a good question. Um the the spec has been built at different universities, and it was uh peer-reviewed, and they wrote it actually in math. And um and

at the same time, it was very easy to in Haskell, you can define this element in symbol, so you really get bad dreams again from your math professor at university, but you can define all these symbols, and then you can actually have the same thing like in the spec. So, if it comes to being like compliant with the spec, then it's a good thing. If it comes

to industry adoption, maybe Java makes more sense. So, that's why we're here. We want to change this narrative. We want to get your hands dirty. We want to have more Java developers in the ecosystem, uh we want to have you building cool stuff on Cardano. For example, digital product passports as the need will be there in the very last moment and then um manufacturers will I guess

reach out to builders or service providers. I'm not from Cardano. I'm from Cardano Foundation. Cardano's the ecosystem. Um it's uh sometimes confused. Even my friends tell me like, "Hey, you look uh you work at Cardano." there are different entities in the Cardano ecosystem. So, big entities, uh Genesis entities, they were around since the beginning. There's Input Output, which basically built the the node and the uh so,

the Haskell node and also the infrastructure and have the big research team. Um and they were focused on the core development. Cardano Foundation is focused to on pushing builders, pushing adoption. We're talking to regulators. We're talking to lawyers. We're talking big companies. Also in Europe, police um departments where using it or are using Cardano. For example, in in India, there's a cool use case where they put

fingerprints on of documents on the chain after an incident. So, if there's an incident, usually the police is collecting a lot of data. And having a fingerprint there to ensure that no one later tampered with the data um turns out is really good and efficient. We are also um have a case where we want to put um vehicle identification numbers on the blockchain to make sure that

there's no VIN cloning. Um there's a lot of things going on currently with uh real-world asset tokenization um where you have things that are not liquid or they are liquid somehow but not liquid in a financial market. So, for example, wine or even blood reserves. So, um there we're we're talking to uh the farmer industry because if there's somewhere, for example, an earthquake um on the planet,

then usually the funding and the support is there. So, people donate to solve the problem as soon as possible and that's good. But, um, blood reserves have no market actually and no discovery layer. So, there are a lot of use cases now going on with stable coins and that's pretty cool. there is the Intersect in Cardano, which is a member-based organization, uh, which cares about or took

over a lot of this core development from IO. Um, and then there's also Pragma, which cares about node diversity. They're building, uh, um, Rust node called Amaru. Um, there is currently Go node and we also are very close to a Java node actually. And then there's Emurgo, which sits in Asia. So, there's IO sitting in the US. Cardano Foundation is a Swiss-based nonprofit and Emurgo in Asia.

But, we also have a lot of ecosystem entities and companies. Um, for example, to highlight one, it's Mazumi and it's a startup based off Cardano founders, but also the, um, the Service Plan Group, which is one of the biggest marketing, um, groups in Europe. And, uh, and they built Agentic AI, um, with agents that actually sit in the companies and then they have, um, interfaces where these

agents talk to each other so that the knowledge body, for example, of a car manufacturer that tells you how to repair the car, stays within the company, but then you need to ensure if you ask ChatGPT how to repair my car and it tells you like, "Yeah, you need to do this." You're doing this and then it's broken or something. You cannot blame ChatGPT, right? You cannot

say like, "Oh, but now it's broken." It will just say like, "Yeah, I'm sorry. Um, I had the wrong information." But, uh, if you have an actual entity that has an agent, it it needs to make sure that what it said is somehow recorded and that's why they are also putting receipts on the Cardano blockchain and also agents if you if they are using they are often

using cryptocurrency to pay each other at the end the off-ramp and on-ramp for the services obviously in in stable coins or still US dollar and euro. Um so there's a difference if we now start to get our hands dirty if we do this on mainnet where you have when would need to buy actual ADA to pay the transaction or if you just do it on testnet which

is completely fine because you you can just go to a public faucet you can get some testnet funds and we will do this in a second. And then you can just start building you can basically also do everything most of the stake pool operators that operate a a node on mainnet are also test or testnet operators for preprod and preview. So you really also have this feeling

of everything is decentralized and it really is good for integration tests and everything but you also have local devnets where you can just spin up everything on your machine you do some things you tear down again or you do it in a CI. this is one thing that also comes from the Java ecosystem it's Yacy DevKit that just spins up everything on your machine also with the

with the local explorer with um uh with like an very small Cardano network even on your system where you can even simulate rollbacks and do and go really crazy if you want. so now we talked a lot about DPP theoretically we talked about blocks and blockchain but what you actually want to do is you want to read from this chain and you want to write from this

chain right and sometimes so explorers need all the data on the chain because they need to be able to show you everything but usually if you write an application, you just need a part of it. Like you you want to scope index just one address, just one metadata label for for your metadata, or just one smart contract you're interacting with. So, you need scoped indexer. And sometimes

you also want to react to events. Like, okay, I want to do something if this happens on the chain. Um for writing, you need to build transactions, you need to evaluate transactions because you know the costs before of the UTXO model. You probably want to play around with this, but then you want to submit the the transactions. most of the time you're not do want to do

this on your own, you want to just use an API. So, tools you need to know before you can start. There is a There are different block explorers. I will go with a C explorer because it's my favorite one as it's it covers a lot of needs for developers. And then there is a terminal developed by Marcel from Berlin and his team. And that's also pretty cool

wallet. That's why I will show this with C explorer and the eternal wallet, but there's there are a lot of different wallets and different explorers. And if you want to go into into this rabbit hole, then we would see us in a week. So, um there are two API providers which I want to highlight. The one is first one is Blockfrost, the other one is Koios. At

Blockfrost, you can also just create a free free tier and then interact with the blockchain sending things, receiving things, so reading, writing, check mark. On Koios, you can do the same. Um it's a decentralized API, and it it also comes with a bit of flexibility, and you can just use it. If you go with Java, then you can just use it without even creating an API key.

If you want to do something in front end, then you would need to create an API key there as well. Um but it's just signing something. It's not it's not paying. especially in the Java ecosystem, we have YaciStore. So, um, Yaci stands for yet another chain And, um, and it stores everything in a database. So, very traditional database thing. You can use it as an library within,

um, within your application. So, there are spring boot starters, for example, or you can use it as a standalone application and then just talk to the to the database, for example. the whole ecosystem, so the Java ecosystem is called Blockfrost. And, um, it started and funded by Satya. Satya's also here today, uh, from Singapore. and I think when Satya, which has very deep background with Java, started

to look into Cardano, he fell in love with technology, but was missing the Java aspect. That's why he started to, um, to build everything also in Java. And nowadays, we have a node in Java, we have a smart contract language in in Java, we have the Cardano client library, which allows you transaction building and submitting in Java, and we have also the dev kits and everything in

so, let's start. When I in in the morning, actually, so I woke up middle of the night and I realized in in every talk I was yesterday, someone had some live coding. So, I want to do the same and I changed the presentation in the morning. That's why I will now skip the the four slides. I don't know, can you can you read this well? Yeah, that's

good. Um, that's why I decided to at the very last minute to skip the last or to skip the next four slides and just go with the live example. So, I've just created a a very plain example, um, a starter. I have my, um, I I I use Maven, but there's also, um, you can also use Gradle. That's fine. You just need two dependencies here. It's the

Cardano client lip for this And then also for back end, we want to go with Koinos. You can also use Blockfrost if you want. There's a different dependency for it. And then you have everything you need actually. And in in the app, we start with a mnemonic. That's a very sophisticated name for a seed phrase. Which is which has a standard actually. And the standard is called

BIP 39. It's for Bitcoin improvement proposal. So usually if I call if I say BIP, it's Bitcoin. EIP, it's Ethereum. And CIP, then it's Cardano improvement proposal. So you can come up with new things which will then be discussed by builders and also added to to to the platform. BIP selects random words from a 48 words dictionary actually. There's also a mechanism to ensure that the words

are not too similar. But then you end up with the seed phrase. And you use the seed phrase to create entropy. And from this entropy, you create the actual account. That's what people often say when when they create a wallet. Write it down. Don't store it on a physical machine because you can you can restore the wallet every time if you have this mnemonic. So if you

now make copy of the screen, you can also play around with this address. It's a testnet address. So I decided to just for simplicity put it here in the code. Usually I would encourage you to put this in environment variables and store it in a in a secret way somewhere. So you have basically Uh, after you created your account, you can get the base address from this

account. And what we want to do is we want to put metadata on on the blockchain. Actually, let's not go with Hello World. Let's go with Hello J Con. And 2026, maybe. Um, and then we want to build the transaction. And that's really simple. We say, "Hey, it should come from the sender address. It We want to attach some metadata." You can also do different things. Um,

but we just want to attach metadata. And then I want to pay the thing to my own address. I could send it to somewhere else, but actually what I just want to do is I want to send it to my own address. Um, because I just want to settle the data on the blockchain. I make sure the backend service is in place. There is a quick transaction

builder so that you can also compose different transactions. Um, and then it should just be signed. And I want to be informed once it's settled on chain. So, let's just run it should start in a minute. So, now you will see that it's submitted. That's the hash of the transaction, actually. And it's already confirmed. So, it could also take up to 20 seconds. Um, this time it

was faster. But it really depends on when the next block will be created. So, if I would now do this again, it could also wait longer, but usually not longer than 20 seconds. So, what you then need to do is this is Cexplorer. Um, a Cardano uh blockchain explorer. You can put the transaction hash in here. Um, make sure you're on pre-prod network. So, everything actually needs

to be configured to pre-prod if you're working on pre-prod. That's the usual mistake people do. They wonder why the transaction is not there, and then they have the Cexplorer in in mainnet. You can change it here. what you can see is that there is now the transaction on chain. We have low confirmations yet. One UTXO was used as an input, another was created also to my wallet.

I could also create multiple UTXOs at the same time. So, in one transaction you can send things to different addresses if Sometimes you can also use it to split up the UTXOs. There's a sophisticated thing about coin selection actually, where it really matters which coin you take like as you would be in the supermarket. Um but we we go just with biggest first in this time. So,

that happens in the background. And then you can see also that there is a fee and and transaction output. And why it was a pretty cool story actually that I told you that I woke up in the middle of the night and I did this in the Why should you trust me? Uh but you can just look it up. So, um so you can go to the

transactions of this wallet and then you will see that the first one was created 5 hours ago. and I'm sure you're trusting me but a common sentence in this space is don't trust, verify. And um and that's actually a pretty good thing. You can um you can also look into this at Eternal Wallet. So, you can create just a wallet. It's just a few clicks. And then

you will have you will see your wallet here. You can also see your UTXO list here. And then you have also all the transactions um that were used. And you can see for example also that it took uh 0.17 test Ada. This would be the same if it would be on on um on mainnet. Just that it's not test Ada. It would then be just Ada. Um

and you can also see that it's 4 cent um US dollar cent. if you want to start, usually you create your address in a terminal first, and then you can just use the public faucet. just search for uh Cardano testnet faucet, and you will find a faucet, insert your address there, click on I want to get some funds, and then 10,000 testnet ADA will be sent to

your And you can start with getting your So, like I said, we can uh skip the slides, maybe not this one. So, for uh for digital product passports, as I promised you, we want to build something like this. Um you would basically have a metadata map where we would have um the type of the DPP, and also the unique um and then you would probably also have

a document somewhere, and just put the fingerprint uh on chain, and just a few things you want to share. So, most of the time people are not really using the blockchain as a storage layer. Um they're using the blockchain just for putting hashes on chain, but you can also, additionally to the hash, put something on chain in in a readable message. Um for example, we are doing

this with our financial uh transactions. So, if if we as a foundation, we need to and have an audit at the end of the day, and we need to provide transparency on our financial uh statements. That's why we are putting aggregated data and hashes on the blockchain. We work there with Grant Thornton, which is our auditor, and they um were very open to also use the tool

to make a blockchain audit of our financials. But, we have MCP servers as well. So, so you can connect the MCP server, or you can just use it in cloud, and for example, ask how much did Cardano Foundation spend in 2024 on travel costs? Um or just how many transactions are on chain with a metadata label of my DPP? They're different. So, you can see that I

used here on the on the right side metadata.put something. This is the label and then the metadata map. The metadata label usually you give it um like an interpretation layer for explorer. So, if you if you want to say like I want to create a metadata label for my transaction type, for my DPP type, for my whatever you want to settle, um then you can go to

CIP 10 um and add this to the registry. So, there is a JSON and there you can provide additional data and once this get merged, it's adopted by the ecosystem. So, they will then also be able to know what your transaction or what your metadata actually is, what schema it has, and so on. Um what is if 16 kilobytes are not enough? that's a common question because

people usually have the understanding of okay, I can put data on the blockchain, right? And then they really want to put everything on the blockchain. And this is actually also misusing the blockchain as storage layer and it's not a storage layer. It's um it's there for trust or building trust. what you actually would want to do if you have a huge set of data or if you

have like um even a a gigabyte or something, then you would like to use a distributed storage to ensure that um that the data is still around. There is for example IPFS which um is an acronym for the interplanetary file system. So, it has been built as an as something uh that you can compare with HTTP, but instead of you're providing an address to the asset, you're

asking for the asset by its hash. And if the asset is there in the network and if it's close to you, then it will be sent to you even from multiple peers. But with IPFS, you need to ensure that this is actually pinned. So, if an if a resource is requested often in the network, then you usually have multiple service which are pinning the data and then

it's always accessible. But if the data disappears from IPFS, then it's just gives you like the traditional 404 thing. So, you will not have the data permanent. So, you need to ensure that there are different services which actually pin the data that you put in IPFS. There's a a public service is called Pinata, which you can easily use. You can sign up and then you can upload

up to 1 GB to the IPFS and and play around with it. And in this case, you would just go with this and put just the hash or the IPFS CID on the blockchain. From the application aspect, it would be still the same. So, it would use Yaci store. It would pick up the transaction as DPP transaction, store it in a database. In the database, you would

have the CID. You would just use IPFS. I think there's also an IPFS and Blockfrost integration where you can then just fetch the actual data and then display everything. Um but there's not only um IPFS, there are different storage providers in the Cardano ecosystem. I think there's also Iagon. there's Arweave where you pay an initial fee and then they ensure, at least that's what they're saying, 200

years where they want to provide the data. So, you you go with an initial fee and you um for the immutability which would be a better fit when it comes to DPP. Um but also and often very time and it's used often, actually, people are just going with their system. So, when I talk to people, usually they say to me like, "Look, I don't know what we

should uh replace in our um architecture with blockchain, and there's no need for replacing something." So, uh blockchain is something that you can add as an additional thing to your architecture to just make sure that uh the data is settled, signed, and uh and also immutable. Or file integrity um or hash file a file integrity. If you realize that if there is this thing of trust, and

you're actually talking to mutable parties, and that there's no need anymore to store anything because it can also be stored at the user's um so, at the user's device or something, then you can actually reduce or change something, but it's not from day one. It's really like you can add blockchain first. You can just play around with it even with testnets, and then when it makes sense,

you can say like in the medical field, for example, the patient will go with the data to the doctor, and the doctor will see the data, and will just prove the data for authenticity, and then also if, for example, an actual laborat- uh laboratory um has signed the data, and then they will just be able to act. So, if this is even not enough, and you want

to go um deeper into the rabbit hole, there are different data structures, which are pretty cool, actually. When I joined Cardano Foundation in 2022, there was a need of building an um an application, Cardano Ballot, which was used for voting on the best community project, voting on the best uh exchange, and so on. Um and then we had to build a voting application on blockchain. Um this

is actually a pretty cool thing because it was also the first time I voted on blockchain and after this I I was not able to understand why I ever had to vote with paper again and have this letter and things like this. So, what you can do is you can build up a Merkle tree. In the Merkle tree is you have data, you hash the data, you

get a hash. You get other data, you get the hash, you put two hashes together and then you get the root element. You can add more things. But essentially, the root element is the point of trust. If you change anything else in this tree, the root element will also change. This means that you can hold your data somewhere in a database, in a Merkle tree, and just

publish the root element like every day or something which fits your schedule on on chain. And if someone is asking if this is correct, then they can just search for their data and this is what we did with Cardano Ballot. So, you can actually sign um your choices and then you get um you get the receipt and you can look up the receipt hash after the voting

is done in the Merkle tree and if it's there, you can follow the path until the root. If the root is the root that has been committed at blockchain, then you're ensured that your decision is part of the final outcome of the voting. But you can use Merkle trees for much more um where you have data and then you want to just settle this particular root. There

are also, we call it verified uh data structures, advanced data structures, um Patricia Merkle trees, tries, and uh and also other data structures which are implemented in Java already. So, if you scan this QR code um then you will end up at a repository that already shows you how to use these advanced data structures and it's just this data structure, add a key, add a key, add

an entry. So, it's it's really not that you need to invent the wheel What's next? So, we are close to 45 minutes, I guess. So, what's next? Um I would encourage you to really get your hands dirty, give us feedback about the tooling. If something is missing, if you say like, "Look, this was all crap what you said at the stage." Um that's very valuable for us,

actually. So, um please check out, for example, the Cardano client examples with Cardano client lib. But then also, if you want to go beyond this presentation, we have um the developers portal, which uh shows all the information um about the tooling in the ecosystem. Um if you want to go far beyond this presentation, so I did not even touch smart contracts for now, but if you if

you want to look into smart contracts on Cardano, um then there is also um Jules. It's a project where you can actually use Cardano smart contracts with Java. Um and ex- Excuse me if you feel like with the game with scanning the QR codes with the pistols outside, but uh I will have more QR codes soon. So, um there's also zero J. So, I also not touched

zero knowledge um proofs, but we also have an example for using zero knowledge proofs, for example, with digital product passports, so that you can ensure, for example, that um supply chain event happened without sharing the actual data. If you want to know more about zero J and um zero knowledge proofs, please uh join us at the booth. It's right outside. So, you cannot miss it. You need

to um you need to walk by, Thank you for your attention. Let's change the narrative. We're not the Haskell chain. We have also Java ecosystem. And it would be cool to see some faces at uh Cardano developers events, or if you just want to join the Discord channel, it's the Roasted Bean Alliance. Um that's the Cardano Java Discord channel. Or if you want to follow the the

Cardano community X account, usually there is an announcement of open office hours. Every Friday we have open office hours. Feel free to join. This time I will talk about X402, which is the extension of the HTTP 402 error, payment required. X402 has now a foundation under the Linux So I will talk about this this Friday, but you can also join the session and ask questions. Thank you.

>> [music]