WEBVTT - Automatic transcript; recognition may contain errors. Reviewed for technical wording and speaker labels. Times match the published episode.

00:00:00.530 --> 00:00:02.890
<v Aaron van Wirdum>Before the show, a quick word from our sponsor.

00:00:10.970 --> 00:00:14.270
<v Aaron van Wirdum>Live from Utrecht, this is the Van Wirdum Sjorsnado. Hello.

00:00:14.910 --> 00:00:16.410
<v Sjors Provoost>Hello. Hey, who's there?

00:00:16.890 --> 00:00:18.330
<v Ruben Somsen>It's another Dutch guy.

00:00:19.090 --> 00:00:20.090
<v Sjors Provoost>Welcome to the show, Ruben.

00:00:20.310 --> 00:00:20.650
<v Ruben Somsen>Thank you.

00:00:21.750 --> 00:00:24.590
<v Aaron van Wirdum>Welcome back, Ruben. Ruben, did you start selling your tweets yet?

00:00:24.850 --> 00:00:28.590
<v Ruben Somsen>You know, like I tried to sell one of my tweets to my sister, but she said, what

00:00:28.590 --> 00:00:32.450
<v Ruben Somsen>the hell are you doing? And then she just laughed at me. So I failed.

00:00:32.750 --> 00:00:35.790
<v Sjors Provoost>Which rule of acquisition is it? Exploitation begins at home?

00:00:36.030 --> 00:00:39.190
<v Ruben Somsen>Yeah, exactly. I mean, families who you got to exploit first, right?

00:00:41.240 --> 00:00:42.760
<v Aaron van Wirdum>Sjors, did you make any good deals?

00:00:43.460 --> 00:00:43.860
<v Sjors Provoost>No.

00:00:44.200 --> 00:00:46.540
<v Aaron van Wirdum>We are actually going to discuss NFTs today.

00:00:46.780 --> 00:00:49.540
<v Sjors Provoost>I have been making some really bad price predictions because I hope those tweets

00:00:49.540 --> 00:00:50.600
<v Sjors Provoost>will become worth a lot.

00:00:50.940 --> 00:00:52.000
<v Aaron van Wirdum>Bad price predictions?

00:00:52.300 --> 00:00:54.340
<v Sjors Provoost>Yeah, bad takes usually make more money than good takes.

00:00:54.560 --> 00:00:59.950
<v Aaron van Wirdum>I didn't know that. That's a good tip. Pro tips. But anyways, we are kind of

00:00:59.950 --> 00:01:01.450
<v Aaron van Wirdum>discussing NFTs today, aren't we?

00:01:01.650 --> 00:01:02.150
<v Sjors Provoost>Yes, we are.

00:01:02.370 --> 00:01:04.530
<v Aaron van Wirdum>Not exactly, but partly.

00:01:04.970 --> 00:01:07.570
<v Sjors Provoost>Very exactly. Amongst other things.

00:01:07.930 --> 00:01:08.090
<v Aaron van Wirdum>Yeah.

00:01:09.420 --> 00:01:10.840
<v Aaron van Wirdum>RGB, that's what it's called, right?

00:01:11.060 --> 00:01:11.380
<v Ruben Somsen>That's right.

00:01:13.080 --> 00:01:16.100
<v Aaron van Wirdum>Jogged my memory there. What does it stand for, guys? RGB.

00:01:16.480 --> 00:01:20.080
<v Sjors Provoost>Well, I think it's just a reference to the color scheme, red, green, blue.

00:01:20.130 --> 00:01:20.330
<v Ruben Somsen>Yeah.

00:01:20.240 --> 00:01:23.640
<v Sjors Provoost>But it doesn't actually mean anything in the context that we're going to talk

00:01:23.640 --> 00:01:24.800
<v Sjors Provoost>about it. It's just the letters.

00:01:25.080 --> 00:01:26.880
<v Ruben Somsen>Yeah, and I think it's because…

00:01:26.880 --> 00:01:28.440
<v Sjors Provoost>Unless they made it a backronym. I don't know.

00:01:28.580 --> 00:01:32.380
<v Ruben Somsen>No, no, I don't think there's an acronym. It's referring to colored coins, right?

00:01:32.420 --> 00:01:37.220
<v Ruben Somsen>So the colored coin idea of having other coins on the Bitcoin blockchain. The

00:01:37.220 --> 00:01:39.380
<v Ruben Somsen>word color, RGB, that's how it's connected.

00:01:39.760 --> 00:01:45.400
<v Aaron van Wirdum>Clever. I didn't know that. Okay, so we're going to discuss RGB tokens today.

00:01:46.000 --> 00:01:47.040
<v Aaron van Wirdum>Wait, is it RGB?

00:01:47.160 --> 00:01:48.020
<v Sjors Provoost>The RGB system.

00:01:48.220 --> 00:01:49.160
<v Aaron van Wirdum>The RGB system.

00:01:49.340 --> 00:01:49.480
<v Ruben Somsen>Yeah.

00:01:49.740 --> 00:01:51.360
<v Aaron van Wirdum>Okay, where do we start, Ruben?

00:01:51.540 --> 00:01:52.400
<v Ruben Somsen>Well, that's a good question.

00:01:52.620 --> 00:01:57.620
<v Sjors Provoost>I think we should start with the very, very long time ago in a blockchain far

00:01:57.620 --> 00:02:01.120
<v Sjors Provoost>away. It was really, really, really cheap to make transactions and people thought

00:02:01.120 --> 00:02:06.330
<v Sjors Provoost>they could put everything on the blockchain. For example, the Bitcoin PDF. The

00:02:06.330 --> 00:02:12.230
<v Sjors Provoost>Bitcoin white paper is on the blockchain in its entirety. And this was done

00:02:12.230 --> 00:02:18.020
<v Sjors Provoost>in a very, very, very inefficient way, which is by creating fake transactions.

00:02:18.600 --> 00:02:22.840
<v Sjors Provoost>And those fake transactions, so you're not spending to real other people, to real

00:02:22.840 --> 00:02:27.380
<v Sjors Provoost>addresses, you're creating fake addresses that you can actually interpret and

00:02:27.380 --> 00:02:31.960
<v Sjors Provoost>then you can reconstruct a file from it. So this would be, for example, multisig addresses.

00:02:32.580 --> 00:02:37.440
<v Aaron van Wirdum>Yeah, so the idea is that addresses, as our listeners will probably know, they're

00:02:37.440 --> 00:02:43.080
<v Aaron van Wirdum>just a bunch of numbers and letters. They're effectively a number in the end. And

00:02:43.080 --> 00:02:47.600
<v Aaron van Wirdum>by, I guess, you're manipulating these addresses, you're just creating addresses,

00:02:47.600 --> 00:02:51.120
<v Aaron van Wirdum>even though you don't have the private key. Yeah, you're sending some coins to

00:02:51.120 --> 00:02:56.980
<v Aaron van Wirdum>these and then special software can interpret these numbers and turn them into…

00:02:57.870 --> 00:02:58.350
<v Sjors Provoost>Yeah.

00:02:58.490 --> 00:02:59.390
<v Aaron van Wirdum>Whatever data you want.

00:02:59.510 --> 00:03:04.350
<v Sjors Provoost>Pretty much. So we addressed addresses in an earlier episode, but in this case,

00:03:04.570 --> 00:03:08.750
<v Sjors Provoost>the thing you're sending to wouldn't even be an address. It's a script that you

00:03:08.750 --> 00:03:13.300
<v Sjors Provoost>put directly in the output of a transaction. And that gives you a lot of space to

00:03:13.300 --> 00:03:17.320
<v Sjors Provoost>put stuff in. The technicalities don't really matter, but exactly. There is no

00:03:17.320 --> 00:03:21.740
<v Sjors Provoost>private key with which to spend these coins because the public key, or even the

00:03:21.740 --> 00:03:25.980
<v Sjors Provoost>hash of the public key, was generated as if it wasn't really a public key. It was

00:03:25.980 --> 00:03:31.220
<v Sjors Provoost>just a series of bytes that looked like a public key, but actually just contained

00:03:31.220 --> 00:03:36.780
<v Sjors Provoost>the contents of a file. And this means that money is unspendable, which is very

00:03:36.780 --> 00:03:41.620
<v Sjors Provoost>annoying. And the reason for that is that... Coins, we have this thing called the

00:03:41.620 --> 00:03:47.600
<v Sjors Provoost>UTXO set. The UTXO set is the set of coins that exist on the blockchain that can

00:03:47.600 --> 00:03:53.410
<v Sjors Provoost>be spent by anyone. And nodes keep that in RAM. So when a new block

00:03:53.410 --> 00:03:58.790
<v Sjors Provoost>comes in, the node will check whether or not it's spending money that actually

00:03:58.790 --> 00:04:03.270
<v Sjors Provoost>exists. And this check is done using the UTXO set, which generally is kept in

00:04:03.270 --> 00:04:07.670
<v Sjors Provoost>RAM, could be 10 gigabytes. And so it's very annoying when there's something in

00:04:07.670 --> 00:04:11.290
<v Sjors Provoost>that blob of memory that everybody needs to keep track of that has no meaning,

00:04:11.430 --> 00:04:14.530
<v Sjors Provoost>that can never be spent. Because the node doesn't know it can't be spent. The

00:04:14.530 --> 00:04:18.210
<v Sjors Provoost>node just thinks anytime somebody could spend this, even though we know it's the

00:04:18.210 --> 00:04:19.690
<v Sjors Provoost>Bitcoin PDF, you can't spend it.

00:04:20.110 --> 00:04:26.110
<v Aaron van Wirdum>Yeah. So what you're saying so far is that people were using, basically abusing

00:04:26.110 --> 00:04:30.350
<v Aaron van Wirdum>the Bitcoin system in a way. They were manipulating addresses and sending coins

00:04:30.350 --> 00:04:33.610
<v Aaron van Wirdum>to these addresses. Not a lot, but just some coins to have these addresses on the

00:04:33.610 --> 00:04:39.310
<v Aaron van Wirdum>blockchain. And that translated into data that could be images or the Bitcoin

00:04:39.310 --> 00:04:43.610
<v Aaron van Wirdum>white paper or other pieces of text or memes or whatever people felt like they

00:04:43.610 --> 00:04:48.030
<v Aaron van Wirdum>were uploading. And because normal Bitcoin software can't really tell the

00:04:48.030 --> 00:04:52.930
<v Aaron van Wirdum>difference, normal Bitcoin software just sees addresses. So now all these normal

00:04:52.930 --> 00:04:56.610
<v Aaron van Wirdum>Bitcoin nodes like mine and yours and all our listeners who are running Bitcoin

00:04:56.610 --> 00:05:01.850
<v Aaron van Wirdum>nodes, they actually have to check the coins on these addresses.

00:05:02.160 --> 00:05:04.840
<v Sjors Provoost>I think they have to keep those addresses in mind. So there's two things that

00:05:04.840 --> 00:05:07.880
<v Sjors Provoost>happen, right? Because these things were put in the blockchain, well, you have to

00:05:07.880 --> 00:05:11.500
<v Sjors Provoost>download the blockchain. So that's just wasted bandwidth for downloading. But

00:05:11.500 --> 00:05:15.260
<v Sjors Provoost>that's not too bad. The problem is that it has to be interpreted as potentially

00:05:15.260 --> 00:05:21.230
<v Sjors Provoost>valid coins. And as an optimization, you want to keep in memory those coins that

00:05:21.230 --> 00:05:24.410
<v Sjors Provoost>could potentially be spent. And there's no way to drop them from memory. At least

00:05:24.410 --> 00:05:24.850
<v Sjors Provoost>there wasn't.

00:05:25.010 --> 00:05:30.930
<v Ruben Somsen>So the problem is that you think they are spendable as a regular full node,

00:05:30.970 --> 00:05:34.510
<v Ruben Somsen>but actually they are not. But there's no way of knowing other than kind of

00:05:34.510 --> 00:05:37.530
<v Ruben Somsen>externally figuring out like, hey, this is just a white paper.

00:05:38.260 --> 00:05:42.310
<v Sjors Provoost>Yeah, but you couldn't… you couldn't add that to the node right? If… if… Say, we

00:05:42.310 --> 00:05:45.410
<v Sjors Provoost>made a change to Bitcoin Core that says, you know what, we know that's the white

00:05:45.410 --> 00:05:47.860
<v Sjors Provoost>paper. Let's just skip those coins.

00:05:48.160 --> 00:05:51.980
<v Ruben Somsen>I guess theoretically you could throw it out of UTXO sets if you're certain

00:05:51.980 --> 00:05:52.700
<v Ruben Somsen>they're unspendable.

00:05:52.860 --> 00:05:56.800
<v Sjors Provoost>That's the problem. If you're certain. What if some really, really smart alien

00:05:56.800 --> 00:06:00.660
<v Sjors Provoost>actually made it look like it's just the white paper? But no, no, no. It's

00:06:00.660 --> 00:06:05.840
<v Sjors Provoost>really... There are private keys for it. And one day this alien tries to spend...

00:06:05.920 --> 00:06:10.580
<v Sjors Provoost>The white paper. And we accidentally soft forked those coins out of existence and

00:06:10.580 --> 00:06:13.840
<v Sjors Provoost>this alien gets really angry because he's like, hey, you can't just confiscate my money.

00:06:14.000 --> 00:06:18.880
<v Ruben Somsen>That sounds like an ECDSA break, but I'm not sure. Depends on, I guess, how it's done.

00:06:19.420 --> 00:06:25.340
<v Sjors Provoost>Maybe the person who created the white paper actually generated lots of

00:06:25.340 --> 00:06:29.840
<v Sjors Provoost>public keys from private keys and then reordered them in such a way that it…

00:06:29.840 --> 00:06:33.080
<v Sjors Provoost>Created a readable white paper. I don't think that's even practical.

00:06:33.260 --> 00:06:37.880
<v Ruben Somsen>No, but to your point, maybe there is a way in which it is actually valid, and we

00:06:37.880 --> 00:06:40.540
<v Ruben Somsen>[unclear] be 100% certain. But one thing I wanted to add...

00:06:40.540 --> 00:06:43.660
<v Aaron van Wirdum>There's also a thing of where do you draw the line, because we do have vanity

00:06:43.660 --> 00:06:48.500
<v Aaron van Wirdum>addresses, and you can sort of use that as well to create stuff. And where… at

00:06:48.500 --> 00:06:51.520
<v Aaron van Wirdum>what point are you sure it's a vanity address and at what point…

00:06:51.520 --> 00:06:55.460
<v Sjors Provoost>Well, this… this would be like that would be absolutely unacceptable right? So

00:06:55.460 --> 00:06:59.320
<v Sjors Provoost>the idea that you can't just decide what is vanity and what should be thrown away.

00:06:59.500 --> 00:07:00.560
<v Aaron van Wirdum>That's my point, I agree.

00:07:00.840 --> 00:07:04.820
<v Sjors Provoost>But if you could mathematically prove that a coin cannot be spent, like

00:07:04.820 --> 00:07:08.980
<v Sjors Provoost>theoretically impossible to be spent, then you could have that discussion. But

00:07:08.980 --> 00:07:10.280
<v Sjors Provoost>the problem is we can't really prove that.

00:07:11.200 --> 00:07:16.620
<v Ruben Somsen>But yeah, so one thing that I wanted to add is that... It is actually important

00:07:16.620 --> 00:07:20.100
<v Ruben Somsen>that if you want to put data on the Bitcoin blockchain, it needs to be a valid

00:07:20.100 --> 00:07:23.740
<v Ruben Somsen>transaction. So you can't just, that's why we're talking about these addresses,

00:07:23.980 --> 00:07:27.500
<v Ruben Somsen>right? Because you can't just take the Bitcoin white paper and just put it there

00:07:27.500 --> 00:07:31.240
<v Ruben Somsen>and just be like, hey, please put this in the blockchain. No, you need to do it

00:07:31.240 --> 00:07:35.140
<v Ruben Somsen>in a format that the blockchain recognizes. And that's how you end up with these addresses.

00:07:35.740 --> 00:07:35.880
<v Sjors Provoost>Yeah.

00:07:36.500 --> 00:07:42.150
<v Aaron van Wirdum>Okay. So that was... The original problem, people were just bloating the

00:07:42.150 --> 00:07:45.590
<v Aaron van Wirdum>blockchain with all sorts of nonsense that most of us don't care about. And we

00:07:45.590 --> 00:07:50.910
<v Aaron van Wirdum>still need to all validate it and store it or whatever. That needs to be solved.

00:07:51.170 --> 00:07:52.570
<v Aaron van Wirdum>Sjors, how did we solve that?

00:07:52.790 --> 00:07:56.910
<v Sjors Provoost>Well, this was solved many, many years ago using something called OP_RETURN. And

00:07:56.910 --> 00:08:01.610
<v Sjors Provoost>the idea of OP_RETURN is that you create a transaction that spends coins and then

00:08:01.610 --> 00:08:07.450
<v Sjors Provoost>it produces a coin, quote unquote, which has the instruction OP_RETURN.

00:08:08.200 --> 00:08:11.420
<v Sjors Provoost>And then it's followed by whatever text you want to put on the blockchain. And

00:08:11.420 --> 00:08:15.640
<v Sjors Provoost>now when a full node sees this, it knows, okay, if it starts with OP_RETURN, this

00:08:15.640 --> 00:08:20.190
<v Sjors Provoost>coin is not spendable. Therefore, yeah, this coin is not spendable so I can

00:08:20.190 --> 00:08:23.090
<v Sjors Provoost>forget about it. I do not have to put this in my RAM. I don't have to remember

00:08:23.090 --> 00:08:27.130
<v Sjors Provoost>this. And the idea there was it was kind of a compromise. Say, well, people are

00:08:27.130 --> 00:08:30.510
<v Sjors Provoost>going to put spam on the blockchain whether we like it or not. Let's at least

00:08:30.510 --> 00:08:33.950
<v Sjors Provoost>reduce the amount of damage they're doing and make sure they pay like a

00:08:33.950 --> 00:08:38.340
<v Sjors Provoost>reasonable fee for it as well. So there are some restrictions on the size of

00:08:38.340 --> 00:08:43.780
<v Sjors Provoost>OP_RETURN to make sure that it's not too cheap to use it, but it is also

00:08:43.780 --> 00:08:46.040
<v Sjors Provoost>cheaper than just spamming a blockchain.

00:08:46.710 --> 00:08:50.610
<v Aaron van Wirdum>Right, so I guess we're still sort of unhappy about it, but if people are going

00:08:50.610 --> 00:08:54.590
<v Aaron van Wirdum>to do it anyways, then this is the least damaging way of doing it.

00:08:54.770 --> 00:09:00.430
<v Sjors Provoost>Yeah, well, at least it pays fees when you do this, and nodes only have to

00:09:00.430 --> 00:09:03.650
<v Sjors Provoost>download it, but they can throw it away. They don't have to remember it. So the

00:09:03.650 --> 00:09:09.070
<v Sjors Provoost>resource wasting is just a little bit of bandwidth and one-off CPU,

00:09:09.370 --> 00:09:13.290
<v Sjors Provoost>but it's not wasting people's RAM, and RAM is probably one of the most scarce

00:09:13.290 --> 00:09:14.090
<v Sjors Provoost>resources.

00:09:14.410 --> 00:09:14.670
<v Ruben Somsen>Right.

00:09:14.850 --> 00:09:16.970
<v Sjors Provoost>So it's fine. It can't be done any better.

00:09:17.230 --> 00:09:21.870
<v Ruben Somsen>Yeah. So the main thing is it doesn't enter the UTXO set and therefore it is a

00:09:21.870 --> 00:09:23.350
<v Ruben Somsen>lot better than the previous solution.

00:09:24.140 --> 00:09:29.120
<v Aaron van Wirdum>So how much data fits into... One of these OP_RETURNs.

00:09:29.440 --> 00:09:29.900
<v Sjors Provoost>80 bytes.

00:09:30.240 --> 00:09:36.240
<v Ruben Somsen>Yes and no, because I think that's not a consensus rule. That's just a

00:09:36.240 --> 00:09:41.360
<v Ruben Somsen>propagation rule. So I believe it's actually valid to create one with more data,

00:09:41.460 --> 00:09:44.960
<v Ruben Somsen>but then it won't be propagated. So yeah, practically speaking, you're right.

00:09:45.640 --> 00:09:48.660
<v Aaron van Wirdum>But... Can we do better? Can we compress it somehow?

00:09:49.380 --> 00:09:53.800
<v Sjors Provoost>Yeah, we could. No. Well, I mean, I think I know where you want to go towards the

00:09:53.800 --> 00:09:55.040
<v Sjors Provoost>so-called Merkle tree.

00:09:55.260 --> 00:09:55.600
<v Aaron van Wirdum>Yes, please.

00:09:55.800 --> 00:10:01.630
<v Sjors Provoost>But I think we want to go somewhere else first because we can talk about

00:10:01.630 --> 00:10:04.590
<v Sjors Provoost>the kind of fun things you can put in OP_RETURN that have meaning.

00:10:05.250 --> 00:10:05.670
<v Aaron van Wirdum>Okay.

00:10:06.070 --> 00:10:08.810
<v Sjors Provoost>Without actually compressing it. So we'll get to the compression part later.

00:10:09.010 --> 00:10:09.210
<v Aaron van Wirdum>Okay.

00:10:10.030 --> 00:10:13.610
<v Sjors Provoost>So let's say you really like Rare Pepe.

00:10:14.380 --> 00:10:15.300
<v Ruben Somsen>I know I do.

00:10:15.740 --> 00:10:21.130
<v Sjors Provoost>So Rare Pepe was a trading card system on the blockchain. And the way it worked

00:10:21.130 --> 00:10:26.370
<v Sjors Provoost>is you could have a card and then you could offer it for sale and somebody could

00:10:26.370 --> 00:10:30.250
<v Sjors Provoost>buy it and then that other people would have the card and they could sell it, etc.

00:10:30.670 --> 00:10:35.630
<v Aaron van Wirdum>Yeah, when you say card, you mean image. It's a digital image.

00:10:35.810 --> 00:10:39.130
<v Sjors Provoost>Yes, but in this case, it's important to note that the image is not on the

00:10:39.130 --> 00:10:42.770
<v Sjors Provoost>blockchain. There's a reference to the image on the blockchain, the hash of the

00:10:42.770 --> 00:10:47.470
<v Sjors Provoost>image. So I wouldn't still not call that compression, but I would say you're not

00:10:47.470 --> 00:10:49.150
<v Sjors Provoost>spamming the blockchain with the entire image.

00:10:49.970 --> 00:10:53.810
<v Aaron van Wirdum>Sure, so explain this to someone who's new because it sounds like it makes no

00:10:53.810 --> 00:10:57.650
<v Aaron van Wirdum>sense at all. You have an image and then you have a hash and then you have it on

00:10:57.650 --> 00:11:01.530
<v Aaron van Wirdum>the blockchain. Why should people care about the hash or the image or any of this?

00:11:01.770 --> 00:11:05.250
<v Sjors Provoost>Well, this is exactly what's going on with the NFT hype nowadays.

00:11:05.530 --> 00:11:06.710
<v Aaron van Wirdum>That's why I'm asking.

00:11:06.970 --> 00:11:10.930
<v Sjors Provoost>So I would say there's no reason to care about this, but people were doing it. So

00:11:10.930 --> 00:11:15.270
<v Sjors Provoost>we just have to sort of explain at least what they were doing. And so what you

00:11:15.270 --> 00:11:19.470
<v Sjors Provoost>would do is you would have this image somewhere, maybe on a web server or maybe

00:11:19.470 --> 00:11:23.130
<v Sjors Provoost>on your own computer. And so everybody would have access to this image because

00:11:23.130 --> 00:11:28.850
<v Sjors Provoost>it's just data. But the question is who really owns the image from whatever that

00:11:28.850 --> 00:11:31.050
<v Sjors Provoost>means, right? Whatever it means to own the image.

00:11:31.310 --> 00:11:35.390
<v Aaron van Wirdum>That sounds like an important question though. What does that mean? But go on.

00:11:35.550 --> 00:11:37.130
<v Sjors Provoost>I think it meant absolutely nothing.

00:11:37.410 --> 00:11:37.630
<v Aaron van Wirdum>Right.

00:11:38.110 --> 00:11:42.270
<v Sjors Provoost>But the way it was done is like everybody would have the image and you could take

00:11:42.270 --> 00:11:45.070
<v Sjors Provoost>the hash of the image and then the hash of the image would be on the blockchain.

00:11:46.210 --> 00:11:47.550
<v Sjors Provoost>And so that's how...

00:11:47.020 --> 00:11:52.040
<v Aaron van Wirdum>Let me… let me give you an example, where I think it might make sense, possibly,

00:11:52.040 --> 00:11:55.680
<v Aaron van Wirdum>if you're playing something I've never played this, but you've got something like

00:11:55.680 --> 00:12:01.630
<v Aaron van Wirdum>Magic The Gathering, if you'd want to make that into a digital version then, you

00:12:01.630 --> 00:12:05.910
<v Aaron van Wirdum>could somehow prove that you own a specific card if you want to play it against

00:12:05.910 --> 00:12:09.550
<v Aaron van Wirdum>another player. Well, if it's just an image, then everyone would have all the

00:12:09.550 --> 00:12:12.190
<v Aaron van Wirdum>cards all the time. So now if you use...

00:12:12.190 --> 00:12:15.730
<v Sjors Provoost>Well, that's the idea. Yeah, you prove that you have the image, whatever having

00:12:15.730 --> 00:12:16.190
<v Sjors Provoost>means.

00:12:16.470 --> 00:12:16.890
<v Aaron van Wirdum>Right.

00:12:16.890 --> 00:12:19.850
<v Sjors Provoost>But at least if everybody agrees on the rules, then you can do that.

00:12:20.110 --> 00:12:24.610
<v Aaron van Wirdum>Right. So yeah. So within some contexts, it might actually make some sense.

00:12:24.750 --> 00:12:29.350
<v Ruben Somsen>Yeah. I mean, I think it does make sense in some limited context. But the main

00:12:29.350 --> 00:12:34.410
<v Ruben Somsen>thing is, is there going to be some kind of person who controls the NFT, right?

00:12:34.430 --> 00:12:37.990
<v Ruben Somsen>If somebody issued it or they can issue more of it, then it becomes kind of

00:12:37.990 --> 00:12:41.050
<v Ruben Somsen>questionable. But if it's like a one-time thing, like, you know, maybe somebody

00:12:41.050 --> 00:12:45.990
<v Ruben Somsen>made a card game and it's just, it's kind of like a full node where you download

00:12:45.990 --> 00:12:51.880
<v Ruben Somsen>the software's open source and then the software interprets the NFTs. And

00:12:51.880 --> 00:12:56.260
<v Ruben Somsen>as long as everybody kind of agrees on the card game and the NFTs, then you have

00:12:56.260 --> 00:13:01.840
<v Ruben Somsen>a card game with like you said, with cards that are actually rare. But, you know,

00:13:01.920 --> 00:13:05.200
<v Ruben Somsen>anyone can just take the same game and play it for free. Right. So that's that's

00:13:05.200 --> 00:13:05.660
<v Ruben Somsen>always inevitable.

00:13:06.150 --> 00:13:10.170
<v Sjors Provoost>Which is pretty much how this Counterparty slash Rare Pepe system worked as far

00:13:10.170 --> 00:13:14.370
<v Sjors Provoost>as I know. So basically, you would put on the blockchain the hash of the image

00:13:14.370 --> 00:13:18.650
<v Sjors Provoost>probably, and then you would say well, I'm now transferring this to this other

00:13:18.650 --> 00:13:22.910
<v Sjors Provoost>person by just sending them coins essentially. And then whoever has the private

00:13:22.910 --> 00:13:27.360
<v Sjors Provoost>key of where you sent the card has is now the new owner, and so you would have a

00:13:27.360 --> 00:13:30.500
<v Sjors Provoost>piece of software that would read the blockchain and would see okay, this card is

00:13:30.500 --> 00:13:32.520
<v Sjors Provoost>now moved to this other person and it's moved again.

00:13:32.520 --> 00:13:36.560
<v Aaron van Wirdum>Yeah, I want to take a small step back, and Ruben this is also something you

00:13:36.560 --> 00:13:40.800
<v Aaron van Wirdum>wanted to discuss is the idea of colored coins. So we already mentioned it in

00:13:40.800 --> 00:13:45.220
<v Aaron van Wirdum>this in the beginning of the episode. Yeah, so the idea of Ruben, colored coins,

00:13:45.220 --> 00:13:49.170
<v Aaron van Wirdum>can you explain what colored coins are? and then we'll move on… Then we'll move

00:13:49.170 --> 00:13:50.050
<v Aaron van Wirdum>back to NFTs.

00:13:50.270 --> 00:13:55.790
<v Ruben Somsen>Yeah. So, well, it is very similar because a NFT is a colored coin of one,

00:13:56.010 --> 00:14:01.890
<v Ruben Somsen>basically. So it really is just the issuance of an asset. The name colored

00:14:01.890 --> 00:14:06.110
<v Ruben Somsen>coin has been kind of what's been used. I think it's been maybe Counterparty was

00:14:06.110 --> 00:14:06.570
<v Ruben Somsen>the first.

00:14:07.050 --> 00:14:08.970
<v Sjors Provoost>No, Counterparty is not a colored coin.

00:14:09.130 --> 00:14:11.190
<v Aaron van Wirdum>Colored coins predate Counterparty.

00:14:11.390 --> 00:14:13.930
<v Ruben Somsen>Yeah. There's Mastercoin. I don't know.

00:14:14.350 --> 00:14:18.680
<v Sjors Provoost>I can give you an example of a colored coin. If you want, but let's explain how it works.

00:14:19.360 --> 00:14:23.280
<v Ruben Somsen>Well, yeah, okay. But, I mean, are you saying that Counterparty doesn't have

00:14:23.280 --> 00:14:26.400
<v Ruben Somsen>colored coins? Because I think technically they do. You could issue coins.

00:14:26.660 --> 00:14:28.980
<v Sjors Provoost>Counterparty can do colored coins, among other things.

00:14:29.100 --> 00:14:29.220
<v Ruben Somsen>Yeah.

00:14:29.440 --> 00:14:31.220
<v Sjors Provoost>But colored coins was a system on its own.

00:14:31.420 --> 00:14:32.240
<v Ruben Somsen>I see. Okay.

00:14:32.680 --> 00:14:38.420
<v Sjors Provoost>Okay. So the example I once even used, I think, was called Bits of Bullion.

00:14:38.790 --> 00:14:44.710
<v Sjors Provoost>And what this was, was there was a trust, like a UK or whatever Cayman

00:14:44.710 --> 00:14:50.070
<v Sjors Provoost>Islands structure, probably Gibraltar. And this trust owned gold in the real

00:14:50.070 --> 00:14:55.970
<v Sjors Provoost>world. And then this trust had basically had its own bylaws and it would define

00:14:55.970 --> 00:14:59.190
<v Sjors Provoost>the beneficiaries of the trust. So the nice thing about a trust is like nobody

00:14:59.190 --> 00:15:04.430
<v Sjors Provoost>really owns the trust. The trust simply exists. And you create it and you set it

00:15:04.430 --> 00:15:07.710
<v Sjors Provoost>in motion and then it kind of just exists out there. It's kind of a cool legal

00:15:07.710 --> 00:15:13.160
<v Sjors Provoost>structure. But basically this trust would own gold and then there would be an

00:15:13.160 --> 00:15:16.260
<v Sjors Provoost>instruction in the bylaws of the trust that says, well, there's this colored coin

00:15:16.260 --> 00:15:19.480
<v Sjors Provoost>out there on the blockchain with this and this block hash or this and this

00:15:19.480 --> 00:15:24.780
<v Sjors Provoost>transaction hash. And whoever owns descendants of this original transaction

00:15:24.780 --> 00:15:30.680
<v Sjors Provoost>is actually a beneficiary of the trust legally. And so is entitled to that

00:15:30.680 --> 00:15:32.960
<v Sjors Provoost>gold to be able to redeem it if they wanted to.

00:15:33.340 --> 00:15:38.570
<v Ruben Somsen>Right. So what you're saying is basically that the... There is a UTXO on the

00:15:38.570 --> 00:15:44.060
<v Ruben Somsen>Bitcoin blockchain and somebody basically said like, hey, if you own parts of the

00:15:44.060 --> 00:15:47.720
<v Ruben Somsen>coins that are in here, then you also have ownership over something else.

00:15:47.860 --> 00:15:51.980
<v Sjors Provoost>Yeah. So for example, they might start with 10,000 satoshis and they would say

00:15:51.980 --> 00:15:56.600
<v Sjors Provoost>every satoshi represents one gram of bullion in this specific vault, you know, at

00:15:56.600 --> 00:16:02.180
<v Sjors Provoost>Brink's. And then if you were to buy this gold, you could basically go to

00:16:02.180 --> 00:16:06.830
<v Sjors Provoost>whatever an exchange, you would send the right amount of Bitcoin or fiat. And

00:16:06.830 --> 00:16:11.690
<v Sjors Provoost>then they would send you 30 satoshis. Now you'd own 30 grams of gold. And if you

00:16:11.690 --> 00:16:15.890
<v Sjors Provoost>send those exact same 30 satoshis back, you could redeem it. But you could also

00:16:15.890 --> 00:16:17.630
<v Sjors Provoost>send those 30 satoshis to somebody else.

00:16:18.010 --> 00:16:22.510
<v Ruben Somsen>Yeah, so the coins, the satoshis were colored, basically. So it's where the

00:16:22.510 --> 00:16:23.250
<v Ruben Somsen>naming comes from, right?

00:16:23.250 --> 00:16:27.450
<v Sjors Provoost>Exactly. And this is very, very brittle because you need to use a special wallet

00:16:27.450 --> 00:16:32.270
<v Sjors Provoost>that understands these coins and keeps them separate. If you... put those

00:16:32.270 --> 00:16:35.530
<v Sjors Provoost>satoshis in a regular wallet, it doesn't understand it. It will just spend it.

00:16:35.750 --> 00:16:40.030
<v Sjors Provoost>And your entire scheme, you just destroyed your gold. But this really existed, so

00:16:40.030 --> 00:16:42.230
<v Sjors Provoost>it's kind of cool. 2014 or 2015.

00:16:42.630 --> 00:16:47.430
<v Aaron van Wirdum>Yeah, the analogy I used when I tried to explain this to people is imagine you're

00:16:47.430 --> 00:16:52.490
<v Aaron van Wirdum>organizing like a small festival and you go to the bank and you get a whole bunch

00:16:52.490 --> 00:16:57.550
<v Aaron van Wirdum>of pennies. You put special stickers on the pennies. And at the festival, you can

00:16:57.550 --> 00:17:01.750
<v Aaron van Wirdum>use these pennies with the special stickers and they're worth a beer. Right yeah,

00:17:01.750 --> 00:17:06.110
<v Aaron van Wirdum>if you walk out of the festival with the pennies then there's still worth the

00:17:06.110 --> 00:17:07.170
<v Aaron van Wirdum>penny, but only a penny.

00:17:07.170 --> 00:17:12.470
<v Sjors Provoost>Yeah, and if you accidentally like try to give somebody a euro, you know, 100

00:17:12.470 --> 00:17:15.630
<v Sjors Provoost>pennies, then you're screwed, because you actually just gave them 100 beers.

00:17:15.630 --> 00:17:20.570
<v Aaron van Wirdum>Exactly yeah. If that person knows how to get back to the festival at least. So

00:17:20.570 --> 00:17:24.510
<v Aaron van Wirdum>yeah, you're… you're giving a new meaning to the satoshis on the Bitcoin

00:17:24.510 --> 00:17:28.270
<v Aaron van Wirdum>blockchain. That's what colored coins are. Yes. And then we just discussed Rare

00:17:28.270 --> 00:17:34.000
<v Aaron van Wirdum>Pepe and Pepe Cash and all that. And they did something similar, but they used

00:17:34.000 --> 00:17:38.000
<v Aaron van Wirdum>OP_RETURN and it works technically in a bit of a different way, right?

00:17:38.200 --> 00:17:41.360
<v Sjors Provoost>Yeah, very much differently. So the colored coins really just use Bitcoin's

00:17:41.360 --> 00:17:45.020
<v Sjors Provoost>normal transaction mechanism. You just combine these satoshis and move them

00:17:45.020 --> 00:17:50.280
<v Sjors Provoost>around. But the Rare Pepe used more like a series of instructions.

00:17:50.820 --> 00:17:55.060
<v Sjors Provoost>So I think two things that I guess it used, right? A series of instructions where

00:17:55.060 --> 00:17:59.390
<v Sjors Provoost>you could say, create a new asset and do something with it. But also, if the

00:17:59.390 --> 00:18:03.230
<v Sjors Provoost>asset moved on the blockchain, I guess it would also move. I've never really

00:18:03.230 --> 00:18:05.510
<v Sjors Provoost>studied it in enough detail to completely [unclear] this.

00:18:05.930 --> 00:18:10.250
<v Ruben Somsen>Yeah, I'm not entirely certain whether or not satoshis were moving and they had

00:18:10.250 --> 00:18:13.590
<v Ruben Somsen>meaning inside of Counterparty. I thought it did, but I'm not certain.

00:18:13.610 --> 00:18:17.730
<v Aaron van Wirdum>I'm pretty sure that's not the case. I think they just used the data from the

00:18:17.730 --> 00:18:21.630
<v Aaron van Wirdum>OP_RETURNs and that data just meant something else within the Counterparty

00:18:22.770 --> 00:18:23.210
<v Aaron van Wirdum>context.

00:18:23.210 --> 00:18:28.470
<v Sjors Provoost>Yeah, but at least the new owner was probably done using who got the coins, like

00:18:28.470 --> 00:18:32.870
<v Sjors Provoost>which private key received what? I'm not sure how they would do it. Yeah maybe,

00:18:32.870 --> 00:18:35.710
<v Sjors Provoost>they would have… the transaction might have two outputs, and one output would be

00:18:35.710 --> 00:18:40.130
<v Sjors Provoost>OP_RETURN and the other would go to some address and then I… don't know somebody…

00:18:40.130 --> 00:18:44.490
<v Sjors Provoost>it doesn't matter because there's something new and better RGB.

00:18:44.490 --> 00:18:45.830
<v Aaron van Wirdum>That's what the episode is about.

00:18:45.830 --> 00:18:46.610
<v Sjors Provoost>That's right.

00:18:46.610 --> 00:18:48.850
<v Aaron van Wirdum>I think that's where we… we are now. We discussed:

00:18:50.140 --> 00:18:54.120
<v Aaron van Wirdum>OP_RETURN, colored coins, the other thing, Counterparty.

00:18:54.300 --> 00:18:54.420
<v Ruben Somsen>Yeah.

00:18:55.040 --> 00:18:57.020
<v Aaron van Wirdum>And that was all to get to RGB.

00:18:57.520 --> 00:18:58.020
<v Sjors Provoost>That's right.

00:18:58.760 --> 00:18:59.560
<v Aaron van Wirdum>Sjors, what is RGB?

00:18:59.660 --> 00:19:03.000
<v Sjors Provoost>Do I have to explain it? I thought Ruben was going to explain it.

00:19:01.020 --> 00:19:01.860
<v Aaron van Wirdum>Ruben [unclear].

00:19:03.480 --> 00:19:09.160
<v Ruben Somsen>Okay, so... With RGB, it's a very similar system in the sense that we still

00:19:09.160 --> 00:19:13.580
<v Ruben Somsen>have these tokens that are being generated and they're being moved on the Bitcoin

00:19:13.580 --> 00:19:19.160
<v Ruben Somsen>blockchain. But what we're doing here is we're using the existing UTXOs

00:19:19.160 --> 00:19:24.640
<v Ruben Somsen>as kind of a vessel for which we add the coins there and we move the coins there.

00:19:24.740 --> 00:19:30.540
<v Ruben Somsen>So let's say I have a UTXO and I have some RGB tokens in there. Well, first I

00:19:30.540 --> 00:19:34.380
<v Ruben Somsen>would have to generate them, but let's skip that for a second. There's an output.

00:19:34.580 --> 00:19:39.980
<v Ruben Somsen>It's mine. There are maybe there's 10 USD Tether RGB tokens in there.

00:19:40.180 --> 00:19:42.240
<v Aaron van Wirdum>When you say in there, what do you mean?

00:19:43.460 --> 00:19:46.980
<v Ruben Somsen>Somehow, and that is of course like, so there needs to be some kind of Genesis

00:19:46.980 --> 00:19:51.240
<v Ruben Somsen>moment, right? Where the tokens were generated. So the whole point of this system

00:19:51.240 --> 00:19:56.980
<v Ruben Somsen>is that it allows you to create tokens and then spend them. And so first the

00:19:56.980 --> 00:20:02.120
<v Ruben Somsen>USD Tether people would have to issue this token. And generally, the way that's

00:20:02.120 --> 00:20:05.480
<v Ruben Somsen>done in RGB is actually you do use an OP_RETURN. So first, there's going to be a

00:20:05.480 --> 00:20:09.320
<v Ruben Somsen>transaction. The transaction has an OP_RETURN, so everybody can kind of see it.

00:20:09.520 --> 00:20:14.860
<v Ruben Somsen>And that transaction says, hereby, I declare that now inside of this new UTXO,

00:20:14.980 --> 00:20:18.380
<v Ruben Somsen>there are just $1 million worth of USDTether.

00:20:18.680 --> 00:20:24.380
<v Sjors Provoost>Yeah, and this is actually where your, well, hash at least comes up. Because what

00:20:24.380 --> 00:20:29.260
<v Sjors Provoost>is in the OP_RETURN, as far as I know, is a hash of a JSON file. So anybody who

00:20:29.260 --> 00:20:35.140
<v Sjors Provoost>has the JSON file will know that the hash refers to it, and they can then read

00:20:35.140 --> 00:20:38.800
<v Sjors Provoost>the JSON file and see what the supply is and what the rules are for whatever

00:20:38.800 --> 00:20:39.900
<v Sjors Provoost>asset has been created.

00:20:40.280 --> 00:20:42.940
<v Aaron van Wirdum>A JSON file is just text, right?

00:20:43.120 --> 00:20:45.960
<v Sjors Provoost>It's just text, yeah, with annoying brackets and, you know.

00:20:46.120 --> 00:20:52.000
<v Ruben Somsen>So, okay, so now we have a UTXO with $1 million in their USD Tether dollars IOUs,

00:20:52.120 --> 00:20:57.340
<v Ruben Somsen>and... When they first sent them to a buyer, somebody who says, okay, I'll give

00:20:57.340 --> 00:21:02.640
<v Ruben Somsen>you $1,000, you give me $1,000 worth of these coins. So the first thing is what

00:21:02.640 --> 00:21:07.740
<v Ruben Somsen>RGB does is client-side validation, meaning that the JSON file that Sjors just

00:21:07.740 --> 00:21:12.480
<v Ruben Somsen>pointed out needs to be transferred during the coin transfer. So as soon as these

00:21:12.480 --> 00:21:17.360
<v Ruben Somsen>coins, they move from one owner to the next owner, you also have to provide all

00:21:17.360 --> 00:21:21.190
<v Ruben Somsen>the data, which refers to the hash that you put in the Bitcoin blockchain.

00:21:21.430 --> 00:21:21.770
<v Aaron van Wirdum>Right.

00:21:22.110 --> 00:21:27.850
<v Sjors Provoost>So the first person who buys the Tether, basically, has to receive an email. And

00:21:27.850 --> 00:21:33.600
<v Sjors Provoost>inside that email should be the JSON file. And I guess also a proof that,

00:21:33.600 --> 00:21:35.380
<v Sjors Provoost>you know, they now own the coins.

00:21:35.680 --> 00:21:35.860
<v Ruben Somsen>Yeah.

00:21:36.560 --> 00:21:40.880
<v Aaron van Wirdum>Right. So that's the big difference compared to colored coins and Counterparty is

00:21:40.880 --> 00:21:45.960
<v Aaron van Wirdum>that now we have a separate layer essentially of JSON file texts that are also

00:21:45.960 --> 00:21:50.340
<v Aaron van Wirdum>being sent around and they're being linked to in the Bitcoin blockchain. Is that right?

00:21:50.520 --> 00:21:54.400
<v Sjors Provoost>Yeah. And this also detaches the amount from the amount that's really being moved

00:21:54.400 --> 00:21:56.580
<v Sjors Provoost>from the amount of satoshis that's being moved.

00:21:57.950 --> 00:21:59.210
<v Sjors Provoost>Yes, you're making a transaction.

00:21:59.250 --> 00:22:01.430
<v Aaron van Wirdum>But I think that was already the case for Counterparty.

00:22:01.570 --> 00:22:04.590
<v Sjors Provoost>Yeah, for Counterparty it is, but for colored coins it wasn't. For colored coins,

00:22:04.690 --> 00:22:08.450
<v Sjors Provoost>the satoshis really mattered. But in the case of RGB, you're just sending

00:22:08.450 --> 00:22:12.030
<v Sjors Provoost>somebody a transaction and then along with the transaction an email with what's

00:22:12.030 --> 00:22:14.770
<v Sjors Provoost>actually happening. And that transaction might move one satoshi or a thousand

00:22:14.770 --> 00:22:18.930
<v Sjors Provoost>satoshis. It doesn't really matter. The instructions are separate, are not on the chain.

00:22:19.110 --> 00:22:24.330
<v Ruben Somsen>Right. So, okay, so we have this one output with $1 million worth of USD Tether,

00:22:24.350 --> 00:22:28.670
<v Ruben Somsen>and now they want to send $1,000 to somebody else. So what they do is they take

00:22:28.670 --> 00:22:34.510
<v Ruben Somsen>that output and they spend it and they send it to another output. And it's still

00:22:34.510 --> 00:22:39.590
<v Ruben Somsen>owned by the same USD Tether people who issued the first $1 million. But inside

00:22:39.590 --> 00:22:43.990
<v Ruben Somsen>of that output, there is going to be, basically, there is a public key there that

00:22:43.990 --> 00:22:49.960
<v Ruben Somsen>is the person who owns the UTXO. And inside of that, there is through

00:22:49.960 --> 00:22:55.820
<v Ruben Somsen>some cryptographic trickery that's very similar to Taproot they add another

00:22:55.820 --> 00:23:00.690
<v Ruben Somsen>hash inside of this new UTXO and inside of this new hash

00:23:01.560 --> 00:23:06.860
<v Ruben Somsen>There, they point to an output where they want a certain amount of these coins to

00:23:06.860 --> 00:23:11.200
<v Ruben Somsen>move. So they would point to, in case, let's say I was buying $1,000 worth of

00:23:11.200 --> 00:23:16.160
<v Ruben Somsen>USDTether, I would have to give an output to the USDTether people. And then when

00:23:16.160 --> 00:23:21.380
<v Ruben Somsen>they spend their output, they will point back to me with the committed data. And

00:23:21.380 --> 00:23:25.100
<v Ruben Somsen>they say, okay, now $1,000 are inside of Ruben's UTXO.

00:23:25.240 --> 00:23:29.680
<v Aaron van Wirdum>Who else can read this? Can I read this? How do I know this transfer happened?

00:23:30.200 --> 00:23:34.360
<v Ruben Somsen>So this is a hidden transfer in the sense that it's a commitment that's hidden

00:23:34.360 --> 00:23:39.670
<v Ruben Somsen>inside of the public key. So it is literally... The USD Tether

00:23:39.670 --> 00:23:44.210
<v Ruben Somsen>people need to show the commitment to me. So I can open a commitment. They can

00:23:44.210 --> 00:23:47.430
<v Ruben Somsen>open a commitment. And I can show the commitment to you. And I can prove that I

00:23:47.430 --> 00:23:51.040
<v Ruben Somsen>have a thousand of these USD Tether coins. And that's what I would have to do if

00:23:51.040 --> 00:23:54.710
<v Ruben Somsen>I… let's say, I want to then send a hundred dollars to you Aaron. Then I would

00:23:54.710 --> 00:23:58.790
<v Ruben Somsen>have to show that data. And that is the entire story of the client-side

00:23:58.790 --> 00:24:03.590
<v Ruben Somsen>validation. The entire history of the coin in this case. The coins were created,

00:24:03.850 --> 00:24:07.570
<v Ruben Somsen>then the coins were sent to me. I would have to show an entire history to you.

00:24:08.110 --> 00:24:12.250
<v Ruben Somsen>And once you see the history and you're satisfied, you see like, okay, yeah, this

00:24:12.250 --> 00:24:17.970
<v Ruben Somsen>is correct. Ruben does have 1,000 of these USD Tether coins. Only then will you

00:24:17.970 --> 00:24:19.830
<v Ruben Somsen>accept another 100 from me.

00:24:19.780 --> 00:24:23.620
<v Sjors Provoost>And… and this is kind of nice because it creates a really selective privacy

00:24:23.620 --> 00:24:28.640
<v Sjors Provoost>thing. So, yeah, Aaron, you can see that you really got the 100 because you… you

00:24:28.640 --> 00:24:32.240
<v Sjors Provoost>get all the history you need to confirm that. So from the 1 million, you see that

00:24:32.240 --> 00:24:36.260
<v Sjors Provoost>1,000 was sent to Ruben and from that [unclear] was sent to you. You can see all

00:24:36.260 --> 00:24:41.350
<v Sjors Provoost>that. But what happened to the rest of that 1 million, you cannot see. I… I guess

00:24:41.350 --> 00:24:45.950
<v Sjors Provoost>the only thing you'll be able to see is that you know, 1 million minus 1,000 was

00:24:45.950 --> 00:24:51.010
<v Sjors Provoost>sent somewhere else. So it wasn't like increased, but you can't see what happened

00:24:51.010 --> 00:24:55.250
<v Sjors Provoost>after that. So you get a… you know… You can imagine history as a giant tree of

00:24:55.250 --> 00:25:00.030
<v Sjors Provoost>transactions, but you only get everything that leads to your little branch in the universe.

00:25:00.400 --> 00:25:00.480
<v Ruben Somsen>Yeah.

00:25:00.780 --> 00:25:06.400
<v Aaron van Wirdum>Right. So this sounds like we're making, well, I'm not making anything. The RGB

00:25:06.400 --> 00:25:10.700
<v Aaron van Wirdum>people are making an entirely different cryptocurrency system that's being

00:25:10.700 --> 00:25:12.260
<v Aaron van Wirdum>anchored in the Bitcoin blockchain, right?

00:25:12.910 --> 00:25:13.690
<v Sjors Provoost>Yeah, I guess.

00:25:14.010 --> 00:25:19.570
<v Aaron van Wirdum>I think this already came up, but did you mention this

00:25:19.570 --> 00:25:23.410
<v Aaron van Wirdum>off-chain part of it, the JSON files, are these actually sent through email? Is

00:25:23.410 --> 00:25:24.250
<v Aaron van Wirdum>that actually how it works?

00:25:25.050 --> 00:25:30.210
<v Sjors Provoost>You can do whatever you want, but I believe there is a little do-it-yourself web

00:25:30.210 --> 00:25:35.370
<v Sjors Provoost>server that comes with it. And if you run that do-it-yourself web server, then

00:25:35.370 --> 00:25:40.640
<v Sjors Provoost>your special wallet... will actually know that it needs to send certain files to

00:25:40.640 --> 00:25:44.320
<v Sjors Provoost>that web server, and it needs to fetch certain files from that web server in

00:25:44.320 --> 00:25:49.990
<v Sjors Provoost>order to make sense of just the UTXOs. So it can all be automated, right? In

00:25:49.990 --> 00:25:53.730
<v Sjors Provoost>essence, when you're using it, at least if the software has developed all the way

00:25:53.730 --> 00:25:58.930
<v Sjors Provoost>to being nice, you would just say, I'm going to send 1,000 [unclear] to, you

00:25:58.930 --> 00:26:04.080
<v Sjors Provoost>know, you have 100, Aaron, so you're going to send me 10. And you just click, you

00:26:04.080 --> 00:26:08.220
<v Sjors Provoost>know, I give you an address, you click copy-paste the address, and you enter the

00:26:08.220 --> 00:26:13.480
<v Sjors Provoost>number 10, you click send, and it just works. On your end, your wallet is

00:26:13.480 --> 00:26:17.800
<v Sjors Provoost>uploading certain files to a server that has all the proofs, and on my end, it's

00:26:17.800 --> 00:26:23.300
<v Sjors Provoost>actually fetching files from the server to see all those proofs. And in the case

00:26:23.300 --> 00:26:26.660
<v Sjors Provoost>of something like Tether, I guess it would make sense for the Tether Corporation

00:26:27.530 --> 00:26:31.770
<v Sjors Provoost>To… to be hosting that server because in the end they're the they… decide what

00:26:31.770 --> 00:26:35.370
<v Sjors Provoost>happens anyway right? They're the counterparty. So you're already trusting them.

00:26:35.370 --> 00:26:38.770
<v Sjors Provoost>So it doesn't matter that they also host some data which as far as I know they

00:26:38.770 --> 00:26:42.610
<v Sjors Provoost>can't really decode. So it's still kind of nice from a privacy point of view

00:26:42.610 --> 00:26:43.170
<v Sjors Provoost>right?

00:26:43.170 --> 00:26:48.070
<v Ruben Somsen>Yeah, but it is important that you… you save your own data right? Because when I

00:26:48.070 --> 00:26:52.470
<v Ruben Somsen>received one thousand dollars there may be maybe you know Tether has that data as

00:26:52.470 --> 00:26:56.190
<v Ruben Somsen>well, and I have the data. but if the Tether company then starts to stops

00:26:56.190 --> 00:27:01.390
<v Ruben Somsen>cooperating, now I can't spend it without the data that they were holding for me.

00:27:01.470 --> 00:27:05.690
<v Ruben Somsen>So I need to hold my own data. I need to make sure that I have my entire history.

00:27:05.890 --> 00:27:10.130
<v Ruben Somsen>So at the very least, maybe if Tether cooperates, great, you can get the data

00:27:10.130 --> 00:27:15.650
<v Ruben Somsen>through them. But if they don't cooperate, I need to then go and show my data to you.

00:27:16.090 --> 00:27:20.850
<v Sjors Provoost>Yeah, exactly. It just means your backup is more than just your 12 words or your

00:27:20.850 --> 00:27:22.830
<v Sjors Provoost>24 words. You need the other data too.

00:27:22.970 --> 00:27:27.390
<v Ruben Somsen>Right. The history is basically your coin. If you don't have the history, you

00:27:27.390 --> 00:27:28.030
<v Ruben Somsen>don't have your coins.

00:27:28.870 --> 00:27:34.340
<v Aaron van Wirdum>Got it. This does sound like for every... Tether transaction,

00:27:35.040 --> 00:27:38.860
<v Aaron van Wirdum>I guess that's the example we decided to run with. For every Tether transaction

00:27:38.860 --> 00:27:42.880
<v Aaron van Wirdum>in this RGB system, we need a Bitcoin transaction.

00:27:43.120 --> 00:27:47.980
<v Sjors Provoost>Yeah, so the amounts don't have to match, and the Bitcoin itself doesn't have to

00:27:47.980 --> 00:27:53.480
<v Sjors Provoost>go from person to person, but you do need a unique Bitcoin transaction for every

00:27:53.480 --> 00:27:54.780
<v Sjors Provoost>Tether transaction, yes.

00:27:55.100 --> 00:27:59.520
<v Ruben Somsen>But it's good to point out that it only has one input and one output. So you're

00:27:59.520 --> 00:28:05.080
<v Ruben Somsen>not, even though there's only $1,000 of the $1 million went to me, on the Bitcoin

00:28:05.080 --> 00:28:10.620
<v Ruben Somsen>blockchain, you'll have one input, one output, both owned by USDTether. And then

00:28:10.620 --> 00:28:14.520
<v Ruben Somsen>another output that was already mined, it was already on the blockchain. That's

00:28:14.520 --> 00:28:16.380
<v Ruben Somsen>where the $1,000 go.

00:28:16.900 --> 00:28:20.640
<v Sjors Provoost>And I guess that means you could piggyback. So if you have to send money to an

00:28:20.640 --> 00:28:25.300
<v Sjors Provoost>exchange anyway. Well, I don't think you can tweak that. Well, then at least your

00:28:25.300 --> 00:28:28.700
<v Sjors Provoost>input isn't duplicated, but you would have two outputs, one that goes to the

00:28:28.700 --> 00:28:33.240
<v Sjors Provoost>exchange and one that goes back to you, which actually has some meaning in the

00:28:33.240 --> 00:28:37.920
<v Sjors Provoost>RGB protocol. Either way, you don't need a lot of data to do this.

00:28:38.060 --> 00:28:38.200
<v Ruben Somsen>Yeah.

00:28:38.930 --> 00:28:42.430
<v Sjors Provoost>Very small transactions, and maybe you can piggyback on your normal transactions.

00:28:42.630 --> 00:28:46.070
<v Ruben Somsen>Yeah. Yeah, you can combine it with a Bitcoin transaction that you were going to

00:28:46.070 --> 00:28:49.370
<v Ruben Somsen>send anyway, and then also do an RGB transaction at the same time.

00:28:49.510 --> 00:28:50.430
<v Sjors Provoost>But there's more.

00:28:50.870 --> 00:28:51.750
<v Aaron van Wirdum>Can we do better?

00:28:51.950 --> 00:28:52.570
<v Sjors Provoost>We can do better.

00:28:53.150 --> 00:28:57.110
<v Aaron van Wirdum>Sure. Who's going to explain how to do this better? Ruben, sure.

00:28:57.310 --> 00:28:59.290
<v Ruben Somsen>I'm confused where we're going.

00:28:59.590 --> 00:29:01.790
<v Sjors Provoost>We're going to use a concept from Ruben's little show.

00:29:02.070 --> 00:29:02.290
<v Ruben Somsen>Oh?

00:29:02.730 --> 00:29:04.070
<v Sjors Provoost>The Lightning round.

00:29:04.410 --> 00:29:05.710
<v Ruben Somsen>[unclear] Lightning round.

00:29:05.950 --> 00:29:10.340
<v Sjors Provoost>But yeah, we can do better with Lightning. At least in the example that we just

00:29:10.340 --> 00:29:14.860
<v Sjors Provoost>talked about, because we talked about a fungible asset. So it doesn't matter

00:29:14.860 --> 00:29:20.100
<v Sjors Provoost>which us Tether you have it's the same we previously talked about rare Pepe where

00:29:20.100 --> 00:29:24.120
<v Sjors Provoost>it does matter what you have so what we're going to talk about only works for the

00:29:24.120 --> 00:29:24.900
<v Sjors Provoost>fungible stuff.

00:29:24.900 --> 00:29:30.220
<v Aaron van Wirdum>Yeah, every usd Tether is interchangeable. You don't care which one you have,

00:29:30.220 --> 00:29:33.720
<v Aaron van Wirdum>while when it comes to trading cards you definitely care which one you have.

00:29:33.720 --> 00:29:37.200
<v Sjors Provoost>So that's… that's a difference. And so that means that you can start basically

00:29:37.200 --> 00:29:41.900
<v Sjors Provoost>creating Lightning channels where the coins in the channels are these these

00:29:41.900 --> 00:29:45.650
<v Sjors Provoost>special tokens. Though I'm a little vague on how exactly that works.

00:29:45.790 --> 00:29:50.590
<v Aaron van Wirdum>Well, so to be clear, that only applies to the fungible version, the Tether

00:29:50.590 --> 00:29:53.370
<v Aaron van Wirdum>example we gave or the gold example we gave previously.

00:29:53.550 --> 00:29:56.550
<v Sjors Provoost>But the awesome thing about that, of course, is that it means that if you somehow

00:29:56.550 --> 00:30:01.830
<v Sjors Provoost>get these Lightning channels to work with these colored tokens in it, we can

00:30:01.830 --> 00:30:07.110
<v Sjors Provoost>start sending very small amounts of dollars back and forth Indefinitely. And only

00:30:07.110 --> 00:30:12.070
<v Sjors Provoost>when the channel needs to be closed, we create this like Bitcoin transaction and

00:30:12.070 --> 00:30:16.190
<v Sjors Provoost>send all the proofs that are needed just for that. So it means that the metadata

00:30:16.190 --> 00:30:18.390
<v Sjors Provoost>you need to keep isn't isn't growing too quickly either.

00:30:19.120 --> 00:30:22.060
<v Aaron van Wirdum>Ruben, RGB tokens on Lightning? Do you see it happening?

00:30:22.280 --> 00:30:28.100
<v Ruben Somsen>Yeah, so the way I look at Lightning is that it works for every blockchain. At

00:30:28.100 --> 00:30:33.020
<v Ruben Somsen>least as long as they support, you know, they have time lock and maybe some kind

00:30:33.020 --> 00:30:34.940
<v Ruben Somsen>of hash lock or point locks, what are they called?

00:30:34.960 --> 00:30:37.000
<v Aaron van Wirdum>Very basic smart contracting tools.

00:30:37.420 --> 00:30:41.800
<v Ruben Somsen>So I think it doesn't really matter what blockchain, what kind of blockchain you

00:30:41.800 --> 00:30:45.680
<v Ruben Somsen>have. I think sooner or later, especially when scaling becomes an issue, you have

00:30:45.680 --> 00:30:50.890
<v Ruben Somsen>to start using Lightning. And RGB is kind of made… so I would say it works for

00:30:50.890 --> 00:30:55.710
<v Ruben Somsen>every every chain. It works for every kind of system. But in this case RGB is

00:30:55.710 --> 00:30:59.830
<v Ruben Somsen>made very specifically to start working with Lightning as soon as possible. So

00:30:59.830 --> 00:31:04.490
<v Ruben Somsen>they're really they're trying to make it happen right from the get-go so specific

00:31:04.490 --> 00:31:10.290
<v Ruben Somsen>to NFTs, you can have them in a Lightning channel so you know maybe like

00:31:10.290 --> 00:31:14.030
<v Ruben Somsen>Sjors and I we can open a Lightning channel but then we can only send the NFT to

00:31:14.030 --> 00:31:15.050
<v Ruben Somsen>each other basically.

00:31:15.630 --> 00:31:19.610
<v Aaron van Wirdum>So there's more like a regular payment channel then, not a Lightning.

00:31:19.730 --> 00:31:20.090
<v Ruben Somsen>Exactly.

00:31:20.350 --> 00:31:24.810
<v Sjors Provoost>So how would you have collateral of the same NFT or you would split it then?

00:31:25.190 --> 00:31:29.610
<v Ruben Somsen>So, well, there would be one NFT and it would be with me. And then every time we

00:31:29.610 --> 00:31:33.290
<v Ruben Somsen>update the channel, I can then give the NFT to you and then you can give the NFT

00:31:33.290 --> 00:31:37.170
<v Ruben Somsen>back to me and we can go back and forth. But there will never be, you cannot do

00:31:37.170 --> 00:31:41.590
<v Ruben Somsen>the hops, right? With Lightning, the whole point is that multiple people have

00:31:41.590 --> 00:31:45.880
<v Ruben Somsen>channels and they can kind of send from one person's channel to another person's

00:31:45.880 --> 00:31:50.000
<v Ruben Somsen>channel. Because Alice and Bob have a channel, Bob and Carol have a channel. So

00:31:50.000 --> 00:31:55.540
<v Ruben Somsen>then if Alice sends an NFT to Bob, Bob cannot send the same NFT to Carol because

00:31:55.540 --> 00:31:58.800
<v Ruben Somsen>it's a different channel and the NFT doesn't exist in the other channel.

00:31:58.860 --> 00:32:03.610
<v Sjors Provoost>Of course, you could tokenize the NFT. So then the NFT itself would be divided in

00:32:03.610 --> 00:32:08.170
<v Sjors Provoost>like a thousand subunits. Whoever owns the majority of the subunits is actually

00:32:08.170 --> 00:32:11.610
<v Sjors Provoost>in charge of the NFT. But people can trade sub-NFTs.

00:32:12.150 --> 00:32:17.970
<v Aaron van Wirdum>You're unnecessarily complicating things now. You're just inventing a new

00:32:17.970 --> 00:32:20.310
<v Aaron van Wirdum>currency based on a single NFT.

00:32:20.510 --> 00:32:21.730
<v Ruben Somsen>A great business proposal.

00:32:22.330 --> 00:32:28.010
<v Aaron van Wirdum>Let me ask a concrete question about this. Let's keep focused on the fungible

00:32:28.760 --> 00:32:33.260
<v Aaron van Wirdum>RGB tokens, because these can be used in Lightning. So would that, in that case,

00:32:33.440 --> 00:32:39.340
<v Aaron van Wirdum>mean that all of the hops need to actually also accept this fungible token as

00:32:39.340 --> 00:32:41.360
<v Aaron van Wirdum>a fee to forward the payment?

00:32:41.520 --> 00:32:45.480
<v Sjors Provoost>In other words, do you need a colored Lightning network, like a completely

00:32:45.480 --> 00:32:47.020
<v Sjors Provoost>separate network just for those colored [unclear]?

00:32:47.520 --> 00:32:53.340
<v Ruben Somsen>So the answer is yes and no. At the very least, you need... The incoming… like

00:32:53.340 --> 00:32:57.800
<v Ruben Somsen>the first hop needs to have the token and the last hop needs to have the token.

00:32:57.980 --> 00:33:02.960
<v Ruben Somsen>But then all the intermediary… hops, they don't necessarily, like you can

00:33:02.960 --> 00:33:07.100
<v Ruben Somsen>swap while doing, while inside of a Lightning channel. So you could have,

00:33:07.440 --> 00:33:13.250
<v Ruben Somsen>USD Tether to Bitcoin. And then another hop that remains Bitcoin.

00:33:13.250 --> 00:33:18.250
<v Ruben Somsen>And then the final hop is Bitcoin to USD Tether again. And in that way, you could

00:33:18.250 --> 00:33:22.310
<v Ruben Somsen>kind of lean on top of the existing Lightning network, but you would still need

00:33:22.310 --> 00:33:26.570
<v Ruben Somsen>these in points and out points, and you would still need these swaps to take

00:33:26.570 --> 00:33:27.850
<v Ruben Somsen>place, people to accept the swap.

00:33:27.950 --> 00:33:31.090
<v Sjors Provoost>Bitcoin Lightning is complicated, and you think atomic swaps are complicated.

00:33:31.370 --> 00:33:34.570
<v Sjors Provoost>Well, you can do both and have something really complicated, but then you could

00:33:34.570 --> 00:33:40.170
<v Sjors Provoost>indeed send US dollar values across the world. Instantly. Well,

00:33:40.170 --> 00:33:41.950
<v Sjors Provoost>even if not everybody supports it,

00:33:41.950 --> 00:33:47.600
<v Aaron van Wirdum>You say you can, but then there's sort of the other problem where hops on the

00:33:47.600 --> 00:33:51.260
<v Aaron van Wirdum>network can decide not to forward and see what the exchange rate does in the

00:33:51.260 --> 00:33:51.680
<v Aaron van Wirdum>meantime.

00:33:51.980 --> 00:33:52.180
<v Ruben Somsen>Yeah, exactly.

00:33:52.520 --> 00:33:55.000
<v Aaron van Wirdum>Based on that, then end up forwarding or not.

00:33:55.240 --> 00:34:00.860
<v Ruben Somsen>Yeah, so specifically there, I think ZMN, SCP, XJ, or something along those lines.

00:34:01.040 --> 00:34:01.760
<v Sjors Provoost>We call him Zeman.

00:34:02.020 --> 00:34:07.960
<v Ruben Somsen>Zeman, yeah. Very Dutch. Zeman, yeah. Yeah, he put something on the mailing list

00:34:07.960 --> 00:34:13.220
<v Ruben Somsen>saying you basically have the American call option problem where you can either

00:34:13.220 --> 00:34:18.010
<v Ruben Somsen>forward the payment or you can kind of wait and see what happens so the final

00:34:18.010 --> 00:34:21.450
<v Ruben Somsen>person who is supposed to receive the payments can either accept it or they can

00:34:21.450 --> 00:34:24.550
<v Ruben Somsen>wait and then they can see if the price goes up or the price goes down and based

00:34:24.550 --> 00:34:27.990
<v Ruben Somsen>on that they can decide whether or not they accept the payments. So because of

00:34:27.990 --> 00:34:33.930
<v Ruben Somsen>that it is actually sort of like problematic to do these atomic swaps

00:34:33.930 --> 00:34:36.970
<v Ruben Somsen>between different currencies on Lightning network currently.

00:34:36.970 --> 00:34:40.390
<v Sjors Provoost>Which is a problem in general right? So the idea has been around to have a

00:34:40.390 --> 00:34:44.290
<v Sjors Provoost>Lightning network of Bitcoin that could be connected to a Lightning network ish

00:34:44.290 --> 00:34:47.870
<v Sjors Provoost>on Ethereum yeah, and you could just instantly swap between all these currencies

00:34:47.870 --> 00:34:50.510
<v Sjors Provoost>but there are these kind of problems there. Yeah, then…

00:34:50.510 --> 00:34:55.150
<v Aaron van Wirdum>One other problem I think, is that unless miners are actually going to accept

00:34:55.150 --> 00:35:00.510
<v Aaron van Wirdum>these fungible tokens in order to settle transactions on the Bitcoin blockchain

00:35:00.510 --> 00:35:05.880
<v Aaron van Wirdum>which sounds like a stretch, they still need to have Bitcoin in

00:35:06.860 --> 00:35:11.160
<v Aaron van Wirdum>the Lightning transactions that are using RGB and you need the fees for that.

00:35:11.160 --> 00:35:13.460
<v Aaron van Wirdum>Yeah, it gets very complicated very fast.

00:35:13.460 --> 00:35:17.860
<v Sjors Provoost>Yeah, and I'm also wondering what the incentive structure are for like accepting,

00:35:17.860 --> 00:35:21.980
<v Sjors Provoost>you know, you have these cheat transactions and then you want to punish them and

00:35:21.980 --> 00:35:25.940
<v Sjors Provoost>if the monetary incentives are… if the monetary incentives in Bitcoin are not

00:35:25.940 --> 00:35:29.560
<v Sjors Provoost>correct because most of the value is actually represented by a token which has

00:35:29.560 --> 00:35:33.630
<v Sjors Provoost>its own exchange rate. I don't know what happens. This is where it's really

00:35:33.630 --> 00:35:35.330
<v Sjors Provoost>[unclear] on the details. Sorry about that.

00:35:35.550 --> 00:35:38.410
<v Ruben Somsen>Yeah, it's got to be a little difficult. But, you know, I don't think

00:35:38.410 --> 00:35:42.590
<v Ruben Somsen>necessarily, at least the thing that Aaron was saying, you can actually have a

00:35:42.590 --> 00:35:47.370
<v Ruben Somsen>Lightning channel for Bitcoin, which I would assume, you know, even if you were

00:35:47.370 --> 00:35:50.870
<v Ruben Somsen>an RGB user and you wanted to use it on Lightning, you would also want to use

00:35:50.870 --> 00:35:54.890
<v Ruben Somsen>Bitcoin on Lightning. That seems like a safe assumption. So you could use the

00:35:54.890 --> 00:35:58.600
<v Ruben Somsen>same UTXO for that. So you could have a channel that you're using to send

00:35:58.600 --> 00:36:02.660
<v Ruben Somsen>bitcoins back and forth. And then you can also put RGB tokens inside of it and do

00:36:02.660 --> 00:36:05.300
<v Ruben Somsen>the same thing at the same time with a single channel.

00:36:05.480 --> 00:36:09.200
<v Sjors Provoost>But then it'd be kind of like a collateral. But then how do you make sure that,

00:36:09.380 --> 00:36:13.740
<v Sjors Provoost>you know, I don't end up with just five satoshis in the channel. So I have every

00:36:13.740 --> 00:36:17.600
<v Sjors Provoost>incentive to cheat, but there's this huge value of colored coins in it.

00:36:18.020 --> 00:36:18.420
<v Ruben Somsen>Yeah.

00:36:18.560 --> 00:36:21.800
<v Sjors Provoost>So somehow you do need to compare the real value that's at stake in Bitcoin

00:36:21.800 --> 00:36:25.740
<v Sjors Provoost>versus this tokenized value. So I think this gets pretty complicated. I don't

00:36:25.740 --> 00:36:26.160
<v Sjors Provoost>know if we want to.

00:36:26.340 --> 00:36:27.780
<v Ruben Somsen>Yeah. Yeah. I'm not sure about that.

00:36:27.960 --> 00:36:32.480
<v Aaron van Wirdum>Too many worms for now. Let's move on to more worms.

00:36:33.320 --> 00:36:33.580
<v Ruben Somsen>Delicious.

00:36:33.980 --> 00:36:35.220
<v Aaron van Wirdum>There were more problems, I think.

00:36:35.400 --> 00:36:37.540
<v Sjors Provoost>I think Ruben had one final problem.

00:36:37.680 --> 00:36:37.840
<v Ruben Somsen>Yeah.

00:36:37.960 --> 00:36:38.580
<v Sjors Provoost>That's about it.

00:36:38.900 --> 00:36:41.700
<v Ruben Somsen>Yeah. What we were saying earlier about to USD Tether.

00:36:42.180 --> 00:36:45.820
<v Aaron van Wirdum>To be clear, we're not talking about Lightning anymore. We're just talking about

00:36:45.820 --> 00:36:47.780
<v Aaron van Wirdum>RGB. We're back to basic RGB.

00:36:48.060 --> 00:36:48.920
<v Ruben Somsen>We're back to basic RGB.

00:36:49.140 --> 00:36:49.760
<v Aaron van Wirdum>And there's a problem with it.

00:36:50.020 --> 00:36:53.400
<v Ruben Somsen>So even for the Lightning network, right? Like you still need to use the base

00:36:53.400 --> 00:36:56.020
<v Ruben Somsen>layer. And that's something that people shouldn't forget. You can't just be

00:36:56.020 --> 00:37:00.600
<v Ruben Somsen>saying like, okay, well, because we can go on Lightning, it doesn't really matter

00:37:00.600 --> 00:37:04.240
<v Ruben Somsen>how expensive the base layer is. You always need to have these base layer

00:37:04.240 --> 00:37:07.600
<v Ruben Somsen>transactions first. Lots of people need to have USD Tether. Then they have to

00:37:07.600 --> 00:37:11.200
<v Ruben Somsen>create channels with USD Tether. And then you can start using the Lightning

00:37:11.200 --> 00:37:14.600
<v Ruben Somsen>Network. And even then, channels have to close and reopen and rebalance, et

00:37:14.600 --> 00:37:18.760
<v Ruben Somsen>cetera. So you're still using the base layer. Okay, so the issue or the first

00:37:18.760 --> 00:37:24.620
<v Ruben Somsen>issue would be simply if the token moved many times, you have to show the

00:37:24.620 --> 00:37:29.100
<v Ruben Somsen>entire history to the person you are sending your coins to. So at some point,

00:37:29.220 --> 00:37:32.700
<v Ruben Somsen>maybe first it's like one megabyte, two megabytes, three megabytes. Okay, fine.

00:37:32.880 --> 00:37:36.720
<v Ruben Somsen>But after a while, it becomes hundreds of megabytes or maybe even a gigabyte.

00:37:37.790 --> 00:37:39.990
<v Ruben Somsen>What's worse is that...

00:37:39.990 --> 00:37:44.750
<v Sjors Provoost>Because we did talk about how you only have to share the relevant part, so I only

00:37:44.750 --> 00:37:49.850
<v Sjors Provoost>need to see how my money originated from the source, but I don't have to see the

00:37:49.850 --> 00:37:54.710
<v Sjors Provoost>entire tree. That saves a whole bunch of data. But even then, if the money is

00:37:54.710 --> 00:37:59.680
<v Sjors Provoost>passed around 100,000 times, I need all those 100,000 transactions to see where

00:37:59.680 --> 00:38:00.220
<v Sjors Provoost>it's coming from.

00:38:00.220 --> 00:38:04.800
<v Ruben Somsen>Yeah, the data does keep growing regardless. And there is sort of an intermediate

00:38:04.800 --> 00:38:08.820
<v Ruben Somsen>solution to that depending on what kind of token you have, you could give back

00:38:08.820 --> 00:38:13.560
<v Ruben Somsen>the USD Tether to the USD Tether company and then they could reissue a new token

00:38:13.560 --> 00:38:18.340
<v Ruben Somsen>with a history that's completely clean again. But that works only in the example

00:38:18.340 --> 00:38:22.420
<v Ruben Somsen>of USD Tether where there's sort of an IOU system. If you have some… yeah, I'm

00:38:22.420 --> 00:38:25.060
<v Ruben Somsen>not sure what kind of token this would be, but if there's some kind of token that

00:38:25.660 --> 00:38:30.940
<v Ruben Somsen>is issued once and then never issued again then you can't do that. But problem is

00:38:30.940 --> 00:38:36.620
<v Ruben Somsen>that the history of the tokens actually becomes intertwined. So if I

00:38:36.620 --> 00:38:42.260
<v Ruben Somsen>have one USD… USDT, and let's say Sjors has one USDT

00:38:42.260 --> 00:38:46.820
<v Ruben Somsen>and we both send these to to you Aaron then

00:38:46.820 --> 00:38:52.400
<v Ruben Somsen>the the history of of both these coins becomes connected.

00:38:52.780 --> 00:38:58.710
<v Ruben Somsen>So the proof for your $2 is both our histories. Now, after that, if you

00:38:58.710 --> 00:39:03.110
<v Ruben Somsen>want to split them up again, and now you send $1 to one of your friends and $1 to

00:39:03.110 --> 00:39:07.110
<v Ruben Somsen>another one of your friends. The history doesn't become unconnected again. The

00:39:07.110 --> 00:39:13.030
<v Ruben Somsen>history stays connected. So each of them has to check the history of both

00:39:13.030 --> 00:39:18.910
<v Ruben Somsen>Sjors coin and my coin. So this is basically another way of saying this would be

00:39:18.910 --> 00:39:23.890
<v Ruben Somsen>if you have a Bitcoin on the Bitcoin blockchain, you can't actually go back and

00:39:23.890 --> 00:39:29.730
<v Ruben Somsen>figure out exactly inside of which Bitcoin block that Bitcoin

00:39:29.730 --> 00:39:33.780
<v Ruben Somsen>originated because the history is connected. And so because of that, what you end

00:39:33.780 --> 00:39:39.320
<v Ruben Somsen>up with is you might have to download a significant chunk of everybody's history

00:39:39.320 --> 00:39:42.720
<v Ruben Somsen>instead of these paths that in the ideal case.

00:39:42.840 --> 00:39:47.950
<v Sjors Provoost>So I guess you're saying is the spaghetti strain gets longer and longer. And you

00:39:47.950 --> 00:39:51.810
<v Sjors Provoost>get more and more spaghetti strains as money is being combined. So you end up

00:39:51.810 --> 00:39:56.450
<v Sjors Provoost>with a ton of spaghetti, which is cool for an Italian project. I think that's all

00:39:56.450 --> 00:39:57.230
<v Sjors Provoost>we got, right?

00:39:57.630 --> 00:39:58.070
<v Ruben Somsen>That's right.

00:39:58.270 --> 00:40:02.470
<v Aaron van Wirdum>Well, I want to ask you guys, do we want this on Bitcoin? Because it sounds

00:40:02.470 --> 00:40:02.990
<v Aaron van Wirdum>like...

00:40:02.990 --> 00:40:03.770
<v Sjors Provoost>We don't have a choice.

00:40:03.790 --> 00:40:05.350
<v Aaron van Wirdum>It's just a whole bunch of data.

00:40:06.490 --> 00:40:10.370
<v Sjors Provoost>Well, it's mostly data that exists outside of Bitcoin that we don't care about.

00:40:10.690 --> 00:40:13.370
<v Aaron van Wirdum>Yeah, well, it still requires transactions on the blockchain at least.

00:40:13.810 --> 00:40:16.730
<v Sjors Provoost>Yeah, but who can stop that? Because they look like regular transactions, so it

00:40:16.730 --> 00:40:19.960
<v Sjors Provoost>doesn't matter what we want. We can't stop it.

00:40:20.520 --> 00:40:24.720
<v Ruben Somsen>Yeah, so it's kind of like if we could maybe, let's say if you had the option to

00:40:24.720 --> 00:40:29.460
<v Ruben Somsen>very easily add native tokens to Bitcoin where you could issue assets and you

00:40:29.460 --> 00:40:32.820
<v Ruben Somsen>could just use them on the Bitcoin blockchain. If you did something like that...

00:40:33.480 --> 00:40:37.840
<v Ruben Somsen>In terms of blockchain usage, it will be very similar, right? Because with RGB,

00:40:38.160 --> 00:40:41.600
<v Ruben Somsen>you have kind of the same thing where every time you move a token, you do need to

00:40:41.600 --> 00:40:44.200
<v Ruben Somsen>create a Bitcoin transaction. But that Bitcoin transaction doesn't really have

00:40:44.200 --> 00:40:48.480
<v Ruben Somsen>anything to do with Bitcoin other than that it wants to kind of connect to it to

00:40:48.480 --> 00:40:53.420
<v Ruben Somsen>be connected to its proof of work. So would we want that? Would we want people to

00:40:53.420 --> 00:40:57.460
<v Ruben Somsen>just issue any token they want just natively on Bitcoin? And then most people

00:40:57.460 --> 00:41:02.160
<v Ruben Somsen>would kind of say no. So RGB kind of forces that, the issue basically, and says

00:41:02.160 --> 00:41:07.120
<v Ruben Somsen>like, well, you can just do it if you do it like this. So do we want that? Do we

00:41:07.120 --> 00:41:10.240
<v Ruben Somsen>not want that? I don't think it's going to be terrible. I think it's going to be

00:41:10.240 --> 00:41:15.060
<v Ruben Somsen>okay. And, you know, I don't think there's going to be some kind of token that is

00:41:15.060 --> 00:41:19.080
<v Ruben Somsen>so popular that it will pull away most of the proof of work or something along

00:41:19.080 --> 00:41:21.420
<v Ruben Somsen>those lines that would be kind of, you know, the doomsday scenario.

00:41:21.660 --> 00:41:25.280
<v Sjors Provoost>Yeah, the risk there is, we talked about that in other episodes about sidechains

00:41:25.280 --> 00:41:31.190
<v Sjors Provoost>as well. If there is, say, the entire world's supply of gold is expressed as

00:41:31.190 --> 00:41:35.710
<v Sjors Provoost>an RGB token, that's a problem because the market cap of gold is, you know, 10

00:41:35.710 --> 00:41:37.050
<v Sjors Provoost>times that of Bitcoin at the moment.

00:41:37.290 --> 00:41:37.410
<v Ruben Somsen>Right.

00:41:37.610 --> 00:41:41.270
<v Sjors Provoost>Which means that somebody who wants to steal gold through a double-spend attack,

00:41:41.410 --> 00:41:45.560
<v Sjors Provoost>you know, might want to do that. And from a Bitcoin point of view, that attack

00:41:45.560 --> 00:41:48.640
<v Sjors Provoost>would look uneconomical, but from a gold point of view it would look economical.

00:41:48.640 --> 00:41:52.920
<v Sjors Provoost>And therefore it just messes with the incentive structure that we have. Yeah, but

00:41:52.920 --> 00:41:55.340
<v Sjors Provoost>we're not there yet, and I'm not really worried about it.

00:41:55.340 --> 00:41:58.980
<v Ruben Somsen>Yeah exactly. I'm actually, I think the opposite problem is more likely where

00:41:58.980 --> 00:42:04.500
<v Ruben Somsen>Bitcoin, the fees are going to go up. And at that point you have to…

00:42:04.500 --> 00:42:09.100
<v Ruben Somsen>if you want to use USD Tether you have to pay the Bitcoin fees to use your

00:42:09.100 --> 00:42:13.440
<v Ruben Somsen>USD Tether and then you have to ask well, If I can use my USD Tether on any

00:42:13.440 --> 00:42:17.240
<v Ruben Somsen>chain, why would I use it on the expensive Bitcoin blockchain? So I think that

00:42:17.240 --> 00:42:22.020
<v Ruben Somsen>kind of becomes the bottleneck for RGB, where any token you want to move on RGB,

00:42:22.380 --> 00:42:26.120
<v Ruben Somsen>at least without using Lightning, and as I pointed out earlier, at the very least

00:42:26.120 --> 00:42:30.080
<v Ruben Somsen>you will have to use the base layer every now and then, will have to pay as high

00:42:30.080 --> 00:42:32.940
<v Ruben Somsen>of a fee as Bitcoin transaction. And whether or not that's going to be

00:42:32.940 --> 00:42:34.640
<v Ruben Somsen>economical, I don't know.

00:42:35.820 --> 00:42:40.160
<v Sjors Provoost>Yeah, exactly. And I don't know, if you're doing client-side validation anyway,

00:42:40.180 --> 00:42:43.180
<v Sjors Provoost>maybe you just want to use a database, but...

00:42:43.340 --> 00:42:49.020
<v Ruben Somsen>Perhaps, yeah. And yeah, so specific, you know, the space chains, yeah, it wasn't

00:42:49.020 --> 00:42:52.120
<v Ruben Somsen>called space chains back then, but the episode we did on the perpetual one-way

00:42:52.120 --> 00:42:56.800
<v Ruben Somsen>peg and blind merged mining, it is actually a very similar system, right? So you

00:42:56.800 --> 00:43:02.560
<v Ruben Somsen>could compare the two, but the difference is that… you are less connected

00:43:02.560 --> 00:43:07.960
<v Ruben Somsen>to the proof of work right? Instead of having one… every every RGB transaction

00:43:07.960 --> 00:43:11.760
<v Ruben Somsen>you make you need to make a Bitcoin transaction, you now have one Bitcoin

00:43:11.760 --> 00:43:17.160
<v Ruben Somsen>transaction, that represents an entire block of of tokens basically. So that

00:43:17.160 --> 00:43:22.400
<v Ruben Somsen>would at least make it cheaper to do tokens, but at the same time, you're also I

00:43:22.400 --> 00:43:26.600
<v Ruben Somsen>guess less secure, because you don't have the the full proof of work kind of…

00:43:26.600 --> 00:43:29.280
<v Ruben Somsen>it's not directly connected. It's a little bit more indirect. Okay.

00:43:31.720 --> 00:43:35.500
<v Aaron van Wirdum>Okay. Wait, Sjors, I have one last question. Did you want to get into the Proof

00:43:35.500 --> 00:43:38.720
<v Aaron van Wirdum>Marshal thing or are we going to leave that for a different episode?

00:43:38.900 --> 00:43:41.880
<v Sjors Provoost>Exactly. We have another can of worms that's called Proof Marshals. We are not

00:43:41.880 --> 00:43:42.480
<v Sjors Provoost>going to open that.

00:43:42.840 --> 00:43:44.780
<v Aaron van Wirdum>Okay. Do you want to end on a positive note?

00:43:45.440 --> 00:43:48.660
<v Sjors Provoost>I want to end on saying thank you, everybody, for listening to the

00:43:48.660 --> 00:43:49.640
<v Sjors Provoost>Van Wirdum Sjorsnado.

00:43:50.440 --> 00:43:51.100
<v Aaron van Wirdum>There you go.

00:43:51.300 --> 00:43:51.780
<v Ruben Somsen>There you go.

