New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Turning Assets Into Agents With ERC-6551 | Jayden Windle - Future Primitive

Ethereum DenverWed, Oct 9, 2024, 12:00 AM

With ERC-6551, every NFT can own assets and take actions onchain. This talk will show developers and NFT holders how to take advantage of these new capabilities, explore several compelling use cases, and discuss the ongoing research that aims to turn NFTs into self-sovereign agents. APPLICATIONS FOR ETHDenver 2024: #YearOfTheSpork ARE OPEN APPLY NOW https://ethdenver.com/apply

Transcript

Thank you all for being here. This presentation is called "Transforming Assets into Agents with ERC 6551." We'll talk a bit about what assets are, what agents are, why they're important, and how ERC 6551 interacts with them. So, I'm Jaden. I am the CTO of Future Primitive, where we have been developing ERC 6551 and related tools for almost a year.

I am one of the co-authors of the standard and have spent virtually all my time working on it recently. I'm very excited to share what we've been working on. Well, how many of you own one of these or have owned one in the past? Any hands raised? Yes.

Okay, some. Okay. This is a basic cell phone. They were great. You know, you could make calls.

Hmm, you could send messages. They had some features that the manufacturer included. You could play Snake. You know, you might have had a calculator or a calendar. They 're like a landline phone, but better.

You could take them with you. Hmm, how many of you have one of these in your pocket right now? Somebody? No, I figured not. You probably have something like this in your pocket.

You have a smartphone in your pocket. And smartphones were infinitely better than basic cell phones . They introduced many new features that truly changed how we interact with the world around us. You have gained access to the internet. So You have gained access to the internet.

So , you were no longer limited to calling and texting friends and family. You could interact with all the information available on the internet. And instead of being stuck with just the features the manufacturer created for you, you now had an entire ecosystem of third-party applications; Anyone with an idea could create something for their device. We saw this proliferation of what you could do with a smartphone. And it was a completely new way of interacting, right?

They weren't just buttons on a keyboard. It was touches, slides, pinches, and zooms. A new way of interacting with the device that brought a whole new way of using it. Hmm, it was fundamentally better. Now, if basic cell phones were the past and smartphones are the present, what might come next?

What is the next big leap in interacting with the internet or interacting with the world around us? I think we're starting to see some really interesting signs. I don't know if any of you have tried any of these. This is the Humane AI Pin, the Rabbit R1 device, an AI device, and the ChatGPT voice interface. They are very nice.

You can simply talk to or interact with these devices, and they act like agents. They do things on their own. You ask ChatGPT a question. He simply answers you. It doesn't force you to click a button to do something.

He gives you the information you need. You tell Humane Pin to take a picture and he just does. You tell Rabbit to book flights and he does everything automatically. And they adapt to the environment, right? This is not about programming individual button clicks and presses .

Yes, you know, he'll find the website and book the flights for you. And you're no longer interacting with taps and swipes. You are interacting at the level of voice and ideas. It's a new way of interacting with devices, a new way of interacting with the world around us . And you can see a sort of progression in the technology tree here, right?

You start with an object that has some use. It simply makes life better, overall. It's more convenient than what we had before. And then you add programmability. You allow people to create applications for it.

And you have this Cambrian explosion of what you can do with it, and then you allow it to start doing things on its own. You give him autonomy so that he can act on your behalf. This is a kind of natural progression of things over time. Now, what does all this have to do with NFTs? Well, we're at a crypto conference.

We're talking about NFT standards. Essentially, NFTs are native internet objects. They are like the objects we interact with in the world around us every day. And, you know, they're great. You can own they're great.

You can own them. You can transfer them. These are the two things that are standardized in ERC 721. They may have some utility that the NFT creator defined for you. For example, CryptoKitties, you could crossbreed them.

That's really cool. And it's simply better than a database. It's better than having your data, you know, in Facebook's database. You own it with your own private keys. It's an object that you own.

But NFTs are kind of in their basic cell phone era. You are still stuck with the utility that a creator provides you. There aren't many other applications besides that. So, what about programmability? And what about the ability to extend an NFT with new ways of doing things?

And what about autonomy? And what about the ability to act independently or interact with the world alone? We really do n't have that. And you know, that was never part of the standard or original design of NFTs. And about a year ago, we started spending our entire company's time building crazy experimental NFT applications.

And we realized that there's a really cool way to enable both programmability and autonomy for NFTs. Last year at EthDenver, we launched ERC6551 and introduced the concept of a token-linked account to the world . This means that each NFT has its own wallet, and this applies to existing NFTs like CryptoKitties and NFT collections launching tomorrow. Once an NFT exists, it comes with a unique wallet, a unique identity. This means that every NFT can own assets.

ETH, ERC20s, 1155s can own assets. ETH, ERC20s, 1155s , anything that can be owned by an Ethereum wallet, your NFT can also own. This also means that your NFT can execute transactions. Any DApp or protocol that you, as a user, interact with, your NFT can now also interact with. This allows your NFT to create its own history, its own identity, its own autonomy.

He can act as his own self. Now, for the technical staff here, this is how it works under the hood. ERC 6551 defines a registration agreement. This contract has no owner. It cannot be updated and is deployed to the same address across all Ethereum networks.

Well, this record reserves address space for NFTs. It ensures that each NFT has a unique address assigned to it, and anyone can create the smart contract at that address by calling the registry and providing some information, including the network ID, address, and NFT token ID. This means that each NFT inherits these capabilities. And how does it link an account to an NFT? It incorporates this data into the bytecode so that, permanently on the blockchain so that, permanently on the blockchain , the nature of that account contains the NFT data.

This means that any application your account interacts with knows that it's a TBA interacting with it and knows which NFT is performing the actions. This opens up a range of possibilities for you to build really cool applications with NFTs. And we've spent the last year working on developer tools, interfaces, and things to make building with the 6551 easier. You don't need to worry about bytecode structures. You can simply work with a very good SDK and a very user-friendly interface.

Now, let me give you a quick demonstration of how this works. If you go to tokenbound.org, you can interact with your token-linked accounts for your NFT token-linked accounts for your NFT . So, this is an NFT that I own. Let's see if I can get the demo to work here.

Okay, there you go. This is an NFT that I own there you go. This is an NFT that I own , and this is the address of your " , and this is the address of your " tokenbound" account. If I go to OpenSea, I can paste this address and see the contents of this Ethereum wallet. Right now, OpenSea has no idea that this is an NFT.

He only knows that it's an Ethereum wallet and that it contains some assets. Therefore, it works with everything on Ethereum that involves accounts, which is basically everything. But, since it's a wallet, I can connect to OpenSea as my NFT and perform any action on OpenSea. So, I went to WalletConnect and you'll see that it asks me to sign with the wallet holding that NFT. So, I sign on behalf of my NFT and now I'm using OpenSea as an NFT.

You can see that I can go there and list this NFT, right? Any action that I can perform in the DApp, I can now perform as my NFT. Then I can go there and put it up for sale. I enter all the details and it will prompt me to execute this transaction. That's really cool.

This means that NFTs can simply participate in Ethereum like anyone else. The same applies to something like Uniswap. If I take my "tokenbound" account and go to Uniswap, I can connect my wallet and that will allow me to exchange Ethereum stored in my " Ethereum stored in my " tokenbound" account in the same way I would if I were a regular Ethereum user. "Token-bound" accounts are a way to transform NFTs into Ethereum users and agents . And this opens up countless opportunities for developers who want NFTs to do more.

This also opens up a sea of ​​possibilities for you as an NFT owner. There's no code here, right? You're just making normal Ethereum transactions, but doing them as your NFT. If you're a developer and want to start working with this, we have an SDK. It's as simple as importing viem, wagmi, or any other library.

It's simply a call to obtain the " simply a call to obtain the " token-bound" account of an NFT. It's another one for executing transactions from. Just like you're used to interacting with a wallet. However, there are still some unresolved issues with this. Hmm unresolved issues with this.

Hmm , if we go back to the example of a basic cell phone , when I want to go from the US to Canada, I can simply take my phone with me. It just works, right? I may have to pay for some data roaming. I might need to get a phone card or a SIM card, but generally, I just carry my phone with me. It's not exactly the same thing for NFTs.

NFTs are, by nature, single-network assets. They live on an Ethereum network. So, if I want to take it to another network with me or do something with my NFT on another network, I need to interact with a bridge, which costs gas fees. I have to worry about the purpose and the risk of the bridge. This interferes with the validity of the NFT, because it's not as simple as just taking my NFT with me.

If I'm transferring an NFT file over a bridge, and it has native integrations—which is usually only the case with newer NFT files— I can burn the NFT file and create a clone on the network I want to use. So, I would burn the NFT on the main network, create a clone of the NFT on Polygon, continue with my activities Polygon, continue with my activities , use my NFT, and if I wanted to bring , use my NFT, and if I wanted to bring it back, the NFT would be sent back to me. But what about all those NFTs that predate bridge integrations? In this case, you place your valuable asset in a bridge contract along with the NFT of everyone else. If that bridge is hacked, your asset disappears, and you end up creating a clone on a layer 2 network.

You end up in a situation where you need to track down which clone is the real one; Where does NFT actually live? If it's not on the original network, because the original NFT still exists but you now have a clone, if you bridge it two or three times, it becomes difficult to keep track of where it is. What if, instead of moving your NFT from network to network, your NFT had an identity that lived on all networks at the same time? What if your NFT was like a wallet, where you could use your MetaMask on any network you want? What if your NFT was the same?

That's what we did with token-bound accounts. If I own a "noun" on Ethereum and have the linked account 0x123, that same account exists on any Ethereum network at the same address, and I can use it like a normal wallet. Therefore, if I want to play a game on Polygon or trade meme coins on Base, my NFT can own those tokens on Base without needing to switch networks. And if I wanted to have a Lens identifier on Polygon, the same thing. All the DApps that you integrate with as a wallet, you can use as your NFT.

We launched this about a year ago. We have been working steadily to improve bridge support. And now, we have Ethereum support for Polygon and Ethereum support for Optimism chains, which is great. But in many cases, you really want to go from destination chains, like a Polygon-type layer 2, back to Ethereum. And we don't offer support for that at the moment.

But I'm very excited to announce that we're partnering with LayerZero to make token-bound accounts work by default on any LayerZero-supported chain . This means that your NFT on Ethereum can simply use any chain you want. Whenever you use the TokenBound website or SDK you use the TokenBound website or SDK , all you have to do is specify which chain you want to execute the transaction on. And all the details about how this works happen behind the scenes. Therefore, if you are a user, you don't need to worry about interacting with bridges or which chains my NFT exists on.

You only need to worry about doing things like your NFT. So, I want to make a transaction on Ethereum, or rather, on Linea. My token-bound account would make a call from Ethereum to Linea, and then the receiving contract on Linea would know that it comes from 0x123, my token-bound account. The receiving contract in Linea knows which NFT is calling it and knows that whoever initiated that call must be the owner of the NFT. This also works for destination strings.

So, Polygon can execute transactions on Blast, or if you wanted to go from any other chain to any other chain. Your NFT, no matter which chain it's on, can perform actions on any other chain. Now, this will be available soon, in March. If you're at the hackathon and want to try this at the hackathon and want to try this , please come see me. We'd love to connect you with this.

We will be making an announcement in the coming days specifically about this and will be making some documents available. Hmm, there are still a few things missing here, though. We still maintain a list of reliable bridges, which is not ideal. We want this to be completely decentralized. We are currently adding bridges to the whitelist one by one.

This also means that every time you want to make a transaction, a transaction pop-up appears. You need to click the sign transaction or send transaction button. Hmm, and that also means it only supports NFTs. Right? This part of token-bound accounts is currently native to NFTs.

Your NFT has an account. But what if we want to go beyond these limitations? We are currently working on version 4 of the tokenbound protocol, and there are some really important improvements some really important improvements . The first is that we will integrate LayerZero natively into the tokenbound account. This means there will no longer be a centralized whitelist of bridges that we manage.

This means that you, as the NFT owner, can bring your own bridge. You can choose your security model. Choose how you want messages to be sent from your NFT's source network to the destination networks. This means it is completely decentralized. You don't need to depend on us to maintain this.

As the NFT owner, you have complete control over this. If you think about the idea I mentioned earlier about agents, you know, interacting with things like Humane or Rabbit R1, you basically ask it to do something and it does it. And TBAs aren't quite like that anymore . If I went to my TBA and said, "Hey, can you collect the most popular Zora NFTs of the week?" My NFC has no idea how to interpret this, right?

He only knows how to interpret transaction calls. And even if he knew how to interpret, he would still ask me to sign a bunch of messages. I would receive a lot of pop-ups. Every time he wants to make an on-chain transaction, I get a transaction popup and I have to sign it. This requires approval from the owners .

This requires a human in the process. And if we're going to move towards this future where there are only agents, where I just say what I want to do and it happens, it's very difficult if I have to approve everything manually. It's like the equivalent of clicking a button on a smartphone. How do we move from this to a more agent-like model , where I just say I want this to happen and it happens? This will be a very big difference between tokenbound v3 and v4.

It's a giant leap. We are introducing this concept of an off-the-shelf extension. It's a way for NFT owners and creators to change how the token-bound account interprets who can use it and where it can be used. So, instead of the owner having to manually sign a transaction to say, "Hey, go and mint this for me "Hey, go and mint this for me ," the NFT owner can delegate an O extension and say, "Hey, I'm going to delegate an O extension that knows how to interpret my random Zora mint requests and can execute them on-chain without asking me for a signature every time." And that basically removes the human element from the process.

It's like a power of attorney. It's about granting your token-bound account access to a new contract. Now, this is tied to the owner, right? If I am the owner and I set up an O extension and then transfer the NFT file to someone else, it's a blank page for them. But, as long as I own the NFT, I have full control over the O extensions.

And if I'm an NFT creator and I want to build a really cool game where I don't want transactions popping up every 10 seconds, I can define an O extension in a cross-network O extensions registry and say that, for all NFTs in this collection, our game will be able to interact with these TBAs and manage interact with these TBAs and manage them on behalf of the in-game user. By minting this NFT, you trust us, the NFT owner, to deliver this game to you. And so the logic of our game can execute things automatically on a Tokenbound account. Well, you know, that means you don't have to sign transactions all the time. You can simply tell your NFT to do things, or just interact with that DApp or that game, and things just happen.

But it's your NFT that's performing the actions. Your NFT is acting as an agent, which is very different from how we interact with NFTs today. Now, of course, everything is self-custodial. So, if you, the NFT owner, don't trust the NFT creator, which is common, you can say: "Okay, I don't want to trust any of the NFT creator's O extensions; I just want to manage it in a self- custodial way." That's perfectly acceptable.

So, that's what comes in Tokenbound v4, introducing the concept of extensions. This allows you to extend Tokenbound account authentication beyond just signing a transaction every time. It allows both the NFT owner and creator to define custom logic that determines who can use Tokenbound accounts, and has a built-in native bridge. Therefore, you don't need to rely on us to maintain a whitelist of bridges. You can simply choose your security model and how you want these transactions to pass from one network to another.

All this while maintaining the Tokenbound account, the unique identity that exists for your NFT on each network, preserving the ease of use and ease of programming of this paradigm. Now there's one more thing that's really cool about O extensions. Currently, Tokenbound accounts are only for ERC- Tokenbound accounts are only for ERC- 721. So it's an NFT that is non- fungible. There is only one copy, and if it's a non-fungible token, it automatically has a Tokenbound account that you can use.

But one of the things we get a lot of requests for is: what about the ERC-1155s? These are NFTs, right? More or less. They can be semi-fungible, but they can also be non-fungible. And what about the custom token type I developed for my game that I actually want to use?

And what about this new token standard launched last week that isn't ERC 721? The O extensions provide a solution to this problem and allow token-linked accounts to represent any asset on the network using the same approach of giving a unique identity to an asset capable of owning assets and conducting transactions. This means you can write extensions to support accounts linked to ERC20 tokens, or ERC69 accounts, or, you know, accounts linked to gaming tokens. Anything you can identify with a network ID, contract address, and token ID can be linked to an account. But this goes a little beyond the ERC 6551 standard, and there are some very interesting possibilities here, especially if you're doing innovative things with NFTs.

So, if you look at the path we've taken with NFTs and where we're going, they started as an asset, as an object that you own, in a self-custody way. You can own it, you can trade it. That was very good. It solved the problem of objects being stored in centralized databases. This gives you an object that you own and control on your own.

And that led to many very interesting applications, right very interesting applications, right ? Token- gating is a great example because you own an asset. You can restrict a community or access to something using a token. So you can create some applications on top of NFTs, but you're still quite limited with token-linked accounts and, specifically, with those that are compatible with multiple networks and have O extensions. We've solved a few more problems.

We solved the NFT identity problem across different networks. An NFT identity that simply works as you expect a wallet to work. We also solved the problem of utility. The entire Ethereum ecosystem is now the utility of your NFT. You can do whatever you want, just like you, as a user, can do anything in the Ethereum ecosystem.

No one needs to build anything specifically for token-linked or ERC 6551 accounts. It simply works out of the box because everything on Ethereum supports accounts. So, if we look to the future of NFTs as agents, evolving from merely objects with utility to programmable objects that can act on their own. With the O extensions on their own. With the O extensions , we have the ability to allow NFTs to perform actions on their own.

To allow NFTs to truly be that representation of a unique identity on the network that can take its own actions and do whatever it wants, even though it is still owned by a user. And the number of ways this can be integrated into our on-chain experiences, on-chain applications, and how we interact with the Ethereum ecosystem, we expect to be as limitless as the smartphone was compared to the regular cell phone. You can do whatever you want with an NFT. It's now very easy to integrate. So, that's a brief history of what we're building with 6551, what we're building with token accounts, and what's to come.

Well, if you're interested in discussing this, building with any of the tools, or working on the 6551 during the hackathon, our entire team is wearing these blue jackets. You can come and meet us. We would be happy to help you integrate into it. And we're very excited about that. We are very excited to partner with LayerZero to bring cross-chain NFT token assembly accounts .

And we are very excited about all the changes that will come in the future all the changes that will come in the future . So, I need to leave you with one thing. I think agents are the future. I think this experience of interacting with agents will be really cool, and hopefully, token-building accounts can help with that. Thank you all for coming.

Automatic transcript — names and jargon may be misspelled.