WEBVTT
Kind: captions
Language: en

00:00:00.000 --> 00:00:04.350 align:start position:0%
 
foreign

00:00:04.350 --> 00:00:04.360 align:start position:0%
 
 

00:00:04.360 --> 00:00:14.890 align:start position:0%
 
[Music]

00:00:14.890 --> 00:00:14.900 align:start position:0%
 
 

00:00:14.900 --> 00:00:18.109 align:start position:0%
 
then<00:00:15.900><c> I</c><00:00:16.080><c> worked</c><00:00:16.379><c> with</c><00:00:17.100><c> Aragon</c><00:00:17.520><c> for</c><00:00:17.640><c> a</c><00:00:17.760><c> bit</c><00:00:17.880><c> and</c>

00:00:18.109 --> 00:00:18.119 align:start position:0%
then I worked with Aragon for a bit and
 

00:00:18.119 --> 00:00:20.330 align:start position:0%
then I worked with Aragon for a bit and
now<00:00:18.300><c> I'm</c><00:00:18.600><c> working</c><00:00:18.779><c> with</c><00:00:19.080><c> synthetics</c>

00:00:20.330 --> 00:00:20.340 align:start position:0%
now I'm working with synthetics
 

00:00:20.340 --> 00:00:23.390 align:start position:0%
now I'm working with synthetics
mainly<00:00:21.119><c> addressing</c><00:00:22.080><c> the</c><00:00:22.439><c> problem</c><00:00:22.680><c> of</c><00:00:23.039><c> how</c><00:00:23.279><c> do</c>

00:00:23.390 --> 00:00:23.400 align:start position:0%
mainly addressing the problem of how do
 

00:00:23.400 --> 00:00:26.509 align:start position:0%
mainly addressing the problem of how do
you<00:00:23.520><c> build</c><00:00:23.640><c> a</c><00:00:24.000><c> super</c><00:00:24.480><c> complex</c><00:00:25.039><c> smart</c><00:00:26.039><c> contract</c>

00:00:26.509 --> 00:00:26.519 align:start position:0%
you build a super complex smart contract
 

00:00:26.519 --> 00:00:29.210 align:start position:0%
you build a super complex smart contract
system<00:00:26.820><c> in</c><00:00:27.720><c> a</c><00:00:27.840><c> way</c><00:00:27.960><c> that</c><00:00:28.320><c> you</c><00:00:28.680><c> can</c><00:00:28.740><c> iterate</c>

00:00:29.210 --> 00:00:29.220 align:start position:0%
system in a way that you can iterate
 

00:00:29.220 --> 00:00:31.790 align:start position:0%
system in a way that you can iterate
through<00:00:29.460><c> it</c><00:00:29.699><c> and</c><00:00:29.880><c> fix</c><00:00:30.180><c> bugs</c><00:00:30.660><c> and</c><00:00:30.900><c> and</c><00:00:31.260><c> improve</c>

00:00:31.790 --> 00:00:31.800 align:start position:0%
through it and fix bugs and and improve
 

00:00:31.800 --> 00:00:34.370 align:start position:0%
through it and fix bugs and and improve
an<00:00:32.340><c> experiment</c>

00:00:34.370 --> 00:00:34.380 align:start position:0%
an experiment
 

00:00:34.380 --> 00:00:36.650 align:start position:0%
an experiment
um and<00:00:34.800><c> other</c><00:00:34.980><c> than</c><00:00:35.219><c> that</c><00:00:35.399><c> I</c><00:00:35.880><c> I</c><00:00:36.180><c> consider</c>

00:00:36.650 --> 00:00:36.660 align:start position:0%
um and other than that I I consider
 

00:00:36.660 --> 00:00:39.110 align:start position:0%
um and other than that I I consider
myself<00:00:36.840><c> a</c><00:00:37.260><c> bit</c><00:00:37.380><c> of</c><00:00:37.559><c> a</c><00:00:37.739><c> an</c><00:00:38.040><c> educator</c><00:00:38.520><c> in</c><00:00:38.940><c> the</c>

00:00:39.110 --> 00:00:39.120 align:start position:0%
myself a bit of a an educator in the
 

00:00:39.120 --> 00:00:42.410 align:start position:0%
myself a bit of a an educator in the
space<00:00:39.379><c> I</c><00:00:40.379><c> just</c><00:00:40.620><c> it's</c><00:00:41.219><c> not</c><00:00:41.399><c> that</c><00:00:41.640><c> I</c><00:00:41.820><c> know</c><00:00:42.120><c> a</c><00:00:42.300><c> lot</c>

00:00:42.410 --> 00:00:42.420 align:start position:0%
space I just it's not that I know a lot
 

00:00:42.420 --> 00:00:45.590 align:start position:0%
space I just it's not that I know a lot
of<00:00:42.540><c> things</c><00:00:42.660><c> I</c><00:00:42.960><c> I</c><00:00:43.260><c> just</c><00:00:43.559><c> love</c><00:00:44.219><c> to</c><00:00:44.460><c> empower</c><00:00:45.239><c> other</c>

00:00:45.590 --> 00:00:45.600 align:start position:0%
of things I I just love to empower other
 

00:00:45.600 --> 00:00:49.250 align:start position:0%
of things I I just love to empower other
people<00:00:45.840><c> with</c><00:00:46.200><c> with</c><00:00:46.620><c> knowledge</c><00:00:47.100><c> right</c><00:00:47.600><c> so</c><00:00:48.600><c> what</c>

00:00:49.250 --> 00:00:49.260 align:start position:0%
people with with knowledge right so what
 

00:00:49.260 --> 00:00:50.690 align:start position:0%
people with with knowledge right so what
we're<00:00:49.379><c> gonna</c><00:00:49.500><c> do</c><00:00:49.739><c> today</c>

00:00:50.690 --> 00:00:50.700 align:start position:0%
we're gonna do today
 

00:00:50.700 --> 00:00:53.270 align:start position:0%
we're gonna do today
is<00:00:51.360><c> talk</c><00:00:51.780><c> about</c><00:00:51.960><c> proxies</c>

00:00:53.270 --> 00:00:53.280 align:start position:0%
is talk about proxies
 

00:00:53.280 --> 00:00:56.630 align:start position:0%
is talk about proxies
uh<00:00:54.059><c> and</c><00:00:54.180><c> then</c><00:00:54.420><c> like</c><00:00:54.780><c> in</c><00:00:55.079><c> general</c><00:00:55.460><c> and</c><00:00:56.460><c> then</c>

00:00:56.630 --> 00:00:56.640 align:start position:0%
uh and then like in general and then
 

00:00:56.640 --> 00:00:59.229 align:start position:0%
uh and then like in general and then
we're<00:00:57.180><c> gonna</c><00:00:57.360><c> talk</c><00:00:58.320><c> about</c><00:00:58.500><c> a</c><00:00:58.860><c> pretty</c>

00:00:59.229 --> 00:00:59.239 align:start position:0%
we're gonna talk about a pretty
 

00:00:59.239 --> 00:01:02.450 align:start position:0%
we're gonna talk about a pretty
sophisticated<00:01:00.260><c> uh</c><00:01:01.260><c> type</c><00:01:01.559><c> of</c><00:01:01.680><c> proxy</c><00:01:02.160><c> that</c>

00:01:02.450 --> 00:01:02.460 align:start position:0%
sophisticated uh type of proxy that
 

00:01:02.460 --> 00:01:04.910 align:start position:0%
sophisticated uh type of proxy that
we're<00:01:02.579><c> using</c><00:01:02.820><c> in</c><00:01:03.120><c> synthetics</c>

00:01:04.910 --> 00:01:04.920 align:start position:0%
we're using in synthetics
 

00:01:04.920 --> 00:01:06.469 align:start position:0%
we're using in synthetics
so

00:01:06.469 --> 00:01:06.479 align:start position:0%
so
 

00:01:06.479 --> 00:01:09.230 align:start position:0%
so
I<00:01:07.020><c> think</c><00:01:07.140><c> that</c><00:01:07.380><c> it's</c><00:01:07.680><c> critical</c><00:01:08.100><c> for</c><00:01:08.640><c> for</c>

00:01:09.230 --> 00:01:09.240 align:start position:0%
I think that it's critical for for
 

00:01:09.240 --> 00:01:11.210 align:start position:0%
I think that it's critical for for
everyone<00:01:09.420><c> to</c><00:01:09.720><c> understand</c><00:01:09.900><c> how</c><00:01:10.380><c> proxies</c><00:01:10.860><c> work</c>

00:01:11.210 --> 00:01:11.220 align:start position:0%
everyone to understand how proxies work
 

00:01:11.220 --> 00:01:13.670 align:start position:0%
everyone to understand how proxies work
under<00:01:11.520><c> the</c><00:01:11.760><c> hood</c><00:01:11.880><c> I</c><00:01:12.600><c> think</c><00:01:12.900><c> that</c><00:01:13.140><c> it's</c><00:01:13.380><c> not</c>

00:01:13.670 --> 00:01:13.680 align:start position:0%
under the hood I think that it's not
 

00:01:13.680 --> 00:01:14.510 align:start position:0%
under the hood I think that it's not
okay

00:01:14.510 --> 00:01:14.520 align:start position:0%
okay
 

00:01:14.520 --> 00:01:17.570 align:start position:0%
okay
for<00:01:15.000><c> a</c><00:01:15.180><c> Dev</c><00:01:15.360><c> to</c><00:01:15.840><c> use</c><00:01:15.960><c> proxies</c><00:01:16.560><c> and</c><00:01:17.220><c> not</c><00:01:17.400><c> know</c>

00:01:17.570 --> 00:01:17.580 align:start position:0%
for a Dev to use proxies and not know
 

00:01:17.580 --> 00:01:19.190 align:start position:0%
for a Dev to use proxies and not know
how<00:01:17.939><c> they</c><00:01:18.360><c> work</c>

00:01:19.190 --> 00:01:19.200 align:start position:0%
how they work
 

00:01:19.200 --> 00:01:21.649 align:start position:0%
how they work
but<00:01:19.560><c> the</c><00:01:19.680><c> good</c><00:01:19.799><c> news</c><00:01:20.040><c> is</c><00:01:20.280><c> it's</c><00:01:20.640><c> that</c><00:01:21.000><c> they're</c>

00:01:21.649 --> 00:01:21.659 align:start position:0%
but the good news is it's that they're
 

00:01:21.659 --> 00:01:24.050 align:start position:0%
but the good news is it's that they're
really<00:01:21.840><c> easy</c><00:01:22.080><c> like</c><00:01:22.740><c> in</c><00:01:23.400><c> the</c><00:01:23.520><c> end</c><00:01:23.640><c> there's</c><00:01:23.759><c> like</c>

00:01:24.050 --> 00:01:24.060 align:start position:0%
really easy like in the end there's like
 

00:01:24.060 --> 00:01:26.749 align:start position:0%
really easy like in the end there's like
no<00:01:24.299><c> mystery</c><00:01:24.659><c> it's</c><00:01:25.439><c> very</c><00:01:25.619><c> easy</c><00:01:25.799><c> to</c><00:01:26.100><c> demystify</c>

00:01:26.749 --> 00:01:26.759 align:start position:0%
no mystery it's very easy to demystify
 

00:01:26.759 --> 00:01:31.670 align:start position:0%
no mystery it's very easy to demystify
it<00:01:26.939><c> right</c><00:01:27.420><c> so</c><00:01:28.140><c> I</c><00:01:28.439><c> I</c><00:01:28.680><c> insist</c><00:01:29.180><c> uh</c><00:01:30.180><c> besides</c><00:01:31.020><c> the</c>

00:01:31.670 --> 00:01:31.680 align:start position:0%
it right so I I insist uh besides the
 

00:01:31.680 --> 00:01:34.070 align:start position:0%
it right so I I insist uh besides the
proxy<00:01:32.040><c> I'm</c><00:01:32.220><c> going</c><00:01:32.340><c> to</c><00:01:32.400><c> show</c><00:01:32.580><c> I</c><00:01:33.180><c> think</c><00:01:33.360><c> the</c><00:01:33.720><c> the</c>

00:01:34.070 --> 00:01:34.080 align:start position:0%
proxy I'm going to show I think the the
 

00:01:34.080 --> 00:01:36.410 align:start position:0%
proxy I'm going to show I think the the
essence<00:01:34.439><c> of</c><00:01:34.680><c> this</c><00:01:34.860><c> talk</c><00:01:35.100><c> is</c><00:01:35.520><c> to</c>

00:01:36.410 --> 00:01:36.420 align:start position:0%
essence of this talk is to
 

00:01:36.420 --> 00:01:40.130 align:start position:0%
essence of this talk is to
to<00:01:37.200><c> promote</c><00:01:37.640><c> the</c><00:01:38.640><c> awareness</c><00:01:39.119><c> of</c><00:01:39.479><c> how</c><00:01:39.659><c> proxies</c>

00:01:40.130 --> 00:01:40.140 align:start position:0%
to promote the awareness of how proxies
 

00:01:40.140 --> 00:01:42.230 align:start position:0%
to promote the awareness of how proxies
work<00:01:40.380><c> and</c><00:01:41.040><c> if</c><00:01:41.220><c> you're</c><00:01:41.340><c> going</c><00:01:41.460><c> to</c><00:01:41.579><c> use</c><00:01:41.700><c> one</c><00:01:41.880><c> like</c>

00:01:42.230 --> 00:01:42.240 align:start position:0%
work and if you're going to use one like
 

00:01:42.240 --> 00:01:46.069 align:start position:0%
work and if you're going to use one like
make<00:01:42.540><c> sure</c><00:01:42.720><c> you</c><00:01:43.079><c> understand</c><00:01:43.259><c> how</c><00:01:44.100><c> they</c><00:01:44.220><c> work</c>

00:01:46.069 --> 00:01:46.079 align:start position:0%
make sure you understand how they work
 

00:01:46.079 --> 00:01:48.530 align:start position:0%
make sure you understand how they work
so<00:01:46.740><c> to</c><00:01:47.280><c> illustrate</c><00:01:47.700><c> this</c><00:01:47.939><c> we're</c><00:01:48.240><c> going</c><00:01:48.420><c> to</c>

00:01:48.530 --> 00:01:48.540 align:start position:0%
so to illustrate this we're going to
 

00:01:48.540 --> 00:01:50.690 align:start position:0%
so to illustrate this we're going to
play<00:01:48.960><c> them</c><00:01:49.200><c> like</c><00:01:49.860><c> we're</c><00:01:50.040><c> going</c><00:01:50.220><c> to</c><00:01:50.280><c> start</c><00:01:50.399><c> with</c>

00:01:50.690 --> 00:01:50.700 align:start position:0%
play them like we're going to start with
 

00:01:50.700 --> 00:01:53.090 align:start position:0%
play them like we're going to start with
a<00:01:50.880><c> with</c><00:01:51.360><c> a</c><00:01:51.540><c> very</c><00:01:51.780><c> simple</c><00:01:52.020><c> contract</c><00:01:52.619><c> and</c><00:01:52.920><c> make</c>

00:01:53.090 --> 00:01:53.100 align:start position:0%
a with a very simple contract and make
 

00:01:53.100 --> 00:01:55.670 align:start position:0%
a with a very simple contract and make
it<00:01:53.220><c> upgradable</c><00:01:53.640><c> and</c><00:01:53.939><c> see</c><00:01:54.119><c> what</c><00:01:54.299><c> happens</c>

00:01:55.670 --> 00:01:55.680 align:start position:0%
it upgradable and see what happens
 

00:01:55.680 --> 00:01:57.469 align:start position:0%
it upgradable and see what happens
so<00:01:56.100><c> this</c><00:01:56.280><c> is</c><00:01:56.399><c> the</c><00:01:56.520><c> contract</c><00:01:56.820><c> I</c><00:01:57.060><c> don't</c><00:01:57.180><c> know</c><00:01:57.299><c> if</c>

00:01:57.469 --> 00:01:57.479 align:start position:0%
so this is the contract I don't know if
 

00:01:57.479 --> 00:02:00.350 align:start position:0%
so this is the contract I don't know if
it's<00:01:58.259><c> a</c><00:01:58.560><c> good</c><00:01:58.619><c> idea</c><00:01:58.920><c> to</c><00:01:59.100><c> bring</c><00:01:59.460><c> in</c><00:01:59.640><c> code</c><00:01:59.820><c> to</c><00:02:00.119><c> a</c>

00:02:00.350 --> 00:02:00.360 align:start position:0%
it's a good idea to bring in code to a
 

00:02:00.360 --> 00:02:02.450 align:start position:0%
it's a good idea to bring in code to a
talk<00:02:00.720><c> but</c><00:02:01.200><c> I</c><00:02:01.619><c> don't</c><00:02:01.740><c> know</c><00:02:01.799><c> if</c><00:02:01.860><c> you</c><00:02:02.040><c> can</c><00:02:02.159><c> see</c><00:02:02.280><c> it</c>

00:02:02.450 --> 00:02:02.460 align:start position:0%
talk but I don't know if you can see it
 

00:02:02.460 --> 00:02:05.270 align:start position:0%
talk but I don't know if you can see it
but<00:02:03.060><c> it's</c><00:02:03.360><c> just</c><00:02:03.720><c> a</c><00:02:04.200><c> contract</c><00:02:04.560><c> that</c><00:02:04.799><c> sets</c><00:02:05.159><c> a</c>

00:02:05.270 --> 00:02:05.280 align:start position:0%
but it's just a contract that sets a
 

00:02:05.280 --> 00:02:07.930 align:start position:0%
but it's just a contract that sets a
value<00:02:05.460><c> right</c><00:02:06.240><c> it</c><00:02:06.719><c> has</c><00:02:06.899><c> a</c><00:02:07.020><c> function</c><00:02:07.259><c> set</c><00:02:07.560><c> value</c>

00:02:07.930 --> 00:02:07.940 align:start position:0%
value right it has a function set value
 

00:02:07.940 --> 00:02:11.150 align:start position:0%
value right it has a function set value
you<00:02:08.940><c> can</c><00:02:09.060><c> set</c><00:02:09.239><c> the</c><00:02:09.420><c> value</c><00:02:09.660><c> and</c><00:02:10.140><c> it</c><00:02:10.380><c> records</c><00:02:10.800><c> who</c>

00:02:11.150 --> 00:02:11.160 align:start position:0%
you can set the value and it records who
 

00:02:11.160 --> 00:02:13.190 align:start position:0%
you can set the value and it records who
said<00:02:11.400><c> the</c><00:02:11.819><c> value</c><00:02:11.940><c> it's</c><00:02:12.300><c> message</c><00:02:12.480><c> sender</c><00:02:13.020><c> and</c>

00:02:13.190 --> 00:02:13.200 align:start position:0%
said the value it's message sender and
 

00:02:13.200 --> 00:02:15.770 align:start position:0%
said the value it's message sender and
an<00:02:13.379><c> image</c><00:02:13.620><c> an</c><00:02:13.800><c> event</c><00:02:13.980><c> that's</c><00:02:14.520><c> it</c>

00:02:15.770 --> 00:02:15.780 align:start position:0%
an image an event that's it
 

00:02:15.780 --> 00:02:19.010 align:start position:0%
an image an event that's it
so<00:02:16.620><c> this</c><00:02:17.040><c> car</c><00:02:17.220><c> this</c><00:02:17.520><c> contract</c><00:02:17.760><c> is</c><00:02:18.060><c> deployed</c><00:02:18.540><c> at</c>

00:02:19.010 --> 00:02:19.020 align:start position:0%
so this car this contract is deployed at
 

00:02:19.020 --> 00:02:21.770 align:start position:0%
so this car this contract is deployed at
the<00:02:19.319><c> 0x1</c><00:02:20.220><c> address</c><00:02:20.580><c> right</c>

00:02:21.770 --> 00:02:21.780 align:start position:0%
the 0x1 address right
 

00:02:21.780 --> 00:02:23.150 align:start position:0%
the 0x1 address right
and<00:02:22.440><c> then</c>

00:02:23.150 --> 00:02:23.160 align:start position:0%
and then
 

00:02:23.160 --> 00:02:26.510 align:start position:0%
and then
after<00:02:23.640><c> deploying</c><00:02:24.180><c> it</c><00:02:24.300><c> Bob</c><00:02:24.720><c> calls</c><00:02:25.379><c> uh</c><00:02:26.280><c> set</c>

00:02:26.510 --> 00:02:26.520 align:start position:0%
after deploying it Bob calls uh set
 

00:02:26.520 --> 00:02:28.850 align:start position:0%
after deploying it Bob calls uh set
value<00:02:26.819><c> 42</c><00:02:27.420><c> right</c>

00:02:28.850 --> 00:02:28.860 align:start position:0%
value 42 right
 

00:02:28.860 --> 00:02:30.050 align:start position:0%
value 42 right
then

00:02:30.050 --> 00:02:30.060 align:start position:0%
then
 

00:02:30.060 --> 00:02:34.369 align:start position:0%
then
42<00:02:30.720><c> is</c><00:02:31.020><c> set</c><00:02:31.440><c> in</c><00:02:31.980><c> storage</c><00:02:32.280><c> slot</c><00:02:33.120><c> zero</c><00:02:33.599><c> because</c>

00:02:34.369 --> 00:02:34.379 align:start position:0%
42 is set in storage slot zero because
 

00:02:34.379 --> 00:02:37.070 align:start position:0%
42 is set in storage slot zero because
the<00:02:34.860><c> variable</c><00:02:35.220><c> is</c><00:02:35.459><c> declared</c><00:02:36.000><c> it's</c><00:02:36.599><c> the</c><00:02:36.900><c> first</c>

00:02:37.070 --> 00:02:37.080 align:start position:0%
the variable is declared it's the first
 

00:02:37.080 --> 00:02:38.630 align:start position:0%
the variable is declared it's the first
variable<00:02:37.500><c> declared</c>

00:02:38.630 --> 00:02:38.640 align:start position:0%
variable declared
 

00:02:38.640 --> 00:02:40.070 align:start position:0%
variable declared
and

00:02:40.070 --> 00:02:40.080 align:start position:0%
and
 

00:02:40.080 --> 00:02:42.650 align:start position:0%
and
uh<00:02:40.620><c> zero</c><00:02:41.040><c> X</c><00:02:41.160><c> Bob</c><00:02:41.459><c> which</c><00:02:41.879><c> is</c><00:02:41.940><c> the</c><00:02:42.180><c> address</c><00:02:42.300><c> of</c>

00:02:42.650 --> 00:02:42.660 align:start position:0%
uh zero X Bob which is the address of
 

00:02:42.660 --> 00:02:45.470 align:start position:0%
uh zero X Bob which is the address of
Bob<00:02:42.900><c> uh</c><00:02:43.800><c> gets</c><00:02:44.340><c> stored</c><00:02:44.580><c> in</c><00:02:44.700><c> the</c><00:02:44.879><c> second</c><00:02:45.000><c> slot</c>

00:02:45.470 --> 00:02:45.480 align:start position:0%
Bob uh gets stored in the second slot
 

00:02:45.480 --> 00:02:48.229 align:start position:0%
Bob uh gets stored in the second slot
which<00:02:45.840><c> is</c><00:02:45.900><c> slot</c><00:02:46.319><c> one</c><00:02:46.980><c> okay</c>

00:02:48.229 --> 00:02:48.239 align:start position:0%
which is slot one okay
 

00:02:48.239 --> 00:02:51.589 align:start position:0%
which is slot one okay
that's<00:02:49.019><c> how</c><00:02:49.319><c> solidity</c><00:02:50.180><c> lays</c><00:02:51.180><c> out</c><00:02:51.360><c> storage</c>

00:02:51.589 --> 00:02:51.599 align:start position:0%
that's how solidity lays out storage
 

00:02:51.599 --> 00:02:54.290 align:start position:0%
that's how solidity lays out storage
automatically<00:02:52.319><c> when</c><00:02:52.680><c> you</c><00:02:52.860><c> declare</c><00:02:53.300><c> variables</c>

00:02:54.290 --> 00:02:54.300 align:start position:0%
automatically when you declare variables
 

00:02:54.300 --> 00:02:55.729 align:start position:0%
automatically when you declare variables
in<00:02:54.480><c> a</c><00:02:54.599><c> contract</c>

00:02:55.729 --> 00:02:55.739 align:start position:0%
in a contract
 

00:02:55.739 --> 00:02:59.270 align:start position:0%
in a contract
and<00:02:56.459><c> an</c><00:02:56.580><c> event</c><00:02:56.760><c> is</c><00:02:57.000><c> emitted</c><00:02:57.360><c> from</c><00:02:57.540><c> 0x1</c>

00:02:59.270 --> 00:02:59.280 align:start position:0%
and an event is emitted from 0x1
 

00:02:59.280 --> 00:03:00.890 align:start position:0%
and an event is emitted from 0x1
now<00:02:59.760><c> they</c><00:03:00.000><c> decide</c><00:03:00.300><c> to</c><00:03:00.360><c> make</c><00:03:00.480><c> their</c><00:03:00.660><c> contact</c>

00:03:00.890 --> 00:03:00.900 align:start position:0%
now they decide to make their contact
 

00:03:00.900 --> 00:03:03.369 align:start position:0%
now they decide to make their contact
upgradable<00:03:01.560><c> all</c><00:03:02.160><c> right</c><00:03:02.340><c> how</c><00:03:02.700><c> does</c><00:03:02.819><c> this</c><00:03:03.000><c> work</c>

00:03:03.369 --> 00:03:03.379 align:start position:0%
upgradable all right how does this work
 

00:03:03.379 --> 00:03:07.070 align:start position:0%
upgradable all right how does this work
they<00:03:04.379><c> they</c><00:03:05.160><c> decide</c><00:03:05.519><c> to</c><00:03:05.640><c> deploy</c><00:03:06.000><c> a</c><00:03:06.120><c> proxy</c><00:03:06.540><c> which</c>

00:03:07.070 --> 00:03:07.080 align:start position:0%
they they decide to deploy a proxy which
 

00:03:07.080 --> 00:03:09.050 align:start position:0%
they they decide to deploy a proxy which
is<00:03:07.200><c> just</c><00:03:07.379><c> a</c><00:03:07.560><c> function</c><00:03:07.860><c> a</c><00:03:08.099><c> contract</c><00:03:08.519><c> that</c><00:03:08.760><c> has</c><00:03:08.879><c> a</c>

00:03:09.050 --> 00:03:09.060 align:start position:0%
is just a function a contract that has a
 

00:03:09.060 --> 00:03:10.250 align:start position:0%
is just a function a contract that has a
function<00:03:09.300><c> you</c><00:03:09.480><c> can</c><00:03:09.599><c> tell</c><00:03:09.720><c> it</c><00:03:09.900><c> what</c><00:03:10.140><c> the</c>

00:03:10.250 --> 00:03:10.260 align:start position:0%
function you can tell it what the
 

00:03:10.260 --> 00:03:11.809 align:start position:0%
function you can tell it what the
current<00:03:10.440><c> implementation</c><00:03:11.040><c> is</c>

00:03:11.809 --> 00:03:11.819 align:start position:0%
current implementation is
 

00:03:11.819 --> 00:03:14.030 align:start position:0%
current implementation is
which<00:03:12.180><c> is</c><00:03:12.360><c> going</c><00:03:12.480><c> to</c><00:03:12.540><c> be</c><00:03:12.659><c> the</c><00:03:12.840><c> other</c><00:03:12.959><c> contract</c>

00:03:14.030 --> 00:03:14.040 align:start position:0%
which is going to be the other contract
 

00:03:14.040 --> 00:03:17.170 align:start position:0%
which is going to be the other contract
and<00:03:14.640><c> then</c><00:03:14.760><c> it</c><00:03:15.120><c> has</c><00:03:15.300><c> a</c><00:03:15.480><c> like</c><00:03:15.720><c> a</c><00:03:15.900><c> magic</c><00:03:16.080><c> assembly</c>

00:03:17.170 --> 00:03:17.180 align:start position:0%
and then it has a like a magic assembly
 

00:03:17.180 --> 00:03:20.390 align:start position:0%
and then it has a like a magic assembly
function<00:03:18.180><c> which</c><00:03:18.959><c> forwards</c><00:03:19.560><c> anything</c><00:03:19.800><c> using</c>

00:03:20.390 --> 00:03:20.400 align:start position:0%
function which forwards anything using
 

00:03:20.400 --> 00:03:23.270 align:start position:0%
function which forwards anything using
call<00:03:20.700><c> to</c><00:03:21.060><c> the</c><00:03:21.239><c> implementation</c><00:03:21.780><c> contract</c>

00:03:23.270 --> 00:03:23.280 align:start position:0%
call to the implementation contract
 

00:03:23.280 --> 00:03:26.390 align:start position:0%
call to the implementation contract
so<00:03:23.700><c> this</c><00:03:23.940><c> is</c><00:03:24.060><c> deployed</c><00:03:24.420><c> at</c><00:03:24.540><c> 0x2</c><00:03:25.620><c> then</c><00:03:26.159><c> Bob</c>

00:03:26.390 --> 00:03:26.400 align:start position:0%
so this is deployed at 0x2 then Bob
 

00:03:26.400 --> 00:03:29.390 align:start position:0%
so this is deployed at 0x2 then Bob
calls<00:03:26.879><c> set</c><00:03:27.060><c> implementation</c><00:03:27.659><c> 0x1</c>

00:03:29.390 --> 00:03:29.400 align:start position:0%
calls set implementation 0x1
 

00:03:29.400 --> 00:03:33.050 align:start position:0%
calls set implementation 0x1
and<00:03:30.120><c> in</c><00:03:30.780><c> the</c><00:03:30.900><c> proxy</c><00:03:31.319><c> storage</c><00:03:31.620><c> it's</c><00:03:32.400><c> not</c><00:03:32.640><c> zero</c>

00:03:33.050 --> 00:03:33.060 align:start position:0%
and in the proxy storage it's not zero
 

00:03:33.060 --> 00:03:35.690 align:start position:0%
and in the proxy storage it's not zero
now<00:03:33.300><c> holds</c><00:03:33.780><c> 0x1</c><00:03:34.440><c> because</c><00:03:34.739><c> the</c><00:03:35.580><c> address</c>

00:03:35.690 --> 00:03:35.700 align:start position:0%
now holds 0x1 because the address
 

00:03:35.700 --> 00:03:37.970 align:start position:0%
now holds 0x1 because the address
implementation<00:03:36.420><c> variable</c><00:03:36.900><c> is</c><00:03:37.319><c> declared</c><00:03:37.800><c> in</c>

00:03:37.970 --> 00:03:37.980 align:start position:0%
implementation variable is declared in
 

00:03:37.980 --> 00:03:40.850 align:start position:0%
implementation variable is declared in
slot<00:03:38.340><c> it's</c><00:03:38.760><c> the</c><00:03:38.940><c> first</c><00:03:39.120><c> one</c><00:03:39.659><c> declared</c><00:03:40.200><c> so</c><00:03:40.620><c> it's</c>

00:03:40.850 --> 00:03:40.860 align:start position:0%
slot it's the first one declared so it's
 

00:03:40.860 --> 00:03:43.430 align:start position:0%
slot it's the first one declared so it's
saved<00:03:41.760><c> in</c><00:03:41.879><c> slot</c><00:03:42.180><c> zero</c>

00:03:43.430 --> 00:03:43.440 align:start position:0%
saved in slot zero
 

00:03:43.440 --> 00:03:44.570 align:start position:0%
saved in slot zero
then

00:03:44.570 --> 00:03:44.580 align:start position:0%
then
 

00:03:44.580 --> 00:03:46.789 align:start position:0%
then
they're<00:03:45.360><c> now</c><00:03:45.480><c> connected</c><00:03:45.900><c> this</c><00:03:46.140><c> is</c><00:03:46.260><c> the</c><00:03:46.379><c> proxy</c>

00:03:46.789 --> 00:03:46.799 align:start position:0%
they're now connected this is the proxy
 

00:03:46.799 --> 00:03:49.550 align:start position:0%
they're now connected this is the proxy
and<00:03:47.340><c> this</c><00:03:47.459><c> is</c><00:03:47.580><c> implementation</c><00:03:48.260><c> and</c><00:03:49.260><c> block</c>

00:03:49.550 --> 00:03:49.560 align:start position:0%
and this is implementation and block
 

00:03:49.560 --> 00:03:51.890 align:start position:0%
and this is implementation and block
calls<00:03:50.040><c> value</c><00:03:50.280><c> right</c>

00:03:51.890 --> 00:03:51.900 align:start position:0%
calls value right
 

00:03:51.900 --> 00:03:55.130 align:start position:0%
calls value right
it<00:03:52.500><c> forwards</c><00:03:52.920><c> the</c><00:03:53.040><c> call</c><00:03:53.159><c> to</c><00:03:53.340><c> that</c><00:03:53.760><c> uh</c><00:03:54.599><c> implicit</c>

00:03:55.130 --> 00:03:55.140 align:start position:0%
it forwards the call to that uh implicit
 

00:03:55.140 --> 00:03:58.070 align:start position:0%
it forwards the call to that uh implicit
getter<00:03:55.560><c> that</c><00:03:55.799><c> solid</c><00:03:56.340><c> generates</c>

00:03:58.070 --> 00:03:58.080 align:start position:0%
getter that solid generates
 

00:03:58.080 --> 00:04:01.030 align:start position:0%
getter that solid generates
and<00:03:58.620><c> ever</c><00:03:58.860><c> since</c><00:03:59.159><c> return</c><00:03:59.640><c> 32</c><00:04:00.239><c> which</c><00:04:00.599><c> is</c>

00:04:01.030 --> 00:04:01.040 align:start position:0%
and ever since return 32 which is
 

00:04:01.040 --> 00:04:03.170 align:start position:0%
and ever since return 32 which is
expected<00:04:02.040><c> right</c>

00:04:03.170 --> 00:04:03.180 align:start position:0%
expected right
 

00:04:03.180 --> 00:04:05.149 align:start position:0%
expected right
yeah

00:04:05.149 --> 00:04:05.159 align:start position:0%
yeah
 

00:04:05.159 --> 00:04:08.690 align:start position:0%
yeah
now<00:04:05.760><c> uh</c><00:04:06.720><c> Bob</c><00:04:06.959><c> called</c><00:04:07.260><c> set</c><00:04:07.620><c> value</c><00:04:07.920><c> one</c><00:04:08.459><c> three</c>

00:04:08.690 --> 00:04:08.700 align:start position:0%
now uh Bob called set value one three
 

00:04:08.700 --> 00:04:12.170 align:start position:0%
now uh Bob called set value one three
three<00:04:08.940><c> seven</c><00:04:09.239><c> let's</c><00:04:10.080><c> see</c><00:04:10.319><c> what</c><00:04:10.439><c> happens</c><00:04:10.879><c> uh</c><00:04:11.879><c> it</c>

00:04:12.170 --> 00:04:12.180 align:start position:0%
three seven let's see what happens uh it
 

00:04:12.180 --> 00:04:14.390 align:start position:0%
three seven let's see what happens uh it
gets<00:04:12.480><c> forward</c><00:04:12.659><c> using</c><00:04:13.260><c> call</c>

00:04:14.390 --> 00:04:14.400 align:start position:0%
gets forward using call
 

00:04:14.400 --> 00:04:16.909 align:start position:0%
gets forward using call
to<00:04:14.700><c> the</c><00:04:15.659><c> set</c><00:04:15.959><c> value</c><00:04:16.199><c> function</c><00:04:16.620><c> in</c><00:04:16.739><c> the</c>

00:04:16.909 --> 00:04:16.919 align:start position:0%
to the set value function in the
 

00:04:16.919 --> 00:04:18.770 align:start position:0%
to the set value function in the
implementation

00:04:18.770 --> 00:04:18.780 align:start position:0%
implementation
 

00:04:18.780 --> 00:04:20.150 align:start position:0%
implementation
and

00:04:20.150 --> 00:04:20.160 align:start position:0%
and
 

00:04:20.160 --> 00:04:23.090 align:start position:0%
and
it<00:04:20.880><c> affects</c><00:04:21.660><c> the</c><00:04:21.840><c> storage</c><00:04:22.079><c> of</c><00:04:22.979><c> the</c>

00:04:23.090 --> 00:04:23.100 align:start position:0%
it affects the storage of the
 

00:04:23.100 --> 00:04:26.210 align:start position:0%
it affects the storage of the
implementation<00:04:23.639><c> not</c><00:04:24.540><c> of</c><00:04:24.780><c> the</c><00:04:24.900><c> proxy</c>

00:04:26.210 --> 00:04:26.220 align:start position:0%
implementation not of the proxy
 

00:04:26.220 --> 00:04:28.129 align:start position:0%
implementation not of the proxy
and<00:04:26.759><c> its</c><00:04:27.180><c> stores</c>

00:04:28.129 --> 00:04:28.139 align:start position:0%
and its stores
 

00:04:28.139 --> 00:04:31.310 align:start position:0%
and its stores
one<00:04:28.740><c> three</c><00:04:28.979><c> three</c><00:04:29.220><c> seven</c><00:04:29.520><c> in</c><00:04:29.940><c> slot</c><00:04:30.300><c> zero</c><00:04:30.660><c> and</c>

00:04:31.310 --> 00:04:31.320 align:start position:0%
one three three seven in slot zero and
 

00:04:31.320 --> 00:04:34.790 align:start position:0%
one three three seven in slot zero and
0x2<00:04:32.100><c> installed</c><00:04:33.300><c> uh</c><00:04:34.020><c> one</c>

00:04:34.790 --> 00:04:34.800 align:start position:0%
0x2 installed uh one
 

00:04:34.800 --> 00:04:38.150 align:start position:0%
0x2 installed uh one
that's<00:04:35.400><c> weird</c><00:04:35.639><c> right</c><00:04:36.000><c> that's</c><00:04:36.660><c> message</c><00:04:36.900><c> sender</c>

00:04:38.150 --> 00:04:38.160 align:start position:0%
that's weird right that's message sender
 

00:04:38.160 --> 00:04:39.409 align:start position:0%
that's weird right that's message sender
so

00:04:39.409 --> 00:04:39.419 align:start position:0%
so
 

00:04:39.419 --> 00:04:40.790 align:start position:0%
so
the

00:04:40.790 --> 00:04:40.800 align:start position:0%
the
 

00:04:40.800 --> 00:04:43.129 align:start position:0%
the
the<00:04:40.860><c> problem</c><00:04:41.340><c> that</c><00:04:41.699><c> we</c><00:04:41.880><c> have</c><00:04:42.000><c> here</c><00:04:42.360><c> is</c><00:04:42.900><c> that</c>

00:04:43.129 --> 00:04:43.139 align:start position:0%
the problem that we have here is that
 

00:04:43.139 --> 00:04:46.550 align:start position:0%
the problem that we have here is that
call<00:04:43.580><c> makes</c><00:04:44.580><c> the</c>

00:04:46.550 --> 00:04:46.560 align:start position:0%
call makes the
 

00:04:46.560 --> 00:04:49.070 align:start position:0%
call makes the
execution<00:04:47.280><c> context</c><00:04:47.820><c> to</c><00:04:48.180><c> be</c><00:04:48.360><c> the</c>

00:04:49.070 --> 00:04:49.080 align:start position:0%
execution context to be the
 

00:04:49.080 --> 00:04:50.870 align:start position:0%
execution context to be the
implementation<00:04:49.500><c> of</c><00:04:49.740><c> the</c><00:04:49.860><c> proxy</c><00:04:50.160><c> like</c><00:04:50.520><c> the</c>

00:04:50.870 --> 00:04:50.880 align:start position:0%
implementation of the proxy like the
 

00:04:50.880 --> 00:04:53.030 align:start position:0%
implementation of the proxy like the
event<00:04:51.000><c> is</c><00:04:51.240><c> submitted</c><00:04:51.660><c> from</c><00:04:51.900><c> the</c>

00:04:53.030 --> 00:04:53.040 align:start position:0%
event is submitted from the
 

00:04:53.040 --> 00:04:54.950 align:start position:0%
event is submitted from the
from<00:04:53.400><c> the</c><00:04:53.520><c> implementation</c><00:04:54.060><c> which</c><00:04:54.360><c> is</c><00:04:54.540><c> also</c>

00:04:54.950 --> 00:04:54.960 align:start position:0%
from the implementation which is also
 

00:04:54.960 --> 00:04:57.890 align:start position:0%
from the implementation which is also
not<00:04:55.080><c> a</c><00:04:55.320><c> good</c><00:04:55.440><c> thing</c><00:04:55.680><c> right</c><00:04:56.400><c> because</c><00:04:57.180><c> you</c><00:04:57.840><c> don't</c>

00:04:57.890 --> 00:04:57.900 align:start position:0%
not a good thing right because you don't
 

00:04:57.900 --> 00:04:59.629 align:start position:0%
not a good thing right because you don't
want<00:04:58.020><c> to</c><00:04:58.139><c> have</c><00:04:58.199><c> a</c><00:04:58.380><c> protocol</c><00:04:58.740><c> and</c><00:04:59.040><c> and</c><00:04:59.220><c> tell</c>

00:04:59.629 --> 00:04:59.639 align:start position:0%
want to have a protocol and and tell
 

00:04:59.639 --> 00:05:01.249 align:start position:0%
want to have a protocol and and tell
people<00:04:59.820><c> like</c><00:05:00.060><c> to</c><00:05:00.240><c> be</c><00:05:00.419><c> changing</c><00:05:00.780><c> addresses</c>

00:05:01.249 --> 00:05:01.259 align:start position:0%
people like to be changing addresses
 

00:05:01.259 --> 00:05:03.290 align:start position:0%
people like to be changing addresses
every<00:05:01.500><c> time</c><00:05:01.680><c> you</c><00:05:01.979><c> update</c><00:05:02.580><c> the</c><00:05:02.759><c> implementation</c>

00:05:03.290 --> 00:05:03.300 align:start position:0%
every time you update the implementation
 

00:05:03.300 --> 00:05:05.510 align:start position:0%
every time you update the implementation
right<00:05:03.600><c> so</c>

00:05:05.510 --> 00:05:05.520 align:start position:0%
right so
 

00:05:05.520 --> 00:05:07.670 align:start position:0%
right so
the<00:05:06.180><c> problem</c><00:05:06.300><c> that</c><00:05:06.600><c> we</c><00:05:06.840><c> have</c><00:05:06.960><c> with</c><00:05:07.380><c> this</c>

00:05:07.670 --> 00:05:07.680 align:start position:0%
the problem that we have with this
 

00:05:07.680 --> 00:05:10.189 align:start position:0%
the problem that we have with this
particular<00:05:08.100><c> proxy</c><00:05:08.580><c> that</c><00:05:08.940><c> uses</c><00:05:09.240><c> call</c><00:05:09.479><c> is</c><00:05:10.020><c> that</c>

00:05:10.189 --> 00:05:10.199 align:start position:0%
particular proxy that uses call is that
 

00:05:10.199 --> 00:05:12.830 align:start position:0%
particular proxy that uses call is that
the<00:05:10.320><c> execution</c><00:05:10.740><c> context</c><00:05:11.280><c> is</c><00:05:11.699><c> here</c><00:05:11.940><c> right</c><00:05:12.660><c> and</c>

00:05:12.830 --> 00:05:12.840 align:start position:0%
the execution context is here right and
 

00:05:12.840 --> 00:05:14.930 align:start position:0%
the execution context is here right and
we<00:05:13.080><c> don't</c><00:05:13.199><c> want</c><00:05:13.440><c> that</c>

00:05:14.930 --> 00:05:14.940 align:start position:0%
we don't want that
 

00:05:14.940 --> 00:05:17.150 align:start position:0%
we don't want that
so<00:05:15.300><c> what</c><00:05:15.419><c> is</c><00:05:15.600><c> an</c><00:05:15.720><c> execution</c><00:05:16.080><c> context</c><00:05:16.560><c> is</c><00:05:16.919><c> when</c>

00:05:17.150 --> 00:05:17.160 align:start position:0%
so what is an execution context is when
 

00:05:17.160 --> 00:05:20.210 align:start position:0%
so what is an execution context is when
you<00:05:17.280><c> run</c><00:05:17.460><c> code</c><00:05:17.900><c> basically</c><00:05:18.900><c> what</c><00:05:19.740><c> determines</c>

00:05:20.210 --> 00:05:20.220 align:start position:0%
you run code basically what determines
 

00:05:20.220 --> 00:05:25.129 align:start position:0%
you run code basically what determines
uh<00:05:21.180><c> which</c><00:05:21.540><c> storage</c><00:05:22.320><c> uh</c><00:05:23.160><c> space</c><00:05:23.460><c> to</c><00:05:23.699><c> use</c><00:05:23.960><c> uh</c><00:05:24.960><c> who</c>

00:05:25.129 --> 00:05:25.139 align:start position:0%
uh which storage uh space to use uh who
 

00:05:25.139 --> 00:05:27.010 align:start position:0%
uh which storage uh space to use uh who
message<00:05:25.380><c> sender</c><00:05:25.919><c> is</c>

00:05:27.010 --> 00:05:27.020 align:start position:0%
message sender is
 

00:05:27.020 --> 00:05:30.710 align:start position:0%
message sender is
and<00:05:28.020><c> where</c><00:05:28.259><c> emits</c><00:05:28.860><c> come</c><00:05:29.220><c> out</c><00:05:29.340><c> from</c><00:05:29.580><c> right</c>

00:05:30.710 --> 00:05:30.720 align:start position:0%
and where emits come out from right
 

00:05:30.720 --> 00:05:31.490 align:start position:0%
and where emits come out from right
um

00:05:31.490 --> 00:05:31.500 align:start position:0%
um
 

00:05:31.500 --> 00:05:33.290 align:start position:0%
um
there's<00:05:31.979><c> more</c><00:05:32.160><c> to</c><00:05:32.340><c> it</c><00:05:32.460><c> but</c><00:05:32.639><c> that's</c><00:05:32.880><c> like</c>

00:05:33.290 --> 00:05:33.300 align:start position:0%
there's more to it but that's like
 

00:05:33.300 --> 00:05:35.629 align:start position:0%
there's more to it but that's like
pretty<00:05:33.840><c> much</c><00:05:34.020><c> it</c>

00:05:35.629 --> 00:05:35.639 align:start position:0%
pretty much it
 

00:05:35.639 --> 00:05:38.930 align:start position:0%
pretty much it
so<00:05:36.660><c> how</c><00:05:37.259><c> can</c><00:05:37.380><c> we</c><00:05:37.560><c> take</c><00:05:37.740><c> the</c><00:05:37.919><c> proxy</c><00:05:38.340><c> the</c>

00:05:38.930 --> 00:05:38.940 align:start position:0%
so how can we take the proxy the
 

00:05:38.940 --> 00:05:41.930 align:start position:0%
so how can we take the proxy the
execution<00:05:39.539><c> context</c><00:05:40.020><c> to</c><00:05:40.199><c> the</c><00:05:40.320><c> proxy</c><00:05:41.220><c> we</c><00:05:41.820><c> just</c>

00:05:41.930 --> 00:05:41.940 align:start position:0%
execution context to the proxy we just
 

00:05:41.940 --> 00:05:44.210 align:start position:0%
execution context to the proxy we just
need<00:05:42.240><c> to</c><00:05:42.360><c> use</c><00:05:42.479><c> delegate</c><00:05:43.080><c> call</c>

00:05:44.210 --> 00:05:44.220 align:start position:0%
need to use delegate call
 

00:05:44.220 --> 00:05:46.550 align:start position:0%
need to use delegate call
so<00:05:44.699><c> call</c><00:05:44.940><c> wants</c><00:05:45.479><c> the</c><00:05:45.600><c> code</c><00:05:45.780><c> that</c><00:05:46.139><c> we're</c>

00:05:46.550 --> 00:05:46.560 align:start position:0%
so call wants the code that we're
 

00:05:46.560 --> 00:05:48.830 align:start position:0%
so call wants the code that we're
running<00:05:46.740><c> in</c><00:05:47.100><c> the</c><00:05:47.280><c> current</c><00:05:47.520><c> context</c><00:05:48.060><c> and</c>

00:05:48.830 --> 00:05:48.840 align:start position:0%
running in the current context and
 

00:05:48.840 --> 00:05:50.990 align:start position:0%
running in the current context and
delegate<00:05:49.380><c> call</c><00:05:49.620><c> runs</c><00:05:50.340><c> the</c><00:05:50.460><c> code</c><00:05:50.639><c> in</c><00:05:50.880><c> the</c>

00:05:50.990 --> 00:05:51.000 align:start position:0%
delegate call runs the code in the
 

00:05:51.000 --> 00:05:54.830 align:start position:0%
delegate call runs the code in the
context<00:05:51.360><c> of</c><00:05:51.720><c> the</c><00:05:52.020><c> caller</c><00:05:52.440><c> right</c><00:05:52.919><c> so</c><00:05:53.880><c> here</c><00:05:54.660><c> we</c>

00:05:54.830 --> 00:05:54.840 align:start position:0%
context of the caller right so here we
 

00:05:54.840 --> 00:05:59.270 align:start position:0%
context of the caller right so here we
have<00:05:54.960><c> a</c><00:05:55.259><c> second</c><00:05:55.380><c> proxy</c><00:05:56.160><c> right</c><00:05:56.880><c> which</c><00:05:57.780><c> is</c><00:05:58.680><c> the</c>

00:05:59.270 --> 00:05:59.280 align:start position:0%
have a second proxy right which is the
 

00:05:59.280 --> 00:06:00.950 align:start position:0%
have a second proxy right which is the
only<00:05:59.340><c> difference</c><00:05:59.580><c> is</c><00:05:59.940><c> that</c><00:06:00.060><c> it</c><00:06:00.240><c> uses</c><00:06:00.479><c> delicate</c>

00:06:00.950 --> 00:06:00.960 align:start position:0%
only difference is that it uses delicate
 

00:06:00.960 --> 00:06:02.570 align:start position:0%
only difference is that it uses delicate
call<00:06:01.199><c> right</c>

00:06:02.570 --> 00:06:02.580 align:start position:0%
call right
 

00:06:02.580 --> 00:06:05.629 align:start position:0%
call right
it's<00:06:03.120><c> deployed</c><00:06:03.600><c> at</c><00:06:03.780><c> zero</c><00:06:04.080><c> three</c><00:06:04.259><c> zero</c><00:06:04.680><c> X3</c>

00:06:05.629 --> 00:06:05.639 align:start position:0%
it's deployed at zero three zero X3
 

00:06:05.639 --> 00:06:07.430 align:start position:0%
it's deployed at zero three zero X3
it's<00:06:06.240><c> connected</c>

00:06:07.430 --> 00:06:07.440 align:start position:0%
it's connected
 

00:06:07.440 --> 00:06:09.230 align:start position:0%
it's connected
to<00:06:07.860><c> the</c><00:06:08.039><c> implementation</c><00:06:08.460><c> the</c><00:06:08.759><c> same</c><00:06:08.940><c> one</c><00:06:09.060><c> as</c>

00:06:09.230 --> 00:06:09.240 align:start position:0%
to the implementation the same one as
 

00:06:09.240 --> 00:06:12.170 align:start position:0%
to the implementation the same one as
before<00:06:09.419><c> and</c><00:06:10.199><c> now</c><00:06:10.500><c> when</c><00:06:10.919><c> Bob</c><00:06:11.280><c> calls</c><00:06:11.759><c> set</c><00:06:11.940><c> value</c>

00:06:12.170 --> 00:06:12.180 align:start position:0%
before and now when Bob calls set value
 

00:06:12.180 --> 00:06:14.029 align:start position:0%
before and now when Bob calls set value
one<00:06:12.419><c> three</c><00:06:12.660><c> three</c><00:06:12.840><c> seven</c>

00:06:14.029 --> 00:06:14.039 align:start position:0%
one three three seven
 

00:06:14.039 --> 00:06:16.129 align:start position:0%
one three three seven
it<00:06:14.520><c> uses</c><00:06:14.759><c> delay</c><00:06:15.060><c> core</c><00:06:15.419><c> so</c><00:06:15.660><c> the</c><00:06:15.780><c> execution</c>

00:06:16.129 --> 00:06:16.139 align:start position:0%
it uses delay core so the execution
 

00:06:16.139 --> 00:06:18.770 align:start position:0%
it uses delay core so the execution
context<00:06:16.620><c> is</c><00:06:16.860><c> this</c><00:06:17.100><c> right</c>

00:06:18.770 --> 00:06:18.780 align:start position:0%
context is this right
 

00:06:18.780 --> 00:06:21.050 align:start position:0%
context is this right
we<00:06:19.259><c> are</c><00:06:19.440><c> using</c><00:06:19.740><c> the</c><00:06:20.160><c> storage</c><00:06:20.340><c> space</c><00:06:20.699><c> of</c><00:06:20.940><c> the</c>

00:06:21.050 --> 00:06:21.060 align:start position:0%
we are using the storage space of the
 

00:06:21.060 --> 00:06:23.210 align:start position:0%
we are using the storage space of the
proxy<00:06:21.479><c> which</c><00:06:21.840><c> is</c><00:06:21.960><c> good</c>

00:06:23.210 --> 00:06:23.220 align:start position:0%
proxy which is good
 

00:06:23.220 --> 00:06:26.029 align:start position:0%
proxy which is good
the<00:06:23.639><c> event</c><00:06:23.759><c> is</c><00:06:24.120><c> coming</c><00:06:24.360><c> from</c><00:06:24.720><c> the</c><00:06:25.020><c> proxy</c><00:06:25.800><c> which</c>

00:06:26.029 --> 00:06:26.039 align:start position:0%
the event is coming from the proxy which
 

00:06:26.039 --> 00:06:28.010 align:start position:0%
the event is coming from the proxy which
is<00:06:26.160><c> good</c>

00:06:28.010 --> 00:06:28.020 align:start position:0%
is good
 

00:06:28.020 --> 00:06:31.969 align:start position:0%
is good
uh<00:06:29.160><c> now</c><00:06:29.699><c> Bob</c><00:06:30.060><c> calls</c><00:06:30.600><c> value</c><00:06:30.840><c> like</c><00:06:31.440><c> the</c><00:06:31.680><c> getter</c>

00:06:31.969 --> 00:06:31.979 align:start position:0%
uh now Bob calls value like the getter
 

00:06:31.979 --> 00:06:33.830 align:start position:0%
uh now Bob calls value like the getter
right

00:06:33.830 --> 00:06:33.840 align:start position:0%
right
 

00:06:33.840 --> 00:06:36.230 align:start position:0%
right
the<00:06:34.199><c> execution</c><00:06:34.560><c> context</c><00:06:34.979><c> is</c><00:06:35.280><c> still</c><00:06:35.520><c> that</c><00:06:35.759><c> it's</c>

00:06:36.230 --> 00:06:36.240 align:start position:0%
the execution context is still that it's
 

00:06:36.240 --> 00:06:38.270 align:start position:0%
the execution context is still that it's
fine<00:06:36.539><c> now</c>

00:06:38.270 --> 00:06:38.280 align:start position:0%
fine now
 

00:06:38.280 --> 00:06:40.370 align:start position:0%
fine now
this<00:06:38.819><c> is</c><00:06:38.940><c> gonna</c><00:06:39.120><c> delegate</c><00:06:39.780><c> call</c><00:06:39.960><c> to</c><00:06:40.139><c> whatever</c>

00:06:40.370 --> 00:06:40.380 align:start position:0%
this is gonna delegate call to whatever
 

00:06:40.380 --> 00:06:43.670 align:start position:0%
this is gonna delegate call to whatever
is<00:06:40.800><c> stored</c><00:06:41.160><c> in</c><00:06:41.220><c> the</c><00:06:41.400><c> implementation</c><00:06:41.880><c> and</c><00:06:43.259><c> the</c>

00:06:43.670 --> 00:06:43.680 align:start position:0%
is stored in the implementation and the
 

00:06:43.680 --> 00:06:46.129 align:start position:0%
is stored in the implementation and the
implementation<00:06:44.100><c> is</c><00:06:44.340><c> in</c><00:06:44.580><c> slot</c><00:06:45.060><c> zero</c><00:06:45.479><c> and</c><00:06:45.900><c> the</c>

00:06:46.129 --> 00:06:46.139 align:start position:0%
implementation is in slot zero and the
 

00:06:46.139 --> 00:06:48.890 align:start position:0%
implementation is in slot zero and the
value<00:06:46.680><c> now</c><00:06:46.919><c> holds</c><00:06:47.340><c> one</c><00:06:47.520><c> three</c><00:06:47.759><c> three</c><00:06:48.000><c> seven</c>

00:06:48.890 --> 00:06:48.900 align:start position:0%
value now holds one three three seven
 

00:06:48.900 --> 00:06:52.490 align:start position:0%
value now holds one three three seven
right<00:06:49.319><c> so</c><00:06:49.919><c> what</c><00:06:50.220><c> are</c><00:06:50.340><c> we</c><00:06:50.460><c> delegating</c><00:06:50.880><c> call</c><00:06:51.240><c> to</c>

00:06:52.490 --> 00:06:52.500 align:start position:0%
right so what are we delegating call to
 

00:06:52.500 --> 00:06:54.710 align:start position:0%
right so what are we delegating call to
to<00:06:52.740><c> some</c><00:06:53.039><c> contract</c><00:06:53.520><c> at</c><00:06:54.060><c> one</c><00:06:54.240><c> three</c><00:06:54.479><c> three</c>

00:06:54.710 --> 00:06:54.720 align:start position:0%
to some contract at one three three
 

00:06:54.720 --> 00:06:57.110 align:start position:0%
to some contract at one three three
seven<00:06:55.100><c> which</c><00:06:56.100><c> there's</c><00:06:56.580><c> probably</c><00:06:56.819><c> nothing</c>

00:06:57.110 --> 00:06:57.120 align:start position:0%
seven which there's probably nothing
 

00:06:57.120 --> 00:07:01.550 align:start position:0%
seven which there's probably nothing
there<00:06:57.539><c> right</c><00:06:58.500><c> so</c><00:06:59.340><c> we</c><00:06:59.880><c> just</c><00:07:00.120><c> we</c><00:07:00.840><c> have</c><00:07:01.199><c> a</c><00:07:01.380><c> storage</c>

00:07:01.550 --> 00:07:01.560 align:start position:0%
there right so we just we have a storage
 

00:07:01.560 --> 00:07:03.469 align:start position:0%
there right so we just we have a storage
Collision<00:07:02.100><c> right</c>

00:07:03.469 --> 00:07:03.479 align:start position:0%
Collision right
 

00:07:03.479 --> 00:07:06.050 align:start position:0%
Collision right
we<00:07:04.380><c> overwrote</c><00:07:05.039><c> the</c><00:07:05.520><c> address</c><00:07:05.639><c> of</c><00:07:05.940><c> the</c>

00:07:06.050 --> 00:07:06.060 align:start position:0%
we overwrote the address of the
 

00:07:06.060 --> 00:07:07.370 align:start position:0%
we overwrote the address of the
implementation

00:07:07.370 --> 00:07:07.380 align:start position:0%
implementation
 

00:07:07.380 --> 00:07:11.270 align:start position:0%
implementation
with<00:07:08.039><c> a</c><00:07:08.280><c> number</c><00:07:08.940><c> right</c><00:07:09.780><c> so</c><00:07:10.620><c> we</c><00:07:10.919><c> basically</c>

00:07:11.270 --> 00:07:11.280 align:start position:0%
with a number right so we basically
 

00:07:11.280 --> 00:07:15.050 align:start position:0%
with a number right so we basically
bricked<00:07:12.000><c> this</c><00:07:12.479><c> proxy</c><00:07:12.900><c> right</c><00:07:13.500><c> so</c><00:07:14.340><c> daily</c><00:07:14.580><c> call</c>

00:07:15.050 --> 00:07:15.060 align:start position:0%
bricked this proxy right so daily call
 

00:07:15.060 --> 00:07:17.570 align:start position:0%
bricked this proxy right so daily call
is<00:07:15.360><c> awesome</c><00:07:15.660><c> but</c><00:07:16.259><c> it</c><00:07:16.560><c> is</c><00:07:16.740><c> dangerous</c><00:07:17.160><c> because</c>

00:07:17.570 --> 00:07:17.580 align:start position:0%
is awesome but it is dangerous because
 

00:07:17.580 --> 00:07:20.330 align:start position:0%
is awesome but it is dangerous because
you<00:07:17.880><c> have</c><00:07:18.060><c> storage</c><00:07:18.300><c> collisions</c>

00:07:20.330 --> 00:07:20.340 align:start position:0%
you have storage collisions
 

00:07:20.340 --> 00:07:23.029 align:start position:0%
you have storage collisions
so<00:07:21.120><c> to</c><00:07:21.720><c> solve</c><00:07:22.020><c> this</c>

00:07:23.029 --> 00:07:23.039 align:start position:0%
so to solve this
 

00:07:23.039 --> 00:07:27.230 align:start position:0%
so to solve this
Bob<00:07:23.759><c> goes</c><00:07:24.360><c> to</c><00:07:24.479><c> the</c><00:07:24.720><c> next</c><00:07:24.900><c> level</c><00:07:25.080><c> and</c><00:07:25.620><c> and</c><00:07:26.520><c> these</c>

00:07:27.230 --> 00:07:27.240 align:start position:0%
Bob goes to the next level and and these
 

00:07:27.240 --> 00:07:29.629 align:start position:0%
Bob goes to the next level and and these
structures<00:07:27.599><c> the</c><00:07:27.840><c> proxy</c><00:07:28.259><c> storage</c><00:07:28.500><c> so</c><00:07:29.160><c> what</c><00:07:29.520><c> is</c>

00:07:29.629 --> 00:07:29.639 align:start position:0%
structures the proxy storage so what is
 

00:07:29.639 --> 00:07:32.510 align:start position:0%
structures the proxy storage so what is
this<00:07:29.819><c> structuring</c><00:07:30.780><c> it's</c><00:07:31.319><c> basically</c>

00:07:32.510 --> 00:07:32.520 align:start position:0%
this structuring it's basically
 

00:07:32.520 --> 00:07:34.490 align:start position:0%
this structuring it's basically
choosing<00:07:33.120><c> where</c><00:07:33.419><c> to</c><00:07:33.539><c> put</c><00:07:33.720><c> to</c><00:07:33.900><c> put</c><00:07:34.080><c> to</c><00:07:34.319><c> store</c>

00:07:34.490 --> 00:07:34.500 align:start position:0%
choosing where to put to put to store
 

00:07:34.500 --> 00:07:37.010 align:start position:0%
choosing where to put to put to store
something<00:07:34.800><c> that's</c><00:07:35.099><c> it</c><00:07:35.340><c> it's</c><00:07:36.300><c> not</c><00:07:36.539><c> using</c>

00:07:37.010 --> 00:07:37.020 align:start position:0%
something that's it it's not using
 

00:07:37.020 --> 00:07:39.350 align:start position:0%
something that's it it's not using
solitaire's<00:07:37.860><c> custom</c><00:07:38.400><c> slots</c><00:07:38.819><c> but</c><00:07:39.120><c> just</c>

00:07:39.350 --> 00:07:39.360 align:start position:0%
solitaire's custom slots but just
 

00:07:39.360 --> 00:07:41.749 align:start position:0%
solitaire's custom slots but just
choosing<00:07:39.720><c> where</c><00:07:39.900><c> you</c><00:07:40.080><c> put</c><00:07:40.199><c> it</c>

00:07:41.749 --> 00:07:41.759 align:start position:0%
choosing where you put it
 

00:07:41.759 --> 00:07:43.550 align:start position:0%
choosing where you put it
um

00:07:43.550 --> 00:07:43.560 align:start position:0%
um
 

00:07:43.560 --> 00:07:46.189 align:start position:0%
um
so<00:07:44.099><c> for</c><00:07:44.460><c> solidity</c><00:07:45.000><c> first</c><00:07:45.240><c> variable</c><00:07:45.660><c> is</c><00:07:45.960><c> it</c>

00:07:46.189 --> 00:07:46.199 align:start position:0%
so for solidity first variable is it
 

00:07:46.199 --> 00:07:49.969 align:start position:0%
so for solidity first variable is it
zero<00:07:46.620><c> second</c><00:07:47.220><c> at</c><00:07:47.520><c> one</c><00:07:48.000><c> Etc</c><00:07:48.440><c> and</c><00:07:49.440><c> you</c><00:07:49.860><c> have</c>

00:07:49.969 --> 00:07:49.979 align:start position:0%
zero second at one Etc and you have
 

00:07:49.979 --> 00:07:51.469 align:start position:0%
zero second at one Etc and you have
infinite<00:07:50.400><c> slots</c>

00:07:51.469 --> 00:07:51.479 align:start position:0%
infinite slots
 

00:07:51.479 --> 00:07:54.110 align:start position:0%
infinite slots
destruction<00:07:52.259><c> is</c><00:07:53.220><c> just</c><00:07:53.400><c> picking</c><00:07:53.819><c> a</c><00:07:53.940><c> custom</c>

00:07:54.110 --> 00:07:54.120 align:start position:0%
destruction is just picking a custom
 

00:07:54.120 --> 00:07:57.290 align:start position:0%
destruction is just picking a custom
slot<00:07:54.599><c> right</c><00:07:55.319><c> so</c><00:07:55.919><c> we</c><00:07:56.340><c> have</c><00:07:56.460><c> the</c><00:07:56.699><c> third</c><00:07:56.819><c> proxy</c>

00:07:57.290 --> 00:07:57.300 align:start position:0%
slot right so we have the third proxy
 

00:07:57.300 --> 00:07:59.930 align:start position:0%
slot right so we have the third proxy
here<00:07:57.479><c> is</c><00:07:57.780><c> called</c><00:07:58.020><c> unstructured</c><00:07:58.740><c> proxy</c><00:07:59.160><c> and</c>

00:07:59.930 --> 00:07:59.940 align:start position:0%
here is called unstructured proxy and
 

00:07:59.940 --> 00:08:03.050 align:start position:0%
here is called unstructured proxy and
the<00:08:00.360><c> difference</c><00:08:00.539><c> is</c><00:08:01.139><c> that</c><00:08:02.099><c> we</c><00:08:02.280><c> are</c><00:08:02.460><c> not</c><00:08:02.699><c> using</c>

00:08:03.050 --> 00:08:03.060 align:start position:0%
the difference is that we are not using
 

00:08:03.060 --> 00:08:05.570 align:start position:0%
the difference is that we are not using
solidities<00:08:03.660><c> like</c><00:08:04.020><c> regular</c><00:08:04.740><c> storage</c><00:08:05.099><c> slots</c>

00:08:05.570 --> 00:08:05.580 align:start position:0%
solidities like regular storage slots
 

00:08:05.580 --> 00:08:07.629 align:start position:0%
solidities like regular storage slots
but<00:08:06.360><c> we</c><00:08:06.599><c> are</c>

00:08:07.629 --> 00:08:07.639 align:start position:0%
but we are
 

00:08:07.639 --> 00:08:09.469 align:start position:0%
but we are
declaring

00:08:09.469 --> 00:08:09.479 align:start position:0%
declaring
 

00:08:09.479 --> 00:08:13.610 align:start position:0%
declaring
where<00:08:09.960><c> we</c><00:08:10.139><c> store</c><00:08:10.319><c> things</c><00:08:10.560><c> at</c><00:08:10.979><c> slot</c><00:08:11.340><c> 1000</c><00:08:12.419><c> right</c>

00:08:13.610 --> 00:08:13.620 align:start position:0%
where we store things at slot 1000 right
 

00:08:13.620 --> 00:08:16.189 align:start position:0%
where we store things at slot 1000 right
and<00:08:13.919><c> using</c><00:08:14.340><c> that</c><00:08:14.520><c> the</c><00:08:15.240><c> the</c><00:08:15.360><c> code</c><00:08:15.720><c> looks</c><00:08:16.080><c> a</c>

00:08:16.189 --> 00:08:16.199 align:start position:0%
and using that the the code looks a
 

00:08:16.199 --> 00:08:19.790 align:start position:0%
and using that the the code looks a
little<00:08:16.319><c> bit</c><00:08:16.440><c> weirder</c><00:08:16.919><c> but</c><00:08:17.220><c> that's</c><00:08:17.460><c> it</c>

00:08:19.790 --> 00:08:19.800 align:start position:0%
 
 

00:08:19.800 --> 00:08:22.070 align:start position:0%
 
so<00:08:20.340><c> we</c><00:08:20.580><c> deploy</c><00:08:20.879><c> this</c><00:08:21.060><c> proxies</c><00:08:21.479><c> he</c><00:08:21.720><c> works</c><00:08:21.960><c> for</c>

00:08:22.070 --> 00:08:22.080 align:start position:0%
so we deploy this proxies he works for
 

00:08:22.080 --> 00:08:25.369 align:start position:0%
so we deploy this proxies he works for
we<00:08:22.919><c> connect</c><00:08:23.039><c> it</c><00:08:23.220><c> to</c><00:08:23.340><c> the</c><00:08:23.460><c> implementation</c><00:08:24.000><c> oh</c>

00:08:25.369 --> 00:08:25.379 align:start position:0%
we connect it to the implementation oh
 

00:08:25.379 --> 00:08:27.529 align:start position:0%
we connect it to the implementation oh
this<00:08:25.860><c> is</c><00:08:25.979><c> important</c><00:08:26.220><c> can</c><00:08:27.120><c> you</c><00:08:27.240><c> see</c><00:08:27.360><c> the</c>

00:08:27.529 --> 00:08:27.539 align:start position:0%
this is important can you see the
 

00:08:27.539 --> 00:08:29.450 align:start position:0%
this is important can you see the
storage<00:08:27.780><c> it's</c>

00:08:29.450 --> 00:08:29.460 align:start position:0%
storage it's
 

00:08:29.460 --> 00:08:32.209 align:start position:0%
storage it's
the<00:08:30.300><c> implementation</c><00:08:30.840><c> address</c><00:08:31.080><c> is</c><00:08:31.620><c> stored</c><00:08:31.979><c> at</c>

00:08:32.209 --> 00:08:32.219 align:start position:0%
the implementation address is stored at
 

00:08:32.219 --> 00:08:35.089 align:start position:0%
the implementation address is stored at
the<00:08:32.459><c> custom</c><00:08:32.640><c> slot</c><00:08:33.120><c> of</c><00:08:33.360><c> 1000.</c>

00:08:35.089 --> 00:08:35.099 align:start position:0%
the custom slot of 1000.
 

00:08:35.099 --> 00:08:38.089 align:start position:0%
the custom slot of 1000.
so<00:08:35.580><c> that's</c><00:08:35.820><c> destructured</c><00:08:36.719><c> right</c><00:08:36.959><c> now</c>

00:08:38.089 --> 00:08:38.099 align:start position:0%
so that's destructured right now
 

00:08:38.099 --> 00:08:40.969 align:start position:0%
so that's destructured right now
so<00:08:38.640><c> now</c><00:08:39.000><c> we</c><00:08:39.300><c> call</c><00:08:39.479><c> set</c><00:08:39.779><c> value</c>

00:08:40.969 --> 00:08:40.979 align:start position:0%
so now we call set value
 

00:08:40.979 --> 00:08:42.949 align:start position:0%
so now we call set value
it<00:08:41.339><c> makes</c><00:08:41.399><c> a</c><00:08:41.580><c> delegate</c><00:08:42.000><c> call</c>

00:08:42.949 --> 00:08:42.959 align:start position:0%
it makes a delegate call
 

00:08:42.959 --> 00:08:45.050 align:start position:0%
it makes a delegate call
the<00:08:43.260><c> execution</c><00:08:43.620><c> context</c><00:08:44.039><c> is</c><00:08:44.219><c> that</c>

00:08:45.050 --> 00:08:45.060 align:start position:0%
the execution context is that
 

00:08:45.060 --> 00:08:47.810 align:start position:0%
the execution context is that
we<00:08:45.720><c> write</c><00:08:45.959><c> the</c><00:08:46.200><c> new</c><00:08:46.380><c> value</c><00:08:46.620><c> values</c><00:08:47.279><c> but</c><00:08:47.580><c> they</c>

00:08:47.810 --> 00:08:47.820 align:start position:0%
we write the new value values but they
 

00:08:47.820 --> 00:08:50.810 align:start position:0%
we write the new value values but they
don't<00:08:48.060><c> like</c><00:08:48.899><c> step</c><00:08:49.560><c> over</c><00:08:49.920><c> let's</c><00:08:50.459><c> say</c><00:08:50.580><c> the</c>

00:08:50.810 --> 00:08:50.820 align:start position:0%
don't like step over let's say the
 

00:08:50.820 --> 00:08:52.550 align:start position:0%
don't like step over let's say the
implementation<00:08:51.300><c> address</c>

00:08:52.550 --> 00:08:52.560 align:start position:0%
implementation address
 

00:08:52.560 --> 00:08:54.590 align:start position:0%
implementation address
right<00:08:53.100><c> and</c><00:08:53.339><c> the</c><00:08:53.519><c> event</c><00:08:53.640><c> comes</c><00:08:54.000><c> from</c><00:08:54.180><c> from</c><00:08:54.420><c> the</c>

00:08:54.590 --> 00:08:54.600 align:start position:0%
right and the event comes from from the
 

00:08:54.600 --> 00:08:56.030 align:start position:0%
right and the event comes from from the
proxy<00:08:54.959><c> which</c><00:08:55.200><c> is</c><00:08:55.320><c> fine</c>

00:08:56.030 --> 00:08:56.040 align:start position:0%
proxy which is fine
 

00:08:56.040 --> 00:09:00.230 align:start position:0%
proxy which is fine
so<00:08:56.700><c> we</c><00:08:57.060><c> have</c><00:08:57.120><c> a</c><00:08:57.300><c> proxy</c><00:08:57.720><c> that</c><00:08:58.080><c> works</c><00:08:58.500><c> right</c>

00:09:00.230 --> 00:09:00.240 align:start position:0%
so we have a proxy that works right
 

00:09:00.240 --> 00:09:02.150 align:start position:0%
so we have a proxy that works right
and

00:09:02.150 --> 00:09:02.160 align:start position:0%
and
 

00:09:02.160 --> 00:09:03.769 align:start position:0%
and
now<00:09:02.700><c> we</c><00:09:02.820><c> can</c><00:09:02.940><c> upgrade</c><00:09:03.180><c> the</c><00:09:03.360><c> implementation</c>

00:09:03.769 --> 00:09:03.779 align:start position:0%
now we can upgrade the implementation
 

00:09:03.779 --> 00:09:06.470 align:start position:0%
now we can upgrade the implementation
because<00:09:04.019><c> we</c><00:09:04.260><c> we</c><00:09:04.440><c> know</c><00:09:04.560><c> that</c><00:09:04.740><c> it</c><00:09:04.920><c> works</c><00:09:05.580><c> so</c><00:09:06.120><c> we</c>

00:09:06.470 --> 00:09:06.480 align:start position:0%
because we we know that it works so we
 

00:09:06.480 --> 00:09:08.990 align:start position:0%
because we we know that it works so we
have<00:09:06.660><c> value</c><00:09:06.899><c> holder</c><00:09:07.380><c> V2</c><00:09:07.740><c> the</c><00:09:08.519><c> only</c><00:09:08.700><c> difference</c>

00:09:08.990 --> 00:09:09.000 align:start position:0%
have value holder V2 the only difference
 

00:09:09.000 --> 00:09:11.389 align:start position:0%
have value holder V2 the only difference
is<00:09:09.480><c> that</c><00:09:09.779><c> we</c><00:09:09.959><c> added</c><00:09:10.260><c> a</c><00:09:10.380><c> new</c><00:09:10.500><c> variable</c><00:09:10.860><c> called</c>

00:09:11.389 --> 00:09:11.399 align:start position:0%
is that we added a new variable called
 

00:09:11.399 --> 00:09:14.870 align:start position:0%
is that we added a new variable called
dates<00:09:11.760><c> right</c><00:09:12.420><c> just</c><00:09:13.260><c> added</c><00:09:13.620><c> it</c><00:09:13.740><c> on</c><00:09:13.860><c> top</c>

00:09:14.870 --> 00:09:14.880 align:start position:0%
dates right just added it on top
 

00:09:14.880 --> 00:09:17.690 align:start position:0%
dates right just added it on top
uh<00:09:15.720><c> and</c><00:09:16.019><c> just</c><00:09:16.260><c> whenever</c><00:09:16.860><c> someone</c><00:09:17.160><c> sets</c><00:09:17.640><c> the</c>

00:09:17.690 --> 00:09:17.700 align:start position:0%
uh and just whenever someone sets the
 

00:09:17.700 --> 00:09:20.389 align:start position:0%
uh and just whenever someone sets the
value<00:09:17.880><c> we</c><00:09:18.180><c> also</c><00:09:18.480><c> record</c><00:09:18.680><c> record</c><00:09:19.680><c> when</c><00:09:20.160><c> that</c>

00:09:20.389 --> 00:09:20.399 align:start position:0%
value we also record record when that
 

00:09:20.399 --> 00:09:23.930 align:start position:0%
value we also record record when that
happened<00:09:20.580><c> right</c>

00:09:23.930 --> 00:09:23.940 align:start position:0%
 
 

00:09:23.940 --> 00:09:26.990 align:start position:0%
 
so<00:09:24.480><c> now</c><00:09:24.660><c> we</c><00:09:24.959><c> connect</c><00:09:25.140><c> the</c><00:09:25.380><c> implementation</c><00:09:26.000><c> we</c>

00:09:26.990 --> 00:09:27.000 align:start position:0%
so now we connect the implementation we
 

00:09:27.000 --> 00:09:29.210 align:start position:0%
so now we connect the implementation we
call<00:09:27.180><c> Value</c><00:09:27.540><c> right</c>

00:09:29.210 --> 00:09:29.220 align:start position:0%
call Value right
 

00:09:29.220 --> 00:09:32.690 align:start position:0%
call Value right
a<00:09:29.760><c> delegate</c><00:09:30.240><c> calls</c>

00:09:32.690 --> 00:09:32.700 align:start position:0%
a delegate calls
 

00:09:32.700 --> 00:09:36.590 align:start position:0%
a delegate calls
and<00:09:33.600><c> value</c><00:09:34.260><c> is</c><00:09:34.860><c> whatever</c><00:09:35.459><c> is</c><00:09:35.760><c> stored</c><00:09:36.060><c> at</c><00:09:36.240><c> slot</c>

00:09:36.590 --> 00:09:36.600 align:start position:0%
and value is whatever is stored at slot
 

00:09:36.600 --> 00:09:39.230 align:start position:0%
and value is whatever is stored at slot
one<00:09:36.779><c> right</c><00:09:37.140><c> according</c><00:09:37.800><c> to</c><00:09:38.100><c> solidity</c><00:09:38.940><c> storage</c>

00:09:39.230 --> 00:09:39.240 align:start position:0%
one right according to solidity storage
 

00:09:39.240 --> 00:09:40.250 align:start position:0%
one right according to solidity storage
layout

00:09:40.250 --> 00:09:40.260 align:start position:0%
layout
 

00:09:40.260 --> 00:09:44.329 align:start position:0%
layout
and<00:09:40.980><c> at</c><00:09:41.399><c> one</c><00:09:41.580><c> we</c><00:09:41.880><c> have</c><00:09:42.000><c> coax</c><00:09:42.480><c> pop</c><00:09:42.779><c> so</c>

00:09:44.329 --> 00:09:44.339 align:start position:0%
and at one we have coax pop so
 

00:09:44.339 --> 00:09:46.250 align:start position:0%
and at one we have coax pop so
another<00:09:44.640><c> problem</c>

00:09:46.250 --> 00:09:46.260 align:start position:0%
another problem
 

00:09:46.260 --> 00:09:47.269 align:start position:0%
another problem
um

00:09:47.269 --> 00:09:47.279 align:start position:0%
um
 

00:09:47.279 --> 00:09:49.130 align:start position:0%
um
this<00:09:47.880><c> is</c><00:09:48.060><c> another</c><00:09:48.420><c> type</c><00:09:48.779><c> of</c><00:09:48.959><c> storage</c>

00:09:49.130 --> 00:09:49.140 align:start position:0%
this is another type of storage
 

00:09:49.140 --> 00:09:52.610 align:start position:0%
this is another type of storage
Collision<00:09:49.680><c> we</c><00:09:50.459><c> shifted</c><00:09:51.080><c> the</c><00:09:52.080><c> the</c>

00:09:52.610 --> 00:09:52.620 align:start position:0%
Collision we shifted the the
 

00:09:52.620 --> 00:09:55.610 align:start position:0%
Collision we shifted the the
implementation<00:09:53.279><c> storage</c><00:09:53.720><c> uh</c><00:09:54.720><c> and</c><00:09:55.260><c> we</c><00:09:55.380><c> have</c><00:09:55.500><c> a</c>

00:09:55.610 --> 00:09:55.620 align:start position:0%
implementation storage uh and we have a
 

00:09:55.620 --> 00:09:58.190 align:start position:0%
implementation storage uh and we have a
collision<00:09:55.860><c> between</c><00:09:56.779><c> versions</c><00:09:57.779><c> of</c><00:09:58.019><c> the</c>

00:09:58.190 --> 00:09:58.200 align:start position:0%
collision between versions of the
 

00:09:58.200 --> 00:10:00.590 align:start position:0%
collision between versions of the
implementation<00:09:58.740><c> right</c><00:09:59.519><c> we</c><00:10:00.060><c> have</c><00:10:00.180><c> income</c>

00:10:00.590 --> 00:10:00.600 align:start position:0%
implementation right we have income
 

00:10:00.600 --> 00:10:03.829 align:start position:0%
implementation right we have income
incompatible<00:10:01.440><c> storage</c><00:10:01.800><c> layout</c>

00:10:03.829 --> 00:10:03.839 align:start position:0%
incompatible storage layout
 

00:10:03.839 --> 00:10:06.590 align:start position:0%
incompatible storage layout
so<00:10:04.620><c> Paul</c><00:10:05.279><c> understands</c>

00:10:06.590 --> 00:10:06.600 align:start position:0%
so Paul understands
 

00:10:06.600 --> 00:10:09.650 align:start position:0%
so Paul understands
that<00:10:07.260><c> to</c><00:10:07.440><c> to</c><00:10:07.680><c> avoid</c><00:10:08.160><c> this</c><00:10:08.459><c> you</c><00:10:09.060><c> in</c><00:10:09.540><c> an</c>

00:10:09.650 --> 00:10:09.660 align:start position:0%
that to to avoid this you in an
 

00:10:09.660 --> 00:10:11.570 align:start position:0%
that to to avoid this you in an
implementation<00:10:10.140><c> you</c><00:10:10.440><c> you</c><00:10:10.620><c> only</c><00:10:10.860><c> append</c><00:10:11.339><c> to</c>

00:10:11.570 --> 00:10:11.580 align:start position:0%
implementation you you only append to
 

00:10:11.580 --> 00:10:13.670 align:start position:0%
implementation you you only append to
the<00:10:11.940><c> storage</c><00:10:12.120><c> instead</c><00:10:12.839><c> of</c><00:10:12.959><c> like</c><00:10:13.140><c> putting</c><00:10:13.500><c> it</c>

00:10:13.670 --> 00:10:13.680 align:start position:0%
the storage instead of like putting it
 

00:10:13.680 --> 00:10:18.470 align:start position:0%
the storage instead of like putting it
anywhere<00:10:14.519><c> right</c><00:10:14.820><c> so</c><00:10:15.540><c> keep</c><00:10:16.440><c> uh</c><00:10:17.399><c> moves</c><00:10:18.000><c> the</c><00:10:18.240><c> date</c>

00:10:18.470 --> 00:10:18.480 align:start position:0%
anywhere right so keep uh moves the date
 

00:10:18.480 --> 00:10:20.990 align:start position:0%
anywhere right so keep uh moves the date
variable<00:10:18.959><c> to</c><00:10:19.320><c> the</c><00:10:19.620><c> end</c><00:10:19.800><c> of</c><00:10:20.580><c> the</c><00:10:20.760><c> previous</c>

00:10:20.990 --> 00:10:21.000 align:start position:0%
variable to the end of the previous
 

00:10:21.000 --> 00:10:23.690 align:start position:0%
variable to the end of the previous
storage<00:10:21.420><c> layout</c>

00:10:23.690 --> 00:10:23.700 align:start position:0%
storage layout
 

00:10:23.700 --> 00:10:25.310 align:start position:0%
storage layout
um<00:10:23.760><c> and</c><00:10:23.940><c> that's</c><00:10:24.060><c> it</c><00:10:24.240><c> that's</c><00:10:24.480><c> pretty</c><00:10:24.779><c> a</c><00:10:25.140><c> pretty</c>

00:10:25.310 --> 00:10:25.320 align:start position:0%
um and that's it that's pretty a pretty
 

00:10:25.320 --> 00:10:27.829 align:start position:0%
um and that's it that's pretty a pretty
simple<00:10:25.500><c> fix</c><00:10:25.800><c> that's</c><00:10:26.580><c> another</c><00:10:26.940><c> rule</c><00:10:27.480><c> of</c><00:10:27.600><c> like</c>

00:10:27.829 --> 00:10:27.839 align:start position:0%
simple fix that's another rule of like
 

00:10:27.839 --> 00:10:31.130 align:start position:0%
simple fix that's another rule of like
using<00:10:28.200><c> proxies</c><00:10:28.620><c> always</c><00:10:28.860><c> a</c><00:10:29.100><c> pen</c><00:10:29.279><c> to</c>

00:10:31.130 --> 00:10:31.140 align:start position:0%
using proxies always a pen to
 

00:10:31.140 --> 00:10:33.130 align:start position:0%
using proxies always a pen to
um<00:10:31.320><c> and</c><00:10:31.800><c> now</c>

00:10:33.130 --> 00:10:33.140 align:start position:0%
um and now
 

00:10:33.140 --> 00:10:36.290 align:start position:0%
um and now
this<00:10:34.140><c> value</c><00:10:34.500><c> is</c><00:10:34.980><c> gonna</c><00:10:35.160><c> get</c><00:10:35.760><c> whatever</c><00:10:36.000><c> is</c>

00:10:36.290 --> 00:10:36.300 align:start position:0%
this value is gonna get whatever is
 

00:10:36.300 --> 00:10:39.230 align:start position:0%
this value is gonna get whatever is
stored<00:10:36.600><c> at</c><00:10:36.720><c> slot</c><00:10:37.080><c> zero</c>

00:10:39.230 --> 00:10:39.240 align:start position:0%
stored at slot zero
 

00:10:39.240 --> 00:10:41.570 align:start position:0%
stored at slot zero
which<00:10:39.839><c> is</c><00:10:39.959><c> one</c><00:10:40.140><c> three</c><00:10:40.380><c> three</c><00:10:40.560><c> seven</c><00:10:40.860><c> so</c><00:10:41.160><c> it's</c>

00:10:41.570 --> 00:10:41.580 align:start position:0%
which is one three three seven so it's
 

00:10:41.580 --> 00:10:42.410 align:start position:0%
which is one three three seven so it's
fine

00:10:42.410 --> 00:10:42.420 align:start position:0%
fine
 

00:10:42.420 --> 00:10:43.670 align:start position:0%
fine
so

00:10:43.670 --> 00:10:43.680 align:start position:0%
so
 

00:10:43.680 --> 00:10:47.329 align:start position:0%
so
we<00:10:44.399><c> we</c><00:10:44.640><c> avoided</c><00:10:45.060><c> that</c><00:10:45.240><c> Collision</c>

00:10:47.329 --> 00:10:47.339 align:start position:0%
we we avoided that Collision
 

00:10:47.339 --> 00:10:50.210 align:start position:0%
we we avoided that Collision
so<00:10:47.940><c> storage</c><00:10:48.420><c> collisions</c><00:10:49.079><c> it's</c><00:10:49.500><c> it's</c><00:10:49.800><c> critical</c>

00:10:50.210 --> 00:10:50.220 align:start position:0%
so storage collisions it's it's critical
 

00:10:50.220 --> 00:10:52.730 align:start position:0%
so storage collisions it's it's critical
to<00:10:50.519><c> understand</c><00:10:50.700><c> when</c><00:10:51.420><c> they</c><00:10:51.660><c> occur</c><00:10:51.959><c> and</c><00:10:52.560><c> it's</c>

00:10:52.730 --> 00:10:52.740 align:start position:0%
to understand when they occur and it's
 

00:10:52.740 --> 00:10:55.310 align:start position:0%
to understand when they occur and it's
basically<00:10:53.100><c> the</c><00:10:53.339><c> two</c><00:10:53.519><c> types</c><00:10:53.940><c> of</c><00:10:54.779><c> collisions</c>

00:10:55.310 --> 00:10:55.320 align:start position:0%
basically the two types of collisions
 

00:10:55.320 --> 00:10:57.290 align:start position:0%
basically the two types of collisions
that<00:10:55.560><c> I</c><00:10:55.800><c> just</c><00:10:55.920><c> showed</c><00:10:56.220><c> you</c><00:10:56.279><c> that's</c><00:10:56.700><c> it</c><00:10:56.940><c> if</c><00:10:57.180><c> you</c>

00:10:57.290 --> 00:10:57.300 align:start position:0%
that I just showed you that's it if you
 

00:10:57.300 --> 00:10:59.630 align:start position:0%
that I just showed you that's it if you
get<00:10:57.480><c> that</c><00:10:57.720><c> you</c><00:10:58.140><c> you</c><00:10:58.620><c> can</c><00:10:58.860><c> pretty</c><00:10:59.220><c> much</c><00:10:59.399><c> think</c>

00:10:59.630 --> 00:10:59.640 align:start position:0%
get that you you can pretty much think
 

00:10:59.640 --> 00:11:01.310 align:start position:0%
get that you you can pretty much think
about<00:10:59.820><c> any</c><00:11:00.120><c> type</c><00:11:00.300><c> of</c><00:11:00.420><c> coalition</c>

00:11:01.310 --> 00:11:01.320 align:start position:0%
about any type of coalition
 

00:11:01.320 --> 00:11:03.829 align:start position:0%
about any type of coalition
things<00:11:01.680><c> to</c><00:11:01.920><c> consider</c><00:11:02.339><c> the</c><00:11:03.060><c> execution</c><00:11:03.420><c> context</c>

00:11:03.829 --> 00:11:03.839 align:start position:0%
things to consider the execution context
 

00:11:03.839 --> 00:11:06.530 align:start position:0%
things to consider the execution context
is<00:11:04.079><c> always</c><00:11:04.380><c> the</c><00:11:04.980><c> proxy</c><00:11:05.399><c> so</c><00:11:05.640><c> everything</c><00:11:06.000><c> is</c>

00:11:06.530 --> 00:11:06.540 align:start position:0%
is always the proxy so everything is
 

00:11:06.540 --> 00:11:09.350 align:start position:0%
is always the proxy so everything is
stored<00:11:06.899><c> in</c><00:11:06.959><c> the</c><00:11:07.140><c> proxy</c>

00:11:09.350 --> 00:11:09.360 align:start position:0%
stored in the proxy
 

00:11:09.360 --> 00:11:11.269 align:start position:0%
stored in the proxy
um there's<00:11:10.079><c> two</c><00:11:10.260><c> type</c><00:11:10.440><c> of</c><00:11:10.500><c> collisions</c><00:11:11.040><c> that</c>

00:11:11.269 --> 00:11:11.279 align:start position:0%
um there's two type of collisions that
 

00:11:11.279 --> 00:11:13.550 align:start position:0%
um there's two type of collisions that
we<00:11:11.459><c> just</c><00:11:11.579><c> talked</c><00:11:11.880><c> about</c>

00:11:13.550 --> 00:11:13.560 align:start position:0%
we just talked about
 

00:11:13.560 --> 00:11:15.889 align:start position:0%
we just talked about
um<00:11:13.620><c> the</c><00:11:14.279><c> first</c><00:11:14.399><c> kind</c><00:11:14.579><c> can</c><00:11:14.940><c> be</c><00:11:15.060><c> avoided</c><00:11:15.720><c> by</c>

00:11:15.889 --> 00:11:15.899 align:start position:0%
um the first kind can be avoided by
 

00:11:15.899 --> 00:11:17.449 align:start position:0%
um the first kind can be avoided by
unstructuring

00:11:17.449 --> 00:11:17.459 align:start position:0%
unstructuring
 

00:11:17.459 --> 00:11:21.110 align:start position:0%
unstructuring
the<00:11:18.120><c> storage</c><00:11:18.300><c> layout</c><00:11:19.320><c> and</c>

00:11:21.110 --> 00:11:21.120 align:start position:0%
the storage layout and
 

00:11:21.120 --> 00:11:24.530 align:start position:0%
the storage layout and
the<00:11:21.839><c> the</c><00:11:21.839><c> second</c><00:11:22.680><c> one</c><00:11:22.980><c> can</c><00:11:23.519><c> be</c><00:11:23.700><c> avoided</c><00:11:24.360><c> by</c>

00:11:24.530 --> 00:11:24.540 align:start position:0%
the the second one can be avoided by
 

00:11:24.540 --> 00:11:27.230 align:start position:0%
the the second one can be avoided by
just<00:11:24.720><c> making</c><00:11:24.899><c> sure</c><00:11:25.140><c> that</c><00:11:25.380><c> the</c><00:11:25.740><c> uh</c><00:11:26.459><c> updates</c><00:11:27.000><c> to</c>

00:11:27.230 --> 00:11:27.240 align:start position:0%
just making sure that the uh updates to
 

00:11:27.240 --> 00:11:28.810 align:start position:0%
just making sure that the uh updates to
the<00:11:27.360><c> storage</c><00:11:27.540><c> layout</c><00:11:27.959><c> and</c><00:11:28.079><c> implementations</c>

00:11:28.810 --> 00:11:28.820 align:start position:0%
the storage layout and implementations
 

00:11:28.820 --> 00:11:31.850 align:start position:0%
the storage layout and implementations
is<00:11:29.820><c> valid</c>

00:11:31.850 --> 00:11:31.860 align:start position:0%
is valid
 

00:11:31.860 --> 00:11:34.130 align:start position:0%
is valid
always<00:11:32.279><c> append</c>

00:11:34.130 --> 00:11:34.140 align:start position:0%
always append
 

00:11:34.140 --> 00:11:35.990 align:start position:0%
always append
and<00:11:34.680><c> something</c><00:11:34.860><c> to</c><00:11:35.100><c> consider</c><00:11:35.519><c> and</c><00:11:35.700><c> this</c><00:11:35.880><c> is</c>

00:11:35.990 --> 00:11:36.000 align:start position:0%
and something to consider and this is
 

00:11:36.000 --> 00:11:39.889 align:start position:0%
and something to consider and this is
critical<00:11:36.420><c> multiple</c><00:11:37.380><c> inheritance</c>

00:11:39.889 --> 00:11:39.899 align:start position:0%
critical multiple inheritance
 

00:11:39.899 --> 00:11:42.949 align:start position:0%
critical multiple inheritance
um<00:11:39.920><c> flattens</c><00:11:40.920><c> your</c><00:11:41.220><c> contracts</c><00:11:41.820><c> so</c><00:11:42.540><c> you</c><00:11:42.779><c> cannot</c>

00:11:42.949 --> 00:11:42.959 align:start position:0%
um flattens your contracts so you cannot
 

00:11:42.959 --> 00:11:45.410 align:start position:0%
um flattens your contracts so you cannot
protect<00:11:43.380><c> the</c><00:11:43.680><c> storage</c><00:11:43.800><c> layout</c><00:11:44.640><c> so</c><00:11:45.120><c> you</c><00:11:45.300><c> can</c>

00:11:45.410 --> 00:11:45.420 align:start position:0%
protect the storage layout so you can
 

00:11:45.420 --> 00:11:48.230 align:start position:0%
protect the storage layout so you can
add<00:11:45.899><c> a</c><00:11:46.079><c> new</c><00:11:46.279><c> inherited</c><00:11:47.279><c> contract</c><00:11:47.640><c> to</c><00:11:47.820><c> you</c><00:11:48.000><c> to</c>

00:11:48.230 --> 00:11:48.240 align:start position:0%
add a new inherited contract to you to
 

00:11:48.240 --> 00:11:50.930 align:start position:0%
add a new inherited contract to you to
your<00:11:48.540><c> like</c><00:11:48.899><c> super</c><00:11:49.140><c> contract</c><00:11:49.680><c> and</c><00:11:50.459><c> it</c><00:11:50.579><c> can</c><00:11:50.760><c> add</c>

00:11:50.930 --> 00:11:50.940 align:start position:0%
your like super contract and it can add
 

00:11:50.940 --> 00:11:52.910 align:start position:0%
your like super contract and it can add
like<00:11:51.360><c> five</c><00:11:51.660><c> new</c><00:11:51.959><c> variables</c><00:11:52.500><c> in</c><00:11:52.800><c> an</c>

00:11:52.910 --> 00:11:52.920 align:start position:0%
like five new variables in an
 

00:11:52.920 --> 00:11:55.610 align:start position:0%
like five new variables in an
unpredicted<00:11:53.519><c> uh</c><00:11:54.180><c> part</c><00:11:54.420><c> of</c><00:11:54.600><c> the</c><00:11:54.720><c> layout</c><00:11:55.019><c> uh</c>

00:11:55.610 --> 00:11:55.620 align:start position:0%
unpredicted uh part of the layout uh
 

00:11:55.620 --> 00:11:57.650 align:start position:0%
unpredicted uh part of the layout uh
part<00:11:55.800><c> of</c><00:11:55.980><c> the</c><00:11:56.339><c> layout</c>

00:11:57.650 --> 00:11:57.660 align:start position:0%
part of the layout
 

00:11:57.660 --> 00:11:59.810 align:start position:0%
part of the layout
so

00:11:59.810 --> 00:11:59.820 align:start position:0%
so
 

00:11:59.820 --> 00:12:02.030 align:start position:0%
so
it<00:12:00.240><c> becomes</c><00:12:00.600><c> hard</c><00:12:00.839><c> to</c><00:12:01.079><c> detect</c><00:12:01.440><c> when</c><00:12:01.740><c> you</c><00:12:01.920><c> have</c>

00:12:02.030 --> 00:12:02.040 align:start position:0%
it becomes hard to detect when you have
 

00:12:02.040 --> 00:12:04.370 align:start position:0%
it becomes hard to detect when you have
invalid<00:12:02.579><c> storage</c><00:12:02.760><c> mutations</c><00:12:03.300><c> and</c><00:12:03.959><c> you</c><00:12:04.200><c> need</c>

00:12:04.370 --> 00:12:04.380 align:start position:0%
invalid storage mutations and you need
 

00:12:04.380 --> 00:12:07.730 align:start position:0%
invalid storage mutations and you need
to<00:12:04.560><c> use</c><00:12:04.800><c> tooling</c><00:12:05.399><c> if</c><00:12:05.940><c> you</c><00:12:06.060><c> use</c><00:12:06.240><c> proxies</c><00:12:06.839><c> I</c><00:12:07.560><c> see</c>

00:12:07.730 --> 00:12:07.740 align:start position:0%
to use tooling if you use proxies I see
 

00:12:07.740 --> 00:12:09.350 align:start position:0%
to use tooling if you use proxies I see
a<00:12:07.860><c> lot</c><00:12:07.980><c> of</c><00:12:08.040><c> people</c><00:12:08.160><c> using</c><00:12:08.519><c> proxies</c><00:12:08.940><c> and</c><00:12:09.180><c> not</c>

00:12:09.350 --> 00:12:09.360 align:start position:0%
a lot of people using proxies and not
 

00:12:09.360 --> 00:12:11.269 align:start position:0%
a lot of people using proxies and not
using<00:12:09.600><c> tooling</c><00:12:10.079><c> and</c>

00:12:11.269 --> 00:12:11.279 align:start position:0%
using tooling and
 

00:12:11.279 --> 00:12:13.690 align:start position:0%
using tooling and
it's<00:12:11.640><c> not</c><00:12:11.820><c> a</c><00:12:11.940><c> good</c><00:12:12.060><c> idea</c>

00:12:13.690 --> 00:12:13.700 align:start position:0%
it's not a good idea
 

00:12:13.700 --> 00:12:16.790 align:start position:0%
it's not a good idea
and<00:12:14.700><c> even</c><00:12:14.940><c> if</c><00:12:15.180><c> you</c><00:12:15.360><c> detect</c><00:12:15.720><c> them</c><00:12:15.959><c> and</c><00:12:16.500><c> this</c><00:12:16.680><c> is</c>

00:12:16.790 --> 00:12:16.800 align:start position:0%
and even if you detect them and this is
 

00:12:16.800 --> 00:12:19.090 align:start position:0%
and even if you detect them and this is
not<00:12:16.980><c> something</c><00:12:17.220><c> that</c><00:12:17.519><c> tooling</c><00:12:17.940><c> fixes</c>

00:12:19.090 --> 00:12:19.100 align:start position:0%
not something that tooling fixes
 

00:12:19.100 --> 00:12:23.269 align:start position:0%
not something that tooling fixes
it<00:12:20.100><c> can</c><00:12:20.279><c> be</c><00:12:20.459><c> very</c><00:12:20.880><c> hard</c><00:12:21.180><c> hard</c><00:12:21.540><c> to</c><00:12:21.959><c> avoid</c><00:12:22.740><c> the</c>

00:12:23.269 --> 00:12:23.279 align:start position:0%
it can be very hard hard to avoid the
 

00:12:23.279 --> 00:12:25.430 align:start position:0%
it can be very hard hard to avoid the
invalid<00:12:23.700><c> mutation</c><00:12:24.060><c> like</c><00:12:24.720><c> if</c><00:12:24.899><c> you</c><00:12:25.079><c> have</c><00:12:25.200><c> a</c>

00:12:25.430 --> 00:12:25.440 align:start position:0%
invalid mutation like if you have a
 

00:12:25.440 --> 00:12:28.550 align:start position:0%
invalid mutation like if you have a
inherited<00:12:26.040><c> contract</c><00:12:26.459><c> and</c><00:12:27.360><c> it</c><00:12:27.779><c> it</c><00:12:28.019><c> causes</c><00:12:28.380><c> this</c>

00:12:28.550 --> 00:12:28.560 align:start position:0%
inherited contract and it it causes this
 

00:12:28.560 --> 00:12:30.949 align:start position:0%
inherited contract and it it causes this
Collision<00:12:28.980><c> to</c><00:12:29.459><c> avoid</c><00:12:29.760><c> it</c><00:12:29.880><c> you</c><00:12:30.120><c> you</c><00:12:30.480><c> have</c><00:12:30.720><c> to</c><00:12:30.839><c> do</c>

00:12:30.949 --> 00:12:30.959 align:start position:0%
Collision to avoid it you you have to do
 

00:12:30.959 --> 00:12:33.949 align:start position:0%
Collision to avoid it you you have to do
some<00:12:31.140><c> weird</c><00:12:31.380><c> stuff</c><00:12:31.620><c> right</c><00:12:32.220><c> so</c>

00:12:33.949 --> 00:12:33.959 align:start position:0%
some weird stuff right so
 

00:12:33.959 --> 00:12:36.530 align:start position:0%
some weird stuff right so
why<00:12:34.560><c> not</c><00:12:34.860><c> use</c><00:12:35.519><c> that</c><00:12:35.820><c> technique</c><00:12:36.180><c> of</c>

00:12:36.530 --> 00:12:36.540 align:start position:0%
why not use that technique of
 

00:12:36.540 --> 00:12:39.889 align:start position:0%
why not use that technique of
unstructuring<00:12:37.440><c> on</c><00:12:38.339><c> everything</c><00:12:38.700><c> not</c><00:12:39.480><c> just</c><00:12:39.660><c> the</c>

00:12:39.889 --> 00:12:39.899 align:start position:0%
unstructuring on everything not just the
 

00:12:39.899 --> 00:12:43.550 align:start position:0%
unstructuring on everything not just the
proxy<00:12:40.320><c> storage</c><00:12:40.680><c> but</c><00:12:41.160><c> the</c><00:12:41.640><c> the</c><00:12:42.560><c> implementation</c>

00:12:43.550 --> 00:12:43.560 align:start position:0%
proxy storage but the the implementation
 

00:12:43.560 --> 00:12:46.009 align:start position:0%
proxy storage but the the implementation
storage<00:12:43.920><c> definitions</c>

00:12:46.009 --> 00:12:46.019 align:start position:0%
storage definitions
 

00:12:46.019 --> 00:12:49.730 align:start position:0%
storage definitions
so<00:12:46.800><c> here</c><00:12:47.519><c> we</c><00:12:47.700><c> have</c><00:12:47.880><c> value</c><00:12:48.120><c> holder</c><00:12:48.660><c> before</c><00:12:48.959><c> the</c>

00:12:49.730 --> 00:12:49.740 align:start position:0%
so here we have value holder before the
 

00:12:49.740 --> 00:12:52.850 align:start position:0%
so here we have value holder before the
implementation<00:12:50.339><c> B4</c><00:12:50.959><c> and</c><00:12:51.959><c> the</c><00:12:52.380><c> difference</c><00:12:52.560><c> is</c>

00:12:52.850 --> 00:12:52.860 align:start position:0%
implementation B4 and the difference is
 

00:12:52.860 --> 00:12:55.430 align:start position:0%
implementation B4 and the difference is
that<00:12:53.339><c> it</c><00:12:53.700><c> uses</c><00:12:54.120><c> the</c><00:12:54.300><c> same</c><00:12:54.480><c> technique</c><00:12:54.899><c> that</c><00:12:55.260><c> the</c>

00:12:55.430 --> 00:12:55.440 align:start position:0%
that it uses the same technique that the
 

00:12:55.440 --> 00:12:57.889 align:start position:0%
that it uses the same technique that the
proxy<00:12:55.860><c> use</c><00:12:56.040><c> and</c><00:12:56.700><c> stores</c><00:12:56.940><c> everything</c><00:12:57.300><c> at</c><00:12:57.600><c> slot</c>

00:12:57.889 --> 00:12:57.899 align:start position:0%
proxy use and stores everything at slot
 

00:12:57.899 --> 00:13:02.990 align:start position:0%
proxy use and stores everything at slot
5000<00:12:58.560><c> right</c><00:12:59.279><c> everything</c><00:13:00.000><c> else</c><00:13:00.240><c> is</c><00:13:00.420><c> the</c><00:13:00.660><c> same</c>

00:13:02.990 --> 00:13:03.000 align:start position:0%
 
 

00:13:03.000 --> 00:13:05.930 align:start position:0%
 
so<00:13:03.360><c> we</c><00:13:03.540><c> deploy</c><00:13:03.899><c> this</c><00:13:04.139><c> we</c><00:13:04.920><c> connect</c><00:13:05.100><c> it</c><00:13:05.339><c> to</c><00:13:05.519><c> our</c>

00:13:05.930 --> 00:13:05.940 align:start position:0%
so we deploy this we connect it to our
 

00:13:05.940 --> 00:13:07.490 align:start position:0%
so we deploy this we connect it to our
proxy<00:13:06.420><c> which</c><00:13:06.600><c> we're</c><00:13:06.839><c> not</c><00:13:06.959><c> changing</c><00:13:07.320><c> anymore</c>

00:13:07.490 --> 00:13:07.500 align:start position:0%
proxy which we're not changing anymore
 

00:13:07.500 --> 00:13:09.889 align:start position:0%
proxy which we're not changing anymore
because<00:13:07.860><c> it</c><00:13:08.160><c> works</c>

00:13:09.889 --> 00:13:09.899 align:start position:0%
because it works
 

00:13:09.899 --> 00:13:10.730 align:start position:0%
because it works
um

00:13:10.730 --> 00:13:10.740 align:start position:0%
um
 

00:13:10.740 --> 00:13:14.210 align:start position:0%
um
we<00:13:11.220><c> call</c><00:13:11.339><c> set</c><00:13:11.700><c> value</c><00:13:12.079><c> right</c><00:13:13.079><c> it</c><00:13:13.920><c> makes</c><00:13:14.040><c> it</c>

00:13:14.210 --> 00:13:14.220 align:start position:0%
we call set value right it makes it
 

00:13:14.220 --> 00:13:18.530 align:start position:0%
we call set value right it makes it
delegate<00:13:14.639><c> call</c><00:13:14.820><c> to</c><00:13:15.060><c> the</c><00:13:15.420><c> implementation</c>

00:13:18.530 --> 00:13:18.540 align:start position:0%
 
 

00:13:18.540 --> 00:13:22.790 align:start position:0%
 
and<00:13:19.440><c> we</c><00:13:19.800><c> can</c><00:13:19.920><c> see</c><00:13:20.160><c> that</c><00:13:20.579><c> we</c><00:13:20.880><c> have</c><00:13:21.120><c> the</c><00:13:21.959><c> gray</c>

00:13:22.790 --> 00:13:22.800 align:start position:0%
and we can see that we have the gray
 

00:13:22.800 --> 00:13:25.129 align:start position:0%
and we can see that we have the gray
storage<00:13:23.519><c> we're</c><00:13:23.880><c> not</c><00:13:24.000><c> using</c><00:13:24.300><c> anymore</c>

00:13:25.129 --> 00:13:25.139 align:start position:0%
storage we're not using anymore
 

00:13:25.139 --> 00:13:27.250 align:start position:0%
storage we're not using anymore
we<00:13:25.620><c> have</c><00:13:25.680><c> the</c><00:13:25.920><c> proxy</c>

00:13:27.250 --> 00:13:27.260 align:start position:0%
we have the proxy
 

00:13:27.260 --> 00:13:31.009 align:start position:0%
we have the proxy
name<00:13:28.260><c> storage</c><00:13:28.620><c> name</c><00:13:28.980><c> space</c><00:13:29.279><c> let's</c><00:13:29.639><c> say</c><00:13:29.820><c> there</c>

00:13:31.009 --> 00:13:31.019 align:start position:0%
name storage name space let's say there
 

00:13:31.019 --> 00:13:35.090 align:start position:0%
name storage name space let's say there
and<00:13:31.800><c> the</c><00:13:32.220><c> new</c><00:13:32.339><c> implementation</c><00:13:32.940><c> namespace</c><00:13:34.100><c> uh</c>

00:13:35.090 --> 00:13:35.100 align:start position:0%
and the new implementation namespace uh
 

00:13:35.100 --> 00:13:37.910 align:start position:0%
and the new implementation namespace uh
here<00:13:35.399><c> and</c><00:13:35.820><c> they</c><00:13:36.000><c> don't</c><00:13:36.120><c> Collide</c><00:13:36.540><c> right</c>

00:13:37.910 --> 00:13:37.920 align:start position:0%
here and they don't Collide right
 

00:13:37.920 --> 00:13:41.090 align:start position:0%
here and they don't Collide right
so<00:13:38.519><c> we've</c><00:13:39.360><c> unstructured</c><00:13:40.200><c> the</c><00:13:40.440><c> implementation</c>

00:13:41.090 --> 00:13:41.100 align:start position:0%
so we've unstructured the implementation
 

00:13:41.100 --> 00:13:42.949 align:start position:0%
so we've unstructured the implementation
storage<00:13:41.519><c> right</c><00:13:41.940><c> now</c>

00:13:42.949 --> 00:13:42.959 align:start position:0%
storage right now
 

00:13:42.959 --> 00:13:44.509 align:start position:0%
storage right now
we<00:13:43.380><c> have</c><00:13:43.500><c> we're</c><00:13:43.740><c> pretty</c><00:13:43.920><c> happy</c><00:13:44.100><c> with</c><00:13:44.399><c> this</c>

00:13:44.509 --> 00:13:44.519 align:start position:0%
we have we're pretty happy with this
 

00:13:44.519 --> 00:13:48.009 align:start position:0%
we have we're pretty happy with this
proxy<00:13:45.000><c> like</c><00:13:45.180><c> configuration</c><00:13:45.720><c> we</c>

00:13:48.009 --> 00:13:48.019 align:start position:0%
proxy like configuration we
 

00:13:48.019 --> 00:13:51.650 align:start position:0%
proxy like configuration we
the<00:13:49.019><c> the</c><00:13:49.500><c> context</c><00:13:49.860><c> is</c><00:13:50.100><c> kept</c><00:13:50.399><c> at</c><00:13:50.519><c> the</c><00:13:50.639><c> proxy</c><00:13:51.000><c> and</c>

00:13:51.650 --> 00:13:51.660 align:start position:0%
the the context is kept at the proxy and
 

00:13:51.660 --> 00:13:53.030 align:start position:0%
the the context is kept at the proxy and
collisions<00:13:52.079><c> are</c><00:13:52.260><c> avoided</c><00:13:52.620><c> using</c>

00:13:53.030 --> 00:13:53.040 align:start position:0%
collisions are avoided using
 

00:13:53.040 --> 00:13:54.710 align:start position:0%
collisions are avoided using
unstructured<00:13:53.880><c> storage</c><00:13:54.180><c> or</c><00:13:54.480><c> storage</c>

00:13:54.710 --> 00:13:54.720 align:start position:0%
unstructured storage or storage
 

00:13:54.720 --> 00:13:57.829 align:start position:0%
unstructured storage or storage
namespace<00:13:55.380><c> absolutely</c><00:13:55.920><c> everywhere</c>

00:13:57.829 --> 00:13:57.839 align:start position:0%
namespace absolutely everywhere
 

00:13:57.839 --> 00:13:59.870 align:start position:0%
namespace absolutely everywhere
tooling<00:13:58.500><c> should</c><00:13:59.040><c> still</c><00:13:59.279><c> be</c><00:13:59.519><c> used</c><00:13:59.700><c> to</c>

00:13:59.870 --> 00:13:59.880 align:start position:0%
tooling should still be used to
 

00:13:59.880 --> 00:14:02.090 align:start position:0%
tooling should still be used to
guarantee<00:14:00.300><c> that</c><00:14:00.480><c> there's</c><00:14:00.720><c> like</c><00:14:00.959><c> no</c><00:14:01.380><c> uh</c>

00:14:02.090 --> 00:14:02.100 align:start position:0%
guarantee that there's like no uh
 

00:14:02.100 --> 00:14:04.430 align:start position:0%
guarantee that there's like no uh
storage<00:14:02.339><c> Collision</c><00:14:02.880><c> that</c><00:14:03.420><c> you</c><00:14:03.779><c> don't</c><00:14:03.959><c> notice</c>

00:14:04.430 --> 00:14:04.440 align:start position:0%
storage Collision that you don't notice
 

00:14:04.440 --> 00:14:08.629 align:start position:0%
storage Collision that you don't notice
but<00:14:05.399><c> the</c><00:14:05.940><c> thing</c><00:14:06.060><c> is</c><00:14:06.300><c> that</c><00:14:06.860><c> uh</c><00:14:07.860><c> this</c><00:14:08.399><c> like</c>

00:14:08.629 --> 00:14:08.639 align:start position:0%
but the thing is that uh this like
 

00:14:08.639 --> 00:14:12.829 align:start position:0%
but the thing is that uh this like
custom<00:14:09.000><c> or</c><00:14:09.300><c> manual</c><00:14:09.600><c> use</c><00:14:09.779><c> of</c><00:14:10.019><c> storage</c><00:14:10.639><c> uh</c><00:14:11.639><c> makes</c>

00:14:12.829 --> 00:14:12.839 align:start position:0%
custom or manual use of storage uh makes
 

00:14:12.839 --> 00:14:13.370 align:start position:0%
custom or manual use of storage uh makes
um

00:14:13.370 --> 00:14:13.380 align:start position:0%
um
 

00:14:13.380 --> 00:14:17.509 align:start position:0%
um
storage<00:14:13.920><c> layouts</c><00:14:14.880><c> much</c><00:14:15.120><c> easier</c><00:14:15.480><c> to</c><00:14:15.660><c> control</c>

00:14:17.509 --> 00:14:17.519 align:start position:0%
storage layouts much easier to control
 

00:14:17.519 --> 00:14:19.970 align:start position:0%
storage layouts much easier to control
so

00:14:19.970 --> 00:14:19.980 align:start position:0%
so
 

00:14:19.980 --> 00:14:22.610 align:start position:0%
so
now<00:14:20.579><c> that</c><00:14:20.760><c> we</c><00:14:21.060><c> understand</c><00:14:21.180><c> these</c><00:14:21.899><c> like</c><00:14:22.079><c> basic</c>

00:14:22.610 --> 00:14:22.620 align:start position:0%
now that we understand these like basic
 

00:14:22.620 --> 00:14:24.590 align:start position:0%
now that we understand these like basic
principles<00:14:22.980><c> of</c><00:14:23.279><c> of</c><00:14:23.519><c> proxies</c><00:14:24.000><c> let's</c><00:14:24.300><c> talk</c>

00:14:24.590 --> 00:14:24.600 align:start position:0%
principles of of proxies let's talk
 

00:14:24.600 --> 00:14:27.710 align:start position:0%
principles of of proxies let's talk
about<00:14:24.720><c> like</c><00:14:25.139><c> what</c><00:14:25.800><c> a</c><00:14:26.420><c> multi-contract</c><00:14:27.420><c> system</c>

00:14:27.710 --> 00:14:27.720 align:start position:0%
about like what a multi-contract system
 

00:14:27.720 --> 00:14:31.310 align:start position:0%
about like what a multi-contract system
looks<00:14:28.440><c> like</c><00:14:28.500><c> in</c><00:14:29.459><c> in</c><00:14:29.820><c> solidity</c>

00:14:31.310 --> 00:14:31.320 align:start position:0%
looks like in in solidity
 

00:14:31.320 --> 00:14:33.050 align:start position:0%
looks like in in solidity
so

00:14:33.050 --> 00:14:33.060 align:start position:0%
so
 

00:14:33.060 --> 00:14:34.910 align:start position:0%
so
there's<00:14:33.600><c> no</c><00:14:33.839><c> ideal</c>

00:14:34.910 --> 00:14:34.920 align:start position:0%
there's no ideal
 

00:14:34.920 --> 00:14:37.730 align:start position:0%
there's no ideal
standard<00:14:35.639><c> solution</c><00:14:36.120><c> for</c><00:14:36.959><c> multi-contract</c>

00:14:37.730 --> 00:14:37.740 align:start position:0%
standard solution for multi-contract
 

00:14:37.740 --> 00:14:40.370 align:start position:0%
standard solution for multi-contract
systems<00:14:38.220><c> people</c><00:14:38.760><c> often</c><00:14:39.180><c> use</c><00:14:39.360><c> registry</c><00:14:40.019><c> which</c>

00:14:40.370 --> 00:14:40.380 align:start position:0%
systems people often use registry which
 

00:14:40.380 --> 00:14:42.350 align:start position:0%
systems people often use registry which
is<00:14:40.560><c> basically</c><00:14:41.160><c> a</c><00:14:41.339><c> contract</c><00:14:41.579><c> that</c><00:14:41.820><c> knows</c><00:14:42.180><c> every</c>

00:14:42.350 --> 00:14:42.360 align:start position:0%
is basically a contract that knows every
 

00:14:42.360 --> 00:14:43.730 align:start position:0%
is basically a contract that knows every
other<00:14:42.540><c> contract</c>

00:14:43.730 --> 00:14:43.740 align:start position:0%
other contract
 

00:14:43.740 --> 00:14:47.569 align:start position:0%
other contract
right<00:14:44.540><c> and</c><00:14:45.540><c> whenever</c><00:14:46.260><c> a</c><00:14:46.500><c> contract</c><00:14:46.800><c> a</c><00:14:47.100><c> needs</c><00:14:47.519><c> to</c>

00:14:47.569 --> 00:14:47.579 align:start position:0%
right and whenever a contract a needs to
 

00:14:47.579 --> 00:14:49.430 align:start position:0%
right and whenever a contract a needs to
talk<00:14:47.760><c> to</c><00:14:47.880><c> contract</c><00:14:48.180><c> B</c><00:14:48.420><c> it</c><00:14:48.779><c> needs</c><00:14:48.959><c> to</c><00:14:49.019><c> go</c><00:14:49.139><c> to</c><00:14:49.260><c> the</c>

00:14:49.430 --> 00:14:49.440 align:start position:0%
talk to contract B it needs to go to the
 

00:14:49.440 --> 00:14:51.410 align:start position:0%
talk to contract B it needs to go to the
registry<00:14:49.860><c> and</c><00:14:50.220><c> ask</c><00:14:50.399><c> hey</c><00:14:50.760><c> I</c><00:14:51.060><c> want</c><00:14:51.120><c> to</c><00:14:51.180><c> talk</c><00:14:51.300><c> to</c>

00:14:51.410 --> 00:14:51.420 align:start position:0%
registry and ask hey I want to talk to
 

00:14:51.420 --> 00:14:54.590 align:start position:0%
registry and ask hey I want to talk to
business<00:14:51.660><c> B</c><00:14:52.139><c> here's</c><00:14:52.920><c> B</c><00:14:53.100><c> and</c><00:14:53.880><c> then</c><00:14:54.000><c> it</c><00:14:54.180><c> makes</c><00:14:54.360><c> a</c>

00:14:54.590 --> 00:14:54.600 align:start position:0%
business B here's B and then it makes a
 

00:14:54.600 --> 00:14:56.629 align:start position:0%
business B here's B and then it makes a
call<00:14:54.720><c> to</c><00:14:54.959><c> contract</c><00:14:55.320><c> B</c><00:14:55.500><c> right</c><00:14:55.860><c> and</c><00:14:56.279><c> then</c><00:14:56.399><c> B</c>

00:14:56.629 --> 00:14:56.639 align:start position:0%
call to contract B right and then B
 

00:14:56.639 --> 00:14:59.329 align:start position:0%
call to contract B right and then B
needs<00:14:57.180><c> if</c><00:14:57.420><c> it's</c><00:14:57.660><c> a</c><00:14:57.959><c> sensitive</c><00:14:58.860><c> operation</c>

00:14:59.329 --> 00:14:59.339 align:start position:0%
needs if it's a sensitive operation
 

00:14:59.339 --> 00:15:00.769 align:start position:0%
needs if it's a sensitive operation
needs<00:15:00.000><c> to</c>

00:15:00.769 --> 00:15:00.779 align:start position:0%
needs to
 

00:15:00.779 --> 00:15:03.889 align:start position:0%
needs to
say<00:15:01.320><c> okay</c><00:15:01.560><c> who's</c><00:15:01.860><c> calling</c><00:15:02.339><c> me</c><00:15:02.459><c> a</c><00:15:03.060><c> is</c><00:15:03.420><c> a</c><00:15:03.600><c> from</c>

00:15:03.889 --> 00:15:03.899 align:start position:0%
say okay who's calling me a is a from
 

00:15:03.899 --> 00:15:06.290 align:start position:0%
say okay who's calling me a is a from
the<00:15:04.019><c> system</c><00:15:04.199><c> it</c><00:15:04.980><c> asks</c><00:15:05.220><c> the</c><00:15:05.399><c> registry</c><00:15:05.820><c> the</c>

00:15:06.290 --> 00:15:06.300 align:start position:0%
the system it asks the registry the
 

00:15:06.300 --> 00:15:07.790 align:start position:0%
the system it asks the registry the
registry<00:15:06.720><c> goes</c><00:15:07.079><c> yes</c>

00:15:07.790 --> 00:15:07.800 align:start position:0%
registry goes yes
 

00:15:07.800 --> 00:15:10.189 align:start position:0%
registry goes yes
and<00:15:08.279><c> then</c><00:15:08.399><c> okay</c><00:15:08.820><c> then</c><00:15:09.180><c> you</c><00:15:09.540><c> can</c><00:15:09.660><c> perform</c><00:15:09.839><c> this</c>

00:15:10.189 --> 00:15:10.199 align:start position:0%
and then okay then you can perform this
 

00:15:10.199 --> 00:15:13.370 align:start position:0%
and then okay then you can perform this
it's<00:15:10.560><c> complicated</c><00:15:11.100><c> and</c><00:15:11.339><c> it</c><00:15:11.459><c> gets</c><00:15:11.820><c> it</c><00:15:12.540><c> gets</c><00:15:12.839><c> uh</c>

00:15:13.370 --> 00:15:13.380 align:start position:0%
it's complicated and it gets it gets uh
 

00:15:13.380 --> 00:15:17.509 align:start position:0%
it's complicated and it gets it gets uh
messy<00:15:14.279><c> pretty</c><00:15:14.760><c> fast</c><00:15:15.139><c> so</c><00:15:16.139><c> let's</c><00:15:16.560><c> let's</c><00:15:16.860><c> try</c><00:15:17.220><c> a</c>

00:15:17.509 --> 00:15:17.519 align:start position:0%
messy pretty fast so let's let's try a
 

00:15:17.519 --> 00:15:19.490 align:start position:0%
messy pretty fast so let's let's try a
pretty<00:15:17.699><c> crazy</c><00:15:17.940><c> solution</c><00:15:18.420><c> which</c><00:15:18.779><c> is</c><00:15:18.959><c> uh</c><00:15:19.380><c> we're</c>

00:15:19.490 --> 00:15:19.500 align:start position:0%
pretty crazy solution which is uh we're
 

00:15:19.500 --> 00:15:22.610 align:start position:0%
pretty crazy solution which is uh we're
calling<00:15:19.860><c> it</c><00:15:19.920><c> the</c><00:15:20.160><c> router</c><00:15:20.519><c> proxy</c>

00:15:22.610 --> 00:15:22.620 align:start position:0%
calling it the router proxy
 

00:15:22.620 --> 00:15:23.870 align:start position:0%
calling it the router proxy
um

00:15:23.870 --> 00:15:23.880 align:start position:0%
um
 

00:15:23.880 --> 00:15:26.990 align:start position:0%
um
so<00:15:24.480><c> we</c><00:15:25.079><c> basically</c><00:15:25.500><c> have</c><00:15:26.279><c> a</c><00:15:26.459><c> new</c><00:15:26.579><c> contract</c>

00:15:26.990 --> 00:15:27.000 align:start position:0%
so we basically have a new contract
 

00:15:27.000 --> 00:15:30.110 align:start position:0%
so we basically have a new contract
which<00:15:27.420><c> is</c><00:15:27.540><c> another</c><00:15:28.019><c> contract</c><00:15:28.560><c> that</c><00:15:28.920><c> has</c><00:15:29.519><c> one</c>

00:15:30.110 --> 00:15:30.120 align:start position:0%
which is another contract that has one
 

00:15:30.120 --> 00:15:31.490 align:start position:0%
which is another contract that has one
variable

00:15:31.490 --> 00:15:31.500 align:start position:0%
variable
 

00:15:31.500 --> 00:15:34.790 align:start position:0%
variable
it's<00:15:31.920><c> called</c><00:15:32.160><c> cool</c><00:15:32.519><c> value</c><00:15:33.079><c> and</c><00:15:34.079><c> it's</c><00:15:34.500><c> also</c>

00:15:34.790 --> 00:15:34.800 align:start position:0%
it's called cool value and it's also
 

00:15:34.800 --> 00:15:37.509 align:start position:0%
it's called cool value and it's also
using<00:15:35.160><c> these</c><00:15:35.760><c> uh</c><00:15:36.120><c> this</c><00:15:36.540><c> storage</c>

00:15:37.509 --> 00:15:37.519 align:start position:0%
using these uh this storage
 

00:15:37.519 --> 00:15:40.790 align:start position:0%
using these uh this storage
name<00:15:38.519><c> space</c><00:15:38.880><c> system</c><00:15:39.600><c> instead</c><00:15:40.199><c> of</c><00:15:40.260><c> solidities</c>

00:15:40.790 --> 00:15:40.800 align:start position:0%
name space system instead of solidities
 

00:15:40.800 --> 00:15:45.290 align:start position:0%
name space system instead of solidities
like<00:15:41.160><c> own</c><00:15:41.519><c> a</c><00:15:42.180><c> storage</c><00:15:42.360><c> layout</c><00:15:42.959><c> thingy</c><00:15:44.300><c> but</c>

00:15:45.290 --> 00:15:45.300 align:start position:0%
like own a storage layout thingy but
 

00:15:45.300 --> 00:15:47.990 align:start position:0%
like own a storage layout thingy but
that's<00:15:45.480><c> it</c><00:15:45.720><c> it</c><00:15:46.380><c> just</c><00:15:46.680><c> records</c><00:15:47.519><c> a</c><00:15:47.699><c> variable</c>

00:15:47.990 --> 00:15:48.000 align:start position:0%
that's it it just records a variable
 

00:15:48.000 --> 00:15:52.090 align:start position:0%
that's it it just records a variable
right<00:15:48.600><c> gets</c><00:15:49.560><c> the</c><00:15:49.620><c> store</c><00:15:50.000><c> sets</c><00:15:51.000><c> the</c><00:15:51.120><c> the</c><00:15:51.360><c> stores</c>

00:15:52.090 --> 00:15:52.100 align:start position:0%
right gets the store sets the the stores
 

00:15:52.100 --> 00:15:56.509 align:start position:0%
right gets the store sets the the stores
value<00:15:53.100><c> and</c><00:15:53.639><c> then</c><00:15:53.820><c> it's</c><00:15:54.000><c> a</c><00:15:54.180><c> an</c><00:15:54.540><c> event</c>

00:15:56.509 --> 00:15:56.519 align:start position:0%
value and then it's a an event
 

00:15:56.519 --> 00:15:59.050 align:start position:0%
value and then it's a an event
so<00:15:57.000><c> we</c><00:15:57.180><c> deploy</c><00:15:57.540><c> it</c><00:15:57.660><c> at</c><00:15:57.839><c> 0x8</c>

00:15:59.050 --> 00:15:59.060 align:start position:0%
so we deploy it at 0x8
 

00:15:59.060 --> 00:16:02.750 align:start position:0%
so we deploy it at 0x8
and<00:16:00.060><c> then</c><00:16:00.300><c> this</c><00:16:01.079><c> is</c><00:16:01.260><c> the</c><00:16:01.560><c> tricky</c><00:16:01.920><c> part</c><00:16:02.100><c> bear</c>

00:16:02.750 --> 00:16:02.760 align:start position:0%
and then this is the tricky part bear
 

00:16:02.760 --> 00:16:06.050 align:start position:0%
and then this is the tricky part bear
with<00:16:03.000><c> me</c><00:16:03.180><c> with</c><00:16:03.360><c> this</c><00:16:03.480><c> part</c><00:16:03.720><c> uh</c><00:16:04.980><c> Bob</c><00:16:05.579><c> uses</c>

00:16:06.050 --> 00:16:06.060 align:start position:0%
with me with this part uh Bob uses
 

00:16:06.060 --> 00:16:08.750 align:start position:0%
with me with this part uh Bob uses
tooling<00:16:06.480><c> to</c><00:16:06.720><c> build</c><00:16:06.839><c> a</c><00:16:07.139><c> router</c><00:16:07.560><c> right</c><00:16:07.980><c> so</c><00:16:08.519><c> this</c>

00:16:08.750 --> 00:16:08.760 align:start position:0%
tooling to build a router right so this
 

00:16:08.760 --> 00:16:12.110 align:start position:0%
tooling to build a router right so this
is<00:16:09.360><c> basically</c><00:16:10.079><c> a</c><00:16:10.320><c> table</c><00:16:10.500><c> right</c>

00:16:12.110 --> 00:16:12.120 align:start position:0%
is basically a table right
 

00:16:12.120 --> 00:16:14.449 align:start position:0%
is basically a table right
it<00:16:12.540><c> has</c><00:16:12.779><c> the</c><00:16:13.019><c> addresses</c><00:16:13.440><c> of</c><00:16:13.920><c> the</c><00:16:14.279><c> two</c>

00:16:14.449 --> 00:16:14.459 align:start position:0%
it has the addresses of the two
 

00:16:14.459 --> 00:16:17.389 align:start position:0%
it has the addresses of the two
contracts<00:16:15.139><c> uh</c><00:16:16.139><c> value</c><00:16:16.320><c> holder</c><00:16:16.860><c> and</c><00:16:17.160><c> another</c>

00:16:17.389 --> 00:16:17.399 align:start position:0%
contracts uh value holder and another
 

00:16:17.399 --> 00:16:19.790 align:start position:0%
contracts uh value holder and another
contract<00:16:18.000><c> hard-coded</c>

00:16:19.790 --> 00:16:19.800 align:start position:0%
contract hard-coded
 

00:16:19.800 --> 00:16:21.530 align:start position:0%
contract hard-coded
and<00:16:20.459><c> it's</c>

00:16:21.530 --> 00:16:21.540 align:start position:0%
and it's
 

00:16:21.540 --> 00:16:23.990 align:start position:0%
and it's
a<00:16:22.380><c> fallback</c><00:16:22.920><c> function</c>

00:16:23.990 --> 00:16:24.000 align:start position:0%
a fallback function
 

00:16:24.000 --> 00:16:25.970 align:start position:0%
a fallback function
basically

00:16:25.970 --> 00:16:25.980 align:start position:0%
basically
 

00:16:25.980 --> 00:16:29.990 align:start position:0%
basically
has<00:16:26.579><c> to</c><00:16:26.820><c> do</c><00:16:27.060><c> like</c><00:16:27.240><c> this</c><00:16:27.480><c> binary</c><00:16:27.899><c> search</c>

00:16:29.990 --> 00:16:30.000 align:start position:0%
has to do like this binary search
 

00:16:30.000 --> 00:16:31.550 align:start position:0%
has to do like this binary search
algorithm

00:16:31.550 --> 00:16:31.560 align:start position:0%
algorithm
 

00:16:31.560 --> 00:16:34.250 align:start position:0%
algorithm
to<00:16:32.100><c> determine</c><00:16:32.519><c> which</c><00:16:33.180><c> implementation</c><00:16:33.839><c> has</c>

00:16:34.250 --> 00:16:34.260 align:start position:0%
to determine which implementation has
 

00:16:34.260 --> 00:16:36.949 align:start position:0%
to determine which implementation has
that<00:16:34.560><c> function</c><00:16:34.860><c> right</c><00:16:35.459><c> is</c><00:16:35.940><c> it</c><00:16:36.180><c> valueholder</c><00:16:36.839><c> or</c>

00:16:36.949 --> 00:16:36.959 align:start position:0%
that function right is it valueholder or
 

00:16:36.959 --> 00:16:40.670 align:start position:0%
that function right is it valueholder or
is<00:16:37.139><c> it</c><00:16:37.259><c> another</c><00:16:37.440><c> contract</c><00:16:37.980><c> right</c><00:16:38.279><c> and</c><00:16:39.600><c> it</c><00:16:40.380><c> just</c>

00:16:40.670 --> 00:16:40.680 align:start position:0%
is it another contract right and it just
 

00:16:40.680 --> 00:16:43.550 align:start position:0%
is it another contract right and it just
checks<00:16:41.639><c> the</c><00:16:41.759><c> incoming</c><00:16:42.180><c> selector</c><00:16:42.560><c> and</c>

00:16:43.550 --> 00:16:43.560 align:start position:0%
checks the incoming selector and
 

00:16:43.560 --> 00:16:45.290 align:start position:0%
checks the incoming selector and
forwards<00:16:44.100><c> it</c><00:16:44.279><c> to</c><00:16:44.459><c> the</c><00:16:44.699><c> appropriate</c>

00:16:45.290 --> 00:16:45.300 align:start position:0%
forwards it to the appropriate
 

00:16:45.300 --> 00:16:48.350 align:start position:0%
forwards it to the appropriate
implementation<00:16:46.199><c> and</c><00:16:46.860><c> that's</c><00:16:46.980><c> it</c><00:16:47.220><c> and</c><00:16:48.060><c> then</c><00:16:48.180><c> it</c>

00:16:48.350 --> 00:16:48.360 align:start position:0%
implementation and that's it and then it
 

00:16:48.360 --> 00:16:50.569 align:start position:0%
implementation and that's it and then it
just<00:16:48.660><c> makes</c><00:16:48.899><c> the</c><00:16:49.199><c> the</c><00:16:49.440><c> regular</c><00:16:49.800><c> delegate</c><00:16:50.399><c> call</c>

00:16:50.569 --> 00:16:50.579 align:start position:0%
just makes the the regular delegate call
 

00:16:50.579 --> 00:16:53.150 align:start position:0%
just makes the the regular delegate call
uh<00:16:51.180><c> proxy</c><00:16:51.839><c> forwarding</c>

00:16:53.150 --> 00:16:53.160 align:start position:0%
uh proxy forwarding
 

00:16:53.160 --> 00:16:54.350 align:start position:0%
uh proxy forwarding
so

00:16:54.350 --> 00:16:54.360 align:start position:0%
so
 

00:16:54.360 --> 00:16:56.810 align:start position:0%
so
this<00:16:54.720><c> is</c><00:16:54.839><c> deployed</c><00:16:55.199><c> at</c><00:16:55.380><c> 2x9</c>

00:16:56.810 --> 00:16:56.820 align:start position:0%
this is deployed at 2x9
 

00:16:56.820 --> 00:17:00.410 align:start position:0%
this is deployed at 2x9
and<00:16:57.360><c> then</c><00:16:57.480><c> we</c><00:16:58.079><c> set</c><00:16:58.440><c> the</c><00:16:59.399><c> router</c><00:16:59.880><c> as</c><00:17:00.240><c> the</c>

00:17:00.410 --> 00:17:00.420 align:start position:0%
and then we set the router as the
 

00:17:00.420 --> 00:17:02.030 align:start position:0%
and then we set the router as the
proxies<00:17:00.839><c> implementation</c>

00:17:02.030 --> 00:17:02.040 align:start position:0%
proxies implementation
 

00:17:02.040 --> 00:17:05.270 align:start position:0%
proxies implementation
right<00:17:02.579><c> 0x9</c><00:17:03.480><c> is</c><00:17:03.720><c> the</c><00:17:03.839><c> new</c><00:17:03.899><c> implementation</c><00:17:04.439><c> and</c>

00:17:05.270 --> 00:17:05.280 align:start position:0%
right 0x9 is the new implementation and
 

00:17:05.280 --> 00:17:08.030 align:start position:0%
right 0x9 is the new implementation and
now<00:17:05.400><c> we</c><00:17:05.579><c> have</c><00:17:05.699><c> this</c><00:17:06.000><c> we</c><00:17:06.839><c> have</c><00:17:06.959><c> the</c><00:17:07.140><c> proxy</c><00:17:07.559><c> over</c>

00:17:08.030 --> 00:17:08.040 align:start position:0%
now we have this we have the proxy over
 

00:17:08.040 --> 00:17:08.990 align:start position:0%
now we have this we have the proxy over
here

00:17:08.990 --> 00:17:09.000 align:start position:0%
here
 

00:17:09.000 --> 00:17:11.449 align:start position:0%
here
we<00:17:09.540><c> have</c><00:17:09.660><c> the</c><00:17:09.839><c> router</c><00:17:10.199><c> over</c><00:17:10.380><c> here</c><00:17:10.620><c> and</c><00:17:11.040><c> we</c><00:17:11.280><c> have</c>

00:17:11.449 --> 00:17:11.459 align:start position:0%
we have the router over here and we have
 

00:17:11.459 --> 00:17:15.049 align:start position:0%
we have the router over here and we have
the<00:17:11.939><c> implementations</c><00:17:12.419><c> over</c><00:17:12.780><c> here</c><00:17:13.020><c> right</c><00:17:13.679><c> so</c>

00:17:15.049 --> 00:17:15.059 align:start position:0%
the implementations over here right so
 

00:17:15.059 --> 00:17:17.630 align:start position:0%
the implementations over here right so
when<00:17:15.720><c> Bob</c><00:17:15.959><c> called</c><00:17:16.199><c> said</c><00:17:16.620><c> value</c><00:17:16.860><c> seven</c><00:17:17.220><c> you</c>

00:17:17.630 --> 00:17:17.640 align:start position:0%
when Bob called said value seven you
 

00:17:17.640 --> 00:17:19.250 align:start position:0%
when Bob called said value seven you
don't<00:17:17.819><c> I</c><00:17:18.179><c> don't</c><00:17:18.240><c> think</c><00:17:18.360><c> you</c><00:17:18.540><c> guys</c><00:17:18.720><c> see</c><00:17:18.959><c> it</c><00:17:19.079><c> but</c>

00:17:19.250 --> 00:17:19.260 align:start position:0%
don't I don't think you guys see it but
 

00:17:19.260 --> 00:17:22.130 align:start position:0%
don't I don't think you guys see it but
it's<00:17:20.040><c> it's</c><00:17:20.040><c> calling</c><00:17:20.640><c> set</c><00:17:20.880><c> value</c><00:17:21.179><c> seven</c><00:17:21.540><c> with</c>

00:17:22.130 --> 00:17:22.140 align:start position:0%
it's it's calling set value seven with
 

00:17:22.140 --> 00:17:23.929 align:start position:0%
it's it's calling set value seven with
the<00:17:22.500><c> number</c><00:17:22.799><c> seven</c>

00:17:23.929 --> 00:17:23.939 align:start position:0%
the number seven
 

00:17:23.939 --> 00:17:26.990 align:start position:0%
the number seven
it<00:17:24.419><c> makes</c><00:17:24.540><c> it</c><00:17:24.780><c> really</c><00:17:24.959><c> a</c><00:17:25.260><c> call</c><00:17:25.380><c> to</c><00:17:25.559><c> the</c><00:17:25.860><c> to</c><00:17:26.699><c> the</c>

00:17:26.990 --> 00:17:27.000 align:start position:0%
it makes it really a call to the to the
 

00:17:27.000 --> 00:17:28.069 align:start position:0%
it makes it really a call to the to the
router

00:17:28.069 --> 00:17:28.079 align:start position:0%
router
 

00:17:28.079 --> 00:17:30.830 align:start position:0%
router
and<00:17:28.559><c> then</c><00:17:28.679><c> another</c><00:17:28.919><c> daily</c><00:17:29.280><c> call</c><00:17:29.700><c> to</c><00:17:30.000><c> the</c><00:17:30.179><c> to</c>

00:17:30.830 --> 00:17:30.840 align:start position:0%
and then another daily call to the to
 

00:17:30.840 --> 00:17:32.870 align:start position:0%
and then another daily call to the to
the<00:17:31.320><c> another</c><00:17:31.740><c> contact</c><00:17:32.100><c> implementation</c>

00:17:32.870 --> 00:17:32.880 align:start position:0%
the another contact implementation
 

00:17:32.880 --> 00:17:34.970 align:start position:0%
the another contact implementation
because<00:17:33.179><c> the</c><00:17:33.480><c> router</c><00:17:33.840><c> figures</c><00:17:34.200><c> out</c><00:17:34.440><c> that</c><00:17:34.679><c> the</c>

00:17:34.970 --> 00:17:34.980 align:start position:0%
because the router figures out that the
 

00:17:34.980 --> 00:17:39.049 align:start position:0%
because the router figures out that the
the<00:17:35.400><c> function</c><00:17:35.820><c> set</c><00:17:36.179><c> values</c><00:17:36.660><c> in</c><00:17:36.960><c> that</c><00:17:37.200><c> contract</c>

00:17:39.049 --> 00:17:39.059 align:start position:0%
the function set values in that contract
 

00:17:39.059 --> 00:17:40.909 align:start position:0%
the function set values in that contract
let's<00:17:39.480><c> keep</c><00:17:39.660><c> in</c><00:17:39.780><c> mind</c><00:17:39.960><c> that</c><00:17:40.140><c> the</c><00:17:40.440><c> execution</c>

00:17:40.909 --> 00:17:40.919 align:start position:0%
let's keep in mind that the execution
 

00:17:40.919 --> 00:17:43.549 align:start position:0%
let's keep in mind that the execution
context<00:17:41.520><c> is</c><00:17:42.240><c> still</c><00:17:42.539><c> the</c><00:17:42.780><c> proxy</c><00:17:43.200><c> it</c><00:17:43.440><c> doesn't</c>

00:17:43.549 --> 00:17:43.559 align:start position:0%
context is still the proxy it doesn't
 

00:17:43.559 --> 00:17:45.950 align:start position:0%
context is still the proxy it doesn't
matter<00:17:43.799><c> how</c><00:17:44.160><c> many</c><00:17:44.280><c> deleg</c><00:17:44.760><c> calls</c><00:17:45.120><c> you</c><00:17:45.240><c> make</c>

00:17:45.950 --> 00:17:45.960 align:start position:0%
matter how many deleg calls you make
 

00:17:45.960 --> 00:17:49.430 align:start position:0%
matter how many deleg calls you make
it<00:17:46.559><c> will</c><00:17:46.740><c> always</c><00:17:46.919><c> be</c><00:17:47.220><c> the</c><00:17:47.520><c> the</c><00:17:48.000><c> the</c><00:17:48.440><c> entry</c>

00:17:49.430 --> 00:17:49.440 align:start position:0%
it will always be the the the entry
 

00:17:49.440 --> 00:17:51.350 align:start position:0%
it will always be the the the entry
point

00:17:51.350 --> 00:17:51.360 align:start position:0%
point
 

00:17:51.360 --> 00:17:52.610 align:start position:0%
point
so

00:17:52.610 --> 00:17:52.620 align:start position:0%
so
 

00:17:52.620 --> 00:17:58.370 align:start position:0%
so
that<00:17:53.880><c> works</c><00:17:54.600><c> like</c><00:17:54.960><c> it</c><00:17:55.620><c> sets</c><00:17:56.100><c> uh</c><00:17:56.820><c> the</c><00:17:57.179><c> the</c><00:17:57.720><c> other</c>

00:17:58.370 --> 00:17:58.380 align:start position:0%
that works like it sets uh the the other
 

00:17:58.380 --> 00:18:01.250 align:start position:0%
that works like it sets uh the the other
contracts<00:17:58.860><c> Uh</c><00:17:59.220><c> custom</c><00:17:59.400><c> slot</c><00:17:59.880><c> what</c><00:18:00.120><c> was</c><00:18:00.539><c> 9</c><00:18:01.140><c> 000</c>

00:18:01.250 --> 00:18:01.260 align:start position:0%
contracts Uh custom slot what was 9 000
 

00:18:01.260 --> 00:18:06.350 align:start position:0%
contracts Uh custom slot what was 9 000
so<00:18:01.740><c> it's</c><00:18:01.919><c> store</c><00:18:02.220><c> seven</c><00:18:02.520><c> right</c><00:18:03.000><c> there</c>

00:18:06.350 --> 00:18:06.360 align:start position:0%
 
 

00:18:06.360 --> 00:18:08.090 align:start position:0%
 
and<00:18:06.780><c> the</c><00:18:06.900><c> event</c><00:18:07.020><c> is</c><00:18:07.260><c> still</c><00:18:07.440><c> emitted</c><00:18:07.740><c> from</c><00:18:07.919><c> the</c>

00:18:08.090 --> 00:18:08.100 align:start position:0%
and the event is still emitted from the
 

00:18:08.100 --> 00:18:10.130 align:start position:0%
and the event is still emitted from the
the<00:18:08.400><c> execution</c><00:18:08.880><c> context</c>

00:18:10.130 --> 00:18:10.140 align:start position:0%
the execution context
 

00:18:10.140 --> 00:18:11.390 align:start position:0%
the execution context
so

00:18:11.390 --> 00:18:11.400 align:start position:0%
so
 

00:18:11.400 --> 00:18:14.510 align:start position:0%
so
if<00:18:11.820><c> Bob</c><00:18:12.000><c> wants</c><00:18:12.419><c> to</c><00:18:12.539><c> upgrade</c><00:18:12.960><c> the</c><00:18:13.260><c> system</c><00:18:13.520><c> all</c>

00:18:14.510 --> 00:18:14.520 align:start position:0%
if Bob wants to upgrade the system all
 

00:18:14.520 --> 00:18:16.430 align:start position:0%
if Bob wants to upgrade the system all
he<00:18:14.640><c> needs</c><00:18:14.820><c> to</c><00:18:14.940><c> do</c><00:18:15.059><c> like</c><00:18:15.360><c> here</c><00:18:15.720><c> we're</c><00:18:15.960><c> making</c><00:18:16.140><c> a</c>

00:18:16.430 --> 00:18:16.440 align:start position:0%
he needs to do like here we're making a
 

00:18:16.440 --> 00:18:18.710 align:start position:0%
he needs to do like here we're making a
like<00:18:16.860><c> a</c><00:18:17.039><c> silly</c><00:18:17.340><c> change</c><00:18:17.520><c> right</c><00:18:17.880><c> we're</c><00:18:18.240><c> just</c>

00:18:18.710 --> 00:18:18.720 align:start position:0%
like a silly change right we're just
 

00:18:18.720 --> 00:18:20.570 align:start position:0%
like a silly change right we're just
multiplying<00:18:19.320><c> the</c><00:18:19.440><c> incoming</c><00:18:19.860><c> value</c><00:18:20.039><c> just</c><00:18:20.400><c> by</c>

00:18:20.570 --> 00:18:20.580 align:start position:0%
multiplying the incoming value just by
 

00:18:20.580 --> 00:18:23.570 align:start position:0%
multiplying the incoming value just by
seven

00:18:23.570 --> 00:18:23.580 align:start position:0%
 
 

00:18:23.580 --> 00:18:24.830 align:start position:0%
 
um

00:18:24.830 --> 00:18:24.840 align:start position:0%
um
 

00:18:24.840 --> 00:18:28.490 align:start position:0%
um
this<00:18:25.740><c> new</c><00:18:25.980><c> another</c><00:18:26.400><c> contract</c><00:18:26.880><c> B2</c><00:18:27.539><c> is</c><00:18:28.080><c> deployed</c>

00:18:28.490 --> 00:18:28.500 align:start position:0%
this new another contract B2 is deployed
 

00:18:28.500 --> 00:18:30.230 align:start position:0%
this new another contract B2 is deployed
at<00:18:28.559><c> 2x10</c>

00:18:30.230 --> 00:18:30.240 align:start position:0%
at 2x10
 

00:18:30.240 --> 00:18:33.430 align:start position:0%
at 2x10
a<00:18:30.840><c> new</c><00:18:31.020><c> router</c><00:18:31.440><c> is</c><00:18:32.160><c> generated</c><00:18:32.580><c> by</c><00:18:32.880><c> the</c><00:18:33.000><c> tooling</c>

00:18:33.430 --> 00:18:33.440 align:start position:0%
a new router is generated by the tooling
 

00:18:33.440 --> 00:18:37.430 align:start position:0%
a new router is generated by the tooling
it<00:18:34.440><c> just</c><00:18:34.620><c> has</c><00:18:35.179><c> the</c><00:18:36.179><c> only</c><00:18:36.299><c> difference</c><00:18:36.600><c> is</c><00:18:37.020><c> up</c>

00:18:37.430 --> 00:18:37.440 align:start position:0%
it just has the only difference is up
 

00:18:37.440 --> 00:18:38.390 align:start position:0%
it just has the only difference is up
there

00:18:38.390 --> 00:18:38.400 align:start position:0%
there
 

00:18:38.400 --> 00:18:41.450 align:start position:0%
there
in<00:18:39.000><c> in</c><00:18:39.419><c> another</c><00:18:39.780><c> contracts</c><00:18:40.500><c> has</c><00:18:41.039><c> a</c><00:18:41.280><c> new</c>

00:18:41.450 --> 00:18:41.460 align:start position:0%
in in another contracts has a new
 

00:18:41.460 --> 00:18:43.010 align:start position:0%
in in another contracts has a new
address

00:18:43.010 --> 00:18:43.020 align:start position:0%
address
 

00:18:43.020 --> 00:18:45.590 align:start position:0%
address
everything<00:18:43.380><c> else</c><00:18:43.620><c> is</c><00:18:43.860><c> the</c><00:18:44.039><c> same</c>

00:18:45.590 --> 00:18:45.600 align:start position:0%
everything else is the same
 

00:18:45.600 --> 00:18:48.529 align:start position:0%
everything else is the same
and<00:18:46.380><c> Bob</c><00:18:47.100><c> sets</c><00:18:47.640><c> the</c><00:18:47.760><c> implementation</c><00:18:48.179><c> of</c><00:18:48.419><c> the</c>

00:18:48.529 --> 00:18:48.539 align:start position:0%
and Bob sets the implementation of the
 

00:18:48.539 --> 00:18:50.990 align:start position:0%
and Bob sets the implementation of the
proxy<00:18:48.960><c> to</c><00:18:49.080><c> that</c><00:18:49.320><c> new</c><00:18:49.500><c> router</c>

00:18:50.990 --> 00:18:51.000 align:start position:0%
proxy to that new router
 

00:18:51.000 --> 00:18:52.130 align:start position:0%
proxy to that new router
so

00:18:52.130 --> 00:18:52.140 align:start position:0%
so
 

00:18:52.140 --> 00:18:55.190 align:start position:0%
so
that's<00:18:52.919><c> how</c><00:18:53.280><c> you</c><00:18:53.400><c> upgrade</c><00:18:53.820><c> the</c><00:18:54.179><c> any</c><00:18:54.780><c> contract</c>

00:18:55.190 --> 00:18:55.200 align:start position:0%
that's how you upgrade the any contract
 

00:18:55.200 --> 00:18:57.110 align:start position:0%
that's how you upgrade the any contract
in<00:18:55.380><c> your</c><00:18:55.559><c> system</c><00:18:55.740><c> so</c><00:18:56.220><c> what</c><00:18:56.520><c> would</c><00:18:56.700><c> a</c><00:18:56.940><c> more</c>

00:18:57.110 --> 00:18:57.120 align:start position:0%
in your system so what would a more
 

00:18:57.120 --> 00:18:59.450 align:start position:0%
in your system so what would a more
complex<00:18:57.419><c> system</c><00:18:57.660><c> look</c><00:18:58.020><c> like</c>

00:18:59.450 --> 00:18:59.460 align:start position:0%
complex system look like
 

00:18:59.460 --> 00:19:02.230 align:start position:0%
complex system look like
maybe<00:18:59.880><c> like</c><00:19:00.299><c> this</c><00:19:00.480><c> you</c><00:19:01.140><c> have</c><00:19:01.260><c> the</c><00:19:01.559><c> main</c><00:19:01.679><c> proxy</c>

00:19:02.230 --> 00:19:02.240 align:start position:0%
maybe like this you have the main proxy
 

00:19:02.240 --> 00:19:04.789 align:start position:0%
maybe like this you have the main proxy
right<00:19:03.240><c> you</c><00:19:03.720><c> have</c><00:19:03.840><c> the</c><00:19:04.020><c> different</c><00:19:04.440><c> storage</c>

00:19:04.789 --> 00:19:04.799 align:start position:0%
right you have the different storage
 

00:19:04.799 --> 00:19:07.310 align:start position:0%
right you have the different storage
name<00:19:05.160><c> spaces</c><00:19:05.640><c> of</c><00:19:05.880><c> that</c><00:19:06.059><c> proxy</c>

00:19:07.310 --> 00:19:07.320 align:start position:0%
name spaces of that proxy
 

00:19:07.320 --> 00:19:08.990 align:start position:0%
name spaces of that proxy
and<00:19:07.679><c> then</c><00:19:07.740><c> you</c><00:19:07.919><c> have</c><00:19:08.039><c> the</c><00:19:08.160><c> router</c><00:19:08.520><c> which</c><00:19:08.760><c> you</c>

00:19:08.990 --> 00:19:09.000 align:start position:0%
and then you have the router which you
 

00:19:09.000 --> 00:19:10.850 align:start position:0%
and then you have the router which you
keep<00:19:09.179><c> changing</c><00:19:09.600><c> every</c><00:19:09.900><c> time</c><00:19:10.140><c> you</c><00:19:10.320><c> upgrade</c><00:19:10.679><c> the</c>

00:19:10.850 --> 00:19:10.860 align:start position:0%
keep changing every time you upgrade the
 

00:19:10.860 --> 00:19:12.289 align:start position:0%
keep changing every time you upgrade the
system<00:19:11.039><c> and</c><00:19:11.640><c> you</c><00:19:11.760><c> have</c><00:19:11.940><c> the</c><00:19:12.179><c> different</c>

00:19:12.289 --> 00:19:12.299 align:start position:0%
system and you have the different
 

00:19:12.299 --> 00:19:15.230 align:start position:0%
system and you have the different
modules<00:19:12.900><c> that</c><00:19:13.260><c> specify</c><00:19:13.740><c> uh</c><00:19:14.520><c> a</c><00:19:14.760><c> particular</c>

00:19:15.230 --> 00:19:15.240 align:start position:0%
modules that specify uh a particular
 

00:19:15.240 --> 00:19:17.630 align:start position:0%
modules that specify uh a particular
behavior<00:19:15.900><c> of</c><00:19:16.559><c> your</c><00:19:16.740><c> system</c>

00:19:17.630 --> 00:19:17.640 align:start position:0%
behavior of your system
 

00:19:17.640 --> 00:19:18.950 align:start position:0%
behavior of your system
and<00:19:18.240><c> then</c>

00:19:18.950 --> 00:19:18.960 align:start position:0%
and then
 

00:19:18.960 --> 00:19:21.470 align:start position:0%
and then
you<00:19:19.620><c> have</c><00:19:19.740><c> this</c><00:19:20.100><c> thing</c><00:19:20.280><c> which</c><00:19:20.880><c> is</c><00:19:21.000><c> really</c><00:19:21.299><c> cool</c>

00:19:21.470 --> 00:19:21.480 align:start position:0%
you have this thing which is really cool
 

00:19:21.480 --> 00:19:24.650 align:start position:0%
you have this thing which is really cool
cool<00:19:21.960><c> because</c><00:19:22.320><c> uh</c><00:19:23.160><c> called</c><00:19:23.340><c> mixense</c><00:19:24.059><c> because</c>

00:19:24.650 --> 00:19:24.660 align:start position:0%
cool because uh called mixense because
 

00:19:24.660 --> 00:19:27.289 align:start position:0%
cool because uh called mixense because
it<00:19:25.140><c> allows</c><00:19:25.559><c> intermodular</c><00:19:26.520><c> Communication</c><00:19:27.059><c> in</c>

00:19:27.289 --> 00:19:27.299 align:start position:0%
it allows intermodular Communication in
 

00:19:27.299 --> 00:19:28.730 align:start position:0%
it allows intermodular Communication in
a<00:19:27.419><c> way</c><00:19:27.539><c> that</c><00:19:27.720><c> we</c><00:19:27.840><c> we're</c><00:19:28.020><c> going</c><00:19:28.200><c> to</c><00:19:28.320><c> see</c><00:19:28.440><c> that's</c>

00:19:28.730 --> 00:19:28.740 align:start position:0%
a way that we we're going to see that's
 

00:19:28.740 --> 00:19:33.049 align:start position:0%
a way that we we're going to see that's
really<00:19:29.039><c> efficient</c><00:19:29.520><c> and</c><00:19:29.700><c> really</c><00:19:30.360><c> easy</c>

00:19:33.049 --> 00:19:33.059 align:start position:0%
 
 

00:19:33.059 --> 00:19:33.950 align:start position:0%
 
um

00:19:33.950 --> 00:19:33.960 align:start position:0%
um
 

00:19:33.960 --> 00:19:37.370 align:start position:0%
um
so<00:19:34.500><c> yeah</c><00:19:34.700><c> we</c><00:19:35.700><c> don't</c><00:19:35.820><c> use</c><00:19:36.120><c> any</c><00:19:36.539><c> storage</c><00:19:36.840><c> other</c>

00:19:37.370 --> 00:19:37.380 align:start position:0%
so yeah we don't use any storage other
 

00:19:37.380 --> 00:19:41.330 align:start position:0%
so yeah we don't use any storage other
than<00:19:37.679><c> the</c><00:19:38.100><c> execution</c><00:19:38.580><c> context</c><00:19:39.179><c> storage</c>

00:19:41.330 --> 00:19:41.340 align:start position:0%
than the execution context storage
 

00:19:41.340 --> 00:19:43.610 align:start position:0%
than the execution context storage
gas<00:19:41.820><c> efficiency</c>

00:19:43.610 --> 00:19:43.620 align:start position:0%
gas efficiency
 

00:19:43.620 --> 00:19:46.669 align:start position:0%
gas efficiency
uh<00:19:44.520><c> it's</c><00:19:45.059><c> like</c><00:19:45.179><c> a</c><00:19:45.419><c> concern</c><00:19:45.720><c> with</c><00:19:46.020><c> this</c><00:19:46.260><c> pattern</c>

00:19:46.669 --> 00:19:46.679 align:start position:0%
uh it's like a concern with this pattern
 

00:19:46.679 --> 00:19:48.409 align:start position:0%
uh it's like a concern with this pattern
because<00:19:46.860><c> you're</c><00:19:47.100><c> used</c><00:19:47.280><c> doing</c><00:19:47.820><c> two</c><00:19:48.059><c> delay</c>

00:19:48.409 --> 00:19:48.419 align:start position:0%
because you're used doing two delay
 

00:19:48.419 --> 00:19:49.909 align:start position:0%
because you're used doing two delay
calls

00:19:49.909 --> 00:19:49.919 align:start position:0%
calls
 

00:19:49.919 --> 00:19:50.750 align:start position:0%
calls
um

00:19:50.750 --> 00:19:50.760 align:start position:0%
um
 

00:19:50.760 --> 00:19:52.669 align:start position:0%
um
keep<00:19:51.120><c> in</c><00:19:51.240><c> mind</c><00:19:51.360><c> that</c><00:19:51.539><c> transparent</c><00:19:52.140><c> proxy</c><00:19:52.559><c> is</c>

00:19:52.669 --> 00:19:52.679 align:start position:0%
keep in mind that transparent proxy is
 

00:19:52.679 --> 00:19:55.850 align:start position:0%
keep in mind that transparent proxy is
the<00:19:52.919><c> ones</c><00:19:53.220><c> almost</c><00:19:53.580><c> everyone</c><00:19:53.940><c> uses</c><00:19:54.480><c> uh</c><00:19:55.140><c> costs</c>

00:19:55.850 --> 00:19:55.860 align:start position:0%
the ones almost everyone uses uh costs
 

00:19:55.860 --> 00:19:57.549 align:start position:0%
the ones almost everyone uses uh costs
like<00:19:55.919><c> 3</c><00:19:56.400><c> 000</c><00:19:56.520><c> gas</c>

00:19:57.549 --> 00:19:57.559 align:start position:0%
like 3 000 gas
 

00:19:57.559 --> 00:20:01.610 align:start position:0%
like 3 000 gas
Universal<00:19:58.559><c> proxies</c><00:19:58.980><c> about</c><00:19:59.640><c> 1600</c><00:20:00.480><c> and</c><00:20:01.260><c> this</c>

00:20:01.610 --> 00:20:01.620 align:start position:0%
Universal proxies about 1600 and this
 

00:20:01.620 --> 00:20:05.990 align:start position:0%
Universal proxies about 1600 and this
system<00:20:01.919><c> uh</c><00:20:02.820><c> uses</c><00:20:03.179><c> only</c><00:20:03.419><c> uh</c><00:20:04.200><c> 2</c><00:20:04.679><c> 600</c><00:20:05.280><c> gas</c><00:20:05.580><c> which</c>

00:20:05.990 --> 00:20:06.000 align:start position:0%
system uh uses only uh 2 600 gas which
 

00:20:06.000 --> 00:20:09.049 align:start position:0%
system uh uses only uh 2 600 gas which
is<00:20:06.179><c> all</c><00:20:06.720><c> right</c>

00:20:09.049 --> 00:20:09.059 align:start position:0%
 
 

00:20:09.059 --> 00:20:11.990 align:start position:0%
 
and<00:20:09.900><c> then</c><00:20:10.080><c> intermodial</c><00:20:11.000><c> intermodular</c>

00:20:11.990 --> 00:20:12.000 align:start position:0%
and then intermodial intermodular
 

00:20:12.000 --> 00:20:14.330 align:start position:0%
and then intermodial intermodular
Communications<00:20:12.600><c> how</c><00:20:13.440><c> would</c><00:20:13.559><c> a</c><00:20:13.740><c> module</c><00:20:14.100><c> talk</c>

00:20:14.330 --> 00:20:14.340 align:start position:0%
Communications how would a module talk
 

00:20:14.340 --> 00:20:17.510 align:start position:0%
Communications how would a module talk
to<00:20:14.460><c> another</c><00:20:14.640><c> module</c><00:20:15.299><c> you</c><00:20:16.200><c> could</c>

00:20:17.510 --> 00:20:17.520 align:start position:0%
to another module you could
 

00:20:17.520 --> 00:20:20.330 align:start position:0%
to another module you could
you<00:20:18.120><c> could</c><00:20:18.240><c> cast</c><00:20:18.539><c> your</c><00:20:19.140><c> module</c><00:20:19.559><c> as</c><00:20:19.919><c> the</c><00:20:20.220><c> other</c>

00:20:20.330 --> 00:20:20.340 align:start position:0%
you could cast your module as the other
 

00:20:20.340 --> 00:20:21.770 align:start position:0%
you could cast your module as the other
module<00:20:20.760><c> and</c><00:20:20.940><c> just</c><00:20:21.059><c> call</c><00:20:21.240><c> its</c><00:20:21.539><c> function</c>

00:20:21.770 --> 00:20:21.780 align:start position:0%
module and just call its function
 

00:20:21.780 --> 00:20:26.750 align:start position:0%
module and just call its function
because<00:20:22.080><c> every</c><00:20:22.679><c> module</c><00:20:23.160><c> is</c><00:20:23.580><c> this</c><00:20:23.940><c> the</c><00:20:24.120><c> system</c>

00:20:26.750 --> 00:20:26.760 align:start position:0%
 
 

00:20:26.760 --> 00:20:29.390 align:start position:0%
 
but<00:20:27.179><c> the</c><00:20:27.360><c> problem</c><00:20:27.419><c> with</c><00:20:27.720><c> this</c><00:20:27.900><c> is</c><00:20:28.320><c> that</c>

00:20:29.390 --> 00:20:29.400 align:start position:0%
but the problem with this is that
 

00:20:29.400 --> 00:20:31.130 align:start position:0%
but the problem with this is that
message<00:20:29.820><c> sender</c><00:20:30.419><c> would</c><00:20:30.539><c> be</c><00:20:30.660><c> lost</c><00:20:30.840><c> because</c>

00:20:31.130 --> 00:20:31.140 align:start position:0%
message sender would be lost because
 

00:20:31.140 --> 00:20:33.289 align:start position:0%
message sender would be lost because
it's<00:20:31.440><c> it's</c><00:20:31.679><c> a</c><00:20:31.919><c> call</c><00:20:32.039><c> you</c><00:20:32.340><c> you</c><00:20:32.640><c> break</c><00:20:32.940><c> the</c>

00:20:33.289 --> 00:20:33.299 align:start position:0%
it's it's a call you you break the
 

00:20:33.299 --> 00:20:35.810 align:start position:0%
it's it's a call you you break the
delegate<00:20:33.840><c> call</c><00:20:34.080><c> chain</c><00:20:34.440><c> right</c>

00:20:35.810 --> 00:20:35.820 align:start position:0%
delegate call chain right
 

00:20:35.820 --> 00:20:39.650 align:start position:0%
delegate call chain right
so<00:20:36.660><c> you</c><00:20:37.500><c> need</c><00:20:37.620><c> to</c><00:20:37.799><c> delay</c><00:20:38.220><c> call</c><00:20:38.640><c> to</c><00:20:39.360><c> the</c><00:20:39.539><c> other</c>

00:20:39.650 --> 00:20:39.660 align:start position:0%
so you need to delay call to the other
 

00:20:39.660 --> 00:20:41.770 align:start position:0%
so you need to delay call to the other
module<00:20:40.080><c> just</c><00:20:40.380><c> the</c><00:20:40.799><c> the</c><00:20:40.860><c> same</c><00:20:41.400><c> like</c>

00:20:41.770 --> 00:20:41.780 align:start position:0%
module just the the same like
 

00:20:41.780 --> 00:20:44.750 align:start position:0%
module just the the same like
self-casting<00:20:42.780><c> mechanism</c><00:20:43.200><c> but</c><00:20:44.039><c> with</c><00:20:44.400><c> delay</c>

00:20:44.750 --> 00:20:44.760 align:start position:0%
self-casting mechanism but with delay
 

00:20:44.760 --> 00:20:47.990 align:start position:0%
self-casting mechanism but with delay
code<00:20:45.059><c> uh</c><00:20:46.020><c> it</c><00:20:46.559><c> works</c><00:20:46.860><c> but</c><00:20:47.280><c> there's</c><00:20:47.580><c> something</c>

00:20:47.990 --> 00:20:48.000 align:start position:0%
code uh it works but there's something
 

00:20:48.000 --> 00:20:50.090 align:start position:0%
code uh it works but there's something
much<00:20:48.299><c> better</c><00:20:48.539><c> which</c><00:20:48.780><c> is</c><00:20:48.960><c> mixins</c>

00:20:50.090 --> 00:20:50.100 align:start position:0%
much better which is mixins
 

00:20:50.100 --> 00:20:52.070 align:start position:0%
much better which is mixins
which<00:20:50.640><c> are</c><00:20:50.760><c> pieces</c><00:20:51.059><c> of</c><00:20:51.240><c> code</c><00:20:51.360><c> that</c><00:20:51.660><c> know</c><00:20:51.840><c> how</c>

00:20:52.070 --> 00:20:52.080 align:start position:0%
which are pieces of code that know how
 

00:20:52.080 --> 00:20:53.990 align:start position:0%
which are pieces of code that know how
to<00:20:52.260><c> interact</c><00:20:52.620><c> with</c><00:20:52.919><c> another</c><00:20:53.100><c> module</c><00:20:53.700><c> storage</c>

00:20:53.990 --> 00:20:54.000 align:start position:0%
to interact with another module storage
 

00:20:54.000 --> 00:20:56.090 align:start position:0%
to interact with another module storage
they're<00:20:54.600><c> like</c><00:20:54.840><c> delegates</c><00:20:55.500><c> for</c><00:20:55.860><c> that</c>

00:20:56.090 --> 00:20:56.100 align:start position:0%
they're like delegates for that
 

00:20:56.100 --> 00:20:59.270 align:start position:0%
they're like delegates for that
particular<00:20:56.640><c> part</c><00:20:57.419><c> of</c><00:20:57.600><c> the</c><00:20:57.720><c> logic</c><00:20:58.080><c> right</c><00:20:58.500><c> and</c>

00:20:59.270 --> 00:20:59.280 align:start position:0%
particular part of the logic right and
 

00:20:59.280 --> 00:21:00.289 align:start position:0%
particular part of the logic right and
they're<00:20:59.400><c> not</c><00:20:59.580><c> deployed</c><00:20:59.940><c> they're</c><00:21:00.120><c> just</c>

00:21:00.289 --> 00:21:00.299 align:start position:0%
they're not deployed they're just
 

00:21:00.299 --> 00:21:03.110 align:start position:0%
they're not deployed they're just
inherited<00:21:00.900><c> it's</c><00:21:01.200><c> like</c><00:21:01.380><c> modular</c><00:21:02.100><c> inherits</c><00:21:03.000><c> a</c>

00:21:03.110 --> 00:21:03.120 align:start position:0%
inherited it's like modular inherits a
 

00:21:03.120 --> 00:21:07.370 align:start position:0%
inherited it's like modular inherits a
bit<00:21:03.240><c> of</c><00:21:03.419><c> the</c><00:21:03.480><c> code</c><00:21:03.660><c> of</c><00:21:03.840><c> more</c><00:21:04.020><c> UB</c>

00:21:07.370 --> 00:21:07.380 align:start position:0%
 
 

00:21:07.380 --> 00:21:10.850 align:start position:0%
 
and<00:21:08.280><c> the</c><00:21:08.880><c> nice</c><00:21:09.059><c> thing</c><00:21:09.360><c> is</c><00:21:09.600><c> that</c><00:21:09.780><c> you</c><00:21:09.960><c> can</c><00:21:10.140><c> tell</c>

00:21:10.850 --> 00:21:10.860 align:start position:0%
and the nice thing is that you can tell
 

00:21:10.860 --> 00:21:12.470 align:start position:0%
and the nice thing is that you can tell
the<00:21:11.039><c> mix</c><00:21:11.280><c> in</c><00:21:11.460><c> to</c><00:21:11.700><c> interact</c><00:21:12.000><c> with</c><00:21:12.179><c> the</c><00:21:12.360><c> other</c>

00:21:12.470 --> 00:21:12.480 align:start position:0%
the mix in to interact with the other
 

00:21:12.480 --> 00:21:16.130 align:start position:0%
the mix in to interact with the other
module<00:21:13.320><c> without</c><00:21:14.220><c> even</c><00:21:14.520><c> making</c><00:21:14.820><c> a</c><00:21:15.000><c> call</c>

00:21:16.130 --> 00:21:16.140 align:start position:0%
module without even making a call
 

00:21:16.140 --> 00:21:18.350 align:start position:0%
module without even making a call
so<00:21:16.679><c> communication</c><00:21:17.520><c> becomes</c><00:21:17.940><c> super</c><00:21:18.120><c> cheap</c>

00:21:18.350 --> 00:21:18.360 align:start position:0%
so communication becomes super cheap
 

00:21:18.360 --> 00:21:21.110 align:start position:0%
so communication becomes super cheap
let's<00:21:18.960><c> let's</c><00:21:19.200><c> see</c><00:21:19.380><c> an</c><00:21:19.559><c> example</c><00:21:19.799><c> we</c><00:21:20.520><c> have</c><00:21:20.640><c> owner</c>

00:21:21.110 --> 00:21:21.120 align:start position:0%
let's let's see an example we have owner
 

00:21:21.120 --> 00:21:23.930 align:start position:0%
let's let's see an example we have owner
storage<00:21:21.360><c> which</c><00:21:22.260><c> just</c><00:21:22.679><c> declares</c><00:21:23.460><c> a</c><00:21:23.580><c> struct</c>

00:21:23.930 --> 00:21:23.940 align:start position:0%
storage which just declares a struct
 

00:21:23.940 --> 00:21:26.690 align:start position:0%
storage which just declares a struct
with<00:21:24.480><c> what</c><00:21:24.600><c> single</c><00:21:24.960><c> variable</c><00:21:25.280><c> uh</c><00:21:26.280><c> that</c>

00:21:26.690 --> 00:21:26.700 align:start position:0%
with what single variable uh that
 

00:21:26.700 --> 00:21:29.990 align:start position:0%
with what single variable uh that
mechanism<00:21:27.240><c> to</c><00:21:27.539><c> to</c><00:21:27.780><c> get</c><00:21:28.080><c> custom</c><00:21:28.440><c> storage</c><00:21:28.860><c> slots</c>

00:21:29.990 --> 00:21:30.000 align:start position:0%
mechanism to to get custom storage slots
 

00:21:30.000 --> 00:21:32.450 align:start position:0%
mechanism to to get custom storage slots
then<00:21:30.480><c> we</c><00:21:30.720><c> have</c><00:21:30.840><c> the</c><00:21:31.080><c> owner</c><00:21:31.380><c> mixing</c>

00:21:32.450 --> 00:21:32.460 align:start position:0%
then we have the owner mixing
 

00:21:32.460 --> 00:21:35.450 align:start position:0%
then we have the owner mixing
which<00:21:33.179><c> knows</c><00:21:33.600><c> that</c><00:21:33.840><c> storage</c><00:21:34.140><c> and</c><00:21:34.919><c> only</c><00:21:35.159><c> has</c>

00:21:35.450 --> 00:21:35.460 align:start position:0%
which knows that storage and only has
 

00:21:35.460 --> 00:21:39.830 align:start position:0%
which knows that storage and only has
and<00:21:35.640><c> only</c><00:21:35.820><c> only</c><00:21:36.320><c> owner</c><00:21:37.320><c> modifier</c><00:21:37.740><c> right</c><00:21:38.840><c> that</c>

00:21:39.830 --> 00:21:39.840 align:start position:0%
and only only owner modifier right that
 

00:21:39.840 --> 00:21:42.289 align:start position:0%
and only only owner modifier right that
does<00:21:40.140><c> the</c><00:21:40.380><c> typical</c><00:21:40.620><c> check</c><00:21:40.860><c> right</c>

00:21:42.289 --> 00:21:42.299 align:start position:0%
does the typical check right
 

00:21:42.299 --> 00:21:45.649 align:start position:0%
does the typical check right
and<00:21:43.080><c> then</c><00:21:43.500><c> in</c><00:21:43.860><c> owner</c><00:21:44.220><c> module</c><00:21:44.700><c> we</c><00:21:45.120><c> inherit</c><00:21:45.539><c> the</c>

00:21:45.649 --> 00:21:45.659 align:start position:0%
and then in owner module we inherit the
 

00:21:45.659 --> 00:21:46.730 align:start position:0%
and then in owner module we inherit the
mixing

00:21:46.730 --> 00:21:46.740 align:start position:0%
mixing
 

00:21:46.740 --> 00:21:49.310 align:start position:0%
mixing
which<00:21:47.340><c> gives</c><00:21:47.640><c> us</c><00:21:47.940><c> the</c><00:21:48.299><c> only</c><00:21:48.360><c> owner</c><00:21:48.840><c> modifier</c>

00:21:49.310 --> 00:21:49.320 align:start position:0%
which gives us the only owner modifier
 

00:21:49.320 --> 00:21:51.950 align:start position:0%
which gives us the only owner modifier
access<00:21:49.620><c> right</c>

00:21:51.950 --> 00:21:51.960 align:start position:0%
access right
 

00:21:51.960 --> 00:21:54.770 align:start position:0%
access right
and<00:21:52.500><c> we</c><00:21:52.679><c> have</c><00:21:52.980><c> a</c><00:21:53.100><c> getter</c><00:21:53.460><c> for</c><00:21:53.580><c> the</c><00:21:53.760><c> owner</c>

00:21:54.770 --> 00:21:54.780 align:start position:0%
and we have a getter for the owner
 

00:21:54.780 --> 00:21:56.990 align:start position:0%
and we have a getter for the owner
and<00:21:55.260><c> now</c><00:21:55.380><c> we</c><00:21:55.740><c> have</c><00:21:55.860><c> a</c><00:21:56.039><c> new</c><00:21:56.159><c> version</c><00:21:56.400><c> of</c><00:21:56.760><c> value</c>

00:21:56.990 --> 00:21:57.000 align:start position:0%
and now we have a new version of value
 

00:21:57.000 --> 00:22:01.789 align:start position:0%
and now we have a new version of value
holder<00:21:57.539><c> B5</c><00:21:58.080><c> right</c><00:21:59.299><c> that</c><00:22:00.299><c> has</c><00:22:01.080><c> a</c><00:22:01.260><c> single</c><00:22:01.500><c> change</c>

00:22:01.789 --> 00:22:01.799 align:start position:0%
holder B5 right that has a single change
 

00:22:01.799 --> 00:22:04.730 align:start position:0%
holder B5 right that has a single change
which<00:22:02.700><c> is</c><00:22:02.880><c> we're</c><00:22:03.480><c> using</c><00:22:03.840><c> the</c><00:22:04.020><c> only</c><00:22:04.200><c> owner</c>

00:22:04.730 --> 00:22:04.740 align:start position:0%
which is we're using the only owner
 

00:22:04.740 --> 00:22:08.090 align:start position:0%
which is we're using the only owner
modifier<00:22:05.159><c> here</c><00:22:05.940><c> from</c><00:22:06.480><c> another</c><00:22:06.600><c> module</c><00:22:07.200><c> using</c>

00:22:08.090 --> 00:22:08.100 align:start position:0%
modifier here from another module using
 

00:22:08.100 --> 00:22:10.669 align:start position:0%
modifier here from another module using
the<00:22:08.460><c> owner</c><00:22:09.360><c> mixing</c>

00:22:10.669 --> 00:22:10.679 align:start position:0%
the owner mixing
 

00:22:10.679 --> 00:22:13.730 align:start position:0%
the owner mixing
if<00:22:11.159><c> you</c><00:22:11.280><c> want</c><00:22:11.460><c> to</c><00:22:11.580><c> use</c><00:22:11.700><c> this</c><00:22:12.320><c> you</c><00:22:13.320><c> only</c><00:22:13.440><c> have</c><00:22:13.679><c> to</c>

00:22:13.730 --> 00:22:13.740 align:start position:0%
if you want to use this you only have to
 

00:22:13.740 --> 00:22:15.890 align:start position:0%
if you want to use this you only have to
change<00:22:13.919><c> your</c><00:22:14.280><c> code</c><00:22:14.400><c> style</c><00:22:14.760><c> a</c><00:22:15.240><c> little</c><00:22:15.419><c> bit</c><00:22:15.539><c> it's</c>

00:22:15.890 --> 00:22:15.900 align:start position:0%
change your code style a little bit it's
 

00:22:15.900 --> 00:22:17.750 align:start position:0%
change your code style a little bit it's
kind<00:22:16.080><c> of</c><00:22:16.200><c> weird</c><00:22:16.320><c> but</c><00:22:16.620><c> you</c><00:22:17.039><c> get</c><00:22:17.159><c> used</c><00:22:17.400><c> to</c><00:22:17.580><c> it</c>

00:22:17.750 --> 00:22:17.760 align:start position:0%
kind of weird but you get used to it
 

00:22:17.760 --> 00:22:20.810 align:start position:0%
kind of weird but you get used to it
fast<00:22:18.419><c> because</c><00:22:18.840><c> it's</c><00:22:19.140><c> simple</c>

00:22:20.810 --> 00:22:20.820 align:start position:0%
fast because it's simple
 

00:22:20.820 --> 00:22:23.390 align:start position:0%
fast because it's simple
you<00:22:21.600><c> just</c><00:22:21.720><c> need</c><00:22:21.840><c> to</c><00:22:22.020><c> use</c><00:22:22.200><c> storage</c><00:22:22.500><c> name</c><00:22:22.919><c> spaces</c>

00:22:23.390 --> 00:22:23.400 align:start position:0%
you just need to use storage name spaces
 

00:22:23.400 --> 00:22:24.770 align:start position:0%
you just need to use storage name spaces
instead<00:22:23.820><c> instead</c><00:22:24.179><c> of</c><00:22:24.240><c> like</c><00:22:24.480><c> regular</c>

00:22:24.770 --> 00:22:24.780 align:start position:0%
instead instead of like regular
 

00:22:24.780 --> 00:22:26.409 align:start position:0%
instead instead of like regular
variables

00:22:26.409 --> 00:22:26.419 align:start position:0%
variables
 

00:22:26.419 --> 00:22:29.590 align:start position:0%
variables
and<00:22:27.419><c> yeah</c><00:22:27.600><c> you</c><00:22:27.840><c> get</c><00:22:27.960><c> used</c><00:22:28.140><c> to</c><00:22:28.320><c> it</c>

00:22:29.590 --> 00:22:29.600 align:start position:0%
and yeah you get used to it
 

00:22:29.600 --> 00:22:32.090 align:start position:0%
and yeah you get used to it
should<00:22:30.600><c> Solitaire</c><00:22:31.260><c> do</c><00:22:31.380><c> this</c><00:22:31.559><c> under</c><00:22:31.740><c> the</c><00:22:31.980><c> hood</c>

00:22:32.090 --> 00:22:32.100 align:start position:0%
should Solitaire do this under the hood
 

00:22:32.100 --> 00:22:35.750 align:start position:0%
should Solitaire do this under the hood
there's<00:22:32.580><c> a</c><00:22:32.820><c> proposal</c><00:22:33.539><c> from</c><00:22:33.840><c> maxim4</c>

00:22:35.750 --> 00:22:35.760 align:start position:0%
there's a proposal from maxim4
 

00:22:35.760 --> 00:22:36.350 align:start position:0%
there's a proposal from maxim4
um

00:22:36.350 --> 00:22:36.360 align:start position:0%
um
 

00:22:36.360 --> 00:22:38.570 align:start position:0%
um
so<00:22:36.960><c> it</c><00:22:37.140><c> is</c><00:22:37.500><c> something</c><00:22:37.740><c> that</c><00:22:38.039><c> the</c><00:22:38.220><c> solidity</c>

00:22:38.570 --> 00:22:38.580 align:start position:0%
so it is something that the solidity
 

00:22:38.580 --> 00:22:41.330 align:start position:0%
so it is something that the solidity
team<00:22:38.880><c> is</c><00:22:39.120><c> considering</c><00:22:39.600><c> uh</c><00:22:40.500><c> this</c><00:22:40.740><c> could</c><00:22:40.919><c> be</c><00:22:41.100><c> a</c>

00:22:41.330 --> 00:22:41.340 align:start position:0%
team is considering uh this could be a
 

00:22:41.340 --> 00:22:43.430 align:start position:0%
team is considering uh this could be a
language<00:22:41.580><c> supported</c><00:22:42.240><c> feature</c><00:22:42.600><c> to</c><00:22:43.080><c> have</c><00:22:43.320><c> like</c>

00:22:43.430 --> 00:22:43.440 align:start position:0%
language supported feature to have like
 

00:22:43.440 --> 00:22:46.210 align:start position:0%
language supported feature to have like
a<00:22:43.679><c> contract</c><00:22:43.980><c> hub</c>

00:22:46.210 --> 00:22:46.220 align:start position:0%
a contract hub
 

00:22:46.220 --> 00:22:49.669 align:start position:0%
a contract hub
and<00:22:47.220><c> yeah</c><00:22:47.640><c> why</c><00:22:48.059><c> use</c><00:22:48.299><c> the</c><00:22:48.480><c> router</c>

00:22:49.669 --> 00:22:49.679 align:start position:0%
and yeah why use the router
 

00:22:49.679 --> 00:22:51.350 align:start position:0%
and yeah why use the router
you<00:22:50.159><c> don't</c><00:22:50.220><c> have</c><00:22:50.460><c> a</c><00:22:50.760><c> contract</c><00:22:51.120><c> size</c>

00:22:51.350 --> 00:22:51.360 align:start position:0%
you don't have a contract size
 

00:22:51.360 --> 00:22:53.270 align:start position:0%
you don't have a contract size
limitations<00:22:51.900><c> anymore</c><00:22:52.200><c> because</c><00:22:52.620><c> you</c><00:22:52.919><c> can</c><00:22:53.039><c> just</c>

00:22:53.270 --> 00:22:53.280 align:start position:0%
limitations anymore because you can just
 

00:22:53.280 --> 00:22:55.850 align:start position:0%
limitations anymore because you can just
combine<00:22:53.640><c> like</c><00:22:53.880><c> I</c><00:22:54.120><c> think</c><00:22:54.240><c> I</c><00:22:54.659><c> I</c><00:22:55.020><c> tested</c><00:22:55.440><c> it</c><00:22:55.559><c> once</c>

00:22:55.850 --> 00:22:55.860 align:start position:0%
combine like I think I I tested it once
 

00:22:55.860 --> 00:22:58.789 align:start position:0%
combine like I think I I tested it once
with<00:22:56.039><c> like</c><00:22:56.220><c> 800</c><00:22:56.780><c> functions</c><00:22:57.780><c> which</c><00:22:58.500><c> is</c><00:22:58.620><c> pretty</c>

00:22:58.789 --> 00:22:58.799 align:start position:0%
with like 800 functions which is pretty
 

00:22:58.799 --> 00:23:01.490 align:start position:0%
with like 800 functions which is pretty
crazy

00:23:01.490 --> 00:23:01.500 align:start position:0%
 
 

00:23:01.500 --> 00:23:04.190 align:start position:0%
 
um<00:23:01.919><c> it's</c><00:23:02.460><c> like</c><00:23:02.640><c> the</c><00:23:03.059><c> router</c><00:23:03.419><c> merges</c><00:23:03.840><c> all</c><00:23:04.080><c> the</c>

00:23:04.190 --> 00:23:04.200 align:start position:0%
um it's like the router merges all the
 

00:23:04.200 --> 00:23:07.669 align:start position:0%
um it's like the router merges all the
contracts<00:23:04.620><c> into</c><00:23:04.799><c> a</c><00:23:05.100><c> single</c><00:23:05.520><c> contract</c><00:23:06.000><c> so</c>

00:23:07.669 --> 00:23:07.679 align:start position:0%
contracts into a single contract so
 

00:23:07.679 --> 00:23:10.610 align:start position:0%
contracts into a single contract so
then<00:23:08.640><c> as</c><00:23:09.120><c> we</c><00:23:09.299><c> just</c><00:23:09.419><c> saw</c><00:23:09.600><c> we</c><00:23:09.840><c> have</c><00:23:10.020><c> good</c><00:23:10.380><c> easy</c>

00:23:10.610 --> 00:23:10.620 align:start position:0%
then as we just saw we have good easy
 

00:23:10.620 --> 00:23:12.169 align:start position:0%
then as we just saw we have good easy
Communications<00:23:11.220><c> between</c><00:23:11.580><c> the</c><00:23:11.880><c> models</c>

00:23:12.169 --> 00:23:12.179 align:start position:0%
Communications between the models
 

00:23:12.179 --> 00:23:14.330 align:start position:0%
Communications between the models
without<00:23:12.360><c> having</c><00:23:12.780><c> to</c><00:23:13.200><c> use</c><00:23:13.380><c> a</c><00:23:13.559><c> registry</c><00:23:14.039><c> or</c>

00:23:14.330 --> 00:23:14.340 align:start position:0%
without having to use a registry or
 

00:23:14.340 --> 00:23:17.210 align:start position:0%
without having to use a registry or
authentication<00:23:15.120><c> or</c><00:23:15.480><c> anything</c>

00:23:17.210 --> 00:23:17.220 align:start position:0%
authentication or anything
 

00:23:17.220 --> 00:23:19.730 align:start position:0%
authentication or anything
it's<00:23:17.760><c> ideal</c><00:23:18.059><c> for</c><00:23:18.360><c> complex</c><00:23:18.900><c> experimental</c>

00:23:19.730 --> 00:23:19.740 align:start position:0%
it's ideal for complex experimental
 

00:23:19.740 --> 00:23:20.890 align:start position:0%
it's ideal for complex experimental
systems

00:23:20.890 --> 00:23:20.900 align:start position:0%
systems
 

00:23:20.900 --> 00:23:23.630 align:start position:0%
systems
and<00:23:21.900><c> the</c><00:23:22.559><c> other</c><00:23:22.620><c> nice</c><00:23:22.860><c> thing</c><00:23:23.100><c> is</c><00:23:23.280><c> that</c><00:23:23.460><c> the</c>

00:23:23.630 --> 00:23:23.640 align:start position:0%
and the other nice thing is that the
 

00:23:23.640 --> 00:23:26.330 align:start position:0%
and the other nice thing is that the
router<00:23:24.059><c> is</c><00:23:24.360><c> since</c><00:23:25.200><c> the</c><00:23:25.559><c> addresses</c><00:23:25.980><c> are</c><00:23:26.159><c> hard</c>

00:23:26.330 --> 00:23:26.340 align:start position:0%
router is since the addresses are hard
 

00:23:26.340 --> 00:23:28.430 align:start position:0%
router is since the addresses are hard
coded<00:23:26.820><c> it's</c><00:23:27.120><c> very</c><00:23:27.360><c> explicit</c><00:23:27.840><c> so</c><00:23:28.020><c> it's</c><00:23:28.200><c> good</c>

00:23:28.430 --> 00:23:28.440 align:start position:0%
coded it's very explicit so it's good
 

00:23:28.440 --> 00:23:29.330 align:start position:0%
coded it's very explicit so it's good
for

00:23:29.330 --> 00:23:29.340 align:start position:0%
for
 

00:23:29.340 --> 00:23:30.890 align:start position:0%
for
for<00:23:29.580><c> governance</c><00:23:30.120><c> if</c><00:23:30.299><c> you</c><00:23:30.419><c> want</c><00:23:30.539><c> to</c><00:23:30.659><c> make</c><00:23:30.720><c> an</c>

00:23:30.890 --> 00:23:30.900 align:start position:0%
for governance if you want to make an
 

00:23:30.900 --> 00:23:32.990 align:start position:0%
for governance if you want to make an
update<00:23:31.200><c> to</c><00:23:31.320><c> the</c><00:23:31.500><c> system</c><00:23:31.740><c> you</c><00:23:32.580><c> show</c><00:23:32.760><c> your</c>

00:23:32.990 --> 00:23:33.000 align:start position:0%
update to the system you show your
 

00:23:33.000 --> 00:23:34.549 align:start position:0%
update to the system you show your
community<00:23:33.179><c> like</c><00:23:33.600><c> this</c><00:23:34.020><c> is</c><00:23:34.140><c> what</c><00:23:34.320><c> we're</c><00:23:34.440><c> going</c>

00:23:34.549 --> 00:23:34.559 align:start position:0%
community like this is what we're going
 

00:23:34.559 --> 00:23:36.649 align:start position:0%
community like this is what we're going
to<00:23:34.679><c> change</c><00:23:34.860><c> this</c><00:23:35.700><c> is</c><00:23:35.760><c> what</c><00:23:36.000><c> the</c><00:23:36.179><c> configuration</c>

00:23:36.649 --> 00:23:36.659 align:start position:0%
to change this is what the configuration
 

00:23:36.659 --> 00:23:38.990 align:start position:0%
to change this is what the configuration
of<00:23:36.960><c> the</c><00:23:37.080><c> system</c><00:23:37.260><c> will</c><00:23:37.620><c> look</c><00:23:37.860><c> like</c><00:23:38.039><c> it's</c><00:23:38.760><c> not</c>

00:23:38.990 --> 00:23:39.000 align:start position:0%
of the system will look like it's not
 

00:23:39.000 --> 00:23:40.669 align:start position:0%
of the system will look like it's not
hidden<00:23:39.539><c> in</c><00:23:39.840><c> some</c>

00:23:40.669 --> 00:23:40.679 align:start position:0%
hidden in some
 

00:23:40.679 --> 00:23:43.430 align:start position:0%
hidden in some
uh<00:23:41.340><c> Dynamic</c><00:23:41.880><c> storage</c><00:23:42.179><c> somewhere</c><00:23:42.780><c> it's</c><00:23:42.960><c> right</c>

00:23:43.430 --> 00:23:43.440 align:start position:0%
uh Dynamic storage somewhere it's right
 

00:23:43.440 --> 00:23:44.930 align:start position:0%
uh Dynamic storage somewhere it's right
there

00:23:44.930 --> 00:23:44.940 align:start position:0%
there
 

00:23:44.940 --> 00:23:47.990 align:start position:0%
there
uh<00:23:45.780><c> and</c><00:23:46.140><c> yeah</c><00:23:46.559><c> that's</c><00:23:46.980><c> why</c><00:23:47.159><c> we're</c><00:23:47.340><c> using</c><00:23:47.640><c> it</c><00:23:47.820><c> as</c>

00:23:47.990 --> 00:23:48.000 align:start position:0%
uh and yeah that's why we're using it as
 

00:23:48.000 --> 00:23:50.350 align:start position:0%
uh and yeah that's why we're using it as
a<00:23:48.179><c> core</c><00:23:48.299><c> component</c><00:23:48.840><c> of</c><00:23:49.200><c> synthetics</c><00:23:49.799><c> B3</c>

00:23:50.350 --> 00:23:50.360 align:start position:0%
a core component of synthetics B3
 

00:23:50.360 --> 00:23:53.270 align:start position:0%
a core component of synthetics B3
because<00:23:51.360><c> it's</c><00:23:51.960><c> it's</c><00:23:52.260><c> a</c><00:23:52.500><c> complex</c><00:23:52.679><c> system</c><00:23:52.919><c> that</c>

00:23:53.270 --> 00:23:53.280 align:start position:0%
because it's it's a complex system that
 

00:23:53.280 --> 00:23:56.029 align:start position:0%
because it's it's a complex system that
needs<00:23:53.640><c> to</c><00:23:53.900><c> not</c><00:23:54.900><c> have</c><00:23:55.080><c> all</c><00:23:55.320><c> the</c><00:23:55.559><c> complications</c>

00:23:56.029 --> 00:23:56.039 align:start position:0%
needs to not have all the complications
 

00:23:56.039 --> 00:23:58.610 align:start position:0%
needs to not have all the complications
of<00:23:56.600><c> intermodular</c><00:23:57.600><c> communications</c><00:23:58.140><c> and</c><00:23:58.500><c> all</c>

00:23:58.610 --> 00:23:58.620 align:start position:0%
of intermodular communications and all
 

00:23:58.620 --> 00:24:00.350 align:start position:0%
of intermodular communications and all
that

00:24:00.350 --> 00:24:00.360 align:start position:0%
that
 

00:24:00.360 --> 00:24:02.810 align:start position:0%
that
and<00:24:01.200><c> well</c><00:24:01.500><c> if</c><00:24:01.799><c> you</c><00:24:01.860><c> want</c><00:24:01.980><c> to</c><00:24:02.100><c> try</c><00:24:02.220><c> it</c><00:24:02.340><c> out</c><00:24:02.460><c> it's</c>

00:24:02.810 --> 00:24:02.820 align:start position:0%
and well if you want to try it out it's
 

00:24:02.820 --> 00:24:05.870 align:start position:0%
and well if you want to try it out it's
a<00:24:03.000><c> heart</c><00:24:03.179><c> health</c><00:24:03.419><c> plugin</c><00:24:03.980><c> it's</c><00:24:04.980><c> uh</c>

00:24:05.870 --> 00:24:05.880 align:start position:0%
a heart health plugin it's uh
 

00:24:05.880 --> 00:24:11.870 align:start position:0%
a heart health plugin it's uh
synthetics<00:24:06.659><c> B3</c><00:24:07.400><c> uh</c><00:24:08.400><c> hard</c><00:24:08.640><c> hat</c><00:24:08.940><c> router</c>

00:24:11.870 --> 00:24:11.880 align:start position:0%
 
 

00:24:11.880 --> 00:24:14.510 align:start position:0%
 
it<00:24:12.600><c> generates</c><00:24:12.960><c> the</c><00:24:13.200><c> router</c><00:24:13.620><c> source</c>

00:24:14.510 --> 00:24:14.520 align:start position:0%
it generates the router source
 

00:24:14.520 --> 00:24:17.870 align:start position:0%
it generates the router source
it<00:24:15.120><c> manages</c><00:24:15.539><c> storage</c><00:24:15.840><c> namespaces</c><00:24:16.620><c> for</c><00:24:16.860><c> you</c><00:24:17.039><c> it</c>

00:24:17.870 --> 00:24:17.880 align:start position:0%
it manages storage namespaces for you it
 

00:24:17.880 --> 00:24:19.669 align:start position:0%
it manages storage namespaces for you it
performs<00:24:18.299><c> validations</c><00:24:18.840><c> to</c><00:24:19.260><c> ensure</c><00:24:19.500><c> that</c>

00:24:19.669 --> 00:24:19.679 align:start position:0%
performs validations to ensure that
 

00:24:19.679 --> 00:24:21.710 align:start position:0%
performs validations to ensure that
there's<00:24:20.159><c> no</c><00:24:20.820><c> there</c><00:24:21.179><c> are</c><00:24:21.360><c> no</c><00:24:21.480><c> storage</c>

00:24:21.710 --> 00:24:21.720 align:start position:0%
there's no there are no storage
 

00:24:21.720 --> 00:24:23.510 align:start position:0%
there's no there are no storage
collisions<00:24:22.320><c> and</c><00:24:22.740><c> that's</c><00:24:23.100><c> pretty</c><00:24:23.280><c> much</c><00:24:23.400><c> it</c>

00:24:23.510 --> 00:24:23.520 align:start position:0%
collisions and that's pretty much it
 

00:24:23.520 --> 00:24:26.029 align:start position:0%
collisions and that's pretty much it
that's<00:24:23.760><c> what</c><00:24:24.120><c> the</c><00:24:24.360><c> plugin</c><00:24:24.720><c> does</c>

00:24:26.029 --> 00:24:26.039 align:start position:0%
that's what the plugin does
 

00:24:26.039 --> 00:24:34.430 align:start position:0%
that's what the plugin does
so<00:24:26.700><c> thank</c><00:24:27.539><c> you</c><00:24:27.659><c> very</c><00:24:27.780><c> much</c>

00:24:34.430 --> 00:24:34.440 align:start position:0%
 
 

00:24:34.440 --> 00:24:37.850 align:start position:0%
 
thank<00:24:34.919><c> you</c>

00:24:37.850 --> 00:24:37.860 align:start position:0%
 
 

00:24:37.860 --> 00:24:38.810 align:start position:0%
 
um

00:24:38.810 --> 00:24:38.820 align:start position:0%
um
 

00:24:38.820 --> 00:24:40.909 align:start position:0%
um
are<00:24:39.299><c> there</c><00:24:39.480><c> any</c><00:24:39.659><c> questions</c>

00:24:40.909 --> 00:24:40.919 align:start position:0%
are there any questions
 

00:24:40.919 --> 00:24:42.950 align:start position:0%
are there any questions
I<00:24:41.340><c> just</c><00:24:41.460><c> want</c><00:24:41.640><c> to</c><00:24:41.760><c> know</c><00:24:41.940><c> if</c><00:24:42.299><c> I'm</c><00:24:42.480><c> missing</c>

00:24:42.950 --> 00:24:42.960 align:start position:0%
I just want to know if I'm missing
 

00:24:42.960 --> 00:24:47.029 align:start position:0%
I just want to know if I'm missing
something<00:24:43.260><c> but</c><00:24:43.679><c> this</c><00:24:44.640><c> proxy</c><00:24:45.600><c> router</c><00:24:46.140><c> could</c><00:24:46.799><c> be</c>

00:24:47.029 --> 00:24:47.039 align:start position:0%
something but this proxy router could be
 

00:24:47.039 --> 00:24:49.029 align:start position:0%
something but this proxy router could be
the<00:24:47.280><c> same</c><00:24:47.400><c> as</c><00:24:47.760><c> the</c>

00:24:49.029 --> 00:24:49.039 align:start position:0%
the same as the
 

00:24:49.039 --> 00:24:51.950 align:start position:0%
the same as the
multi-facet<00:24:50.120><c> proxy</c><00:24:51.120><c> you</c><00:24:51.299><c> know</c><00:24:51.419><c> the</c><00:24:51.600><c> diamond</c>

00:24:51.950 --> 00:24:51.960 align:start position:0%
multi-facet proxy you know the diamond
 

00:24:51.960 --> 00:24:55.270 align:start position:0%
multi-facet proxy you know the diamond
proxy<00:24:52.679><c> but</c><00:24:53.460><c> with</c><00:24:53.760><c> the</c><00:24:54.000><c> hard-codile</c>

00:24:55.270 --> 00:24:55.280 align:start position:0%
proxy but with the hard-codile
 

00:24:55.280 --> 00:24:59.510 align:start position:0%
proxy but with the hard-codile
uh<00:24:56.280><c> implementations</c><00:24:57.320><c> uh</c><00:24:58.320><c> yes</c><00:24:58.559><c> I</c><00:24:58.919><c> I</c><00:24:59.039><c> couldn't</c>

00:24:59.510 --> 00:24:59.520 align:start position:0%
uh implementations uh yes I I couldn't
 

00:24:59.520 --> 00:25:02.330 align:start position:0%
uh implementations uh yes I I couldn't
hear<00:24:59.940><c> it</c><00:25:00.120><c> perfectly</c><00:25:01.020><c> but</c><00:25:01.320><c> I</c><00:25:01.559><c> think</c><00:25:01.679><c> you</c><00:25:02.220><c> are</c>

00:25:02.330 --> 00:25:02.340 align:start position:0%
hear it perfectly but I think you are
 

00:25:02.340 --> 00:25:03.770 align:start position:0%
hear it perfectly but I think you are
asking<00:25:02.580><c> about</c><00:25:02.700><c> the</c><00:25:02.940><c> diamond</c><00:25:03.059><c> proxy</c><00:25:03.600><c> right</c>

00:25:03.770 --> 00:25:03.780 align:start position:0%
asking about the diamond proxy right
 

00:25:03.780 --> 00:25:06.470 align:start position:0%
asking about the diamond proxy right
yeah<00:25:04.080><c> yeah</c><00:25:04.260><c> yeah</c><00:25:04.380><c> yeah</c><00:25:04.679><c> this</c><00:25:05.640><c> is</c><00:25:05.820><c> this</c><00:25:06.360><c> is</c>

00:25:06.470 --> 00:25:06.480 align:start position:0%
yeah yeah yeah yeah this is this is
 

00:25:06.480 --> 00:25:08.630 align:start position:0%
yeah yeah yeah yeah this is this is
based<00:25:06.840><c> on</c><00:25:06.900><c> the</c><00:25:07.020><c> diamond</c><00:25:07.200><c> proxy</c><00:25:07.740><c> so</c><00:25:07.919><c> is</c><00:25:08.159><c> that</c>

00:25:08.630 --> 00:25:08.640 align:start position:0%
based on the diamond proxy so is that
 

00:25:08.640 --> 00:25:11.350 align:start position:0%
based on the diamond proxy so is that
that<00:25:08.940><c> the</c><00:25:09.659><c> diamond</c><00:25:09.840><c> proxy</c><00:25:10.500><c> but</c><00:25:10.799><c> without</c>

00:25:11.350 --> 00:25:11.360 align:start position:0%
that the diamond proxy but without
 

00:25:11.360 --> 00:25:13.970 align:start position:0%
that the diamond proxy but without
getting<00:25:12.360><c> the</c><00:25:12.659><c> implementation</c><00:25:13.380><c> from</c><00:25:13.799><c> the</c>

00:25:13.970 --> 00:25:13.980 align:start position:0%
getting the implementation from the
 

00:25:13.980 --> 00:25:16.430 align:start position:0%
getting the implementation from the
storage<00:25:14.220><c> yeah</c><00:25:14.700><c> but</c><00:25:15.000><c> instead</c><00:25:15.480><c> hardcoding</c><00:25:16.260><c> them</c>

00:25:16.430 --> 00:25:16.440 align:start position:0%
storage yeah but instead hardcoding them
 

00:25:16.440 --> 00:25:19.250 align:start position:0%
storage yeah but instead hardcoding them
yeah<00:25:16.919><c> basically</c><00:25:17.400><c> okay</c><00:25:17.700><c> it's</c><00:25:18.179><c> it's</c><00:25:18.480><c> some</c>

00:25:19.250 --> 00:25:19.260 align:start position:0%
yeah basically okay it's it's some
 

00:25:19.260 --> 00:25:21.110 align:start position:0%
yeah basically okay it's it's some
people<00:25:19.380><c> are</c><00:25:19.620><c> calling</c><00:25:19.980><c> the</c><00:25:20.220><c> diamond</c><00:25:20.460><c> proxy</c><00:25:20.940><c> a</c>

00:25:21.110 --> 00:25:21.120 align:start position:0%
people are calling the diamond proxy a
 

00:25:21.120 --> 00:25:23.810 align:start position:0%
people are calling the diamond proxy a
dynamic<00:25:21.659><c> router</c><00:25:22.080><c> and</c><00:25:22.919><c> this</c><00:25:23.100><c> one</c><00:25:23.280><c> is</c><00:25:23.460><c> static</c>

00:25:23.810 --> 00:25:23.820 align:start position:0%
dynamic router and this one is static
 

00:25:23.820 --> 00:25:26.810 align:start position:0%
dynamic router and this one is static
router<00:25:24.240><c> and</c><00:25:24.840><c> we</c><00:25:25.020><c> like</c><00:25:25.200><c> this</c><00:25:25.380><c> one</c><00:25:25.559><c> because</c><00:25:25.919><c> uh</c>

00:25:26.810 --> 00:25:26.820 align:start position:0%
router and we like this one because uh
 

00:25:26.820 --> 00:25:30.649 align:start position:0%
router and we like this one because uh
for<00:25:27.120><c> our</c><00:25:27.299><c> project</c><00:25:27.659><c> because</c><00:25:28.559><c> it</c><00:25:29.279><c> it</c><00:25:29.820><c> saves</c>

00:25:30.649 --> 00:25:30.659 align:start position:0%
for our project because it it saves
 

00:25:30.659 --> 00:25:34.130 align:start position:0%
for our project because it it saves
storage<00:25:30.900><c> reads</c><00:25:31.919><c> because</c><00:25:32.520><c> the</c><00:25:33.059><c> the</c><00:25:33.299><c> values</c><00:25:34.020><c> are</c>

00:25:34.130 --> 00:25:34.140 align:start position:0%
storage reads because the the values are
 

00:25:34.140 --> 00:25:36.710 align:start position:0%
storage reads because the the values are
hard-coded<00:25:34.679><c> and</c><00:25:35.580><c> it's</c><00:25:35.820><c> also</c><00:25:36.120><c> more</c><00:25:36.240><c> explicit</c>

00:25:36.710 --> 00:25:36.720 align:start position:0%
hard-coded and it's also more explicit
 

00:25:36.720 --> 00:25:38.390 align:start position:0%
hard-coded and it's also more explicit
like<00:25:37.020><c> that</c><00:25:37.440><c> what</c><00:25:37.799><c> we</c><00:25:37.919><c> don't</c><00:25:37.980><c> like</c><00:25:38.220><c> about</c>

00:25:38.390 --> 00:25:38.400 align:start position:0%
like that what we don't like about
 

00:25:38.400 --> 00:25:41.330 align:start position:0%
like that what we don't like about
diamonds<00:25:39.000><c> is</c><00:25:39.120><c> that</c><00:25:39.419><c> you</c><00:25:40.320><c> don't</c><00:25:40.440><c> like</c><00:25:40.919><c> if</c>

00:25:41.330 --> 00:25:41.340 align:start position:0%
diamonds is that you don't like if
 

00:25:41.340 --> 00:25:42.890 align:start position:0%
diamonds is that you don't like if
you're<00:25:41.520><c> a</c><00:25:41.760><c> Community</c><00:25:42.000><c> member</c><00:25:42.480><c> or</c><00:25:42.720><c> whatever</c>

00:25:42.890 --> 00:25:42.900 align:start position:0%
you're a Community member or whatever
 

00:25:42.900 --> 00:25:44.570 align:start position:0%
you're a Community member or whatever
and<00:25:43.559><c> you</c><00:25:43.740><c> want</c><00:25:43.860><c> to</c><00:25:43.980><c> know</c><00:25:44.039><c> what's</c><00:25:44.279><c> the</c><00:25:44.460><c> current</c>

00:25:44.570 --> 00:25:44.580 align:start position:0%
and you want to know what's the current
 

00:25:44.580 --> 00:25:46.070 align:start position:0%
and you want to know what's the current
composition<00:25:45.000><c> of</c><00:25:45.120><c> the</c><00:25:45.299><c> system</c><00:25:45.480><c> you</c><00:25:45.779><c> need</c><00:25:45.900><c> to</c>

00:25:46.070 --> 00:25:46.080 align:start position:0%
composition of the system you need to
 

00:25:46.080 --> 00:25:48.950 align:start position:0%
composition of the system you need to
query<00:25:46.740><c> it</c><00:25:46.919><c> a</c><00:25:47.279><c> lot</c><00:25:47.340><c> right</c>

00:25:48.950 --> 00:25:48.960 align:start position:0%
query it a lot right
 

00:25:48.960 --> 00:25:51.830 align:start position:0%
query it a lot right
but<00:25:49.320><c> yeah</c><00:25:49.500><c> it's</c><00:25:50.159><c> the</c><00:25:50.340><c> same</c><00:25:50.520><c> otherwise</c><00:25:51.059><c> just</c>

00:25:51.830 --> 00:25:51.840 align:start position:0%
but yeah it's the same otherwise just
 

00:25:51.840 --> 00:25:53.810 align:start position:0%
but yeah it's the same otherwise just
one<00:25:52.140><c> question</c>

00:25:53.810 --> 00:25:53.820 align:start position:0%
one question
 

00:25:53.820 --> 00:25:57.250 align:start position:0%
one question
so<00:25:54.360><c> you</c><00:25:54.600><c> only</c><00:25:54.720><c> use</c><00:25:55.140><c> the</c><00:25:55.679><c> sort</c><00:25:56.400><c> of</c>

00:25:57.250 --> 00:25:57.260 align:start position:0%
so you only use the sort of
 

00:25:57.260 --> 00:25:59.750 align:start position:0%
so you only use the sort of
ins<00:25:58.260><c> and</c><00:25:58.380><c> addresses</c><00:25:58.980><c> and</c><00:25:59.159><c> stuff</c><00:25:59.340><c> what</c><00:25:59.580><c> happens</c>

00:25:59.750 --> 00:25:59.760 align:start position:0%
ins and addresses and stuff what happens
 

00:25:59.760 --> 00:26:02.690 align:start position:0%
ins and addresses and stuff what happens
with<00:26:00.059><c> mappings</c><00:26:00.539><c> and</c><00:26:00.840><c> arrays</c><00:26:01.320><c> in</c><00:26:02.220><c> regards</c><00:26:02.640><c> to</c>

00:26:02.690 --> 00:26:02.700 align:start position:0%
with mappings and arrays in regards to
 

00:26:02.700 --> 00:26:05.510 align:start position:0%
with mappings and arrays in regards to
storage<00:26:03.240><c> Collision</c><00:26:03.779><c> so</c><00:26:04.500><c> can</c><00:26:04.980><c> you</c><00:26:05.100><c> repeat</c><00:26:05.220><c> a</c>

00:26:05.510 --> 00:26:05.520 align:start position:0%
storage Collision so can you repeat a
 

00:26:05.520 --> 00:26:09.110 align:start position:0%
storage Collision so can you repeat a
bit<00:26:05.700><c> louder</c><00:26:05.880><c> so</c><00:26:06.179><c> if</c><00:26:06.720><c> you</c><00:26:06.840><c> have</c><00:26:07.080><c> an</c><00:26:08.039><c> array</c><00:26:08.400><c> yeah</c>

00:26:09.110 --> 00:26:09.120 align:start position:0%
bit louder so if you have an array yeah
 

00:26:09.120 --> 00:26:12.350 align:start position:0%
bit louder so if you have an array yeah
does<00:26:09.840><c> that</c><00:26:10.020><c> affect</c><00:26:10.380><c> storage</c><00:26:10.740><c> Collision</c>

00:26:12.350 --> 00:26:12.360 align:start position:0%
does that affect storage Collision
 

00:26:12.360 --> 00:26:15.409 align:start position:0%
does that affect storage Collision
well<00:26:13.080><c> if</c><00:26:13.320><c> if</c><00:26:13.620><c> you</c><00:26:13.860><c> declare</c><00:26:14.220><c> your</c><00:26:14.520><c> array</c><00:26:14.820><c> or</c><00:26:15.179><c> any</c>

00:26:15.409 --> 00:26:15.419 align:start position:0%
well if if you declare your array or any
 

00:26:15.419 --> 00:26:17.690 align:start position:0%
well if if you declare your array or any
Dynamic<00:26:15.900><c> type</c><00:26:16.080><c> inside</c><00:26:16.440><c> of</c><00:26:16.799><c> those</c><00:26:17.100><c> storage</c>

00:26:17.690 --> 00:26:17.700 align:start position:0%
Dynamic type inside of those storage
 

00:26:17.700 --> 00:26:21.110 align:start position:0%
Dynamic type inside of those storage
namespace<00:26:18.480><c> drugs</c><00:26:19.100><c> then</c><00:26:20.100><c> solidity</c><00:26:20.760><c> is</c><00:26:20.940><c> like</c>

00:26:21.110 --> 00:26:21.120 align:start position:0%
namespace drugs then solidity is like
 

00:26:21.120 --> 00:26:24.110 align:start position:0%
namespace drugs then solidity is like
regular<00:26:21.720><c> storage</c><00:26:22.260><c> layouts</c>

00:26:24.110 --> 00:26:24.120 align:start position:0%
regular storage layouts
 

00:26:24.120 --> 00:26:27.769 align:start position:0%
regular storage layouts
um system<00:26:24.840><c> is</c><00:26:25.200><c> used</c><00:26:25.440><c> which</c><00:26:26.400><c> uh</c><00:26:27.179><c> uses</c>

00:26:27.769 --> 00:26:27.779 align:start position:0%
um system is used which uh uses
 

00:26:27.779 --> 00:26:30.289 align:start position:0%
um system is used which uh uses
unstructured<00:26:28.740><c> storage</c><00:26:29.279><c> under</c><00:26:29.580><c> the</c><00:26:29.820><c> hood</c><00:26:29.940><c> like</c>

00:26:30.289 --> 00:26:30.299 align:start position:0%
unstructured storage under the hood like
 

00:26:30.299 --> 00:26:32.630 align:start position:0%
unstructured storage under the hood like
if<00:26:30.480><c> you</c><00:26:30.600><c> have</c><00:26:30.720><c> a</c><00:26:30.900><c> dynamic</c><00:26:31.380><c> array</c><00:26:31.679><c> the</c><00:26:32.460><c> position</c>

00:26:32.630 --> 00:26:32.640 align:start position:0%
if you have a dynamic array the position
 

00:26:32.640 --> 00:26:34.730 align:start position:0%
if you have a dynamic array the position
of<00:26:33.000><c> that</c><00:26:33.179><c> array</c><00:26:33.480><c> I</c><00:26:33.779><c> think</c><00:26:33.960><c> it's</c><00:26:34.200><c> going</c><00:26:34.440><c> to</c><00:26:34.620><c> be</c>

00:26:34.730 --> 00:26:34.740 align:start position:0%
of that array I think it's going to be
 

00:26:34.740 --> 00:26:37.990 align:start position:0%
of that array I think it's going to be
it's<00:26:35.700><c> slot</c><00:26:36.179><c> say</c><00:26:36.779><c> if</c><00:26:37.020><c> it's</c>

00:26:37.990 --> 00:26:38.000 align:start position:0%
it's slot say if it's
 

00:26:38.000 --> 00:26:40.430 align:start position:0%
it's slot say if it's
9003<00:26:39.000><c> because</c><00:26:39.360><c> it's</c><00:26:39.659><c> the</c><00:26:39.840><c> third</c><00:26:40.020><c> variable</c>

00:26:40.430 --> 00:26:40.440 align:start position:0%
9003 because it's the third variable
 

00:26:40.440 --> 00:26:43.549 align:start position:0%
9003 because it's the third variable
instruct<00:26:41.360><c> uh</c><00:26:42.360><c> the</c><00:26:42.720><c> hash</c><00:26:42.960><c> of</c><00:26:43.140><c> that</c><00:26:43.260><c> so</c><00:26:43.440><c> it's</c>

00:26:43.549 --> 00:26:43.559 align:start position:0%
instruct uh the hash of that so it's
 

00:26:43.559 --> 00:26:46.370 align:start position:0%
instruct uh the hash of that so it's
going<00:26:43.740><c> to</c><00:26:43.799><c> be</c><00:26:43.919><c> some</c><00:26:44.100><c> other</c><00:26:44.279><c> random</c><00:26:44.760><c> place</c><00:26:45.000><c> so</c>

00:26:46.370 --> 00:26:46.380 align:start position:0%
going to be some other random place so
 

00:26:46.380 --> 00:26:50.090 align:start position:0%
going to be some other random place so
it<00:26:47.100><c> probabilistically</c><00:26:48.140><c> the</c><00:26:49.140><c> even</c><00:26:49.919><c> though</c>

00:26:50.090 --> 00:26:50.100 align:start position:0%
it probabilistically the even though
 

00:26:50.100 --> 00:26:52.070 align:start position:0%
it probabilistically the even though
they're<00:26:50.400><c> in</c><00:26:50.700><c> in</c><00:26:50.880><c> struts</c><00:26:51.360><c> so</c><00:26:51.480><c> some</c><00:26:51.779><c> things</c><00:26:51.900><c> are</c>

00:26:52.070 --> 00:26:52.080 align:start position:0%
they're in in struts so some things are
 

00:26:52.080 --> 00:26:53.390 align:start position:0%
they're in in struts so some things are
going<00:26:52.200><c> to</c><00:26:52.320><c> be</c><00:26:52.380><c> spread</c><00:26:52.620><c> out</c><00:26:52.740><c> but</c><00:26:53.039><c> the</c><00:26:53.220><c> the</c>

00:26:53.390 --> 00:26:53.400 align:start position:0%
going to be spread out but the the
 

00:26:53.400 --> 00:26:56.630 align:start position:0%
going to be spread out but the the
probability<00:26:53.880><c> of</c><00:26:54.179><c> a</c><00:26:54.299><c> collision</c><00:26:54.600><c> is</c><00:26:54.840><c> uh</c><00:26:56.100><c> very</c>

00:26:56.630 --> 00:26:56.640 align:start position:0%
probability of a collision is uh very
 

00:26:56.640 --> 00:26:59.750 align:start position:0%
probability of a collision is uh very
low<00:26:57.140><c> like</c><00:26:58.140><c> insignificant</c>

00:26:59.750 --> 00:26:59.760 align:start position:0%
low like insignificant
 

00:26:59.760 --> 00:27:01.370 align:start position:0%
low like insignificant
so<00:27:00.120><c> you</c><00:27:00.299><c> mentioned</c><00:27:00.539><c> a</c><00:27:00.659><c> couple</c><00:27:00.779><c> times</c><00:27:00.960><c> that</c><00:27:01.200><c> we</c>

00:27:01.370 --> 00:27:01.380 align:start position:0%
so you mentioned a couple times that we
 

00:27:01.380 --> 00:27:03.350 align:start position:0%
so you mentioned a couple times that we
should<00:27:01.500><c> use</c><00:27:01.679><c> Tooling</c><00:27:02.340><c> in</c><00:27:02.520><c> order</c><00:27:02.640><c> to</c><00:27:02.880><c> check</c><00:27:03.059><c> for</c>

00:27:03.350 --> 00:27:03.360 align:start position:0%
should use Tooling in order to check for
 

00:27:03.360 --> 00:27:05.330 align:start position:0%
should use Tooling in order to check for
storage<00:27:03.659><c> collisions</c><00:27:04.260><c> what</c><00:27:04.740><c> sort</c><00:27:04.919><c> of</c><00:27:05.039><c> tooling</c>

00:27:05.330 --> 00:27:05.340 align:start position:0%
storage collisions what sort of tooling
 

00:27:05.340 --> 00:27:07.130 align:start position:0%
storage collisions what sort of tooling
do<00:27:05.460><c> you</c><00:27:05.520><c> recommend</c><00:27:05.820><c> contract</c><00:27:06.419><c> developers</c><00:27:06.900><c> use</c>

00:27:07.130 --> 00:27:07.140 align:start position:0%
do you recommend contract developers use
 

00:27:07.140 --> 00:27:10.490 align:start position:0%
do you recommend contract developers use
sorry<00:27:08.039><c> I</c><00:27:08.760><c> I</c><00:27:08.940><c> can't</c><00:27:09.419><c> hear</c><00:27:09.659><c> really</c><00:27:09.960><c> really</c><00:27:10.200><c> well</c>

00:27:10.490 --> 00:27:10.500 align:start position:0%
sorry I I can't hear really really well
 

00:27:10.500 --> 00:27:12.830 align:start position:0%
sorry I I can't hear really really well
from<00:27:10.679><c> here</c><00:27:10.860><c> I'm</c><00:27:11.039><c> just</c><00:27:11.220><c> going</c><00:27:11.340><c> to</c><00:27:11.460><c> stand</c><00:27:11.640><c> there</c>

00:27:12.830 --> 00:27:12.840 align:start position:0%
from here I'm just going to stand there
 

00:27:12.840 --> 00:27:15.529 align:start position:0%
from here I'm just going to stand there
okay<00:27:13.559><c> so</c><00:27:14.220><c> in</c><00:27:14.640><c> your</c><00:27:14.760><c> talk</c><00:27:14.940><c> you</c><00:27:15.120><c> mentioned</c><00:27:15.419><c> a</c>

00:27:15.529 --> 00:27:15.539 align:start position:0%
okay so in your talk you mentioned a
 

00:27:15.539 --> 00:27:16.789 align:start position:0%
okay so in your talk you mentioned a
couple<00:27:15.659><c> times</c><00:27:15.840><c> that</c><00:27:16.080><c> you</c><00:27:16.200><c> should</c><00:27:16.320><c> be</c><00:27:16.440><c> using</c>

00:27:16.789 --> 00:27:16.799 align:start position:0%
couple times that you should be using
 

00:27:16.799 --> 00:27:18.649 align:start position:0%
couple times that you should be using
Tooling<00:27:17.580><c> in</c><00:27:17.700><c> order</c><00:27:17.820><c> to</c><00:27:18.059><c> detect</c><00:27:18.360><c> storage</c>

00:27:18.649 --> 00:27:18.659 align:start position:0%
Tooling in order to detect storage
 

00:27:18.659 --> 00:27:20.930 align:start position:0%
Tooling in order to detect storage
collisions<00:27:19.260><c> what</c><00:27:20.039><c> sort</c><00:27:20.220><c> of</c><00:27:20.340><c> tooling</c><00:27:20.760><c> should</c>

00:27:20.930 --> 00:27:20.940 align:start position:0%
collisions what sort of tooling should
 

00:27:20.940 --> 00:27:22.669 align:start position:0%
collisions what sort of tooling should
developers<00:27:21.480><c> use</c><00:27:21.779><c> in</c><00:27:22.020><c> order</c><00:27:22.200><c> to</c><00:27:22.320><c> do</c><00:27:22.500><c> these</c>

00:27:22.669 --> 00:27:22.679 align:start position:0%
developers use in order to do these
 

00:27:22.679 --> 00:27:23.630 align:start position:0%
developers use in order to do these
checks

00:27:23.630 --> 00:27:23.640 align:start position:0%
checks
 

00:27:23.640 --> 00:27:26.330 align:start position:0%
checks
all<00:27:24.179><c> sort</c><00:27:24.419><c> of</c><00:27:24.600><c> tools</c><00:27:24.960><c> okay</c>

00:27:26.330 --> 00:27:26.340 align:start position:0%
all sort of tools okay
 

00:27:26.340 --> 00:27:26.930 align:start position:0%
all sort of tools okay
um

00:27:26.930 --> 00:27:26.940 align:start position:0%
um
 

00:27:26.940 --> 00:27:30.289 align:start position:0%
um
yeah<00:27:27.600><c> so</c><00:27:28.380><c> if</c><00:27:28.679><c> you're</c><00:27:28.799><c> using</c><00:27:29.220><c> open</c><00:27:29.520><c> settlements</c>

00:27:30.289 --> 00:27:30.299 align:start position:0%
yeah so if you're using open settlements
 

00:27:30.299 --> 00:27:32.990 align:start position:0%
yeah so if you're using open settlements
proxies<00:27:30.720><c> you</c><00:27:31.500><c> should</c><00:27:31.559><c> use</c><00:27:31.799><c> their</c><00:27:32.039><c> tooling</c>

00:27:32.990 --> 00:27:33.000 align:start position:0%
proxies you should use their tooling
 

00:27:33.000 --> 00:27:36.289 align:start position:0%
proxies you should use their tooling
if<00:27:33.480><c> you're</c><00:27:33.600><c> using</c><00:27:34.100><c> uh</c><00:27:35.100><c> the</c><00:27:35.400><c> router</c>

00:27:36.289 --> 00:27:36.299 align:start position:0%
if you're using uh the router
 

00:27:36.299 --> 00:27:39.049 align:start position:0%
if you're using uh the router
as<00:27:36.960><c> you</c><00:27:37.080><c> can</c><00:27:37.200><c> see</c><00:27:37.320><c> we</c><00:27:37.860><c> just</c><00:27:38.279><c> we</c><00:27:38.640><c> didn't</c><00:27:38.760><c> just</c>

00:27:39.049 --> 00:27:39.059 align:start position:0%
as you can see we just we didn't just
 

00:27:39.059 --> 00:27:41.510 align:start position:0%
as you can see we just we didn't just
offer<00:27:39.539><c> like</c><00:27:39.720><c> a</c><00:27:40.020><c> solution</c><00:27:40.500><c> to</c><00:27:41.039><c> generate</c><00:27:41.400><c> the</c>

00:27:41.510 --> 00:27:41.520 align:start position:0%
offer like a solution to generate the
 

00:27:41.520 --> 00:27:43.610 align:start position:0%
offer like a solution to generate the
code<00:27:41.640><c> but</c><00:27:41.880><c> we</c><00:27:42.059><c> have</c><00:27:42.179><c> we</c><00:27:42.419><c> have</c><00:27:42.539><c> a</c><00:27:42.779><c> it</c><00:27:43.200><c> checks</c>

00:27:43.610 --> 00:27:43.620 align:start position:0%
code but we have we have a it checks
 

00:27:43.620 --> 00:27:45.529 align:start position:0%
code but we have we have a it checks
your<00:27:43.860><c> the</c><00:27:44.279><c> storage</c><00:27:44.460><c> layout</c><00:27:44.940><c> of</c><00:27:45.120><c> your</c><00:27:45.240><c> entire</c>

00:27:45.529 --> 00:27:45.539 align:start position:0%
your the storage layout of your entire
 

00:27:45.539 --> 00:27:47.810 align:start position:0%
your the storage layout of your entire
project<00:27:45.779><c> so</c><00:27:46.500><c> in</c><00:27:46.919><c> that</c><00:27:47.039><c> case</c><00:27:47.159><c> you</c><00:27:47.340><c> can</c><00:27:47.520><c> use</c><00:27:47.640><c> our</c>

00:27:47.810 --> 00:27:47.820 align:start position:0%
project so in that case you can use our
 

00:27:47.820 --> 00:27:51.169 align:start position:0%
project so in that case you can use our
code<00:27:48.120><c> right</c><00:27:48.840><c> so</c><00:27:49.620><c> I</c><00:27:49.980><c> would</c><00:27:50.100><c> say</c><00:27:50.279><c> always</c><00:27:50.640><c> use</c><00:27:50.940><c> the</c>

00:27:51.169 --> 00:27:51.179 align:start position:0%
code right so I would say always use the
 

00:27:51.179 --> 00:27:55.010 align:start position:0%
code right so I would say always use the
tooling<00:27:51.539><c> of</c><00:27:52.380><c> whoever</c><00:27:52.799><c> is</c><00:27:53.220><c> providing</c><00:27:53.940><c> you</c><00:27:54.179><c> the</c>

00:27:55.010 --> 00:27:55.020 align:start position:0%
tooling of whoever is providing you the
 

00:27:55.020 --> 00:27:56.810 align:start position:0%
tooling of whoever is providing you the
code<00:27:55.320><c> the</c><00:27:55.740><c> smart</c><00:27:55.860><c> contract</c><00:27:56.220><c> code</c><00:27:56.460><c> of</c><00:27:56.640><c> the</c>

00:27:56.810 --> 00:27:56.820 align:start position:0%
code the smart contract code of the
 

00:27:56.820 --> 00:28:00.169 align:start position:0%
code the smart contract code of the
proxy<00:27:57.559><c> were</c><00:27:58.559><c> there</c><00:27:58.740><c> any</c><00:27:58.919><c> attempts</c><00:27:59.520><c> to</c><00:27:59.700><c> solve</c>

00:28:00.169 --> 00:28:00.179 align:start position:0%
proxy were there any attempts to solve
 

00:28:00.179 --> 00:28:02.630 align:start position:0%
proxy were there any attempts to solve
this<00:28:00.360><c> garage</c><00:28:00.720><c> Collision</c><00:28:01.320><c> thing</c><00:28:01.679><c> on</c><00:28:02.039><c> the</c><00:28:02.159><c> evm</c>

00:28:02.630 --> 00:28:02.640 align:start position:0%
this garage Collision thing on the evm
 

00:28:02.640 --> 00:28:05.330 align:start position:0%
this garage Collision thing on the evm
or<00:28:02.880><c> compiler</c><00:28:03.360><c> level</c><00:28:03.539><c> like</c><00:28:04.080><c> to</c><00:28:04.380><c> sandbox</c><00:28:04.860><c> each</c>

00:28:05.330 --> 00:28:05.340 align:start position:0%
or compiler level like to sandbox each
 

00:28:05.340 --> 00:28:07.370 align:start position:0%
or compiler level like to sandbox each
contact<00:28:05.820><c> for</c><00:28:06.240><c> example</c>

00:28:07.370 --> 00:28:07.380 align:start position:0%
contact for example
 

00:28:07.380 --> 00:28:09.830 align:start position:0%
contact for example
I<00:28:07.919><c> don't</c><00:28:07.980><c> think</c><00:28:08.159><c> there's</c><00:28:08.400><c> a</c><00:28:08.580><c> need</c><00:28:08.700><c> to</c>

00:28:09.830 --> 00:28:09.840 align:start position:0%
I don't think there's a need to
 

00:28:09.840 --> 00:28:10.789 align:start position:0%
I don't think there's a need to
um

00:28:10.789 --> 00:28:10.799 align:start position:0%
um
 

00:28:10.799 --> 00:28:13.130 align:start position:0%
um
the<00:28:11.400><c> way</c><00:28:11.580><c> uh</c><00:28:11.940><c> solidity</c><00:28:12.480><c> like</c><00:28:12.840><c> these</c>

00:28:13.130 --> 00:28:13.140 align:start position:0%
the way uh solidity like these
 

00:28:13.140 --> 00:28:15.110 align:start position:0%
the way uh solidity like these
structures<00:28:13.500><c> arrays</c><00:28:14.159><c> and</c><00:28:14.340><c> mappings</c><00:28:14.700><c> and</c><00:28:15.000><c> all</c>

00:28:15.110 --> 00:28:15.120 align:start position:0%
structures arrays and mappings and all
 

00:28:15.120 --> 00:28:17.350 align:start position:0%
structures arrays and mappings and all
that<00:28:15.440><c> it's</c><00:28:16.440><c> it's</c>

00:28:17.350 --> 00:28:17.360 align:start position:0%
that it's it's
 

00:28:17.360 --> 00:28:20.210 align:start position:0%
that it's it's
theoretically<00:28:18.360><c> impossible</c><00:28:19.140><c> to</c><00:28:19.440><c> to</c><00:28:19.679><c> get</c><00:28:19.980><c> a</c>

00:28:20.210 --> 00:28:20.220 align:start position:0%
theoretically impossible to to get a
 

00:28:20.220 --> 00:28:22.909 align:start position:0%
theoretically impossible to to get a
collision<00:28:20.880><c> so</c><00:28:21.600><c> there's</c><00:28:21.779><c> no</c><00:28:22.020><c> need</c><00:28:22.200><c> to</c><00:28:22.500><c> sandbox</c>

00:28:22.909 --> 00:28:22.919 align:start position:0%
collision so there's no need to sandbox
 

00:28:22.919 --> 00:28:25.370 align:start position:0%
collision so there's no need to sandbox
it<00:28:23.279><c> the</c><00:28:23.940><c> problem</c><00:28:24.059><c> with</c><00:28:24.360><c> collisions</c><00:28:24.840><c> is</c><00:28:25.020><c> when</c>

00:28:25.370 --> 00:28:25.380 align:start position:0%
it the problem with collisions is when
 

00:28:25.380 --> 00:28:27.950 align:start position:0%
it the problem with collisions is when
people<00:28:25.620><c> use</c><00:28:26.100><c> like</c><00:28:26.700><c> a</c><00:28:27.059><c> design</c><00:28:27.240><c> that's</c><00:28:27.659><c> not</c>

00:28:27.950 --> 00:28:27.960 align:start position:0%
people use like a design that's not
 

00:28:27.960 --> 00:28:31.190 align:start position:0%
people use like a design that's not
supported<00:28:28.500><c> at</c><00:28:28.980><c> a</c><00:28:29.220><c> language</c><00:28:29.400><c> or</c><00:28:29.880><c> at</c><00:28:30.480><c> a</c><00:28:30.779><c> protocol</c>

00:28:31.190 --> 00:28:31.200 align:start position:0%
supported at a language or at a protocol
 

00:28:31.200 --> 00:28:33.730 align:start position:0%
supported at a language or at a protocol
layer<00:28:31.980><c> like</c><00:28:32.159><c> the</c><00:28:32.340><c> evm</c><00:28:32.760><c> right</c>

00:28:33.730 --> 00:28:33.740 align:start position:0%
layer like the evm right
 

00:28:33.740 --> 00:28:36.769 align:start position:0%
layer like the evm right
and<00:28:34.740><c> they</c><00:28:34.860><c> get</c><00:28:35.039><c> collisions</c><00:28:35.580><c> between</c><00:28:36.059><c> two</c>

00:28:36.769 --> 00:28:36.779 align:start position:0%
and they get collisions between two
 

00:28:36.779 --> 00:28:38.810 align:start position:0%
and they get collisions between two
contracts<00:28:37.380><c> right</c>

00:28:38.810 --> 00:28:38.820 align:start position:0%
contracts right
 

00:28:38.820 --> 00:28:39.590 align:start position:0%
contracts right
um

00:28:39.590 --> 00:28:39.600 align:start position:0%
um
 

00:28:39.600 --> 00:28:43.370 align:start position:0%
um
so<00:28:40.440><c> so</c><00:28:41.400><c> I</c><00:28:41.700><c> don't</c><00:28:41.820><c> I'm</c><00:28:42.179><c> not</c><00:28:42.659><c> aware</c><00:28:42.960><c> of</c><00:28:43.080><c> any</c>

00:28:43.370 --> 00:28:43.380 align:start position:0%
so so I don't I'm not aware of any
 

00:28:43.380 --> 00:28:45.890 align:start position:0%
so so I don't I'm not aware of any
attempt<00:28:44.220><c> at</c><00:28:44.940><c> that</c><00:28:45.059><c> level</c><00:28:45.240><c> to</c><00:28:45.539><c> avoid</c>

00:28:45.890 --> 00:28:45.900 align:start position:0%
attempt at that level to avoid
 

00:28:45.900 --> 00:28:48.769 align:start position:0%
attempt at that level to avoid
coalitions<00:28:46.500><c> is</c><00:28:47.100><c> it</c><00:28:47.220><c> possible</c><00:28:47.520><c> to</c><00:28:48.000><c> migrate</c><00:28:48.480><c> and</c>

00:28:48.769 --> 00:28:48.779 align:start position:0%
coalitions is it possible to migrate and
 

00:28:48.779 --> 00:28:52.010 align:start position:0%
coalitions is it possible to migrate and
open<00:28:48.960><c> Zeppelin</c><00:28:49.559><c> proxy</c><00:28:50.100><c> to</c><00:28:50.940><c> this</c><00:28:51.419><c> one</c><00:28:51.600><c> the</c>

00:28:52.010 --> 00:28:52.020 align:start position:0%
open Zeppelin proxy to this one the
 

00:28:52.020 --> 00:28:53.810 align:start position:0%
open Zeppelin proxy to this one the
router<00:28:52.440><c> proxy</c><00:28:52.799><c> or</c><00:28:52.980><c> would</c><00:28:53.220><c> we</c><00:28:53.400><c> have</c><00:28:53.520><c> to</c><00:28:53.640><c> start</c>

00:28:53.810 --> 00:28:53.820 align:start position:0%
router proxy or would we have to start
 

00:28:53.820 --> 00:28:56.750 align:start position:0%
router proxy or would we have to start
from<00:28:54.059><c> scratch</c><00:28:54.360><c> code</c><00:28:55.200><c> wise</c><00:28:55.679><c> it's</c><00:28:56.340><c> pretty</c><00:28:56.580><c> much</c>

00:28:56.750 --> 00:28:56.760 align:start position:0%
from scratch code wise it's pretty much
 

00:28:56.760 --> 00:28:58.430 align:start position:0%
from scratch code wise it's pretty much
the<00:28:57.059><c> same</c><00:28:57.179><c> like</c><00:28:57.480><c> you</c><00:28:57.840><c> can</c><00:28:57.900><c> use</c><00:28:58.020><c> a</c><00:28:58.260><c> new</c>

00:28:58.430 --> 00:28:58.440 align:start position:0%
the same like you can use a new
 

00:28:58.440 --> 00:29:01.070 align:start position:0%
the same like you can use a new
Universal<00:28:58.980><c> proxy</c><00:28:59.400><c> as</c><00:28:59.820><c> your</c><00:29:00.000><c> entry</c><00:29:00.299><c> point</c><00:29:00.480><c> so</c>

00:29:01.070 --> 00:29:01.080 align:start position:0%
Universal proxy as your entry point so
 

00:29:01.080 --> 00:29:03.890 align:start position:0%
Universal proxy as your entry point so
you<00:29:01.320><c> could</c><00:29:01.380><c> probably</c><00:29:01.559><c> just</c><00:29:01.799><c> use</c><00:29:02.039><c> that</c><00:29:02.480><c> and</c><00:29:03.480><c> the</c>

00:29:03.890 --> 00:29:03.900 align:start position:0%
you could probably just use that and the
 

00:29:03.900 --> 00:29:05.409 align:start position:0%
you could probably just use that and the
migration

00:29:05.409 --> 00:29:05.419 align:start position:0%
migration
 

00:29:05.419 --> 00:29:08.990 align:start position:0%
migration
is<00:29:06.840><c> the</c><00:29:07.200><c> the</c><00:29:07.380><c> crazy</c><00:29:07.799><c> thing</c><00:29:08.159><c> about</c><00:29:08.340><c> this</c><00:29:08.640><c> is</c>

00:29:08.990 --> 00:29:09.000 align:start position:0%
is the the crazy thing about this is
 

00:29:09.000 --> 00:29:12.169 align:start position:0%
is the the crazy thing about this is
that<00:29:09.179><c> the</c><00:29:09.360><c> the</c><00:29:09.539><c> router</c><00:29:10.260><c> routing</c><00:29:11.100><c> occurs</c><00:29:11.940><c> at</c>

00:29:12.169 --> 00:29:12.179 align:start position:0%
that the the router routing occurs at
 

00:29:12.179 --> 00:29:15.649 align:start position:0%
that the the router routing occurs at
the<00:29:12.480><c> implementation</c><00:29:13.200><c> right</c><00:29:14.159><c> so</c><00:29:15.000><c> code</c><00:29:15.299><c> wise</c>

00:29:15.649 --> 00:29:15.659 align:start position:0%
the implementation right so code wise
 

00:29:15.659 --> 00:29:16.930 align:start position:0%
the implementation right so code wise
you're<00:29:15.840><c> okay</c>

00:29:16.930 --> 00:29:16.940 align:start position:0%
you're okay
 

00:29:16.940 --> 00:29:22.730 align:start position:0%
you're okay
then<00:29:17.960><c> storage</c><00:29:18.960><c> wise</c><00:29:19.620><c> right</c><00:29:20.659><c> you</c><00:29:21.659><c> just</c><00:29:21.899><c> need</c><00:29:22.200><c> to</c>

00:29:22.730 --> 00:29:22.740 align:start position:0%
then storage wise right you just need to
 

00:29:22.740 --> 00:29:24.649 align:start position:0%
then storage wise right you just need to
probably

00:29:24.649 --> 00:29:24.659 align:start position:0%
probably
 

00:29:24.659 --> 00:29:27.470 align:start position:0%
probably
choose<00:29:25.380><c> new</c><00:29:25.679><c> namespaces</c><00:29:26.399><c> and</c><00:29:26.520><c> populate</c><00:29:27.360><c> the</c>

00:29:27.470 --> 00:29:27.480 align:start position:0%
choose new namespaces and populate the
 

00:29:27.480 --> 00:29:31.669 align:start position:0%
choose new namespaces and populate the
data<00:29:27.899><c> right</c><00:29:28.679><c> or</c><00:29:29.399><c> accept</c><00:29:30.080><c> that</c><00:29:31.080><c> your</c><00:29:31.320><c> modules</c>

00:29:31.669 --> 00:29:31.679 align:start position:0%
data right or accept that your modules
 

00:29:31.679 --> 00:29:34.730 align:start position:0%
data right or accept that your modules
are<00:29:31.980><c> going</c><00:29:32.100><c> to</c><00:29:32.279><c> use</c><00:29:32.720><c> existing</c><00:29:33.720><c> search</c><00:29:34.080><c> right</c>

00:29:34.730 --> 00:29:34.740 align:start position:0%
are going to use existing search right
 

00:29:34.740 --> 00:29:37.430 align:start position:0%
are going to use existing search right
and<00:29:35.220><c> make</c><00:29:35.399><c> sure</c><00:29:35.580><c> that</c><00:29:35.760><c> new</c><00:29:35.940><c> modules</c><00:29:36.440><c> declare</c>

00:29:37.430 --> 00:29:37.440 align:start position:0%
and make sure that new modules declare
 

00:29:37.440 --> 00:29:39.230 align:start position:0%
and make sure that new modules declare
like<00:29:37.620><c> a</c><00:29:37.799><c> new</c><00:29:37.919><c> namespace</c><00:29:38.520><c> or</c><00:29:38.760><c> something</c><00:29:38.940><c> but</c>

00:29:39.230 --> 00:29:39.240 align:start position:0%
like a new namespace or something but
 

00:29:39.240 --> 00:29:41.810 align:start position:0%
like a new namespace or something but
yeah<00:29:39.419><c> sure</c><00:29:39.600><c> you</c><00:29:39.779><c> can</c><00:29:39.899><c> do</c><00:29:40.020><c> it</c><00:29:40.200><c> even</c><00:29:41.039><c> if</c><00:29:41.279><c> so</c><00:29:41.399><c> if</c><00:29:41.700><c> if</c>

00:29:41.810 --> 00:29:41.820 align:start position:0%
yeah sure you can do it even if so if if
 

00:29:41.820 --> 00:29:43.430 align:start position:0%
yeah sure you can do it even if so if if
solidity<00:29:42.299><c> like</c><00:29:42.600><c> makes</c><00:29:42.840><c> this</c><00:29:43.080><c> a</c><00:29:43.320><c> language</c>

00:29:43.430 --> 00:29:43.440 align:start position:0%
solidity like makes this a language
 

00:29:43.440 --> 00:29:45.049 align:start position:0%
solidity like makes this a language
feature

00:29:45.049 --> 00:29:45.059 align:start position:0%
feature
 

00:29:45.059 --> 00:29:48.169 align:start position:0%
feature
you<00:29:45.720><c> just</c><00:29:45.899><c> stop</c><00:29:46.380><c> using</c><00:29:46.799><c> generate</c><00:29:47.580><c> routers</c><00:29:48.000><c> and</c>

00:29:48.169 --> 00:29:48.179 align:start position:0%
you just stop using generate routers and
 

00:29:48.179 --> 00:29:51.230 align:start position:0%
you just stop using generate routers and
deploy<00:29:48.539><c> a</c><00:29:48.720><c> solution</c><00:29:49.140><c> Hub</c><00:29:49.500><c> right</c><00:29:50.220><c> so</c><00:29:50.820><c> it's</c>

00:29:51.230 --> 00:29:51.240 align:start position:0%
deploy a solution Hub right so it's
 

00:29:51.240 --> 00:29:53.649 align:start position:0%
deploy a solution Hub right so it's
completely<00:29:51.720><c> future</c><00:29:52.260><c> proof</c><00:29:52.679><c> I</c><00:29:52.860><c> think</c>

00:29:53.649 --> 00:29:53.659 align:start position:0%
completely future proof I think
 

00:29:53.659 --> 00:29:58.490 align:start position:0%
completely future proof I think
how<00:29:54.659><c> standardized</c><00:29:55.440><c> it</c><00:29:56.039><c> is</c><00:29:56.760><c> is</c><00:29:57.179><c> proxy</c><00:29:57.779><c> are</c><00:29:58.320><c> you</c>

00:29:58.490 --> 00:29:58.500 align:start position:0%
how standardized it is is proxy are you
 

00:29:58.500 --> 00:30:00.710 align:start position:0%
how standardized it is is proxy are you
are<00:29:58.860><c> you</c><00:29:58.980><c> the</c><00:29:59.100><c> only</c><00:29:59.279><c> ones</c><00:29:59.520><c> using</c><00:30:00.000><c> it</c><00:30:00.120><c> or</c><00:30:00.480><c> is</c>

00:30:00.710 --> 00:30:00.720 align:start position:0%
are you the only ones using it or is
 

00:30:00.720 --> 00:30:02.810 align:start position:0%
are you the only ones using it or is
someone<00:30:00.960><c> else</c><00:30:01.200><c> using</c><00:30:01.500><c> it</c><00:30:01.620><c> in</c><00:30:01.799><c> production</c>

00:30:02.810 --> 00:30:02.820 align:start position:0%
someone else using it in production
 

00:30:02.820 --> 00:30:04.370 align:start position:0%
someone else using it in production
doesn't<00:30:03.299><c> mean</c><00:30:03.480><c> first</c><00:30:03.720><c> question</c><00:30:04.020><c> and</c><00:30:04.260><c> the</c>

00:30:04.370 --> 00:30:04.380 align:start position:0%
doesn't mean first question and the
 

00:30:04.380 --> 00:30:07.070 align:start position:0%
doesn't mean first question and the
second<00:30:04.500><c> question</c><00:30:04.799><c> is</c><00:30:05.039><c> uh</c><00:30:06.000><c> do</c><00:30:06.600><c> you</c><00:30:06.720><c> think</c><00:30:06.899><c> it</c>

00:30:07.070 --> 00:30:07.080 align:start position:0%
second question is uh do you think it
 

00:30:07.080 --> 00:30:09.289 align:start position:0%
second question is uh do you think it
will<00:30:07.559><c> be</c><00:30:07.740><c> useful</c><00:30:08.039><c> to</c><00:30:08.220><c> have</c><00:30:08.460><c> something</c><00:30:08.760><c> in</c><00:30:09.059><c> the</c>

00:30:09.289 --> 00:30:09.299 align:start position:0%
will be useful to have something in the
 

00:30:09.299 --> 00:30:11.930 align:start position:0%
will be useful to have something in the
uh<00:30:10.260><c> like</c><00:30:10.500><c> a</c><00:30:10.620><c> public</c><00:30:10.740><c> function</c><00:30:11.159><c> in</c><00:30:11.399><c> the</c><00:30:11.580><c> in</c><00:30:11.820><c> the</c>

00:30:11.930 --> 00:30:11.940 align:start position:0%
uh like a public function in the in the
 

00:30:11.940 --> 00:30:15.169 align:start position:0%
uh like a public function in the in the
proxy<00:30:12.360><c> to</c><00:30:12.539><c> share</c><00:30:13.500><c> the</c><00:30:13.799><c> signatures</c><00:30:14.640><c> that</c><00:30:15.000><c> are</c>

00:30:15.169 --> 00:30:15.179 align:start position:0%
proxy to share the signatures that are
 

00:30:15.179 --> 00:30:18.049 align:start position:0%
proxy to share the signatures that are
being<00:30:15.299><c> used</c><00:30:15.539><c> so</c><00:30:16.320><c> let's</c><00:30:16.740><c> say</c><00:30:16.919><c> a</c><00:30:17.220><c> user</c><00:30:17.640><c> or</c>

00:30:18.049 --> 00:30:18.059 align:start position:0%
being used so let's say a user or
 

00:30:18.059 --> 00:30:19.730 align:start position:0%
being used so let's say a user or
someone<00:30:18.240><c> that</c><00:30:18.480><c> wants</c><00:30:18.779><c> to</c><00:30:18.840><c> check</c><00:30:19.080><c> what</c><00:30:19.559><c> is</c>

00:30:19.730 --> 00:30:19.740 align:start position:0%
someone that wants to check what is
 

00:30:19.740 --> 00:30:22.669 align:start position:0%
someone that wants to check what is
being<00:30:19.860><c> used</c><00:30:20.100><c> doesn't</c><00:30:20.940><c> have</c><00:30:21.179><c> to</c><00:30:21.360><c> dive</c><00:30:21.840><c> into</c><00:30:22.500><c> the</c>

00:30:22.669 --> 00:30:22.679 align:start position:0%
being used doesn't have to dive into the
 

00:30:22.679 --> 00:30:24.110 align:start position:0%
being used doesn't have to dive into the
source<00:30:23.039><c> code</c>

00:30:24.110 --> 00:30:24.120 align:start position:0%
source code
 

00:30:24.120 --> 00:30:29.090 align:start position:0%
source code
yeah<00:30:24.679><c> so</c><00:30:25.679><c> standards</c><00:30:26.340><c> not</c><00:30:27.000><c> many</c><00:30:27.679><c> right</c><00:30:28.679><c> now</c><00:30:28.799><c> if</c>

00:30:29.090 --> 00:30:29.100 align:start position:0%
yeah so standards not many right now if
 

00:30:29.100 --> 00:30:31.010 align:start position:0%
yeah so standards not many right now if
you<00:30:29.279><c> deploy</c><00:30:29.640><c> this</c><00:30:29.820><c> you</c><00:30:30.240><c> won't</c><00:30:30.360><c> see</c><00:30:30.659><c> anything</c>

00:30:31.010 --> 00:30:31.020 align:start position:0%
you deploy this you won't see anything
 

00:30:31.020 --> 00:30:33.350 align:start position:0%
you deploy this you won't see anything
on<00:30:31.320><c> etherscan</c><00:30:31.919><c> for</c><00:30:32.220><c> example</c><00:30:32.399><c> etherscan</c>

00:30:33.350 --> 00:30:33.360 align:start position:0%
on etherscan for example etherscan
 

00:30:33.360 --> 00:30:35.990 align:start position:0%
on etherscan for example etherscan
doesn't<00:30:33.539><c> know</c><00:30:33.899><c> how</c><00:30:34.500><c> to</c><00:30:34.620><c> interpret</c><00:30:35.100><c> a</c><00:30:35.580><c> proxy</c>

00:30:35.990 --> 00:30:36.000 align:start position:0%
doesn't know how to interpret a proxy
 

00:30:36.000 --> 00:30:38.029 align:start position:0%
doesn't know how to interpret a proxy
that<00:30:36.120><c> has</c><00:30:36.360><c> multiple</c><00:30:36.720><c> implementations</c>

00:30:38.029 --> 00:30:38.039 align:start position:0%
that has multiple implementations
 

00:30:38.039 --> 00:30:40.610 align:start position:0%
that has multiple implementations
which<00:30:38.640><c> is</c><00:30:38.820><c> unfortunate</c><00:30:39.419><c> but</c><00:30:39.960><c> we're</c><00:30:40.200><c> trying</c><00:30:40.440><c> to</c>

00:30:40.610 --> 00:30:40.620 align:start position:0%
which is unfortunate but we're trying to
 

00:30:40.620 --> 00:30:42.590 align:start position:0%
which is unfortunate but we're trying to
solve<00:30:41.039><c> that</c><00:30:41.100><c> pretty</c><00:30:41.399><c> fast</c><00:30:41.640><c> it</c><00:30:42.059><c> shouldn't</c><00:30:42.480><c> be</c>

00:30:42.590 --> 00:30:42.600 align:start position:0%
solve that pretty fast it shouldn't be
 

00:30:42.600 --> 00:30:43.970 align:start position:0%
solve that pretty fast it shouldn't be
hard

00:30:43.970 --> 00:30:43.980 align:start position:0%
hard
 

00:30:43.980 --> 00:30:46.549 align:start position:0%
hard
um<00:30:44.039><c> and</c><00:30:44.760><c> your</c><00:30:44.940><c> second</c><00:30:45.120><c> question</c>

00:30:46.549 --> 00:30:46.559 align:start position:0%
um and your second question
 

00:30:46.559 --> 00:30:47.330 align:start position:0%
um and your second question
um

00:30:47.330 --> 00:30:47.340 align:start position:0%
um
 

00:30:47.340 --> 00:30:50.990 align:start position:0%
um
you<00:30:47.940><c> would</c><00:30:48.120><c> just</c><00:30:48.360><c> add</c><00:30:48.779><c> a</c><00:30:49.140><c> module</c><00:30:50.100><c> that</c><00:30:50.460><c> adopts</c>

00:30:50.990 --> 00:30:51.000 align:start position:0%
you would just add a module that adopts
 

00:30:51.000 --> 00:30:54.169 align:start position:0%
you would just add a module that adopts
a<00:30:51.299><c> ERC</c><00:30:51.960><c> 165</c><00:30:52.799><c> is</c><00:30:53.340><c> it</c>

00:30:54.169 --> 00:30:54.179 align:start position:0%
a ERC 165 is it
 

00:30:54.179 --> 00:30:58.210 align:start position:0%
a ERC 165 is it
that<00:30:54.899><c> uh</c><00:30:55.440><c> just</c><00:30:56.240><c> like</c>

00:30:58.210 --> 00:30:58.220 align:start position:0%
that uh just like
 

00:30:58.220 --> 00:31:01.789 align:start position:0%
that uh just like
replies<00:30:59.220><c> it</c><00:30:59.760><c> it</c><00:30:59.940><c> has</c><00:31:00.299><c> that</c><00:31:00.480><c> function</c><00:31:00.899><c> I</c><00:31:01.740><c> don't</c>

00:31:01.789 --> 00:31:01.799 align:start position:0%
replies it it has that function I don't
 

00:31:01.799 --> 00:31:03.169 align:start position:0%
replies it it has that function I don't
remember<00:31:01.919><c> the</c><00:31:02.159><c> name</c><00:31:02.340><c> of</c><00:31:02.460><c> the</c><00:31:02.580><c> function</c><00:31:02.820><c> that</c>

00:31:03.169 --> 00:31:03.179 align:start position:0%
remember the name of the function that
 

00:31:03.179 --> 00:31:04.669 align:start position:0%
remember the name of the function that
gives<00:31:03.360><c> you</c><00:31:03.480><c> the</c><00:31:03.659><c> entire</c><00:31:03.899><c> interface</c><00:31:04.320><c> of</c><00:31:04.500><c> the</c>

00:31:04.669 --> 00:31:04.679 align:start position:0%
gives you the entire interface of the
 

00:31:04.679 --> 00:31:06.950 align:start position:0%
gives you the entire interface of the
whole<00:31:04.799><c> system</c><00:31:05.039><c> okay</c><00:31:05.700><c> that's</c><00:31:06.419><c> it</c><00:31:06.600><c> thank</c><00:31:06.840><c> you</c>

00:31:06.950 --> 00:31:06.960 align:start position:0%
whole system okay that's it thank you
 

00:31:06.960 --> 00:31:09.320 align:start position:0%
whole system okay that's it thank you
very<00:31:07.080><c> much</c>

