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:13.730 align:start position:0%
 
[Music]

00:00:13.730 --> 00:00:13.740 align:start position:0%
 
 

00:00:13.740 --> 00:00:16.250 align:start position:0%
 
hey<00:00:14.639><c> guys</c><00:00:14.759><c> my</c><00:00:15.059><c> name</c><00:00:15.120><c> is</c><00:00:15.179><c> Alex</c><00:00:15.360><c> I</c><00:00:15.839><c> am</c><00:00:16.020><c> a</c><00:00:16.139><c> lead</c>

00:00:16.250 --> 00:00:16.260 align:start position:0%
hey guys my name is Alex I am a lead
 

00:00:16.260 --> 00:00:19.490 align:start position:0%
hey guys my name is Alex I am a lead
developer<00:00:16.800><c> at</c><00:00:17.279><c> tally</c><00:00:17.520><c> ho</c><00:00:17.960><c> and</c><00:00:18.960><c> I'm</c><00:00:19.080><c> here</c><00:00:19.320><c> to</c>

00:00:19.490 --> 00:00:19.500 align:start position:0%
developer at tally ho and I'm here to
 

00:00:19.500 --> 00:00:22.790 align:start position:0%
developer at tally ho and I'm here to
talk<00:00:19.619><c> to</c><00:00:19.740><c> you</c><00:00:19.859><c> about</c><00:00:20.160><c> evm</c><00:00:20.880><c> assembly</c><00:00:21.480><c> so</c><00:00:22.380><c> the</c>

00:00:22.790 --> 00:00:22.800 align:start position:0%
talk to you about evm assembly so the
 

00:00:22.800 --> 00:00:23.990 align:start position:0%
talk to you about evm assembly so the
two<00:00:23.039><c> things</c><00:00:23.160><c> we're</c><00:00:23.340><c> going</c><00:00:23.460><c> to</c><00:00:23.520><c> cover</c><00:00:23.640><c> in</c><00:00:23.820><c> this</c>

00:00:23.990 --> 00:00:24.000 align:start position:0%
two things we're going to cover in this
 

00:00:24.000 --> 00:00:26.570 align:start position:0%
two things we're going to cover in this
talk<00:00:24.180><c> is</c><00:00:24.720><c> first</c><00:00:24.960><c> like</c><00:00:25.199><c> what</c><00:00:25.500><c> is</c><00:00:25.680><c> evm</c><00:00:26.220><c> assembly</c>

00:00:26.570 --> 00:00:26.580 align:start position:0%
talk is first like what is evm assembly
 

00:00:26.580 --> 00:00:29.630 align:start position:0%
talk is first like what is evm assembly
and<00:00:27.539><c> second</c><00:00:27.960><c> how</c><00:00:28.320><c> to</c><00:00:28.500><c> read</c><00:00:28.680><c> the</c><00:00:28.920><c> op</c><00:00:29.160><c> codes</c><00:00:29.400><c> how</c>

00:00:29.630 --> 00:00:29.640 align:start position:0%
and second how to read the op codes how
 

00:00:29.640 --> 00:00:31.310 align:start position:0%
and second how to read the op codes how
to<00:00:29.760><c> read</c><00:00:29.820><c> op</c><00:00:30.000><c> codes</c><00:00:30.240><c> and</c><00:00:30.480><c> trace</c><00:00:30.720><c> an</c><00:00:30.900><c> evm</c>

00:00:31.310 --> 00:00:31.320 align:start position:0%
to read op codes and trace an evm
 

00:00:31.320 --> 00:00:32.330 align:start position:0%
to read op codes and trace an evm
transaction

00:00:32.330 --> 00:00:32.340 align:start position:0%
transaction
 

00:00:32.340 --> 00:00:34.310 align:start position:0%
transaction
but<00:00:32.820><c> I</c><00:00:32.940><c> think</c><00:00:33.059><c> before</c><00:00:33.360><c> we</c><00:00:33.660><c> jump</c><00:00:33.899><c> into</c><00:00:34.079><c> that</c>

00:00:34.310 --> 00:00:34.320 align:start position:0%
but I think before we jump into that
 

00:00:34.320 --> 00:00:35.930 align:start position:0%
but I think before we jump into that
it's<00:00:34.620><c> pretty</c><00:00:34.800><c> important</c><00:00:35.160><c> to</c><00:00:35.460><c> tackle</c><00:00:35.760><c> a</c>

00:00:35.930 --> 00:00:35.940 align:start position:0%
it's pretty important to tackle a
 

00:00:35.940 --> 00:00:38.030 align:start position:0%
it's pretty important to tackle a
question<00:00:36.120><c> of</c><00:00:36.719><c> why</c><00:00:37.020><c> do</c><00:00:37.140><c> we</c><00:00:37.260><c> care</c><00:00:37.440><c> like</c><00:00:37.860><c> why</c>

00:00:38.030 --> 00:00:38.040 align:start position:0%
question of why do we care like why
 

00:00:38.040 --> 00:00:40.069 align:start position:0%
question of why do we care like why
would<00:00:38.160><c> we</c><00:00:38.280><c> care</c><00:00:38.399><c> about</c><00:00:38.579><c> UVM</c><00:00:39.059><c> assembly</c><00:00:39.480><c> I</c><00:00:39.960><c> think</c>

00:00:40.069 --> 00:00:40.079 align:start position:0%
would we care about UVM assembly I think
 

00:00:40.079 --> 00:00:42.470 align:start position:0%
would we care about UVM assembly I think
that<00:00:40.260><c> there's</c><00:00:40.559><c> a</c><00:00:40.980><c> few</c><00:00:41.100><c> reasons</c><00:00:41.520><c> so</c>

00:00:42.470 --> 00:00:42.480 align:start position:0%
that there's a few reasons so
 

00:00:42.480 --> 00:00:44.030 align:start position:0%
that there's a few reasons so
any<00:00:42.899><c> of</c><00:00:43.079><c> the</c><00:00:43.140><c> code</c><00:00:43.260><c> that</c><00:00:43.500><c> we</c><00:00:43.620><c> write</c><00:00:43.800><c> as</c>

00:00:44.030 --> 00:00:44.040 align:start position:0%
any of the code that we write as
 

00:00:44.040 --> 00:00:46.850 align:start position:0%
any of the code that we write as
developers<00:00:44.520><c> is</c><00:00:45.059><c> pretty</c><00:00:45.540><c> far</c><00:00:45.899><c> abstracted</c><00:00:46.559><c> from</c>

00:00:46.850 --> 00:00:46.860 align:start position:0%
developers is pretty far abstracted from
 

00:00:46.860 --> 00:00:48.290 align:start position:0%
developers is pretty far abstracted from
the<00:00:47.040><c> code</c><00:00:47.280><c> that</c><00:00:47.520><c> a</c><00:00:47.700><c> machine</c><00:00:47.879><c> actually</c>

00:00:48.290 --> 00:00:48.300 align:start position:0%
the code that a machine actually
 

00:00:48.300 --> 00:00:51.229 align:start position:0%
the code that a machine actually
interperson<00:00:48.840><c> executes</c><00:00:49.640><c> and</c><00:00:50.640><c> the</c><00:00:50.820><c> closer</c><00:00:51.059><c> we</c>

00:00:51.229 --> 00:00:51.239 align:start position:0%
interperson executes and the closer we
 

00:00:51.239 --> 00:00:53.569 align:start position:0%
interperson executes and the closer we
get<00:00:51.360><c> to</c><00:00:51.420><c> this</c><00:00:51.539><c> real</c><00:00:51.780><c> code</c><00:00:52.020><c> and</c><00:00:52.920><c> the</c><00:00:53.039><c> further</c><00:00:53.340><c> we</c>

00:00:53.569 --> 00:00:53.579 align:start position:0%
get to this real code and the further we
 

00:00:53.579 --> 00:00:56.090 align:start position:0%
get to this real code and the further we
we<00:00:53.940><c> get</c><00:00:54.180><c> from</c><00:00:54.420><c> our</c><00:00:54.660><c> abstractions</c><00:00:55.320><c> the</c><00:00:55.800><c> more</c><00:00:55.920><c> we</c>

00:00:56.090 --> 00:00:56.100 align:start position:0%
we get from our abstractions the more we
 

00:00:56.100 --> 00:00:58.430 align:start position:0%
we get from our abstractions the more we
can<00:00:56.219><c> reinforce</c><00:00:56.760><c> our</c><00:00:57.000><c> mental</c><00:00:57.360><c> model</c><00:00:57.480><c> of</c><00:00:58.020><c> the</c><00:00:58.199><c> of</c>

00:00:58.430 --> 00:00:58.440 align:start position:0%
can reinforce our mental model of the of
 

00:00:58.440 --> 00:01:01.010 align:start position:0%
can reinforce our mental model of the of
what<00:00:58.739><c> the</c><00:00:58.860><c> machine</c><00:00:58.980><c> is</c><00:00:59.219><c> actually</c><00:00:59.399><c> doing</c><00:00:59.640><c> and</c><00:01:00.600><c> I</c>

00:01:01.010 --> 00:01:01.020 align:start position:0%
what the machine is actually doing and I
 

00:01:01.020 --> 00:01:02.869 align:start position:0%
what the machine is actually doing and I
think<00:01:01.140><c> in</c><00:01:01.320><c> general</c><00:01:01.579><c> learning</c><00:01:02.579><c> from</c><00:01:02.699><c> first</c>

00:01:02.869 --> 00:01:02.879 align:start position:0%
think in general learning from first
 

00:01:02.879 --> 00:01:05.210 align:start position:0%
think in general learning from first
principles<00:01:03.359><c> is</c><00:01:03.960><c> a</c><00:01:04.199><c> fantastic</c><00:01:04.559><c> way</c><00:01:04.920><c> to</c>

00:01:05.210 --> 00:01:05.220 align:start position:0%
principles is a fantastic way to
 

00:01:05.220 --> 00:01:07.010 align:start position:0%
principles is a fantastic way to
progress<00:01:05.460><c> as</c><00:01:05.640><c> a</c><00:01:05.820><c> programmer</c><00:01:06.240><c> and</c><00:01:06.659><c> to</c><00:01:06.840><c> just</c>

00:01:07.010 --> 00:01:07.020 align:start position:0%
progress as a programmer and to just
 

00:01:07.020 --> 00:01:09.050 align:start position:0%
progress as a programmer and to just
build<00:01:07.260><c> solid</c><00:01:07.979><c> and</c><00:01:08.159><c> bulletproof</c><00:01:08.820><c> mental</c>

00:01:09.050 --> 00:01:09.060 align:start position:0%
build solid and bulletproof mental
 

00:01:09.060 --> 00:01:11.390 align:start position:0%
build solid and bulletproof mental
models<00:01:09.420><c> of</c><00:01:09.720><c> what</c><00:01:09.960><c> your</c><00:01:10.080><c> code</c><00:01:10.260><c> is</c><00:01:10.439><c> doing</c><00:01:10.619><c> so</c>

00:01:11.390 --> 00:01:11.400 align:start position:0%
models of what your code is doing so
 

00:01:11.400 --> 00:01:14.870 align:start position:0%
models of what your code is doing so
what<00:01:12.299><c> is</c><00:01:12.479><c> evm</c><00:01:13.080><c> assembly</c><00:01:13.500><c> uh</c><00:01:14.400><c> well</c><00:01:14.520><c> let's</c><00:01:14.700><c> start</c>

00:01:14.870 --> 00:01:14.880 align:start position:0%
what is evm assembly uh well let's start
 

00:01:14.880 --> 00:01:17.270 align:start position:0%
what is evm assembly uh well let's start
with<00:01:15.060><c> what</c><00:01:15.360><c> is</c><00:01:15.540><c> the</c><00:01:15.659><c> evm</c><00:01:16.140><c> so</c><00:01:16.860><c> you've</c><00:01:17.159><c> probably</c>

00:01:17.270 --> 00:01:17.280 align:start position:0%
with what is the evm so you've probably
 

00:01:17.280 --> 00:01:21.649 align:start position:0%
with what is the evm so you've probably
heard<00:01:17.520><c> of</c><00:01:18.000><c> evm</c><00:01:18.720><c> zke</c><00:01:19.380><c> evm</c><00:01:19.880><c> evmls</c><00:01:20.880><c> there's</c><00:01:21.420><c> a</c><00:01:21.540><c> lot</c>

00:01:21.649 --> 00:01:21.659 align:start position:0%
heard of evm zke evm evmls there's a lot
 

00:01:21.659 --> 00:01:23.030 align:start position:0%
heard of evm zke evm evmls there's a lot
of<00:01:21.720><c> terminology</c><00:01:22.140><c> terminology</c><00:01:22.619><c> out</c><00:01:22.979><c> there</c>

00:01:23.030 --> 00:01:23.040 align:start position:0%
of terminology terminology out there
 

00:01:23.040 --> 00:01:26.510 align:start position:0%
of terminology terminology out there
right<00:01:23.280><c> now</c><00:01:23.460><c> but</c><00:01:24.240><c> at</c><00:01:24.600><c> its</c><00:01:24.840><c> core</c><00:01:24.960><c> the</c><00:01:25.380><c> evm</c><00:01:25.860><c> is</c>

00:01:26.510 --> 00:01:26.520 align:start position:0%
right now but at its core the evm is
 

00:01:26.520 --> 00:01:29.630 align:start position:0%
right now but at its core the evm is
just<00:01:26.880><c> a</c><00:01:27.119><c> stack</c><00:01:27.299><c> machine</c><00:01:27.600><c> it's</c><00:01:28.439><c> something</c><00:01:28.740><c> that</c>

00:01:29.630 --> 00:01:29.640 align:start position:0%
just a stack machine it's something that
 

00:01:29.640 --> 00:01:32.270 align:start position:0%
just a stack machine it's something that
takes<00:01:30.540><c> in</c><00:01:30.720><c> instructions</c><00:01:31.200><c> builds</c><00:01:31.740><c> up</c><00:01:31.860><c> a</c><00:01:32.040><c> stack</c>

00:01:32.270 --> 00:01:32.280 align:start position:0%
takes in instructions builds up a stack
 

00:01:32.280 --> 00:01:35.090 align:start position:0%
takes in instructions builds up a stack
and<00:01:32.520><c> then</c><00:01:32.640><c> operates</c><00:01:33.060><c> on</c><00:01:33.360><c> that</c><00:01:33.540><c> stack</c><00:01:33.979><c> most</c><00:01:34.979><c> of</c>

00:01:35.090 --> 00:01:35.100 align:start position:0%
and then operates on that stack most of
 

00:01:35.100 --> 00:01:36.770 align:start position:0%
and then operates on that stack most of
the<00:01:35.159><c> operations</c><00:01:35.520><c> consume</c><00:01:36.119><c> values</c><00:01:36.420><c> from</c><00:01:36.659><c> the</c>

00:01:36.770 --> 00:01:36.780 align:start position:0%
the operations consume values from the
 

00:01:36.780 --> 00:01:39.350 align:start position:0%
the operations consume values from the
stack<00:01:37.079><c> so</c><00:01:37.560><c> add</c><00:01:38.220><c> takes</c><00:01:38.579><c> two</c><00:01:38.759><c> values</c><00:01:39.119><c> from</c><00:01:39.240><c> the</c>

00:01:39.350 --> 00:01:39.360 align:start position:0%
stack so add takes two values from the
 

00:01:39.360 --> 00:01:40.910 align:start position:0%
stack so add takes two values from the
stack<00:01:39.540><c> adds</c><00:01:40.020><c> them</c><00:01:40.079><c> you're</c><00:01:40.320><c> left</c><00:01:40.500><c> with</c><00:01:40.680><c> one</c>

00:01:40.910 --> 00:01:40.920 align:start position:0%
stack adds them you're left with one
 

00:01:40.920 --> 00:01:43.310 align:start position:0%
stack adds them you're left with one
value<00:01:41.159><c> multiply</c><00:01:42.060><c> takes</c><00:01:42.240><c> two</c><00:01:42.420><c> values</c><00:01:43.020><c> from</c><00:01:43.200><c> the</c>

00:01:43.310 --> 00:01:43.320 align:start position:0%
value multiply takes two values from the
 

00:01:43.320 --> 00:01:44.690 align:start position:0%
value multiply takes two values from the
stack<00:01:43.500><c> adds</c><00:01:43.920><c> them</c><00:01:44.040><c> you're</c><00:01:44.220><c> left</c><00:01:44.400><c> with</c><00:01:44.520><c> one</c>

00:01:44.690 --> 00:01:44.700 align:start position:0%
stack adds them you're left with one
 

00:01:44.700 --> 00:01:45.590 align:start position:0%
stack adds them you're left with one
value

00:01:45.590 --> 00:01:45.600 align:start position:0%
value
 

00:01:45.600 --> 00:01:48.530 align:start position:0%
value
Etc<00:01:45.720><c> but</c><00:01:46.619><c> there</c><00:01:46.920><c> are</c><00:01:47.100><c> exceptions</c><00:01:47.460><c> to</c><00:01:47.700><c> this</c><00:01:47.880><c> I</c>

00:01:48.530 --> 00:01:48.540 align:start position:0%
Etc but there are exceptions to this I
 

00:01:48.540 --> 00:01:50.990 align:start position:0%
Etc but there are exceptions to this I
think<00:01:48.659><c> the</c><00:01:48.840><c> most</c><00:01:48.960><c> notable</c><00:01:49.320><c> one</c><00:01:49.560><c> is</c><00:01:49.860><c> push</c><00:01:50.159><c> so</c><00:01:50.820><c> we</c>

00:01:50.990 --> 00:01:51.000 align:start position:0%
think the most notable one is push so we
 

00:01:51.000 --> 00:01:53.389 align:start position:0%
think the most notable one is push so we
have<00:01:51.060><c> push</c><00:01:51.360><c> one</c><00:01:51.659><c> through</c><00:01:52.020><c> push</c><00:01:52.259><c> 32</c><00:01:52.799><c> which</c>

00:01:53.389 --> 00:01:53.399 align:start position:0%
have push one through push 32 which
 

00:01:53.399 --> 00:01:55.969 align:start position:0%
have push one through push 32 which
pushes<00:01:53.820><c> between</c><00:01:54.060><c> 1</c><00:01:54.479><c> and</c><00:01:54.720><c> 32</c><00:01:55.140><c> bytes</c><00:01:55.500><c> onto</c><00:01:55.860><c> the</c>

00:01:55.969 --> 00:01:55.979 align:start position:0%
pushes between 1 and 32 bytes onto the
 

00:01:55.979 --> 00:01:58.670 align:start position:0%
pushes between 1 and 32 bytes onto the
stack<00:01:56.100><c> respectively</c><00:01:57.600><c> so</c><00:01:58.200><c> let's</c><00:01:58.320><c> go</c><00:01:58.500><c> a</c><00:01:58.560><c> little</c>

00:01:58.670 --> 00:01:58.680 align:start position:0%
stack respectively so let's go a little
 

00:01:58.680 --> 00:02:00.530 align:start position:0%
stack respectively so let's go a little
bit<00:01:58.799><c> more</c><00:01:58.920><c> in</c><00:01:59.220><c> depth</c><00:01:59.460><c> into</c><00:01:59.700><c> the</c><00:01:59.880><c> evm</c><00:02:00.240><c> stack</c>

00:02:00.530 --> 00:02:00.540 align:start position:0%
bit more in depth into the evm stack
 

00:02:00.540 --> 00:02:03.010 align:start position:0%
bit more in depth into the evm stack
machine<00:02:00.720><c> so</c><00:02:01.320><c> stack</c><00:02:01.920><c> machine</c><00:02:02.100><c> has</c><00:02:02.399><c> a</c><00:02:02.579><c> depth</c><00:02:02.820><c> of</c>

00:02:03.010 --> 00:02:03.020 align:start position:0%
machine so stack machine has a depth of
 

00:02:03.020 --> 00:02:07.550 align:start position:0%
machine so stack machine has a depth of
1024<00:02:04.020><c> items</c><00:02:04.579><c> each</c><00:02:05.579><c> item</c><00:02:05.880><c> is</c><00:02:06.060><c> a</c><00:02:06.320><c> 256-bit</c><00:02:07.320><c> word</c>

00:02:07.550 --> 00:02:07.560 align:start position:0%
1024 items each item is a 256-bit word
 

00:02:07.560 --> 00:02:09.650 align:start position:0%
1024 items each item is a 256-bit word
if<00:02:08.099><c> you're</c><00:02:08.220><c> not</c><00:02:08.340><c> sure</c><00:02:08.580><c> what</c><00:02:08.819><c> a</c><00:02:08.940><c> word</c><00:02:09.119><c> is</c><00:02:09.300><c> that's</c>

00:02:09.650 --> 00:02:09.660 align:start position:0%
if you're not sure what a word is that's
 

00:02:09.660 --> 00:02:11.390 align:start position:0%
if you're not sure what a word is that's
okay<00:02:09.899><c> and</c><00:02:10.140><c> it's</c><00:02:10.319><c> not</c><00:02:10.440><c> really</c><00:02:10.560><c> relevant</c><00:02:11.039><c> for</c>

00:02:11.390 --> 00:02:11.400 align:start position:0%
okay and it's not really relevant for
 

00:02:11.400 --> 00:02:14.630 align:start position:0%
okay and it's not really relevant for
this<00:02:11.760><c> talk</c><00:02:11.940><c> it</c><00:02:12.540><c> just</c><00:02:12.780><c> it</c><00:02:13.200><c> is</c><00:02:13.440><c> a</c><00:02:13.860><c> slot</c><00:02:14.340><c> on</c><00:02:14.520><c> the</c>

00:02:14.630 --> 00:02:14.640 align:start position:0%
this talk it just it is a slot on the
 

00:02:14.640 --> 00:02:16.490 align:start position:0%
this talk it just it is a slot on the
stack<00:02:14.879><c> machine</c>

00:02:16.490 --> 00:02:16.500 align:start position:0%
stack machine
 

00:02:16.500 --> 00:02:19.670 align:start position:0%
stack machine
um during<00:02:16.860><c> execution</c><00:02:17.459><c> the</c><00:02:17.700><c> evm</c><00:02:18.120><c> has</c><00:02:18.540><c> a</c><00:02:19.200><c> memory</c>

00:02:19.670 --> 00:02:19.680 align:start position:0%
um during execution the evm has a memory
 

00:02:19.680 --> 00:02:20.750 align:start position:0%
um during execution the evm has a memory
that<00:02:19.860><c> does</c><00:02:20.040><c> not</c><00:02:20.220><c> persist</c><00:02:20.520><c> between</c>

00:02:20.750 --> 00:02:20.760 align:start position:0%
that does not persist between
 

00:02:20.760 --> 00:02:23.210 align:start position:0%
that does not persist between
transactions<00:02:21.599><c> it</c><00:02:22.140><c> also</c><00:02:22.319><c> has</c><00:02:22.500><c> storage</c><00:02:22.800><c> that</c>

00:02:23.210 --> 00:02:23.220 align:start position:0%
transactions it also has storage that
 

00:02:23.220 --> 00:02:25.190 align:start position:0%
transactions it also has storage that
does<00:02:23.400><c> persist</c><00:02:23.700><c> between</c><00:02:23.940><c> transactions</c><00:02:24.720><c> when</c>

00:02:25.190 --> 00:02:25.200 align:start position:0%
does persist between transactions when
 

00:02:25.200 --> 00:02:26.690 align:start position:0%
does persist between transactions when
we<00:02:25.319><c> talk</c><00:02:25.500><c> about</c><00:02:25.620><c> writing</c><00:02:26.040><c> to</c><00:02:26.160><c> the</c><00:02:26.280><c> blockchain</c>

00:02:26.690 --> 00:02:26.700 align:start position:0%
we talk about writing to the blockchain
 

00:02:26.700 --> 00:02:29.210 align:start position:0%
we talk about writing to the blockchain
that's<00:02:27.239><c> what</c><00:02:27.599><c> we</c><00:02:27.959><c> mean</c><00:02:28.080><c> we</c><00:02:28.500><c> are</c><00:02:28.739><c> storing</c>

00:02:29.210 --> 00:02:29.220 align:start position:0%
that's what we mean we are storing
 

00:02:29.220 --> 00:02:32.050 align:start position:0%
that's what we mean we are storing
things<00:02:29.400><c> in</c><00:02:29.640><c> the</c><00:02:29.760><c> evm</c><00:02:30.180><c> and</c>

00:02:32.050 --> 00:02:32.060 align:start position:0%
things in the evm and
 

00:02:32.060 --> 00:02:34.729 align:start position:0%
things in the evm and
uh<00:02:33.060><c> also</c><00:02:33.480><c> compiled</c><00:02:33.840><c> to</c><00:02:33.959><c> Mark</c><00:02:34.140><c> contract</c><00:02:34.500><c> by</c>

00:02:34.729 --> 00:02:34.739 align:start position:0%
uh also compiled to Mark contract by
 

00:02:34.739 --> 00:02:37.910 align:start position:0%
uh also compiled to Mark contract by
code<00:02:35.000><c> executes</c><00:02:36.000><c> a</c><00:02:36.180><c> number</c><00:02:36.300><c> of</c><00:02:36.480><c> UVM</c><00:02:36.900><c> op</c><00:02:37.680><c> codes</c>

00:02:37.910 --> 00:02:37.920 align:start position:0%
code executes a number of UVM op codes
 

00:02:37.920 --> 00:02:39.410 align:start position:0%
code executes a number of UVM op codes
so<00:02:38.220><c> we</c><00:02:38.400><c> have</c><00:02:38.520><c> some</c><00:02:38.819><c> that</c><00:02:39.000><c> you</c><00:02:39.120><c> might</c><00:02:39.300><c> be</c>

00:02:39.410 --> 00:02:39.420 align:start position:0%
so we have some that you might be
 

00:02:39.420 --> 00:02:41.270 align:start position:0%
so we have some that you might be
familiar<00:02:39.780><c> with</c><00:02:39.900><c> if</c><00:02:40.140><c> you've</c><00:02:40.319><c> looked</c><00:02:40.560><c> at</c><00:02:40.680><c> x86</c>

00:02:41.270 --> 00:02:41.280 align:start position:0%
familiar with if you've looked at x86
 

00:02:41.280 --> 00:02:45.650 align:start position:0%
familiar with if you've looked at x86
assembly<00:02:41.760><c> like</c><00:02:42.300><c> xor</c><00:02:42.780><c> and</c><00:02:43.260><c> add</c><00:02:43.620><c> and</c><00:02:43.920><c> sub</c><00:02:44.120><c> and</c><00:02:45.120><c> we</c>

00:02:45.650 --> 00:02:45.660 align:start position:0%
assembly like xor and add and sub and we
 

00:02:45.660 --> 00:02:48.410 align:start position:0%
assembly like xor and add and sub and we
also<00:02:46.080><c> have</c><00:02:46.379><c> a</c><00:02:46.739><c> number</c><00:02:46.920><c> of</c><00:02:47.420><c> blockchain</c>

00:02:48.410 --> 00:02:48.420 align:start position:0%
also have a number of blockchain
 

00:02:48.420 --> 00:02:50.750 align:start position:0%
also have a number of blockchain
specific<00:02:48.840><c> opcodes</c><00:02:49.319><c> in</c><00:02:49.500><c> the</c><00:02:49.620><c> evm</c><00:02:50.040><c> and</c><00:02:50.519><c> we'll</c>

00:02:50.750 --> 00:02:50.760 align:start position:0%
specific opcodes in the evm and we'll
 

00:02:50.760 --> 00:02:52.190 align:start position:0%
specific opcodes in the evm and we'll
dive<00:02:51.060><c> into</c><00:02:51.239><c> more</c><00:02:51.420><c> of</c><00:02:51.599><c> these</c><00:02:51.780><c> a</c><00:02:51.900><c> little</c><00:02:52.019><c> bit</c>

00:02:52.190 --> 00:02:52.200 align:start position:0%
dive into more of these a little bit
 

00:02:52.200 --> 00:02:53.630 align:start position:0%
dive into more of these a little bit
later<00:02:52.319><c> and</c><00:02:52.980><c> then</c><00:02:53.099><c> I</c><00:02:53.220><c> think</c><00:02:53.340><c> the</c><00:02:53.519><c> last</c>

00:02:53.630 --> 00:02:53.640 align:start position:0%
later and then I think the last
 

00:02:53.640 --> 00:02:54.890 align:start position:0%
later and then I think the last
important<00:02:54.000><c> thing</c><00:02:54.120><c> about</c><00:02:54.300><c> the</c><00:02:54.480><c> stack</c><00:02:54.720><c> machine</c>

00:02:54.890 --> 00:02:54.900 align:start position:0%
important thing about the stack machine
 

00:02:54.900 --> 00:02:57.470 align:start position:0%
important thing about the stack machine
is<00:02:55.379><c> that</c><00:02:55.560><c> each</c><00:02:56.040><c> operation</c><00:02:56.580><c> costs</c><00:02:57.239><c> a</c><00:02:57.360><c> certain</c>

00:02:57.470 --> 00:02:57.480 align:start position:0%
is that each operation costs a certain
 

00:02:57.480 --> 00:03:00.229 align:start position:0%
is that each operation costs a certain
number<00:02:57.720><c> of</c><00:02:57.959><c> gas</c><00:02:58.140><c> so</c><00:02:58.980><c> when</c><00:02:59.280><c> we</c><00:02:59.459><c> pay</c><00:02:59.580><c> gas</c><00:02:59.819><c> for</c><00:03:00.120><c> our</c>

00:03:00.229 --> 00:03:00.239 align:start position:0%
number of gas so when we pay gas for our
 

00:03:00.239 --> 00:03:02.869 align:start position:0%
number of gas so when we pay gas for our
transactions<00:03:00.780><c> we're</c><00:03:01.379><c> essentially</c><00:03:01.920><c> paying</c><00:03:02.459><c> a</c>

00:03:02.869 --> 00:03:02.879 align:start position:0%
transactions we're essentially paying a
 

00:03:02.879 --> 00:03:04.970 align:start position:0%
transactions we're essentially paying a
little<00:03:03.120><c> bit</c><00:03:03.300><c> or</c><00:03:03.540><c> a</c><00:03:03.720><c> lot</c><00:03:03.780><c> of</c><00:03:04.019><c> gas</c><00:03:04.200><c> for</c><00:03:04.739><c> every</c>

00:03:04.970 --> 00:03:04.980 align:start position:0%
little bit or a lot of gas for every
 

00:03:04.980 --> 00:03:06.830 align:start position:0%
little bit or a lot of gas for every
single<00:03:05.280><c> operation</c><00:03:05.760><c> that</c><00:03:06.180><c> the</c><00:03:06.360><c> stack</c><00:03:06.599><c> machine</c>

00:03:06.830 --> 00:03:06.840 align:start position:0%
single operation that the stack machine
 

00:03:06.840 --> 00:03:10.369 align:start position:0%
single operation that the stack machine
executes<00:03:08.220><c> all</c><00:03:08.760><c> right</c><00:03:08.940><c> so</c><00:03:09.420><c> now</c><00:03:09.540><c> that</c><00:03:09.660><c> we</c><00:03:09.780><c> have</c>

00:03:10.369 --> 00:03:10.379 align:start position:0%
executes all right so now that we have
 

00:03:10.379 --> 00:03:13.430 align:start position:0%
executes all right so now that we have
some<00:03:10.980><c> understanding</c><00:03:11.459><c> of</c><00:03:11.819><c> what</c><00:03:12.000><c> an</c><00:03:12.120><c> evm</c><00:03:12.540><c> is</c><00:03:12.720><c> uh</c>

00:03:13.430 --> 00:03:13.440 align:start position:0%
some understanding of what an evm is uh
 

00:03:13.440 --> 00:03:16.430 align:start position:0%
some understanding of what an evm is uh
what<00:03:13.680><c> is</c><00:03:13.800><c> assembly</c><00:03:14.280><c> so</c><00:03:14.840><c> assembly</c><00:03:15.840><c> is</c>

00:03:16.430 --> 00:03:16.440 align:start position:0%
what is assembly so assembly is
 

00:03:16.440 --> 00:03:18.170 align:start position:0%
what is assembly so assembly is
something<00:03:16.620><c> that</c><00:03:16.920><c> lives</c><00:03:17.159><c> in</c><00:03:17.519><c> between</c><00:03:17.640><c> the</c><00:03:18.000><c> code</c>

00:03:18.170 --> 00:03:18.180 align:start position:0%
something that lives in between the code
 

00:03:18.180 --> 00:03:20.330 align:start position:0%
something that lives in between the code
that<00:03:18.360><c> we</c><00:03:18.599><c> as</c><00:03:18.780><c> developers</c><00:03:19.200><c> write</c><00:03:19.500><c> and</c><00:03:20.099><c> between</c>

00:03:20.330 --> 00:03:20.340 align:start position:0%
that we as developers write and between
 

00:03:20.340 --> 00:03:23.930 align:start position:0%
that we as developers write and between
the<00:03:20.580><c> code</c><00:03:20.819><c> that</c><00:03:21.360><c> a</c><00:03:21.659><c> machine</c><00:03:22.019><c> interprets</c><00:03:22.739><c> so</c><00:03:23.220><c> on</c>

00:03:23.930 --> 00:03:23.940 align:start position:0%
the code that a machine interprets so on
 

00:03:23.940 --> 00:03:26.869 align:start position:0%
the code that a machine interprets so on
one<00:03:24.060><c> hand</c><00:03:24.239><c> we</c><00:03:24.900><c> have</c><00:03:24.959><c> solidity</c><00:03:25.500><c> which</c><00:03:26.040><c> is</c><00:03:26.220><c> nice</c>

00:03:26.869 --> 00:03:26.879 align:start position:0%
one hand we have solidity which is nice
 

00:03:26.879 --> 00:03:30.470 align:start position:0%
one hand we have solidity which is nice
uh<00:03:27.599><c> some</c><00:03:27.780><c> people</c><00:03:27.959><c> think</c><00:03:28.580><c> easy</c><00:03:29.580><c> ish</c><00:03:30.180><c> to</c><00:03:30.360><c> read</c>

00:03:30.470 --> 00:03:30.480 align:start position:0%
uh some people think easy ish to read
 

00:03:30.480 --> 00:03:33.710 align:start position:0%
uh some people think easy ish to read
easy-ish<00:03:31.260><c> to</c><00:03:31.500><c> reason</c><00:03:31.680><c> about</c><00:03:31.920><c> and</c><00:03:32.819><c> then</c><00:03:33.000><c> on</c><00:03:33.599><c> the</c>

00:03:33.710 --> 00:03:33.720 align:start position:0%
easy-ish to reason about and then on the
 

00:03:33.720 --> 00:03:35.390 align:start position:0%
easy-ish to reason about and then on the
other<00:03:33.840><c> end</c><00:03:34.080><c> of</c><00:03:34.379><c> the</c><00:03:34.440><c> on</c><00:03:34.860><c> the</c><00:03:34.980><c> other</c><00:03:35.040><c> end</c><00:03:35.220><c> of</c><00:03:35.340><c> the</c>

00:03:35.390 --> 00:03:35.400 align:start position:0%
other end of the on the other end of the
 

00:03:35.400 --> 00:03:37.309 align:start position:0%
other end of the on the other end of the
spectrum<00:03:35.700><c> we</c><00:03:35.940><c> have</c><00:03:36.060><c> bytecode</c><00:03:36.540><c> which</c><00:03:37.140><c> is</c>

00:03:37.309 --> 00:03:37.319 align:start position:0%
spectrum we have bytecode which is
 

00:03:37.319 --> 00:03:39.350 align:start position:0%
spectrum we have bytecode which is
pretty<00:03:37.560><c> much</c><00:03:37.680><c> impossible</c><00:03:38.340><c> for</c><00:03:38.760><c> humans</c><00:03:39.120><c> to</c>

00:03:39.350 --> 00:03:39.360 align:start position:0%
pretty much impossible for humans to
 

00:03:39.360 --> 00:03:42.229 align:start position:0%
pretty much impossible for humans to
read<00:03:39.799><c> but</c><00:03:40.799><c> very</c><00:03:41.159><c> easy</c><00:03:41.340><c> and</c><00:03:41.640><c> very</c><00:03:41.879><c> efficient</c>

00:03:42.229 --> 00:03:42.239 align:start position:0%
read but very easy and very efficient
 

00:03:42.239 --> 00:03:44.390 align:start position:0%
read but very easy and very efficient
for<00:03:42.420><c> machines</c><00:03:42.780><c> to</c><00:03:42.959><c> read</c><00:03:43.080><c> and</c><00:03:43.920><c> then</c><00:03:43.980><c> in</c><00:03:44.280><c> between</c>

00:03:44.390 --> 00:03:44.400 align:start position:0%
for machines to read and then in between
 

00:03:44.400 --> 00:03:48.050 align:start position:0%
for machines to read and then in between
solidity<00:03:45.120><c> and</c><00:03:45.299><c> by</c><00:03:45.480><c> code</c><00:03:45.720><c> we</c><00:03:46.319><c> have</c><00:03:46.560><c> assembly</c><00:03:47.400><c> so</c>

00:03:48.050 --> 00:03:48.060 align:start position:0%
solidity and by code we have assembly so
 

00:03:48.060 --> 00:03:50.390 align:start position:0%
solidity and by code we have assembly so
this<00:03:48.780><c> is</c><00:03:48.900><c> kind</c><00:03:49.019><c> of</c><00:03:49.080><c> what</c><00:03:49.200><c> it</c><00:03:49.319><c> looks</c><00:03:49.560><c> like</c><00:03:49.680><c> and</c>

00:03:50.390 --> 00:03:50.400 align:start position:0%
this is kind of what it looks like and
 

00:03:50.400 --> 00:03:52.490 align:start position:0%
this is kind of what it looks like and
it<00:03:50.940><c> is</c><00:03:51.060><c> a</c><00:03:51.299><c> Intermediate</c><00:03:51.840><c> Language</c><00:03:52.080><c> or</c><00:03:52.379><c> an</c>

00:03:52.490 --> 00:03:52.500 align:start position:0%
it is a Intermediate Language or an
 

00:03:52.500 --> 00:03:55.070 align:start position:0%
it is a Intermediate Language or an
intermediate<00:03:52.980><c> representation</c><00:03:53.959><c> and</c><00:03:54.959><c> what</c>

00:03:55.070 --> 00:03:55.080 align:start position:0%
intermediate representation and what
 

00:03:55.080 --> 00:03:57.050 align:start position:0%
intermediate representation and what
that<00:03:55.200><c> means</c><00:03:55.500><c> is</c><00:03:55.799><c> it</c><00:03:56.220><c> is</c><00:03:56.459><c> something</c><00:03:56.640><c> that</c><00:03:56.879><c> lives</c>

00:03:57.050 --> 00:03:57.060 align:start position:0%
that means is it is something that lives
 

00:03:57.060 --> 00:03:58.610 align:start position:0%
that means is it is something that lives
in<00:03:57.239><c> between</c><00:03:57.420><c> the</c><00:03:57.720><c> code</c><00:03:57.840><c> that</c><00:03:58.019><c> we</c><00:03:58.200><c> write</c><00:03:58.319><c> and</c>

00:03:58.610 --> 00:03:58.620 align:start position:0%
in between the code that we write and
 

00:03:58.620 --> 00:04:03.229 align:start position:0%
in between the code that we write and
byte<00:03:58.980><c> code</c><00:03:59.099><c> and</c><00:04:00.080><c> the</c><00:04:01.080><c> uh</c><00:04:01.980><c> the</c><00:04:02.640><c> op</c><00:04:02.760><c> codes</c><00:04:03.000><c> that</c>

00:04:03.229 --> 00:04:03.239 align:start position:0%
byte code and the uh the op codes that
 

00:04:03.239 --> 00:04:05.089 align:start position:0%
byte code and the uh the op codes that
you<00:04:03.360><c> see</c><00:04:03.480><c> there</c><00:04:03.720><c> are</c><00:04:04.440><c> what</c><00:04:04.739><c> are</c><00:04:04.920><c> actually</c>

00:04:05.089 --> 00:04:05.099 align:start position:0%
you see there are what are actually
 

00:04:05.099 --> 00:04:08.089 align:start position:0%
you see there are what are actually
running<00:04:05.459><c> in</c><00:04:05.879><c> the</c><00:04:05.940><c> evm</c><00:04:06.360><c> so</c><00:04:06.720><c> the</c><00:04:07.200><c> solidity</c><00:04:07.620><c> or</c>

00:04:08.089 --> 00:04:08.099 align:start position:0%
running in the evm so the solidity or
 

00:04:08.099 --> 00:04:10.130 align:start position:0%
running in the evm so the solidity or
the<00:04:08.280><c> Viper</c><00:04:08.700><c> that</c><00:04:09.299><c> we're</c>

00:04:10.130 --> 00:04:10.140 align:start position:0%
the Viper that we're
 

00:04:10.140 --> 00:04:12.949 align:start position:0%
the Viper that we're
uh<00:04:10.799><c> writing</c><00:04:11.340><c> is</c><00:04:11.760><c> compiled</c><00:04:12.299><c> down</c><00:04:12.420><c> to</c><00:04:12.599><c> opcodes</c>

00:04:12.949 --> 00:04:12.959 align:start position:0%
uh writing is compiled down to opcodes
 

00:04:12.959 --> 00:04:14.809 align:start position:0%
uh writing is compiled down to opcodes
and<00:04:13.140><c> then</c><00:04:13.260><c> running</c><00:04:13.439><c> in</c><00:04:13.620><c> the</c><00:04:13.739><c> evm</c><00:04:14.159><c> and</c><00:04:14.700><c> that's</c>

00:04:14.809 --> 00:04:14.819 align:start position:0%
and then running in the evm and that's
 

00:04:14.819 --> 00:04:16.729 align:start position:0%
and then running in the evm and that's
what<00:04:15.060><c> that</c><00:04:15.420><c> pattern</c><00:04:15.720><c> is</c><00:04:15.900><c> what</c><00:04:16.079><c> lets</c><00:04:16.380><c> us</c><00:04:16.440><c> have</c>

00:04:16.729 --> 00:04:16.739 align:start position:0%
what that pattern is what lets us have
 

00:04:16.739 --> 00:04:19.310 align:start position:0%
what that pattern is what lets us have
multiple<00:04:17.519><c> smart</c><00:04:17.880><c> contract</c><00:04:18.299><c> languages</c><00:04:18.660><c> that</c>

00:04:19.310 --> 00:04:19.320 align:start position:0%
multiple smart contract languages that
 

00:04:19.320 --> 00:04:22.430 align:start position:0%
multiple smart contract languages that
compile<00:04:19.680><c> down</c><00:04:19.979><c> to</c><00:04:20.160><c> evm</c><00:04:20.639><c> and</c><00:04:21.359><c> then</c>

00:04:22.430 --> 00:04:22.440 align:start position:0%
compile down to evm and then
 

00:04:22.440 --> 00:04:24.530 align:start position:0%
compile down to evm and then
um<00:04:22.500><c> are</c><00:04:22.740><c> able</c><00:04:22.979><c> to</c><00:04:23.100><c> be</c><00:04:23.340><c> executed</c>

00:04:24.530 --> 00:04:24.540 align:start position:0%
um are able to be executed
 

00:04:24.540 --> 00:04:26.210 align:start position:0%
um are able to be executed
or<00:04:24.840><c> sorry</c><00:04:25.020><c> the</c><00:04:25.199><c> compile</c><00:04:25.440><c> down</c><00:04:25.680><c> to</c><00:04:25.800><c> assembly</c>

00:04:26.210 --> 00:04:26.220 align:start position:0%
or sorry the compile down to assembly
 

00:04:26.220 --> 00:04:28.490 align:start position:0%
or sorry the compile down to assembly
and<00:04:26.580><c> then</c><00:04:26.639><c> are</c><00:04:26.820><c> able</c><00:04:27.060><c> to</c><00:04:27.180><c> be</c><00:04:27.240><c> executed</c>

00:04:28.490 --> 00:04:28.500 align:start position:0%
and then are able to be executed
 

00:04:28.500 --> 00:04:31.370 align:start position:0%
and then are able to be executed
all<00:04:28.919><c> right</c><00:04:29.040><c> so</c><00:04:29.580><c> uh</c><00:04:30.479><c> let's</c><00:04:30.840><c> trace</c><00:04:31.199><c> the</c>

00:04:31.370 --> 00:04:31.380 align:start position:0%
all right so uh let's trace the
 

00:04:31.380 --> 00:04:34.390 align:start position:0%
all right so uh let's trace the
transaction<00:04:31.740><c> I</c><00:04:32.699><c> have</c><00:04:32.820><c> a</c><00:04:32.940><c> website</c><00:04:33.180><c> up</c><00:04:33.360><c> here</c>

00:04:34.390 --> 00:04:34.400 align:start position:0%
transaction I have a website up here
 

00:04:34.400 --> 00:04:36.890 align:start position:0%
transaction I have a website up here
www.evm.codes<00:04:35.400><c> you</c><00:04:36.000><c> might</c><00:04:36.180><c> find</c><00:04:36.419><c> it</c><00:04:36.600><c> useful</c>

00:04:36.890 --> 00:04:36.900 align:start position:0%
www.evm.codes you might find it useful
 

00:04:36.900 --> 00:04:38.990 align:start position:0%
www.evm.codes you might find it useful
you<00:04:37.259><c> don't</c><00:04:37.320><c> need</c><00:04:37.560><c> it</c><00:04:37.740><c> to</c><00:04:37.979><c> follow</c><00:04:38.160><c> along</c><00:04:38.400><c> but</c>

00:04:38.990 --> 00:04:39.000 align:start position:0%
you don't need it to follow along but
 

00:04:39.000 --> 00:04:40.490 align:start position:0%
you don't need it to follow along but
it's<00:04:39.180><c> a</c><00:04:39.360><c> fantastic</c><00:04:39.660><c> reference</c><00:04:40.080><c> that</c><00:04:40.380><c> has</c>

00:04:40.490 --> 00:04:40.500 align:start position:0%
it's a fantastic reference that has
 

00:04:40.500 --> 00:04:42.770 align:start position:0%
it's a fantastic reference that has
every<00:04:40.800><c> single</c><00:04:41.040><c> op</c><00:04:41.220><c> code</c><00:04:41.460><c> in</c><00:04:41.699><c> the</c><00:04:41.820><c> evm</c><00:04:42.180><c> how</c><00:04:42.660><c> much</c>

00:04:42.770 --> 00:04:42.780 align:start position:0%
every single op code in the evm how much
 

00:04:42.780 --> 00:04:45.890 align:start position:0%
every single op code in the evm how much
gas<00:04:42.960><c> it</c><00:04:43.199><c> costs</c><00:04:43.500><c> and</c><00:04:43.979><c> what</c><00:04:44.220><c> it</c><00:04:44.340><c> does</c>

00:04:45.890 --> 00:04:45.900 align:start position:0%
gas it costs and what it does
 

00:04:45.900 --> 00:04:48.409 align:start position:0%
gas it costs and what it does
all<00:04:46.440><c> right</c><00:04:46.620><c> so</c><00:04:46.979><c> here</c><00:04:47.160><c> I've</c><00:04:47.340><c> written</c><00:04:47.699><c> this</c><00:04:48.120><c> uh</c>

00:04:48.409 --> 00:04:48.419 align:start position:0%
all right so here I've written this uh
 

00:04:48.419 --> 00:04:50.870 align:start position:0%
all right so here I've written this uh
incredibly<00:04:48.840><c> useful</c><00:04:49.199><c> smart</c><00:04:49.440><c> contract</c>

00:04:50.870 --> 00:04:50.880 align:start position:0%
incredibly useful smart contract
 

00:04:50.880 --> 00:04:53.510 align:start position:0%
incredibly useful smart contract
um<00:04:50.940><c> we</c><00:04:51.419><c> have</c><00:04:51.660><c> one</c><00:04:52.500><c> storage</c><00:04:52.740><c> variable</c><00:04:53.100><c> total</c>

00:04:53.510 --> 00:04:53.520 align:start position:0%
um we have one storage variable total
 

00:04:53.520 --> 00:04:55.010 align:start position:0%
um we have one storage variable total
Supply<00:04:53.699><c> and</c><00:04:54.060><c> we</c><00:04:54.240><c> have</c><00:04:54.360><c> a</c><00:04:54.540><c> public</c><00:04:54.660><c> function</c>

00:04:55.010 --> 00:04:55.020 align:start position:0%
Supply and we have a public function
 

00:04:55.020 --> 00:04:57.650 align:start position:0%
Supply and we have a public function
that<00:04:55.320><c> anybody</c><00:04:55.680><c> can</c><00:04:55.919><c> call</c><00:04:56.100><c> that</c><00:04:56.759><c> sets</c><00:04:57.240><c> uh</c><00:04:57.360><c> total</c>

00:04:57.650 --> 00:04:57.660 align:start position:0%
that anybody can call that sets uh total
 

00:04:57.660 --> 00:05:00.590 align:start position:0%
that anybody can call that sets uh total
Supply<00:04:57.780><c> to</c><00:04:58.080><c> eight</c><00:04:58.259><c> so</c><00:04:59.120><c> very</c><00:05:00.120><c> simple</c><00:05:00.300><c> smart</c>

00:05:00.590 --> 00:05:00.600 align:start position:0%
Supply to eight so very simple smart
 

00:05:00.600 --> 00:05:02.510 align:start position:0%
Supply to eight so very simple smart
contract<00:05:01.080><c> not</c><00:05:01.440><c> much</c><00:05:01.560><c> going</c><00:05:01.740><c> on</c><00:05:01.919><c> here</c><00:05:02.100><c> not</c><00:05:02.400><c> even</c>

00:05:02.510 --> 00:05:02.520 align:start position:0%
contract not much going on here not even
 

00:05:02.520 --> 00:05:04.909 align:start position:0%
contract not much going on here not even
sure<00:05:02.759><c> why</c><00:05:02.940><c> anybody</c><00:05:03.240><c> would</c><00:05:03.419><c> use</c><00:05:03.600><c> it</c><00:05:03.780><c> right</c><00:05:04.020><c> so</c>

00:05:04.909 --> 00:05:04.919 align:start position:0%
sure why anybody would use it right so
 

00:05:04.919 --> 00:05:07.189 align:start position:0%
sure why anybody would use it right so
uh<00:05:05.699><c> the</c><00:05:06.000><c> op</c><00:05:06.120><c> codes</c><00:05:06.360><c> representing</c><00:05:07.020><c> this</c>

00:05:07.189 --> 00:05:07.199 align:start position:0%
uh the op codes representing this
 

00:05:07.199 --> 00:05:09.189 align:start position:0%
uh the op codes representing this
contract<00:05:07.560><c> should</c><00:05:07.919><c> be</c><00:05:08.100><c> pretty</c><00:05:08.460><c> simple</c><00:05:08.639><c> right</c>

00:05:09.189 --> 00:05:09.199 align:start position:0%
contract should be pretty simple right
 

00:05:09.199 --> 00:05:12.290 align:start position:0%
contract should be pretty simple right
well<00:05:10.199><c> we</c><00:05:10.440><c> can</c><00:05:10.500><c> take</c><00:05:10.620><c> a</c><00:05:10.800><c> look</c><00:05:10.919><c> so</c><00:05:11.699><c> salsi</c>

00:05:12.290 --> 00:05:12.300 align:start position:0%
well we can take a look so salsi
 

00:05:12.300 --> 00:05:13.969 align:start position:0%
well we can take a look so salsi
provides<00:05:12.720><c> us</c><00:05:12.840><c> with</c><00:05:13.080><c> a</c><00:05:13.199><c> handy</c><00:05:13.440><c> little</c><00:05:13.560><c> command</c>

00:05:13.969 --> 00:05:13.979 align:start position:0%
provides us with a handy little command
 

00:05:13.979 --> 00:05:16.249 align:start position:0%
provides us with a handy little command
where<00:05:14.460><c> we</c><00:05:14.639><c> can</c><00:05:14.759><c> pass</c><00:05:14.940><c> a</c><00:05:15.180><c> contract</c><00:05:15.479><c> to</c><00:05:15.720><c> salsi</c>

00:05:16.249 --> 00:05:16.259 align:start position:0%
where we can pass a contract to salsi
 

00:05:16.259 --> 00:05:18.530 align:start position:0%
where we can pass a contract to salsi
with<00:05:16.620><c> the</c><00:05:16.740><c> opcodes</c><00:05:17.100><c> flag</c><00:05:17.340><c> and</c><00:05:17.820><c> it</c><00:05:18.000><c> will</c><00:05:18.120><c> output</c>

00:05:18.530 --> 00:05:18.540 align:start position:0%
with the opcodes flag and it will output
 

00:05:18.540 --> 00:05:20.810 align:start position:0%
with the opcodes flag and it will output
a<00:05:18.840><c> opcode</c><00:05:19.320><c> representation</c><00:05:19.919><c> of</c><00:05:20.220><c> that</c><00:05:20.400><c> contract</c>

00:05:20.810 --> 00:05:20.820 align:start position:0%
a opcode representation of that contract
 

00:05:20.820 --> 00:05:24.230 align:start position:0%
a opcode representation of that contract
so<00:05:21.540><c> our</c><00:05:21.780><c> simple</c><00:05:22.020><c> contract</c><00:05:22.560><c> becomes</c>

00:05:24.230 --> 00:05:24.240 align:start position:0%
so our simple contract becomes
 

00:05:24.240 --> 00:05:29.270 align:start position:0%
so our simple contract becomes
that<00:05:25.280><c> which</c><00:05:26.280><c> is</c><00:05:27.060><c> kind</c><00:05:27.360><c> of</c><00:05:27.539><c> unreadable</c><00:05:28.259><c> but</c><00:05:28.800><c> by</c>

00:05:29.270 --> 00:05:29.280 align:start position:0%
that which is kind of unreadable but by
 

00:05:29.280 --> 00:05:31.370 align:start position:0%
that which is kind of unreadable but by
the<00:05:29.340><c> end</c><00:05:29.460><c> of</c><00:05:29.580><c> this</c><00:05:29.639><c> presentation</c><00:05:30.120><c> uh</c><00:05:31.020><c> or</c><00:05:31.199><c> this</c>

00:05:31.370 --> 00:05:31.380 align:start position:0%
the end of this presentation uh or this
 

00:05:31.380 --> 00:05:33.170 align:start position:0%
the end of this presentation uh or this
talk<00:05:31.620><c> you</c><00:05:31.919><c> guys</c><00:05:32.100><c> will</c><00:05:32.280><c> be</c><00:05:32.460><c> able</c><00:05:32.639><c> to</c><00:05:32.759><c> read</c><00:05:32.940><c> some</c>

00:05:33.170 --> 00:05:33.180 align:start position:0%
talk you guys will be able to read some
 

00:05:33.180 --> 00:05:34.430 align:start position:0%
talk you guys will be able to read some
parts<00:05:33.360><c> of</c><00:05:33.539><c> it</c>

00:05:34.430 --> 00:05:34.440 align:start position:0%
parts of it
 

00:05:34.440 --> 00:05:36.230 align:start position:0%
parts of it
um some<00:05:35.220><c> that</c><00:05:35.400><c> are</c><00:05:35.520><c> common</c><00:05:35.759><c> to</c><00:05:36.000><c> all</c>

00:05:36.230 --> 00:05:36.240 align:start position:0%
um some that are common to all
 

00:05:36.240 --> 00:05:38.689 align:start position:0%
um some that are common to all
transactions<00:05:36.840><c> that</c><00:05:37.020><c> we</c><00:05:37.199><c> see</c><00:05:37.320><c> uh</c><00:05:37.919><c> in</c><00:05:38.100><c> the</c><00:05:38.280><c> all</c>

00:05:38.689 --> 00:05:38.699 align:start position:0%
transactions that we see uh in the all
 

00:05:38.699 --> 00:05:40.189 align:start position:0%
transactions that we see uh in the all
transactions<00:05:39.180><c> that</c><00:05:39.300><c> we</c><00:05:39.419><c> see</c><00:05:39.539><c> in</c><00:05:39.600><c> the</c><00:05:39.720><c> evm</c><00:05:40.020><c> and</c>

00:05:40.189 --> 00:05:40.199 align:start position:0%
transactions that we see in the evm and
 

00:05:40.199 --> 00:05:41.570 align:start position:0%
transactions that we see in the evm and
some<00:05:40.320><c> that</c><00:05:40.500><c> are</c><00:05:40.680><c> specific</c><00:05:40.919><c> to</c><00:05:41.100><c> the</c><00:05:41.280><c> contract</c>

00:05:41.570 --> 00:05:41.580 align:start position:0%
some that are specific to the contract
 

00:05:41.580 --> 00:05:44.270 align:start position:0%
some that are specific to the contract
that<00:05:41.940><c> we</c><00:05:42.120><c> wrote</c><00:05:42.380><c> so</c><00:05:43.380><c> let's</c><00:05:43.860><c> go</c><00:05:44.039><c> ahead</c><00:05:44.160><c> and</c>

00:05:44.270 --> 00:05:44.280 align:start position:0%
that we wrote so let's go ahead and
 

00:05:44.280 --> 00:05:46.370 align:start position:0%
that we wrote so let's go ahead and
trace<00:05:44.460><c> a</c><00:05:44.759><c> specific</c><00:05:45.060><c> transaction</c><00:05:45.600><c> imagine</c>

00:05:46.370 --> 00:05:46.380 align:start position:0%
trace a specific transaction imagine
 

00:05:46.380 --> 00:05:49.310 align:start position:0%
trace a specific transaction imagine
that<00:05:46.680><c> we've</c><00:05:46.860><c> deployed</c><00:05:47.220><c> our</c><00:05:47.340><c> contract</c><00:05:47.960><c> at</c><00:05:48.960><c> some</c>

00:05:49.310 --> 00:05:49.320 align:start position:0%
that we've deployed our contract at some
 

00:05:49.320 --> 00:05:51.770 align:start position:0%
that we've deployed our contract at some
address<00:05:49.560><c> and</c><00:05:50.400><c> then</c><00:05:50.520><c> we're</c><00:05:50.759><c> using</c><00:05:51.120><c> ethers</c><00:05:51.600><c> to</c>

00:05:51.770 --> 00:05:51.780 align:start position:0%
address and then we're using ethers to
 

00:05:51.780 --> 00:05:52.510 align:start position:0%
address and then we're using ethers to
call

00:05:52.510 --> 00:05:52.520 align:start position:0%
call
 

00:05:52.520 --> 00:05:54.950 align:start position:0%
call
ultrasoundmoney.set<00:05:53.520><c> Total</c><00:05:53.880><c> Supply</c><00:05:54.060><c> the</c>

00:05:54.950 --> 00:05:54.960 align:start position:0%
ultrasoundmoney.set Total Supply the
 

00:05:54.960 --> 00:05:56.150 align:start position:0%
ultrasoundmoney.set Total Supply the
transaction<00:05:55.320><c> that</c><00:05:55.560><c> we</c><00:05:55.680><c> defined</c><00:05:55.979><c> in</c><00:05:56.100><c> the</c>

00:05:56.150 --> 00:05:56.160 align:start position:0%
transaction that we defined in the
 

00:05:56.160 --> 00:05:58.249 align:start position:0%
transaction that we defined in the
beginning<00:05:56.280><c> great</c><00:05:57.240><c> we</c><00:05:57.720><c> submitted</c><00:05:58.139><c> the</c>

00:05:58.249 --> 00:05:58.259 align:start position:0%
beginning great we submitted the
 

00:05:58.259 --> 00:06:00.290 align:start position:0%
beginning great we submitted the
transaction<00:05:58.680><c> it's</c><00:05:59.039><c> been</c><00:05:59.220><c> mined</c><00:05:59.639><c> it's</c><00:06:00.060><c> part</c><00:06:00.180><c> of</c>

00:06:00.290 --> 00:06:00.300 align:start position:0%
transaction it's been mined it's part of
 

00:06:00.300 --> 00:06:02.450 align:start position:0%
transaction it's been mined it's part of
the<00:06:00.419><c> blockchain</c><00:06:00.800><c> uh</c><00:06:01.800><c> let's</c><00:06:01.979><c> take</c><00:06:02.160><c> a</c><00:06:02.220><c> look</c><00:06:02.340><c> at</c>

00:06:02.450 --> 00:06:02.460 align:start position:0%
the blockchain uh let's take a look at
 

00:06:02.460 --> 00:06:07.129 align:start position:0%
the blockchain uh let's take a look at
it<00:06:02.580><c> so</c><00:06:03.419><c> uh</c><00:06:04.139><c> but</c><00:06:05.100><c> get</c><00:06:05.759><c> has</c><00:06:06.060><c> this</c><00:06:06.300><c> very</c><00:06:06.539><c> handy</c>

00:06:07.129 --> 00:06:07.139 align:start position:0%
it so uh but get has this very handy
 

00:06:07.139 --> 00:06:08.990 align:start position:0%
it so uh but get has this very handy
command<00:06:07.440><c> called</c><00:06:07.680><c> debug</c><00:06:08.340><c> Trace</c><00:06:08.639><c> transaction</c>

00:06:08.990 --> 00:06:09.000 align:start position:0%
command called debug Trace transaction
 

00:06:09.000 --> 00:06:10.550 align:start position:0%
command called debug Trace transaction
if<00:06:09.479><c> you're</c><00:06:09.600><c> here</c><00:06:09.720><c> for</c><00:06:09.900><c> the</c><00:06:10.020><c> previous</c><00:06:10.139><c> call</c>

00:06:10.550 --> 00:06:10.560 align:start position:0%
if you're here for the previous call
 

00:06:10.560 --> 00:06:12.469 align:start position:0%
if you're here for the previous call
you're<00:06:11.160><c> probably</c><00:06:11.340><c> more</c><00:06:11.639><c> familiar</c><00:06:12.000><c> uh</c>

00:06:12.469 --> 00:06:12.479 align:start position:0%
you're probably more familiar uh
 

00:06:12.479 --> 00:06:15.290 align:start position:0%
you're probably more familiar uh
familiar<00:06:13.020><c> with</c><00:06:13.199><c> it</c><00:06:13.320><c> uh</c><00:06:13.979><c> than</c><00:06:14.160><c> most</c><00:06:14.400><c> and</c><00:06:15.120><c> what</c>

00:06:15.290 --> 00:06:15.300 align:start position:0%
familiar with it uh than most and what
 

00:06:15.300 --> 00:06:16.909 align:start position:0%
familiar with it uh than most and what
we<00:06:15.419><c> can</c><00:06:15.600><c> do</c><00:06:15.720><c> is</c><00:06:15.900><c> we</c><00:06:16.080><c> can</c><00:06:16.259><c> pass</c><00:06:16.500><c> in</c><00:06:16.680><c> the</c>

00:06:16.909 --> 00:06:16.919 align:start position:0%
we can do is we can pass in the
 

00:06:16.919 --> 00:06:20.629 align:start position:0%
we can do is we can pass in the
transaction<00:06:17.340><c> hash</c><00:06:17.759><c> where</c><00:06:18.360><c> we</c><00:06:18.720><c> sent</c><00:06:19.080><c> uh</c><00:06:19.979><c> where</c>

00:06:20.629 --> 00:06:20.639 align:start position:0%
transaction hash where we sent uh where
 

00:06:20.639 --> 00:06:21.950 align:start position:0%
transaction hash where we sent uh where
we<00:06:20.759><c> invoke</c><00:06:21.060><c> that</c><00:06:21.240><c> sent</c><00:06:21.419><c> total</c><00:06:21.780><c> Supply</c>

00:06:21.950 --> 00:06:21.960 align:start position:0%
we invoke that sent total Supply
 

00:06:21.960 --> 00:06:24.950 align:start position:0%
we invoke that sent total Supply
function<00:06:22.380><c> and</c><00:06:22.919><c> get</c><00:06:23.100><c> an</c><00:06:23.400><c> opcode</c><00:06:23.880><c> Trace</c><00:06:24.240><c> as</c><00:06:24.780><c> well</c>

00:06:24.950 --> 00:06:24.960 align:start position:0%
function and get an opcode Trace as well
 

00:06:24.960 --> 00:06:27.830 align:start position:0%
function and get an opcode Trace as well
as<00:06:25.080><c> a</c><00:06:25.380><c> like</c><00:06:26.280><c> a</c><00:06:26.460><c> historic</c><00:06:26.880><c> representation</c><00:06:27.539><c> of</c>

00:06:27.830 --> 00:06:27.840 align:start position:0%
as a like a historic representation of
 

00:06:27.840 --> 00:06:29.629 align:start position:0%
as a like a historic representation of
the<00:06:28.020><c> stack</c><00:06:28.259><c> of</c><00:06:28.800><c> that</c><00:06:28.919><c> transaction</c><00:06:29.400><c> so</c>

00:06:29.629 --> 00:06:29.639 align:start position:0%
the stack of that transaction so
 

00:06:29.639 --> 00:06:31.189 align:start position:0%
the stack of that transaction so
basically<00:06:29.940><c> find</c><00:06:30.180><c> out</c><00:06:30.419><c> everything</c><00:06:30.900><c> that</c>

00:06:31.189 --> 00:06:31.199 align:start position:0%
basically find out everything that
 

00:06:31.199 --> 00:06:33.710 align:start position:0%
basically find out everything that
happened<00:06:31.380><c> in</c><00:06:31.620><c> it</c>

00:06:33.710 --> 00:06:33.720 align:start position:0%
happened in it
 

00:06:33.720 --> 00:06:35.870 align:start position:0%
happened in it
um<00:06:33.840><c> so</c><00:06:34.080><c> let's</c><00:06:34.440><c> trace</c><00:06:34.740><c> the</c><00:06:34.919><c> op</c><00:06:35.039><c> codes</c><00:06:35.280><c> of</c><00:06:35.639><c> that</c>

00:06:35.870 --> 00:06:35.880 align:start position:0%
um so let's trace the op codes of that
 

00:06:35.880 --> 00:06:38.930 align:start position:0%
um so let's trace the op codes of that
transaction<00:06:36.740><c> you'll</c><00:06:37.740><c> see</c><00:06:37.979><c> here</c><00:06:38.220><c> that</c><00:06:38.580><c> there</c>

00:06:38.930 --> 00:06:38.940 align:start position:0%
transaction you'll see here that there
 

00:06:38.940 --> 00:06:40.390 align:start position:0%
transaction you'll see here that there
are<00:06:39.060><c> some</c><00:06:39.240><c> lines</c>

00:06:40.390 --> 00:06:40.400 align:start position:0%
are some lines
 

00:06:40.400 --> 00:06:42.890 align:start position:0%
are some lines
between<00:06:41.400><c> these</c><00:06:41.699><c> op</c><00:06:41.880><c> codes</c><00:06:42.120><c> and</c><00:06:42.360><c> I've</c><00:06:42.479><c> divided</c>

00:06:42.890 --> 00:06:42.900 align:start position:0%
between these op codes and I've divided
 

00:06:42.900 --> 00:06:44.930 align:start position:0%
between these op codes and I've divided
them<00:06:42.960><c> into</c><00:06:43.080><c> four</c><00:06:43.319><c> sections</c><00:06:43.800><c> so</c><00:06:44.340><c> that</c><00:06:44.520><c> is</c><00:06:44.699><c> more</c>

00:06:44.930 --> 00:06:44.940 align:start position:0%
them into four sections so that is more
 

00:06:44.940 --> 00:06:47.029 align:start position:0%
them into four sections so that is more
so<00:06:45.120><c> just</c><00:06:45.539><c> for</c><00:06:45.900><c> clarity</c><00:06:46.319><c> because</c><00:06:46.620><c> I</c><00:06:46.800><c> want</c><00:06:46.919><c> to</c>

00:06:47.029 --> 00:06:47.039 align:start position:0%
so just for clarity because I want to
 

00:06:47.039 --> 00:06:49.490 align:start position:0%
so just for clarity because I want to
focus<00:06:47.340><c> on</c><00:06:47.819><c> three</c><00:06:48.479><c> parts</c><00:06:48.720><c> that</c><00:06:48.960><c> are</c><00:06:49.139><c> common</c><00:06:49.259><c> to</c>

00:06:49.490 --> 00:06:49.500 align:start position:0%
focus on three parts that are common to
 

00:06:49.500 --> 00:06:51.050 align:start position:0%
focus on three parts that are common to
every<00:06:49.680><c> transaction</c><00:06:50.039><c> and</c><00:06:50.460><c> one</c><00:06:50.639><c> part</c><00:06:50.759><c> that</c><00:06:50.940><c> is</c>

00:06:51.050 --> 00:06:51.060 align:start position:0%
every transaction and one part that is
 

00:06:51.060 --> 00:06:53.090 align:start position:0%
every transaction and one part that is
comma<00:06:51.360><c> to</c><00:06:51.479><c> ours</c><00:06:51.780><c> and</c><00:06:52.380><c> I</c><00:06:52.500><c> also</c><00:06:52.680><c> want</c><00:06:52.800><c> to</c><00:06:52.979><c> note</c>

00:06:53.090 --> 00:06:53.100 align:start position:0%
comma to ours and I also want to note
 

00:06:53.100 --> 00:06:55.550 align:start position:0%
comma to ours and I also want to note
that<00:06:53.520><c> uh</c><00:06:54.479><c> what</c><00:06:54.840><c> I'm</c><00:06:54.960><c> going</c><00:06:55.080><c> to</c><00:06:55.080><c> show</c><00:06:55.259><c> you</c><00:06:55.380><c> is</c>

00:06:55.550 --> 00:06:55.560 align:start position:0%
that uh what I'm going to show you is
 

00:06:55.560 --> 00:06:56.809 align:start position:0%
that uh what I'm going to show you is
not<00:06:55.800><c> necessarily</c><00:06:56.220><c> a</c><00:06:56.400><c> one-to-one</c>

00:06:56.809 --> 00:06:56.819 align:start position:0%
not necessarily a one-to-one
 

00:06:56.819 --> 00:06:58.550 align:start position:0%
not necessarily a one-to-one
representation<00:06:57.419><c> of</c><00:06:57.840><c> what</c><00:06:57.960><c> you'll</c><00:06:58.139><c> see</c><00:06:58.319><c> when</c>

00:06:58.550 --> 00:06:58.560 align:start position:0%
representation of what you'll see when
 

00:06:58.560 --> 00:07:00.590 align:start position:0%
representation of what you'll see when
you<00:06:58.680><c> send</c><00:06:58.800><c> debug</c><00:06:59.220><c> Trace</c><00:06:59.460><c> transaction</c><00:06:59.880><c> for</c>

00:07:00.590 --> 00:07:00.600 align:start position:0%
you send debug Trace transaction for
 

00:07:00.600 --> 00:07:02.689 align:start position:0%
you send debug Trace transaction for
example<00:07:00.900><c> uh</c><00:07:01.860><c> we're</c><00:07:02.100><c> going</c><00:07:02.220><c> to</c><00:07:02.280><c> be</c><00:07:02.340><c> converting</c>

00:07:02.689 --> 00:07:02.699 align:start position:0%
example uh we're going to be converting
 

00:07:02.699 --> 00:07:04.790 align:start position:0%
example uh we're going to be converting
hexadecimal<00:07:03.600><c> numbers</c><00:07:03.780><c> to</c><00:07:04.080><c> decimals</c><00:07:04.620><c> because</c>

00:07:04.790 --> 00:07:04.800 align:start position:0%
hexadecimal numbers to decimals because
 

00:07:04.800 --> 00:07:06.830 align:start position:0%
hexadecimal numbers to decimals because
hexadecimals<00:07:05.699><c> are</c><00:07:05.880><c> hard</c><00:07:06.060><c> for</c><00:07:06.240><c> humans</c><00:07:06.539><c> to</c><00:07:06.660><c> read</c>

00:07:06.830 --> 00:07:06.840 align:start position:0%
hexadecimals are hard for humans to read
 

00:07:06.840 --> 00:07:09.230 align:start position:0%
hexadecimals are hard for humans to read
we're<00:07:07.380><c> going</c><00:07:07.560><c> to</c><00:07:07.680><c> be</c><00:07:07.800><c> showing</c><00:07:08.580><c> booleans</c><00:07:09.000><c> as</c>

00:07:09.230 --> 00:07:09.240 align:start position:0%
we're going to be showing booleans as
 

00:07:09.240 --> 00:07:10.969 align:start position:0%
we're going to be showing booleans as
true<00:07:09.419><c> or</c><00:07:09.539><c> false</c><00:07:09.840><c> but</c><00:07:10.259><c> that's</c><00:07:10.380><c> just</c><00:07:10.560><c> so</c><00:07:10.800><c> that</c>

00:07:10.969 --> 00:07:10.979 align:start position:0%
true or false but that's just so that
 

00:07:10.979 --> 00:07:13.430 align:start position:0%
true or false but that's just so that
What's<00:07:11.400><c> Happening</c><00:07:11.699><c> Here</c><00:07:11.940><c> is</c><00:07:12.360><c> uh</c><00:07:12.960><c> so</c><00:07:13.319><c> it's</c>

00:07:13.430 --> 00:07:13.440 align:start position:0%
What's Happening Here is uh so it's
 

00:07:13.440 --> 00:07:14.629 align:start position:0%
What's Happening Here is uh so it's
easier<00:07:13.740><c> to</c><00:07:13.860><c> follow</c><00:07:13.979><c> along</c><00:07:14.160><c> with</c><00:07:14.460><c> what's</c>

00:07:14.629 --> 00:07:14.639 align:start position:0%
easier to follow along with what's
 

00:07:14.639 --> 00:07:16.969 align:start position:0%
easier to follow along with what's
happening<00:07:14.940><c> here</c><00:07:15.180><c> so</c><00:07:15.960><c> let's</c><00:07:16.199><c> start</c><00:07:16.500><c> with</c><00:07:16.800><c> the</c>

00:07:16.969 --> 00:07:16.979 align:start position:0%
happening here so let's start with the
 

00:07:16.979 --> 00:07:19.370 align:start position:0%
happening here so let's start with the
top<00:07:17.160><c> this</c><00:07:17.400><c> little</c><00:07:17.639><c> section</c><00:07:17.940><c> so</c><00:07:18.419><c> we</c><00:07:18.660><c> have</c><00:07:18.840><c> push</c>

00:07:19.370 --> 00:07:19.380 align:start position:0%
top this little section so we have push
 

00:07:19.380 --> 00:07:21.950 align:start position:0%
top this little section so we have push
one<00:07:19.680><c> zero</c><00:07:20.099><c> x80</c><00:07:20.460><c> what</c><00:07:21.240><c> we're</c><00:07:21.360><c> doing</c><00:07:21.479><c> here</c><00:07:21.720><c> is</c>

00:07:21.950 --> 00:07:21.960 align:start position:0%
one zero x80 what we're doing here is
 

00:07:21.960 --> 00:07:25.249 align:start position:0%
one zero x80 what we're doing here is
we're<00:07:22.139><c> pushing</c><00:07:22.500><c> 128</c><00:07:23.160><c> onto</c><00:07:23.699><c> the</c><00:07:23.819><c> stack</c><00:07:24.259><c> 128</c>

00:07:25.249 --> 00:07:25.259 align:start position:0%
we're pushing 128 onto the stack 128
 

00:07:25.259 --> 00:07:28.309 align:start position:0%
we're pushing 128 onto the stack 128
sorry<00:07:26.160><c> 0x80</c><00:07:26.819><c> is</c><00:07:27.120><c> represented</c>

00:07:28.309 --> 00:07:28.319 align:start position:0%
sorry 0x80 is represented
 

00:07:28.319 --> 00:07:30.110 align:start position:0%
sorry 0x80 is represented
because<00:07:28.680><c> the</c><00:07:28.919><c> hexadecimal</c><00:07:29.580><c> representation</c>

00:07:30.110 --> 00:07:30.120 align:start position:0%
because the hexadecimal representation
 

00:07:30.120 --> 00:07:33.529 align:start position:0%
because the hexadecimal representation
of<00:07:30.539><c> 128</c><00:07:31.400><c> then</c><00:07:32.400><c> we're</c><00:07:32.580><c> going</c><00:07:32.699><c> to</c><00:07:32.759><c> push</c><00:07:32.880><c> 64</c><00:07:33.360><c> on</c>

00:07:33.529 --> 00:07:33.539 align:start position:0%
of 128 then we're going to push 64 on
 

00:07:33.539 --> 00:07:35.990 align:start position:0%
of 128 then we're going to push 64 on
the<00:07:33.660><c> stack</c><00:07:33.860><c> and</c><00:07:34.860><c> then</c><00:07:35.160><c> we're</c><00:07:35.340><c> going</c><00:07:35.460><c> to</c><00:07:35.520><c> call</c><00:07:35.699><c> a</c>

00:07:35.990 --> 00:07:36.000 align:start position:0%
the stack and then we're going to call a
 

00:07:36.000 --> 00:07:37.969 align:start position:0%
the stack and then we're going to call a
function<00:07:36.240><c> called</c><00:07:36.539><c> M</c><00:07:36.840><c> store</c><00:07:37.199><c> which</c><00:07:37.620><c> is</c><00:07:37.800><c> going</c>

00:07:37.969 --> 00:07:37.979 align:start position:0%
function called M store which is going
 

00:07:37.979 --> 00:07:41.510 align:start position:0%
function called M store which is going
to<00:07:38.220><c> store</c><00:07:38.940><c> the</c><00:07:39.240><c> value</c><00:07:39.360><c> 128</c><00:07:40.080><c> at</c><00:07:40.620><c> the</c><00:07:40.740><c> offset</c><00:07:41.039><c> 64</c>

00:07:41.510 --> 00:07:41.520 align:start position:0%
to store the value 128 at the offset 64
 

00:07:41.520 --> 00:07:44.210 align:start position:0%
to store the value 128 at the offset 64
in<00:07:42.000><c> memory</c><00:07:42.360><c> so</c><00:07:42.900><c> what's</c><00:07:43.380><c> going</c><00:07:43.560><c> on</c><00:07:43.680><c> here</c><00:07:43.919><c> we</c>

00:07:44.210 --> 00:07:44.220 align:start position:0%
in memory so what's going on here we
 

00:07:44.220 --> 00:07:47.029 align:start position:0%
in memory so what's going on here we
don't<00:07:44.400><c> have</c><00:07:44.520><c> 128</c><00:07:45.180><c> we</c><00:07:45.720><c> don't</c><00:07:45.840><c> have</c><00:07:46.020><c> 64</c><00:07:46.620><c> on</c><00:07:46.860><c> the</c>

00:07:47.029 --> 00:07:47.039 align:start position:0%
don't have 128 we don't have 64 on the
 

00:07:47.039 --> 00:07:49.490 align:start position:0%
don't have 128 we don't have 64 on the
stack<00:07:47.160><c> or</c><00:07:47.400><c> we</c><00:07:47.639><c> don't</c><00:07:47.759><c> have</c><00:07:47.819><c> 128</c><00:07:48.300><c> or</c><00:07:48.539><c> 64</c><00:07:49.020><c> in</c><00:07:49.319><c> our</c>

00:07:49.490 --> 00:07:49.500 align:start position:0%
stack or we don't have 128 or 64 in our
 

00:07:49.500 --> 00:07:51.969 align:start position:0%
stack or we don't have 128 or 64 in our
contract<00:07:49.919><c> so</c><00:07:50.340><c> why</c><00:07:50.580><c> is</c><00:07:50.699><c> this</c><00:07:50.880><c> happening</c>

00:07:51.969 --> 00:07:51.979 align:start position:0%
contract so why is this happening
 

00:07:51.979 --> 00:07:54.529 align:start position:0%
contract so why is this happening
well<00:07:52.979><c> what's</c><00:07:53.340><c> happening</c><00:07:53.639><c> is</c><00:07:53.759><c> solidity</c><00:07:54.240><c> uses</c>

00:07:54.529 --> 00:07:54.539 align:start position:0%
well what's happening is solidity uses
 

00:07:54.539 --> 00:07:56.689 align:start position:0%
well what's happening is solidity uses
the<00:07:54.660><c> memory</c><00:07:54.900><c> area</c><00:07:55.139><c> between</c><00:07:55.500><c> address</c><00:07:55.860><c> 0</c><00:07:56.340><c> and</c>

00:07:56.689 --> 00:07:56.699 align:start position:0%
the memory area between address 0 and
 

00:07:56.699 --> 00:08:00.350 align:start position:0%
the memory area between address 0 and
address<00:07:57.380><c> 0x7f</c><00:07:58.380><c> or</c><00:07:58.680><c> 127</c><00:07:59.340><c> for</c><00:07:59.880><c> internal</c>

00:08:00.350 --> 00:08:00.360 align:start position:0%
address 0x7f or 127 for internal
 

00:08:00.360 --> 00:08:02.270 align:start position:0%
address 0x7f or 127 for internal
purposes<00:08:00.720><c> and</c><00:08:01.020><c> stores</c><00:08:01.259><c> data</c><00:08:01.800><c> starting</c><00:08:01.979><c> at</c>

00:08:02.270 --> 00:08:02.280 align:start position:0%
purposes and stores data starting at
 

00:08:02.280 --> 00:08:05.510 align:start position:0%
purposes and stores data starting at
address<00:08:02.599><c> 0x80</c><00:08:03.599><c> or</c><00:08:03.840><c> 128</c><00:08:04.380><c> so</c><00:08:04.800><c> this</c><00:08:04.979><c> is</c><00:08:05.039><c> solidity</c>

00:08:05.510 --> 00:08:05.520 align:start position:0%
address 0x80 or 128 so this is solidity
 

00:08:05.520 --> 00:08:07.909 align:start position:0%
address 0x80 or 128 so this is solidity
doing<00:08:05.880><c> some</c><00:08:06.240><c> boilerplate</c><00:08:07.139><c> internal</c><00:08:07.620><c> memory</c>

00:08:07.909 --> 00:08:07.919 align:start position:0%
doing some boilerplate internal memory
 

00:08:07.919 --> 00:08:09.950 align:start position:0%
doing some boilerplate internal memory
management<00:08:08.160><c> for</c><00:08:08.580><c> us</c><00:08:08.759><c> fantastic</c><00:08:09.539><c> we</c><00:08:09.840><c> don't</c>

00:08:09.950 --> 00:08:09.960 align:start position:0%
management for us fantastic we don't
 

00:08:09.960 --> 00:08:11.390 align:start position:0%
management for us fantastic we don't
have<00:08:10.080><c> to</c><00:08:10.199><c> worry</c><00:08:10.319><c> about</c><00:08:10.500><c> this</c><00:08:10.740><c> as</c><00:08:10.979><c> solidity</c>

00:08:11.390 --> 00:08:11.400 align:start position:0%
have to worry about this as solidity
 

00:08:11.400 --> 00:08:13.730 align:start position:0%
have to worry about this as solidity
developers<00:08:12.180><c> this</c><00:08:12.539><c> is</c><00:08:12.599><c> just</c><00:08:12.780><c> a</c><00:08:12.900><c> straight</c><00:08:13.080><c> win</c>

00:08:13.730 --> 00:08:13.740 align:start position:0%
developers this is just a straight win
 

00:08:13.740 --> 00:08:16.070 align:start position:0%
developers this is just a straight win
wonderful<00:08:14.520><c> all</c><00:08:15.120><c> right</c><00:08:15.300><c> so</c><00:08:15.660><c> now</c><00:08:15.780><c> we're</c><00:08:15.960><c> going</c>

00:08:16.070 --> 00:08:16.080 align:start position:0%
wonderful all right so now we're going
 

00:08:16.080 --> 00:08:19.550 align:start position:0%
wonderful all right so now we're going
to<00:08:16.139><c> jump</c><00:08:16.380><c> to</c><00:08:16.800><c> line</c><00:08:17.099><c> uh</c><00:08:17.940><c> 25</c><00:08:18.300><c> in</c><00:08:18.960><c> our</c><00:08:19.139><c> list</c><00:08:19.259><c> of</c><00:08:19.440><c> op</c>

00:08:19.550 --> 00:08:19.560 align:start position:0%
to jump to line uh 25 in our list of op
 

00:08:19.560 --> 00:08:21.650 align:start position:0%
to jump to line uh 25 in our list of op
codes<00:08:19.800><c> between</c><00:08:20.280><c> line</c><00:08:20.580><c> 3</c><00:08:20.759><c> and</c><00:08:21.000><c> 25</c><00:08:21.180><c> there's</c><00:08:21.539><c> some</c>

00:08:21.650 --> 00:08:21.660 align:start position:0%
codes between line 3 and 25 there's some
 

00:08:21.660 --> 00:08:23.689 align:start position:0%
codes between line 3 and 25 there's some
more<00:08:21.840><c> boilerplate</c><00:08:22.440><c> stuff</c><00:08:22.620><c> there's</c><00:08:23.280><c> a</c>

00:08:23.689 --> 00:08:23.699 align:start position:0%
more boilerplate stuff there's a
 

00:08:23.699 --> 00:08:26.749 align:start position:0%
more boilerplate stuff there's a
validation<00:08:24.180><c> of</c><00:08:24.900><c> uh</c><00:08:25.620><c> message.value</c><00:08:26.520><c> and</c>

00:08:26.749 --> 00:08:26.759 align:start position:0%
validation of uh message.value and
 

00:08:26.759 --> 00:08:30.170 align:start position:0%
validation of uh message.value and
making<00:08:27.479><c> sure</c><00:08:27.780><c> like</c><00:08:28.080><c> you</c><00:08:28.560><c> can't</c><00:08:28.680><c> send</c><00:08:29.039><c> ether</c><00:08:30.000><c> to</c>

00:08:30.170 --> 00:08:30.180 align:start position:0%
making sure like you can't send ether to
 

00:08:30.180 --> 00:08:32.329 align:start position:0%
making sure like you can't send ether to
a<00:08:30.360><c> non-payable</c><00:08:30.780><c> function</c><00:08:31.139><c> but</c><00:08:31.800><c> that</c><00:08:31.979><c> is</c><00:08:32.159><c> not</c>

00:08:32.329 --> 00:08:32.339 align:start position:0%
a non-payable function but that is not
 

00:08:32.339 --> 00:08:33.529 align:start position:0%
a non-payable function but that is not
really<00:08:32.459><c> relevant</c><00:08:32.880><c> to</c><00:08:33.000><c> us</c><00:08:33.120><c> because</c><00:08:33.300><c> our</c>

00:08:33.529 --> 00:08:33.539 align:start position:0%
really relevant to us because our
 

00:08:33.539 --> 00:08:35.329 align:start position:0%
really relevant to us because our
function<00:08:33.779><c> isn't</c><00:08:34.080><c> payable</c><00:08:34.380><c> so</c><00:08:34.740><c> we're</c><00:08:35.099><c> going</c><00:08:35.279><c> to</c>

00:08:35.329 --> 00:08:35.339 align:start position:0%
function isn't payable so we're going to
 

00:08:35.339 --> 00:08:38.149 align:start position:0%
function isn't payable so we're going to
go<00:08:35.459><c> ahead</c><00:08:35.580><c> and</c><00:08:35.820><c> skip</c><00:08:36.060><c> that</c>

00:08:38.149 --> 00:08:38.159 align:start position:0%
go ahead and skip that
 

00:08:38.159 --> 00:08:41.570 align:start position:0%
go ahead and skip that
um great<00:08:38.459><c> so</c><00:08:39.140><c> uh</c><00:08:40.140><c> on</c><00:08:40.500><c> 25</c><00:08:40.800><c> we're</c><00:08:41.219><c> going</c><00:08:41.339><c> to</c><00:08:41.459><c> push</c>

00:08:41.570 --> 00:08:41.580 align:start position:0%
um great so uh on 25 we're going to push
 

00:08:41.580 --> 00:08:43.850 align:start position:0%
um great so uh on 25 we're going to push
4<00:08:41.940><c> onto</c><00:08:42.419><c> this</c><00:08:42.479><c> deck</c><00:08:42.779><c> once</c><00:08:43.320><c> again</c><00:08:43.380><c> where</c><00:08:43.680><c> is</c>

00:08:43.850 --> 00:08:43.860 align:start position:0%
4 onto this deck once again where is
 

00:08:43.860 --> 00:08:46.010 align:start position:0%
4 onto this deck once again where is
this<00:08:43.979><c> four</c><00:08:44.159><c> coming</c><00:08:44.399><c> from</c><00:08:44.580><c> and</c><00:08:45.180><c> then</c><00:08:45.300><c> 26</c><00:08:45.779><c> we're</c>

00:08:46.010 --> 00:08:46.020 align:start position:0%
this four coming from and then 26 we're
 

00:08:46.020 --> 00:08:47.570 align:start position:0%
this four coming from and then 26 we're
going<00:08:46.200><c> to</c><00:08:46.260><c> encounter</c><00:08:46.740><c> our</c><00:08:46.860><c> first</c><00:08:47.040><c> blockchain</c>

00:08:47.570 --> 00:08:47.580 align:start position:0%
going to encounter our first blockchain
 

00:08:47.580 --> 00:08:50.870 align:start position:0%
going to encounter our first blockchain
specific<00:08:48.120><c> uh</c><00:08:49.019><c> opcode</c><00:08:49.620><c> and</c><00:08:50.339><c> what</c><00:08:50.640><c> we're</c><00:08:50.760><c> doing</c>

00:08:50.870 --> 00:08:50.880 align:start position:0%
specific uh opcode and what we're doing
 

00:08:50.880 --> 00:08:53.150 align:start position:0%
specific uh opcode and what we're doing
here<00:08:51.120><c> is</c><00:08:51.420><c> we're</c><00:08:51.660><c> pushing</c><00:08:52.019><c> the</c><00:08:52.320><c> size</c><00:08:52.560><c> of</c><00:08:53.040><c> the</c>

00:08:53.150 --> 00:08:53.160 align:start position:0%
here is we're pushing the size of the
 

00:08:53.160 --> 00:08:55.730 align:start position:0%
here is we're pushing the size of the
input<00:08:53.459><c> data</c><00:08:53.820><c> onto</c><00:08:54.120><c> the</c><00:08:54.240><c> stack</c><00:08:54.480><c> and</c><00:08:55.260><c> as</c><00:08:55.500><c> you</c><00:08:55.620><c> can</c>

00:08:55.730 --> 00:08:55.740 align:start position:0%
input data onto the stack and as you can
 

00:08:55.740 --> 00:08:58.070 align:start position:0%
input data onto the stack and as you can
see<00:08:55.920><c> we</c><00:08:56.279><c> pushed</c><00:08:56.519><c> four</c><00:08:56.700><c> onto</c><00:08:57.000><c> the</c><00:08:57.120><c> stack</c><00:08:57.360><c> now</c><00:08:57.899><c> we</c>

00:08:58.070 --> 00:08:58.080 align:start position:0%
see we pushed four onto the stack now we
 

00:08:58.080 --> 00:08:59.630 align:start position:0%
see we pushed four onto the stack now we
have<00:08:58.200><c> four</c><00:08:58.500><c> on</c><00:08:58.740><c> the</c><00:08:58.860><c> stack</c><00:08:59.100><c> again</c><00:08:59.220><c> so</c><00:08:59.519><c> that</c>

00:08:59.630 --> 00:08:59.640 align:start position:0%
have four on the stack again so that
 

00:08:59.640 --> 00:09:02.150 align:start position:0%
have four on the stack again so that
means<00:08:59.820><c> our</c><00:09:00.000><c> input</c><00:09:00.300><c> data</c><00:09:00.720><c> size</c><00:09:00.899><c> is</c><00:09:01.380><c> four</c><00:09:01.680><c> bytes</c>

00:09:02.150 --> 00:09:02.160 align:start position:0%
means our input data size is four bytes
 

00:09:02.160 --> 00:09:04.730 align:start position:0%
means our input data size is four bytes
but<00:09:02.459><c> where</c><00:09:02.820><c> did</c><00:09:03.000><c> this</c><00:09:03.120><c> come</c><00:09:03.360><c> from</c><00:09:03.620><c> we</c><00:09:04.620><c> didn't</c>

00:09:04.730 --> 00:09:04.740 align:start position:0%
but where did this come from we didn't
 

00:09:04.740 --> 00:09:07.810 align:start position:0%
but where did this come from we didn't
send<00:09:04.980><c> any</c><00:09:05.279><c> ether</c><00:09:05.700><c> and</c><00:09:06.660><c> we</c><00:09:06.899><c> didn't</c><00:09:07.019><c> send</c><00:09:07.320><c> any</c>

00:09:07.810 --> 00:09:07.820 align:start position:0%
send any ether and we didn't send any
 

00:09:07.820 --> 00:09:09.829 align:start position:0%
send any ether and we didn't send any
arguments<00:09:08.820><c> along</c><00:09:09.000><c> with</c><00:09:09.240><c> our</c><00:09:09.360><c> function</c><00:09:09.600><c> call</c>

00:09:09.829 --> 00:09:09.839 align:start position:0%
arguments along with our function call
 

00:09:09.839 --> 00:09:11.389 align:start position:0%
arguments along with our function call
because<00:09:10.080><c> there</c><00:09:10.380><c> were</c><00:09:10.500><c> no</c><00:09:10.620><c> parameters</c><00:09:11.040><c> it</c><00:09:11.279><c> was</c>

00:09:11.389 --> 00:09:11.399 align:start position:0%
because there were no parameters it was
 

00:09:11.399 --> 00:09:12.889 align:start position:0%
because there were no parameters it was
just<00:09:11.519><c> the</c><00:09:11.640><c> public</c><00:09:11.760><c> function</c><00:09:12.120><c> that</c><00:09:12.420><c> we</c><00:09:12.540><c> invoke</c>

00:09:12.889 --> 00:09:12.899 align:start position:0%
just the public function that we invoke
 

00:09:12.899 --> 00:09:16.070 align:start position:0%
just the public function that we invoke
so<00:09:13.680><c> why</c><00:09:13.920><c> is</c><00:09:14.100><c> our</c><00:09:14.220><c> call</c><00:09:14.399><c> data</c><00:09:14.760><c> size</c><00:09:14.880><c> four</c><00:09:15.180><c> well</c>

00:09:16.070 --> 00:09:16.080 align:start position:0%
so why is our call data size four well
 

00:09:16.080 --> 00:09:19.329 align:start position:0%
so why is our call data size four well
the<00:09:16.740><c> answer</c><00:09:16.860><c> to</c><00:09:17.040><c> this</c><00:09:17.160><c> is</c><00:09:17.519><c> that</c><00:09:17.760><c> when</c><00:09:18.240><c> we</c><00:09:18.420><c> call</c>

00:09:19.329 --> 00:09:19.339 align:start position:0%
the answer to this is that when we call
 

00:09:19.339 --> 00:09:22.310 align:start position:0%
the answer to this is that when we call
get<00:09:20.339><c> total</c><00:09:20.700><c> Supply</c><00:09:20.820><c> in</c><00:09:21.180><c> ethers</c><00:09:21.660><c> under</c><00:09:22.080><c> the</c>

00:09:22.310 --> 00:09:22.320 align:start position:0%
get total Supply in ethers under the
 

00:09:22.320 --> 00:09:25.610 align:start position:0%
get total Supply in ethers under the
hood<00:09:22.519><c> ethers</c><00:09:23.519><c> is</c><00:09:23.640><c> going</c><00:09:23.820><c> to</c><00:09:23.940><c> Hash</c><00:09:24.899><c> that</c><00:09:25.320><c> get</c>

00:09:25.610 --> 00:09:25.620 align:start position:0%
hood ethers is going to Hash that get
 

00:09:25.620 --> 00:09:27.470 align:start position:0%
hood ethers is going to Hash that get
total<00:09:25.980><c> Supply</c><00:09:26.160><c> function</c><00:09:26.640><c> into</c><00:09:26.940><c> its</c><00:09:27.240><c> function</c>

00:09:27.470 --> 00:09:27.480 align:start position:0%
total Supply function into its function
 

00:09:27.480 --> 00:09:29.630 align:start position:0%
total Supply function into its function
signature<00:09:28.080><c> and</c><00:09:28.620><c> send</c><00:09:28.860><c> that</c><00:09:29.040><c> along</c><00:09:29.220><c> with</c><00:09:29.580><c> the</c>

00:09:29.630 --> 00:09:29.640 align:start position:0%
signature and send that along with the
 

00:09:29.640 --> 00:09:32.870 align:start position:0%
signature and send that along with the
input<00:09:29.940><c> data</c><00:09:30.300><c> when</c><00:09:30.660><c> we</c><00:09:30.839><c> send</c><00:09:30.959><c> that</c><00:09:31.200><c> transaction</c>

00:09:32.870 --> 00:09:32.880 align:start position:0%
input data when we send that transaction
 

00:09:32.880 --> 00:09:35.389 align:start position:0%
input data when we send that transaction
all<00:09:33.420><c> right</c><00:09:33.600><c> so</c><00:09:34.200><c> we</c><00:09:34.560><c> know</c><00:09:34.680><c> that</c><00:09:34.800><c> we</c><00:09:34.980><c> have</c><00:09:35.100><c> four</c>

00:09:35.389 --> 00:09:35.399 align:start position:0%
all right so we know that we have four
 

00:09:35.399 --> 00:09:37.550 align:start position:0%
all right so we know that we have four
and<00:09:35.880><c> we</c><00:09:36.060><c> know</c><00:09:36.120><c> that</c><00:09:36.300><c> our</c><00:09:36.420><c> cost</c><00:09:36.600><c> data</c><00:09:36.959><c> sizes</c><00:09:37.260><c> for</c>

00:09:37.550 --> 00:09:37.560 align:start position:0%
and we know that our cost data sizes for
 

00:09:37.560 --> 00:09:40.550 align:start position:0%
and we know that our cost data sizes for
what's<00:09:38.160><c> going</c><00:09:38.339><c> on</c><00:09:38.459><c> next</c><00:09:38.760><c> well</c><00:09:39.420><c> LT</c><00:09:39.959><c> as</c><00:09:40.320><c> you</c><00:09:40.440><c> may</c>

00:09:40.550 --> 00:09:40.560 align:start position:0%
what's going on next well LT as you may
 

00:09:40.560 --> 00:09:43.790 align:start position:0%
what's going on next well LT as you may
have<00:09:40.680><c> guessed</c><00:09:41.040><c> checks</c><00:09:41.640><c> if</c><00:09:41.940><c> uh</c><00:09:42.540><c> input</c><00:09:43.320><c> data</c><00:09:43.680><c> if</c>

00:09:43.790 --> 00:09:43.800 align:start position:0%
have guessed checks if uh input data if
 

00:09:43.800 --> 00:09:45.410 align:start position:0%
have guessed checks if uh input data if
the<00:09:43.980><c> input</c><00:09:44.220><c> data</c><00:09:44.519><c> is</c><00:09:44.580><c> less</c><00:09:44.760><c> than</c><00:09:44.880><c> four</c><00:09:45.120><c> and</c>

00:09:45.410 --> 00:09:45.420 align:start position:0%
the input data is less than four and
 

00:09:45.420 --> 00:09:47.269 align:start position:0%
the input data is less than four and
what's<00:09:45.600><c> actually</c><00:09:45.839><c> happening</c><00:09:46.320><c> is</c><00:09:47.040><c> it's</c>

00:09:47.269 --> 00:09:47.279 align:start position:0%
what's actually happening is it's
 

00:09:47.279 --> 00:09:49.130 align:start position:0%
what's actually happening is it's
looking<00:09:47.880><c> at</c><00:09:48.120><c> the</c><00:09:48.240><c> top</c><00:09:48.360><c> value</c><00:09:48.540><c> of</c><00:09:48.779><c> the</c><00:09:48.899><c> stack</c>

00:09:49.130 --> 00:09:49.140 align:start position:0%
looking at the top value of the stack
 

00:09:49.140 --> 00:09:50.930 align:start position:0%
looking at the top value of the stack
looking<00:09:49.560><c> at</c><00:09:49.800><c> the</c><00:09:49.920><c> second</c><00:09:50.040><c> from</c><00:09:50.279><c> Top</c><00:09:50.519><c> Value</c><00:09:50.760><c> of</c>

00:09:50.930 --> 00:09:50.940 align:start position:0%
looking at the second from Top Value of
 

00:09:50.940 --> 00:09:53.690 align:start position:0%
looking at the second from Top Value of
the<00:09:51.060><c> stack</c><00:09:51.300><c> and</c><00:09:51.720><c> seeing</c><00:09:52.019><c> if</c><00:09:52.440><c> uh</c><00:09:52.980><c> the</c><00:09:53.220><c> second</c><00:09:53.339><c> is</c>

00:09:53.690 --> 00:09:53.700 align:start position:0%
the stack and seeing if uh the second is
 

00:09:53.700 --> 00:09:55.850 align:start position:0%
the stack and seeing if uh the second is
less<00:09:53.940><c> than</c><00:09:54.180><c> the</c><00:09:54.420><c> Top</c><00:09:54.540><c> Value</c><00:09:54.779><c> in</c><00:09:55.440><c> our</c><00:09:55.560><c> case</c><00:09:55.680><c> it's</c>

00:09:55.850 --> 00:09:55.860 align:start position:0%
less than the Top Value in our case it's
 

00:09:55.860 --> 00:09:58.310 align:start position:0%
less than the Top Value in our case it's
not<00:09:56.040><c> because</c><00:09:56.339><c> 4</c><00:09:56.700><c> is</c><00:09:56.940><c> not</c><00:09:57.060><c> less</c><00:09:57.240><c> than</c><00:09:57.420><c> four</c><00:09:57.600><c> so</c>

00:09:58.310 --> 00:09:58.320 align:start position:0%
not because 4 is not less than four so
 

00:09:58.320 --> 00:10:01.430 align:start position:0%
not because 4 is not less than four so
uh<00:09:59.279><c> we</c><00:09:59.820><c> have</c><00:09:59.940><c> we</c><00:10:00.240><c> push</c><00:10:00.420><c> false</c><00:10:00.839><c> onto</c><00:10:01.140><c> the</c><00:10:01.260><c> stack</c>

00:10:01.430 --> 00:10:01.440 align:start position:0%
uh we have we push false onto the stack
 

00:10:01.440 --> 00:10:03.350 align:start position:0%
uh we have we push false onto the stack
remember<00:10:01.920><c> this</c><00:10:02.220><c> would</c><00:10:02.399><c> be</c><00:10:02.519><c> represented</c><00:10:03.000><c> as</c><00:10:03.180><c> a</c>

00:10:03.350 --> 00:10:03.360 align:start position:0%
remember this would be represented as a
 

00:10:03.360 --> 00:10:06.110 align:start position:0%
remember this would be represented as a
zero<00:10:03.720><c> or</c><00:10:03.839><c> one</c>

00:10:06.110 --> 00:10:06.120 align:start position:0%
zero or one
 

00:10:06.120 --> 00:10:10.130 align:start position:0%
zero or one
and<00:10:06.540><c> then</c><00:10:06.660><c> we</c><00:10:06.839><c> push</c><00:10:07.640><c> 0x</c><00:10:08.640><c> 280</c><00:10:09.060><c> or</c><00:10:09.300><c> 38</c><00:10:09.660><c> onto</c><00:10:10.080><c> the</c>

00:10:10.130 --> 00:10:10.140 align:start position:0%
and then we push 0x 280 or 38 onto the
 

00:10:10.140 --> 00:10:11.150 align:start position:0%
and then we push 0x 280 or 38 onto the
stack

00:10:11.150 --> 00:10:11.160 align:start position:0%
stack
 

00:10:11.160 --> 00:10:12.949 align:start position:0%
stack
we'll<00:10:11.880><c> come</c><00:10:12.000><c> back</c><00:10:12.120><c> to</c><00:10:12.240><c> that</c><00:10:12.360><c> in</c><00:10:12.600><c> just</c><00:10:12.720><c> a</c><00:10:12.839><c> second</c>

00:10:12.949 --> 00:10:12.959 align:start position:0%
we'll come back to that in just a second
 

00:10:12.959 --> 00:10:14.990 align:start position:0%
we'll come back to that in just a second
the<00:10:13.560><c> next</c><00:10:13.740><c> instruction</c><00:10:13.860><c> that</c><00:10:14.220><c> we</c><00:10:14.339><c> see</c><00:10:14.519><c> is</c><00:10:14.760><c> Jump</c>

00:10:14.990 --> 00:10:15.000 align:start position:0%
the next instruction that we see is Jump
 

00:10:15.000 --> 00:10:17.630 align:start position:0%
the next instruction that we see is Jump
I<00:10:15.300><c> and</c><00:10:15.660><c> I</c><00:10:15.779><c> think</c><00:10:15.899><c> of</c><00:10:16.019><c> that</c><00:10:16.200><c> as</c><00:10:16.380><c> jump</c><00:10:16.620><c> if</c><00:10:16.920><c> so</c><00:10:17.399><c> what</c>

00:10:17.630 --> 00:10:17.640 align:start position:0%
I and I think of that as jump if so what
 

00:10:17.640 --> 00:10:19.730 align:start position:0%
I and I think of that as jump if so what
that<00:10:17.820><c> instruction</c><00:10:17.940><c> is</c><00:10:18.300><c> telling</c><00:10:18.600><c> us</c><00:10:18.660><c> is</c><00:10:19.019><c> if</c><00:10:19.560><c> the</c>

00:10:19.730 --> 00:10:19.740 align:start position:0%
that instruction is telling us is if the
 

00:10:19.740 --> 00:10:22.610 align:start position:0%
that instruction is telling us is if the
second<00:10:19.920><c> from</c><00:10:20.220><c> the</c><00:10:20.399><c> top</c><00:10:20.519><c> value</c><00:10:20.880><c> is</c><00:10:21.600><c> true</c>

00:10:22.610 --> 00:10:22.620 align:start position:0%
second from the top value is true
 

00:10:22.620 --> 00:10:25.550 align:start position:0%
second from the top value is true
jump<00:10:23.160><c> to</c><00:10:23.519><c> the</c><00:10:24.180><c> program</c><00:10:24.300><c> counter</c><00:10:24.899><c> represented</c>

00:10:25.550 --> 00:10:25.560 align:start position:0%
jump to the program counter represented
 

00:10:25.560 --> 00:10:28.550 align:start position:0%
jump to the program counter represented
by<00:10:25.920><c> the</c><00:10:26.459><c> Top</c><00:10:26.700><c> Value</c><00:10:26.940><c> on</c><00:10:27.180><c> the</c><00:10:27.300><c> stack</c>

00:10:28.550 --> 00:10:28.560 align:start position:0%
by the Top Value on the stack
 

00:10:28.560 --> 00:10:30.829 align:start position:0%
by the Top Value on the stack
a<00:10:28.860><c> simple</c><00:10:28.980><c> way</c><00:10:29.279><c> to</c><00:10:29.519><c> think</c><00:10:30.060><c> about</c><00:10:30.240><c> that</c><00:10:30.420><c> is</c><00:10:30.660><c> if</c>

00:10:30.829 --> 00:10:30.839 align:start position:0%
a simple way to think about that is if
 

00:10:30.839 --> 00:10:32.269 align:start position:0%
a simple way to think about that is if
the<00:10:31.019><c> second</c><00:10:31.140><c> from</c><00:10:31.380><c> the</c><00:10:31.500><c> top</c><00:10:31.620><c> value</c><00:10:31.860><c> is</c><00:10:32.040><c> true</c>

00:10:32.269 --> 00:10:32.279 align:start position:0%
the second from the top value is true
 

00:10:32.279 --> 00:10:34.970 align:start position:0%
the second from the top value is true
jump<00:10:32.820><c> to</c><00:10:33.060><c> line</c><00:10:33.240><c> 38.</c>

00:10:34.970 --> 00:10:34.980 align:start position:0%
jump to line 38.
 

00:10:34.980 --> 00:10:36.590 align:start position:0%
jump to line 38.
um since<00:10:35.519><c> the</c><00:10:35.700><c> second</c><00:10:35.820><c> from</c><00:10:36.060><c> the</c><00:10:36.180><c> top</c><00:10:36.300><c> value</c>

00:10:36.590 --> 00:10:36.600 align:start position:0%
um since the second from the top value
 

00:10:36.600 --> 00:10:37.910 align:start position:0%
um since the second from the top value
is<00:10:36.959><c> not</c><00:10:37.140><c> true</c>

00:10:37.910 --> 00:10:37.920 align:start position:0%
is not true
 

00:10:37.920 --> 00:10:40.570 align:start position:0%
is not true
we<00:10:38.339><c> don't</c><00:10:38.519><c> jump</c><00:10:38.700><c> anywhere</c><00:10:39.120><c> and</c>

00:10:40.570 --> 00:10:40.580 align:start position:0%
we don't jump anywhere and
 

00:10:40.580 --> 00:10:43.790 align:start position:0%
we don't jump anywhere and
uh<00:10:41.580><c> this</c><00:10:42.060><c> like</c><00:10:42.480><c> check</c><00:10:42.959><c> executes</c><00:10:43.560><c> and</c>

00:10:43.790 --> 00:10:43.800 align:start position:0%
uh this like check executes and
 

00:10:43.800 --> 00:10:45.650 align:start position:0%
uh this like check executes and
essentially<00:10:44.160><c> What's</c><00:10:44.339><c> Happening</c><00:10:44.640><c> Here</c>

00:10:45.650 --> 00:10:45.660 align:start position:0%
essentially What's Happening Here
 

00:10:45.660 --> 00:10:47.449 align:start position:0%
essentially What's Happening Here
is<00:10:46.140><c> that</c><00:10:46.260><c> since</c><00:10:46.500><c> functioning</c><00:10:46.920><c> signatures</c><00:10:47.279><c> are</c>

00:10:47.449 --> 00:10:47.459 align:start position:0%
is that since functioning signatures are
 

00:10:47.459 --> 00:10:49.370 align:start position:0%
is that since functioning signatures are
four<00:10:47.579><c> bytes</c><00:10:47.940><c> in</c><00:10:48.060><c> length</c><00:10:48.360><c> length</c><00:10:48.899><c> if</c><00:10:49.140><c> the</c><00:10:49.260><c> call</c>

00:10:49.370 --> 00:10:49.380 align:start position:0%
four bytes in length length if the call
 

00:10:49.380 --> 00:10:51.650 align:start position:0%
four bytes in length length if the call
data<00:10:49.800><c> size</c><00:10:49.920><c> is</c><00:10:50.279><c> less</c><00:10:50.459><c> than</c><00:10:50.579><c> four</c><00:10:50.760><c> bytes</c><00:10:51.120><c> we</c>

00:10:51.650 --> 00:10:51.660 align:start position:0%
data size is less than four bytes we
 

00:10:51.660 --> 00:10:54.110 align:start position:0%
data size is less than four bytes we
know<00:10:51.839><c> that</c><00:10:52.200><c> we</c><00:10:52.740><c> can't</c><00:10:52.860><c> possibly</c><00:10:53.220><c> be</c><00:10:53.459><c> calling</c><00:10:53.880><c> a</c>

00:10:54.110 --> 00:10:54.120 align:start position:0%
know that we can't possibly be calling a
 

00:10:54.120 --> 00:10:56.569 align:start position:0%
know that we can't possibly be calling a
valid<00:10:54.420><c> function</c><00:10:54.720><c> and</c>

00:10:56.569 --> 00:10:56.579 align:start position:0%
valid function and
 

00:10:56.579 --> 00:11:00.110 align:start position:0%
valid function and
um<00:10:57.120><c> uh</c><00:10:57.779><c> then</c><00:10:58.019><c> the</c><00:10:58.260><c> function</c><00:10:58.500><c> gets</c><00:10:58.920><c> reverted</c><00:10:59.640><c> if</c>

00:11:00.110 --> 00:11:00.120 align:start position:0%
um uh then the function gets reverted if
 

00:11:00.120 --> 00:11:03.110 align:start position:0%
um uh then the function gets reverted if
the<00:11:00.600><c> call</c><00:11:01.200><c> data</c><00:11:01.560><c> set</c><00:11:01.680><c> is</c><00:11:02.040><c> size</c><00:11:02.459><c> is</c><00:11:02.760><c> less</c><00:11:02.940><c> than</c>

00:11:03.110 --> 00:11:03.120 align:start position:0%
the call data set is size is less than
 

00:11:03.120 --> 00:11:04.190 align:start position:0%
the call data set is size is less than
four

00:11:04.190 --> 00:11:04.200 align:start position:0%
four
 

00:11:04.200 --> 00:11:06.530 align:start position:0%
four
so<00:11:04.560><c> with</c><00:11:04.800><c> that</c><00:11:04.980><c> idea</c><00:11:05.279><c> of</c><00:11:05.459><c> function</c><00:11:06.000><c> signatures</c>

00:11:06.530 --> 00:11:06.540 align:start position:0%
so with that idea of function signatures
 

00:11:06.540 --> 00:11:08.630 align:start position:0%
so with that idea of function signatures
in<00:11:06.720><c> mind</c><00:11:06.899><c> let's</c><00:11:07.200><c> take</c><00:11:07.380><c> a</c><00:11:07.500><c> look</c><00:11:07.680><c> at</c><00:11:08.100><c> the</c><00:11:08.459><c> next</c>

00:11:08.630 --> 00:11:08.640 align:start position:0%
in mind let's take a look at the next
 

00:11:08.640 --> 00:11:09.470 align:start position:0%
in mind let's take a look at the next
section

00:11:09.470 --> 00:11:09.480 align:start position:0%
section
 

00:11:09.480 --> 00:11:12.470 align:start position:0%
section
so<00:11:10.079><c> call</c><00:11:10.320><c> data</c><00:11:10.740><c> load</c><00:11:10.980><c> is</c><00:11:11.399><c> another</c>

00:11:12.470 --> 00:11:12.480 align:start position:0%
so call data load is another
 

00:11:12.480 --> 00:11:14.810 align:start position:0%
so call data load is another
blockchain<00:11:13.320><c> specific</c><00:11:13.680><c> opcode</c><00:11:14.160><c> similar</c><00:11:14.700><c> to</c>

00:11:14.810 --> 00:11:14.820 align:start position:0%
blockchain specific opcode similar to
 

00:11:14.820 --> 00:11:17.569 align:start position:0%
blockchain specific opcode similar to
call<00:11:14.940><c> data</c><00:11:15.360><c> size</c><00:11:15.420><c> except</c><00:11:16.260><c> instead</c><00:11:16.740><c> of</c><00:11:16.800><c> pushing</c>

00:11:17.569 --> 00:11:17.579 align:start position:0%
call data size except instead of pushing
 

00:11:17.579 --> 00:11:19.730 align:start position:0%
call data size except instead of pushing
the<00:11:17.760><c> size</c><00:11:18.000><c> of</c><00:11:18.600><c> the</c><00:11:18.720><c> call</c><00:11:18.839><c> data</c><00:11:19.200><c> onto</c><00:11:19.440><c> the</c><00:11:19.560><c> stack</c>

00:11:19.730 --> 00:11:19.740 align:start position:0%
the size of the call data onto the stack
 

00:11:19.740 --> 00:11:22.250 align:start position:0%
the size of the call data onto the stack
it<00:11:19.980><c> puts</c><00:11:20.279><c> you</c><00:11:20.339><c> pushes</c><00:11:20.880><c> the</c><00:11:21.540><c> actual</c><00:11:21.720><c> call</c><00:11:21.959><c> data</c>

00:11:22.250 --> 00:11:22.260 align:start position:0%
it puts you pushes the actual call data
 

00:11:22.260 --> 00:11:24.829 align:start position:0%
it puts you pushes the actual call data
onto<00:11:22.500><c> the</c><00:11:22.620><c> stack</c><00:11:22.800><c> remember</c><00:11:23.399><c> that</c><00:11:23.820><c> the</c><00:11:24.480><c> size</c><00:11:24.660><c> of</c>

00:11:24.829 --> 00:11:24.839 align:start position:0%
onto the stack remember that the size of
 

00:11:24.839 --> 00:11:26.990 align:start position:0%
onto the stack remember that the size of
our<00:11:24.959><c> call</c><00:11:25.140><c> data</c><00:11:25.500><c> was</c><00:11:25.560><c> four</c><00:11:25.740><c> bytes</c><00:11:26.100><c> so</c><00:11:26.459><c> here</c><00:11:26.700><c> we</c>

00:11:26.990 --> 00:11:27.000 align:start position:0%
our call data was four bytes so here we
 

00:11:27.000 --> 00:11:30.170 align:start position:0%
our call data was four bytes so here we
have<00:11:27.200><c> a</c><00:11:28.200><c> four</c><00:11:28.740><c> byte</c><00:11:29.040><c> hexadecimal</c><00:11:29.700><c> value</c><00:11:29.820><c> on</c>

00:11:30.170 --> 00:11:30.180 align:start position:0%
have a four byte hexadecimal value on
 

00:11:30.180 --> 00:11:32.569 align:start position:0%
have a four byte hexadecimal value on
our<00:11:30.360><c> stack</c><00:11:30.600><c> that</c><00:11:31.140><c> seems</c><00:11:31.800><c> relatively</c>

00:11:32.569 --> 00:11:32.579 align:start position:0%
our stack that seems relatively
 

00:11:32.579 --> 00:11:35.870 align:start position:0%
our stack that seems relatively
arbitrary<00:11:33.180><c> but</c><00:11:33.959><c> some</c><00:11:34.800><c> of</c><00:11:34.920><c> you</c><00:11:35.040><c> are</c><00:11:35.220><c> probably</c>

00:11:35.870 --> 00:11:35.880 align:start position:0%
arbitrary but some of you are probably
 

00:11:35.880 --> 00:11:38.329 align:start position:0%
arbitrary but some of you are probably
correctly<00:11:36.420><c> guessing</c><00:11:36.839><c> that</c><00:11:37.380><c> we</c><00:11:37.980><c> are</c><00:11:38.160><c> actually</c>

00:11:38.329 --> 00:11:38.339 align:start position:0%
correctly guessing that we are actually
 

00:11:38.339 --> 00:11:40.490 align:start position:0%
correctly guessing that we are actually
pushing<00:11:38.820><c> our</c><00:11:39.240><c> function</c><00:11:39.540><c> function</c><00:11:40.019><c> signature</c>

00:11:40.490 --> 00:11:40.500 align:start position:0%
pushing our function function signature
 

00:11:40.500 --> 00:11:43.190 align:start position:0%
pushing our function function signature
onto<00:11:40.800><c> the</c><00:11:40.920><c> stack</c><00:11:41.579><c> uh</c><00:11:42.240><c> on</c><00:11:42.480><c> the</c><00:11:42.600><c> next</c><00:11:42.660><c> line</c><00:11:42.899><c> we</c>

00:11:43.190 --> 00:11:43.200 align:start position:0%
onto the stack uh on the next line we
 

00:11:43.200 --> 00:11:44.930 align:start position:0%
onto the stack uh on the next line we
have<00:11:43.320><c> Push</c><00:11:43.620><c> four</c><00:11:43.860><c> and</c><00:11:44.160><c> we</c><00:11:44.339><c> push</c><00:11:44.519><c> that</c><00:11:44.760><c> same</c>

00:11:44.930 --> 00:11:44.940 align:start position:0%
have Push four and we push that same
 

00:11:44.940 --> 00:11:47.389 align:start position:0%
have Push four and we push that same
exact<00:11:45.240><c> function</c><00:11:45.600><c> function</c><00:11:45.959><c> signature</c>

00:11:47.389 --> 00:11:47.399 align:start position:0%
exact function function signature
 

00:11:47.399 --> 00:11:49.130 align:start position:0%
exact function function signature
What's<00:11:47.820><c> Happening</c><00:11:48.120><c> Here</c>

00:11:49.130 --> 00:11:49.140 align:start position:0%
What's Happening Here
 

00:11:49.140 --> 00:11:52.190 align:start position:0%
What's Happening Here
is<00:11:49.740><c> uh</c><00:11:50.220><c> the</c><00:11:50.459><c> contract</c><00:11:50.700><c> is</c><00:11:50.880><c> checking</c><00:11:51.300><c> okay</c><00:11:51.540><c> I'm</c>

00:11:52.190 --> 00:11:52.200 align:start position:0%
is uh the contract is checking okay I'm
 

00:11:52.200 --> 00:11:54.889 align:start position:0%
is uh the contract is checking okay I'm
being<00:11:52.500><c> sent</c><00:11:52.860><c> this</c><00:11:53.399><c> function</c><00:11:53.760><c> signature</c><00:11:54.300><c> does</c>

00:11:54.889 --> 00:11:54.899 align:start position:0%
being sent this function signature does
 

00:11:54.899 --> 00:11:58.069 align:start position:0%
being sent this function signature does
it<00:11:55.079><c> match</c><00:11:55.399><c> uh</c><00:11:56.399><c> does</c><00:11:56.640><c> it</c><00:11:56.760><c> match</c><00:11:57.060><c> this</c><00:11:57.779><c> function</c>

00:11:58.069 --> 00:11:58.079 align:start position:0%
it match uh does it match this function
 

00:11:58.079 --> 00:11:59.329 align:start position:0%
it match uh does it match this function
signature

00:11:59.329 --> 00:11:59.339 align:start position:0%
signature
 

00:11:59.339 --> 00:12:02.870 align:start position:0%
signature
and<00:11:59.820><c> if</c><00:12:00.120><c> the</c><00:12:00.300><c> answer</c><00:12:00.480><c> is</c><00:12:00.899><c> yes</c><00:12:01.339><c> uh</c><00:12:02.339><c> represented</c>

00:12:02.870 --> 00:12:02.880 align:start position:0%
and if the answer is yes uh represented
 

00:12:02.880 --> 00:12:05.150 align:start position:0%
and if the answer is yes uh represented
by<00:12:03.120><c> the</c><00:12:03.360><c> op</c><00:12:03.480><c> code</c><00:12:03.660><c> equal</c><00:12:03.959><c> so</c><00:12:04.320><c> equal</c><00:12:04.560><c> takes</c><00:12:04.920><c> two</c>

00:12:05.150 --> 00:12:05.160 align:start position:0%
by the op code equal so equal takes two
 

00:12:05.160 --> 00:12:07.069 align:start position:0%
by the op code equal so equal takes two
values<00:12:05.459><c> from</c><00:12:05.640><c> the</c><00:12:05.760><c> stack</c><00:12:06.000><c> and</c><00:12:06.240><c> returns</c><00:12:06.720><c> sorry</c>

00:12:07.069 --> 00:12:07.079 align:start position:0%
values from the stack and returns sorry
 

00:12:07.079 --> 00:12:08.509 align:start position:0%
values from the stack and returns sorry
the<00:12:07.320><c> top</c><00:12:07.440><c> two</c><00:12:07.560><c> values</c><00:12:07.860><c> from</c><00:12:07.980><c> the</c><00:12:08.160><c> stack</c><00:12:08.339><c> and</c>

00:12:08.509 --> 00:12:08.519 align:start position:0%
the top two values from the stack and
 

00:12:08.519 --> 00:12:10.690 align:start position:0%
the top two values from the stack and
returns<00:12:08.940><c> true</c><00:12:09.120><c> or</c><00:12:09.240><c> false</c><00:12:09.540><c> if</c><00:12:09.720><c> they're</c><00:12:09.839><c> equal</c>

00:12:10.690 --> 00:12:10.700 align:start position:0%
returns true or false if they're equal
 

00:12:10.700 --> 00:12:14.150 align:start position:0%
returns true or false if they're equal
uh<00:12:11.700><c> we</c><00:12:12.120><c> hit</c><00:12:12.300><c> a</c><00:12:12.420><c> one</c><00:12:12.540><c> or</c><00:12:12.720><c> a</c><00:12:12.839><c> zero</c><00:12:13.140><c> and</c><00:12:13.260><c> we</c><00:12:13.440><c> in</c><00:12:13.860><c> our</c>

00:12:14.150 --> 00:12:14.160 align:start position:0%
uh we hit a one or a zero and we in our
 

00:12:14.160 --> 00:12:15.710 align:start position:0%
uh we hit a one or a zero and we in our
case<00:12:14.339><c> it's</c><00:12:14.820><c> true</c>

00:12:15.710 --> 00:12:15.720 align:start position:0%
case it's true
 

00:12:15.720 --> 00:12:18.889 align:start position:0%
case it's true
so<00:12:16.440><c> once</c><00:12:16.980><c> again</c><00:12:17.100><c> uh</c><00:12:17.880><c> we're</c><00:12:18.060><c> in</c><00:12:18.300><c> that</c><00:12:18.480><c> jump</c><00:12:18.660><c> I</c>

00:12:18.889 --> 00:12:18.899 align:start position:0%
so once again uh we're in that jump I
 

00:12:18.899 --> 00:12:21.110 align:start position:0%
so once again uh we're in that jump I
situation<00:12:19.500><c> so</c><00:12:20.100><c> we</c><00:12:20.279><c> have</c><00:12:20.399><c> true</c><00:12:20.579><c> on</c><00:12:20.820><c> the</c><00:12:20.940><c> stack</c>

00:12:21.110 --> 00:12:21.120 align:start position:0%
situation so we have true on the stack
 

00:12:21.120 --> 00:12:24.050 align:start position:0%
situation so we have true on the stack
we<00:12:21.959><c> push</c><00:12:22.140><c> 45</c><00:12:22.440><c> under</c><00:12:22.860><c> the</c><00:12:23.100><c> stack</c><00:12:23.279><c> and</c><00:12:23.760><c> now</c><00:12:23.940><c> on</c>

00:12:24.050 --> 00:12:24.060 align:start position:0%
we push 45 under the stack and now on
 

00:12:24.060 --> 00:12:25.790 align:start position:0%
we push 45 under the stack and now on
line<00:12:24.240><c> 36</c>

00:12:25.790 --> 00:12:25.800 align:start position:0%
line 36
 

00:12:25.800 --> 00:12:29.810 align:start position:0%
line 36
we<00:12:26.399><c> are</c><00:12:26.720><c> excuse</c><00:12:27.720><c> me</c><00:12:27.839><c> online</c><00:12:28.200><c> 36</c><00:12:28.800><c> we're</c><00:12:29.579><c> going</c>

00:12:29.810 --> 00:12:29.820 align:start position:0%
we are excuse me online 36 we're going
 

00:12:29.820 --> 00:12:33.410 align:start position:0%
we are excuse me online 36 we're going
to<00:12:30.120><c> jump</c><00:12:30.660><c> to</c><00:12:30.959><c> line</c><00:12:31.200><c> 45</c><00:12:31.500><c> because</c>

00:12:33.410 --> 00:12:33.420 align:start position:0%
to jump to line 45 because
 

00:12:33.420 --> 00:12:38.110 align:start position:0%
to jump to line 45 because
uh<00:12:34.079><c> line</c><00:12:34.320><c> 32</c><00:12:34.800><c> was</c><00:12:35.160><c> equal</c><00:12:35.399><c> to</c><00:12:35.579><c> line</c><00:12:35.760><c> 33</c><00:12:36.300><c> and</c><00:12:37.140><c> hey</c>

00:12:38.110 --> 00:12:38.120 align:start position:0%
uh line 32 was equal to line 33 and hey
 

00:12:38.120 --> 00:12:41.810 align:start position:0%
uh line 32 was equal to line 33 and hey
uh<00:12:39.120><c> we</c><00:12:39.660><c> know</c><00:12:39.839><c> that</c><00:12:40.019><c> this</c><00:12:40.260><c> is</c><00:12:40.440><c> the</c><00:12:40.740><c> function</c>

00:12:41.810 --> 00:12:41.820 align:start position:0%
uh we know that this is the function
 

00:12:41.820 --> 00:12:43.190 align:start position:0%
uh we know that this is the function
um<00:12:41.880><c> this</c><00:12:42.360><c> is</c><00:12:42.480><c> the</c><00:12:42.600><c> function</c><00:12:42.779><c> that</c><00:12:42.959><c> we</c><00:12:43.019><c> wrote</c>

00:12:43.190 --> 00:12:43.200 align:start position:0%
um this is the function that we wrote
 

00:12:43.200 --> 00:12:44.569 align:start position:0%
um this is the function that we wrote
Because<00:12:43.380><c> it's</c><00:12:43.620><c> the</c><00:12:43.740><c> function</c><00:12:43.980><c> that</c><00:12:44.220><c> we</c><00:12:44.399><c> tried</c>

00:12:44.569 --> 00:12:44.579 align:start position:0%
Because it's the function that we tried
 

00:12:44.579 --> 00:12:47.269 align:start position:0%
Because it's the function that we tried
to<00:12:44.700><c> invoke</c><00:12:45.000><c> fantastic</c><00:12:45.959><c> and</c><00:12:46.500><c> like</c><00:12:46.800><c> this</c><00:12:46.980><c> is</c><00:12:47.100><c> how</c>

00:12:47.269 --> 00:12:47.279 align:start position:0%
to invoke fantastic and like this is how
 

00:12:47.279 --> 00:12:49.009 align:start position:0%
to invoke fantastic and like this is how
the<00:12:47.459><c> evm</c><00:12:47.820><c> determines</c><00:12:48.180><c> which</c><00:12:48.480><c> functions</c><00:12:48.839><c> to</c>

00:12:49.009 --> 00:12:49.019 align:start position:0%
the evm determines which functions to
 

00:12:49.019 --> 00:12:51.290 align:start position:0%
the evm determines which functions to
call<00:12:49.139><c> if</c><00:12:49.620><c> you</c><00:12:49.740><c> have</c><00:12:49.860><c> many</c><00:12:50.100><c> functions</c><00:12:50.639><c> in</c><00:12:51.180><c> your</c>

00:12:51.290 --> 00:12:51.300 align:start position:0%
call if you have many functions in your
 

00:12:51.300 --> 00:12:52.970 align:start position:0%
call if you have many functions in your
smart<00:12:51.480><c> contract</c><00:12:51.899><c> you're</c><00:12:52.380><c> going</c><00:12:52.560><c> to</c><00:12:52.680><c> have</c><00:12:52.740><c> many</c>

00:12:52.970 --> 00:12:52.980 align:start position:0%
smart contract you're going to have many
 

00:12:52.980 --> 00:12:55.550 align:start position:0%
smart contract you're going to have many
lines<00:12:53.339><c> of</c><00:12:53.639><c> like</c><00:12:53.820><c> of</c><00:12:54.120><c> call</c><00:12:54.360><c> data</c><00:12:54.720><c> load</c><00:12:54.959><c> does</c><00:12:55.380><c> it</c>

00:12:55.550 --> 00:12:55.560 align:start position:0%
lines of like of call data load does it
 

00:12:55.560 --> 00:12:57.710 align:start position:0%
lines of like of call data load does it
equal<00:12:55.700><c> this</c><00:12:56.700><c> function</c><00:12:56.940><c> signature</c><00:12:57.360><c> does</c><00:12:57.480><c> equal</c>

00:12:57.710 --> 00:12:57.720 align:start position:0%
equal this function signature does equal
 

00:12:57.720 --> 00:12:59.210 align:start position:0%
equal this function signature does equal
this<00:12:57.959><c> function</c><00:12:58.139><c> signature</c><00:12:58.860><c> does</c><00:12:58.980><c> it</c><00:12:59.100><c> equal</c>

00:12:59.210 --> 00:12:59.220 align:start position:0%
this function signature does it equal
 

00:12:59.220 --> 00:13:01.310 align:start position:0%
this function signature does it equal
this<00:12:59.459><c> one</c><00:12:59.639><c> and</c><00:13:00.120><c> then</c><00:13:00.300><c> if</c><00:13:00.720><c> it</c><00:13:00.839><c> matches</c><00:13:01.139><c> one</c>

00:13:01.310 --> 00:13:01.320 align:start position:0%
this one and then if it matches one
 

00:13:01.320 --> 00:13:02.870 align:start position:0%
this one and then if it matches one
it'll<00:13:01.740><c> jump</c><00:13:01.860><c> to</c><00:13:01.980><c> that</c><00:13:02.160><c> line</c><00:13:02.279><c> and</c><00:13:02.579><c> if</c><00:13:02.700><c> it</c>

00:13:02.870 --> 00:13:02.880 align:start position:0%
it'll jump to that line and if it
 

00:13:02.880 --> 00:13:05.150 align:start position:0%
it'll jump to that line and if it
doesn't<00:13:03.000><c> it'll</c><00:13:03.360><c> result</c><00:13:03.800><c> revert</c><00:13:04.800><c> because</c><00:13:04.980><c> you</c>

00:13:05.150 --> 00:13:05.160 align:start position:0%
doesn't it'll result revert because you
 

00:13:05.160 --> 00:13:07.190 align:start position:0%
doesn't it'll result revert because you
cannot<00:13:05.399><c> call</c><00:13:05.579><c> a</c><00:13:05.880><c> function</c><00:13:06.180><c> that</c><00:13:07.079><c> doesn't</c>

00:13:07.190 --> 00:13:07.200 align:start position:0%
cannot call a function that doesn't
 

00:13:07.200 --> 00:13:09.949 align:start position:0%
cannot call a function that doesn't
exist<00:13:07.620><c> awesome</c><00:13:08.100><c> okay</c><00:13:08.700><c> so</c><00:13:09.300><c> now</c><00:13:09.480><c> we're</c><00:13:09.660><c> finally</c>

00:13:09.949 --> 00:13:09.959 align:start position:0%
exist awesome okay so now we're finally
 

00:13:09.959 --> 00:13:11.810 align:start position:0%
exist awesome okay so now we're finally
in<00:13:10.320><c> that</c><00:13:10.500><c> very</c><00:13:10.740><c> simple</c><00:13:10.920><c> function</c><00:13:11.339><c> that</c><00:13:11.700><c> we</c>

00:13:11.810 --> 00:13:11.820 align:start position:0%
in that very simple function that we
 

00:13:11.820 --> 00:13:13.610 align:start position:0%
in that very simple function that we
wrote<00:13:12.000><c> If</c><00:13:12.240><c> you</c><00:13:12.360><c> recall</c><00:13:12.720><c> it</c><00:13:12.959><c> was</c><00:13:13.019><c> total</c><00:13:13.380><c> Supply</c>

00:13:13.610 --> 00:13:13.620 align:start position:0%
wrote If you recall it was total Supply
 

00:13:13.620 --> 00:13:15.170 align:start position:0%
wrote If you recall it was total Supply
equals<00:13:14.339><c> eight</c>

00:13:15.170 --> 00:13:15.180 align:start position:0%
equals eight
 

00:13:15.180 --> 00:13:17.030 align:start position:0%
equals eight
um well<00:13:15.360><c> we</c><00:13:15.540><c> see</c><00:13:15.600><c> on</c><00:13:15.720><c> line</c><00:13:15.899><c> 45</c><00:13:16.139><c> is</c><00:13:16.680><c> a</c><00:13:16.920><c> common</c>

00:13:17.030 --> 00:13:17.040 align:start position:0%
um well we see on line 45 is a common
 

00:13:17.040 --> 00:13:19.069 align:start position:0%
um well we see on line 45 is a common
command<00:13:17.399><c> called</c><00:13:17.579><c> jump</c><00:13:17.820><c> dest</c><00:13:18.180><c> and</c><00:13:18.660><c> all</c><00:13:18.959><c> that</c>

00:13:19.069 --> 00:13:19.079 align:start position:0%
command called jump dest and all that
 

00:13:19.079 --> 00:13:21.470 align:start position:0%
command called jump dest and all that
does<00:13:19.260><c> is</c><00:13:19.380><c> it</c><00:13:19.560><c> marks</c><00:13:19.920><c> that</c><00:13:20.100><c> line</c><00:13:20.339><c> 45</c><00:13:20.639><c> is</c><00:13:21.060><c> a</c><00:13:21.180><c> valid</c>

00:13:21.470 --> 00:13:21.480 align:start position:0%
does is it marks that line 45 is a valid
 

00:13:21.480 --> 00:13:23.750 align:start position:0%
does is it marks that line 45 is a valid
destination<00:13:21.899><c> to</c><00:13:22.200><c> jump</c><00:13:22.380><c> to</c><00:13:22.560><c> you</c><00:13:23.279><c> cannot</c><00:13:23.579><c> jump</c>

00:13:23.750 --> 00:13:23.760 align:start position:0%
destination to jump to you cannot jump
 

00:13:23.760 --> 00:13:25.970 align:start position:0%
destination to jump to you cannot jump
to<00:13:24.000><c> any</c><00:13:24.300><c> arbitrary</c><00:13:24.779><c> destination</c><00:13:25.260><c> you</c><00:13:25.620><c> need</c><00:13:25.800><c> to</c>

00:13:25.970 --> 00:13:25.980 align:start position:0%
to any arbitrary destination you need to
 

00:13:25.980 --> 00:13:28.550 align:start position:0%
to any arbitrary destination you need to
jump<00:13:26.339><c> to</c><00:13:26.519><c> a</c><00:13:26.639><c> valid</c><00:13:26.940><c> one</c><00:13:27.120><c> or</c><00:13:27.480><c> you'll</c><00:13:27.839><c> revert</c><00:13:28.260><c> so</c>

00:13:28.550 --> 00:13:28.560 align:start position:0%
jump to a valid one or you'll revert so
 

00:13:28.560 --> 00:13:31.610 align:start position:0%
jump to a valid one or you'll revert so
this<00:13:29.220><c> just</c><00:13:29.600><c> lets</c><00:13:30.600><c> us</c><00:13:30.720><c> know</c><00:13:30.899><c> that</c><00:13:31.019><c> hey</c><00:13:31.200><c> we</c><00:13:31.500><c> can</c>

00:13:31.610 --> 00:13:31.620 align:start position:0%
this just lets us know that hey we can
 

00:13:31.620 --> 00:13:32.990 align:start position:0%
this just lets us know that hey we can
jump<00:13:31.740><c> here</c><00:13:31.980><c> what's</c><00:13:32.339><c> the</c><00:13:32.519><c> next</c><00:13:32.579><c> thing</c><00:13:32.700><c> we</c><00:13:32.880><c> see</c>

00:13:32.990 --> 00:13:33.000 align:start position:0%
jump here what's the next thing we see
 

00:13:33.000 --> 00:13:35.150 align:start position:0%
jump here what's the next thing we see
push<00:13:33.180><c> 8</c><00:13:33.360><c> onto</c><00:13:33.959><c> the</c><00:13:34.079><c> stack</c><00:13:34.200><c> all</c><00:13:34.620><c> right</c><00:13:34.740><c> awesome</c>

00:13:35.150 --> 00:13:35.160 align:start position:0%
push 8 onto the stack all right awesome
 

00:13:35.160 --> 00:13:36.829 align:start position:0%
push 8 onto the stack all right awesome
this<00:13:35.639><c> is</c><00:13:35.760><c> definitely</c><00:13:36.000><c> code</c><00:13:36.240><c> that</c><00:13:36.480><c> we</c><00:13:36.660><c> wrote</c>

00:13:36.829 --> 00:13:36.839 align:start position:0%
this is definitely code that we wrote
 

00:13:36.839 --> 00:13:39.290 align:start position:0%
this is definitely code that we wrote
total<00:13:37.560><c> Supply</c><00:13:37.740><c> equals</c><00:13:38.399><c> eight</c><00:13:38.639><c> I</c><00:13:39.060><c> remember</c>

00:13:39.290 --> 00:13:39.300 align:start position:0%
total Supply equals eight I remember
 

00:13:39.300 --> 00:13:43.009 align:start position:0%
total Supply equals eight I remember
eight<00:13:39.779><c> This</c><00:13:40.440><c> Is</c><00:13:40.560><c> Us</c><00:13:40.740><c> cool</c><00:13:41.160><c> but</c><00:13:41.940><c> after</c><00:13:42.480><c> that</c><00:13:42.720><c> we</c>

00:13:43.009 --> 00:13:43.019 align:start position:0%
eight This Is Us cool but after that we
 

00:13:43.019 --> 00:13:45.290 align:start position:0%
eight This Is Us cool but after that we
push<00:13:43.139><c> zero</c><00:13:43.620><c> onto</c><00:13:43.860><c> the</c><00:13:44.040><c> stack</c><00:13:44.220><c> so</c><00:13:44.700><c> where</c><00:13:45.180><c> does</c>

00:13:45.290 --> 00:13:45.300 align:start position:0%
push zero onto the stack so where does
 

00:13:45.300 --> 00:13:46.730 align:start position:0%
push zero onto the stack so where does
the<00:13:45.480><c> zero</c><00:13:45.779><c> come</c><00:13:45.899><c> from</c><00:13:46.079><c> what</c><00:13:46.380><c> are</c><00:13:46.500><c> we</c><00:13:46.620><c> talking</c>

00:13:46.730 --> 00:13:46.740 align:start position:0%
the zero come from what are we talking
 

00:13:46.740 --> 00:13:49.550 align:start position:0%
the zero come from what are we talking
about<00:13:46.980><c> well</c><00:13:47.880><c> if</c><00:13:48.360><c> you</c><00:13:48.480><c> recall</c><00:13:48.839><c> in</c><00:13:49.200><c> our</c><00:13:49.380><c> very</c>

00:13:49.550 --> 00:13:49.560 align:start position:0%
about well if you recall in our very
 

00:13:49.560 --> 00:13:51.650 align:start position:0%
about well if you recall in our very
simple<00:13:49.740><c> contract</c><00:13:50.220><c> we</c><00:13:50.700><c> only</c><00:13:50.820><c> have</c><00:13:51.120><c> one</c><00:13:51.420><c> storage</c>

00:13:51.650 --> 00:13:51.660 align:start position:0%
simple contract we only have one storage
 

00:13:51.660 --> 00:13:53.629 align:start position:0%
simple contract we only have one storage
variable<00:13:52.139><c> and</c><00:13:52.740><c> that</c><00:13:52.920><c> storage</c><00:13:53.100><c> variable</c>

00:13:53.629 --> 00:13:53.639 align:start position:0%
variable and that storage variable
 

00:13:53.639 --> 00:13:56.750 align:start position:0%
variable and that storage variable
because<00:13:54.300><c> it's</c><00:13:54.959><c> the</c><00:13:55.380><c> only</c><00:13:55.500><c> one</c><00:13:55.680><c> defined</c><00:13:56.100><c> is</c><00:13:56.459><c> in</c>

00:13:56.750 --> 00:13:56.760 align:start position:0%
because it's the only one defined is in
 

00:13:56.760 --> 00:14:01.129 align:start position:0%
because it's the only one defined is in
the<00:13:56.940><c> first</c><00:13:57.120><c> storage</c><00:13:57.540><c> slot</c><00:13:58.079><c> so</c><00:13:59.300><c> uh</c><00:14:00.300><c> the</c><00:14:00.959><c> first</c>

00:14:01.129 --> 00:14:01.139 align:start position:0%
the first storage slot so uh the first
 

00:14:01.139 --> 00:14:02.990 align:start position:0%
the first storage slot so uh the first
storage<00:14:01.320><c> slot</c><00:14:01.680><c> or</c><00:14:01.860><c> the</c><00:14:01.980><c> zero</c><00:14:02.339><c> with</c><00:14:02.399><c> or</c><00:14:02.700><c> uh</c>

00:14:02.990 --> 00:14:03.000 align:start position:0%
storage slot or the zero with or uh
 

00:14:03.000 --> 00:14:05.870 align:start position:0%
storage slot or the zero with or uh
storage<00:14:03.180><c> slot</c><00:14:03.600><c> via</c><00:14:04.200><c> array</c><00:14:04.680><c> indexing</c><00:14:05.100><c> right</c><00:14:05.339><c> so</c>

00:14:05.870 --> 00:14:05.880 align:start position:0%
storage slot via array indexing right so
 

00:14:05.880 --> 00:14:07.610 align:start position:0%
storage slot via array indexing right so
this<00:14:06.180><c> is</c><00:14:06.300><c> awesome</c><00:14:06.540><c> we</c><00:14:06.959><c> have</c><00:14:07.079><c> everything</c><00:14:07.320><c> that</c>

00:14:07.610 --> 00:14:07.620 align:start position:0%
this is awesome we have everything that
 

00:14:07.620 --> 00:14:10.790 align:start position:0%
this is awesome we have everything that
we<00:14:07.800><c> need</c><00:14:07.980><c> we</c><00:14:08.760><c> have</c><00:14:08.940><c> eight</c><00:14:09.240><c> we</c><00:14:09.720><c> have</c><00:14:09.839><c> zero</c><00:14:10.320><c> all</c>

00:14:10.790 --> 00:14:10.800 align:start position:0%
we need we have eight we have zero all
 

00:14:10.800 --> 00:14:12.650 align:start position:0%
we need we have eight we have zero all
we<00:14:10.920><c> have</c><00:14:10.980><c> to</c><00:14:11.100><c> do</c><00:14:11.220><c> now</c><00:14:11.399><c> is</c><00:14:11.700><c> save</c><00:14:11.940><c> this</c><00:14:12.180><c> and</c><00:14:12.480><c> we're</c>

00:14:12.650 --> 00:14:12.660 align:start position:0%
we have to do now is save this and we're
 

00:14:12.660 --> 00:14:16.310 align:start position:0%
we have to do now is save this and we're
done<00:14:12.839><c> right</c><00:14:13.320><c> but</c><00:14:14.220><c> wait</c><00:14:15.060><c> a</c><00:14:15.240><c> second</c><00:14:15.360><c> we</c><00:14:15.899><c> see</c><00:14:16.139><c> that</c>

00:14:16.310 --> 00:14:16.320 align:start position:0%
done right but wait a second we see that
 

00:14:16.320 --> 00:14:18.829 align:start position:0%
done right but wait a second we see that
in<00:14:16.500><c> our</c><00:14:16.680><c> transaction</c><00:14:17.100><c> we</c><00:14:17.880><c> duplicated</c><00:14:18.360><c> we</c><00:14:18.660><c> ran</c>

00:14:18.829 --> 00:14:18.839 align:start position:0%
in our transaction we duplicated we ran
 

00:14:18.839 --> 00:14:20.569 align:start position:0%
in our transaction we duplicated we ran
Duke<00:14:19.079><c> two</c><00:14:19.320><c> so</c><00:14:19.620><c> we</c><00:14:19.740><c> duplicated</c><00:14:20.160><c> the</c><00:14:20.459><c> second</c>

00:14:20.569 --> 00:14:20.579 align:start position:0%
Duke two so we duplicated the second
 

00:14:20.579 --> 00:14:23.329 align:start position:0%
Duke two so we duplicated the second
from<00:14:20.880><c> the</c><00:14:21.000><c> top</c><00:14:21.120><c> word</c><00:14:21.360><c> of</c><00:14:21.540><c> the</c><00:14:21.660><c> stack</c><00:14:21.839><c> okay</c>

00:14:23.329 --> 00:14:23.339 align:start position:0%
from the top word of the stack okay
 

00:14:23.339 --> 00:14:25.970 align:start position:0%
from the top word of the stack okay
then<00:14:24.000><c> we</c><00:14:24.300><c> swapped</c><00:14:24.959><c> the</c><00:14:25.320><c> first</c><00:14:25.500><c> and</c><00:14:25.740><c> second</c>

00:14:25.970 --> 00:14:25.980 align:start position:0%
then we swapped the first and second
 

00:14:25.980 --> 00:14:30.350 align:start position:0%
then we swapped the first and second
words<00:14:26.360><c> on</c><00:14:27.360><c> the</c><00:14:27.480><c> stack</c><00:14:27.660><c> okay</c><00:14:28.880><c> uh</c><00:14:29.880><c> interesting</c>

00:14:30.350 --> 00:14:30.360 align:start position:0%
words on the stack okay uh interesting
 

00:14:30.360 --> 00:14:32.990 align:start position:0%
words on the stack okay uh interesting
and<00:14:31.019><c> then</c><00:14:31.139><c> all</c><00:14:31.440><c> right</c><00:14:31.560><c> great</c><00:14:31.800><c> so</c><00:14:32.160><c> now</c><00:14:32.279><c> we</c><00:14:32.579><c> ran</c><00:14:32.760><c> s</c>

00:14:32.990 --> 00:14:33.000 align:start position:0%
and then all right great so now we ran s
 

00:14:33.000 --> 00:14:36.290 align:start position:0%
and then all right great so now we ran s
store<00:14:33.300><c> so</c><00:14:33.600><c> s</c><00:14:34.079><c> store</c><00:14:34.380><c> store</c><00:14:34.860><c> and</c><00:14:35.100><c> storage</c>

00:14:36.290 --> 00:14:36.300 align:start position:0%
store so s store store and storage
 

00:14:36.300 --> 00:14:38.690 align:start position:0%
store so s store store and storage
um<00:14:36.360><c> we're</c><00:14:36.959><c> saving</c><00:14:37.500><c> eight</c><00:14:37.800><c> to</c><00:14:38.040><c> the</c><00:14:38.279><c> zero</c><00:14:38.639><c> with</c>

00:14:38.690 --> 00:14:38.700 align:start position:0%
um we're saving eight to the zero with
 

00:14:38.700 --> 00:14:40.490 align:start position:0%
um we're saving eight to the zero with
storage<00:14:38.940><c> slot</c><00:14:39.360><c> that's</c><00:14:39.540><c> what</c><00:14:40.019><c> we</c><00:14:40.139><c> initially</c>

00:14:40.490 --> 00:14:40.500 align:start position:0%
storage slot that's what we initially
 

00:14:40.500 --> 00:14:43.009 align:start position:0%
storage slot that's what we initially
wanted<00:14:40.620><c> to</c><00:14:40.860><c> do</c><00:14:40.980><c> and</c><00:14:41.760><c> but</c><00:14:42.000><c> then</c><00:14:42.180><c> we</c><00:14:42.360><c> also</c><00:14:42.600><c> have</c><00:14:42.779><c> a</c>

00:14:43.009 --> 00:14:43.019 align:start position:0%
wanted to do and but then we also have a
 

00:14:43.019 --> 00:14:44.629 align:start position:0%
wanted to do and but then we also have a
pop<00:14:43.139><c> after</c><00:14:43.500><c> that</c><00:14:43.740><c> because</c><00:14:43.980><c> we</c><00:14:44.279><c> have</c><00:14:44.399><c> this</c>

00:14:44.629 --> 00:14:44.639 align:start position:0%
pop after that because we have this
 

00:14:44.639 --> 00:14:46.610 align:start position:0%
pop after that because we have this
extra<00:14:44.820><c> eight</c><00:14:45.120><c> on</c><00:14:45.420><c> here</c><00:14:45.600><c> and</c><00:14:46.079><c> like</c><00:14:46.199><c> what</c><00:14:46.440><c> is</c>

00:14:46.610 --> 00:14:46.620 align:start position:0%
extra eight on here and like what is
 

00:14:46.620 --> 00:14:49.610 align:start position:0%
extra eight on here and like what is
this<00:14:46.800><c> eight</c><00:14:46.980><c> doing</c><00:14:47.339><c> why</c><00:14:47.760><c> why</c><00:14:48.060><c> is</c><00:14:48.300><c> it</c><00:14:48.420><c> here</c><00:14:48.620><c> uh</c>

00:14:49.610 --> 00:14:49.620 align:start position:0%
this eight doing why why is it here uh
 

00:14:49.620 --> 00:14:50.810 align:start position:0%
this eight doing why why is it here uh
this<00:14:49.860><c> doesn't</c><00:14:49.980><c> make</c><00:14:50.160><c> a</c><00:14:50.279><c> lot</c><00:14:50.399><c> of</c><00:14:50.459><c> sense</c><00:14:50.579><c> right</c>

00:14:50.810 --> 00:14:50.820 align:start position:0%
this doesn't make a lot of sense right
 

00:14:50.820 --> 00:14:52.430 align:start position:0%
this doesn't make a lot of sense right
like<00:14:51.000><c> why</c><00:14:51.240><c> are</c><00:14:51.360><c> we</c><00:14:51.480><c> duplicating</c><00:14:51.839><c> and</c><00:14:52.079><c> swapping</c>

00:14:52.430 --> 00:14:52.440 align:start position:0%
like why are we duplicating and swapping
 

00:14:52.440 --> 00:14:55.490 align:start position:0%
like why are we duplicating and swapping
here<00:14:52.620><c> uh</c><00:14:53.279><c> why</c><00:14:53.459><c> are</c><00:14:53.579><c> we</c><00:14:53.639><c> popping</c><00:14:53.940><c> at</c><00:14:54.120><c> the</c><00:14:54.240><c> end</c><00:14:54.500><c> uh</c>

00:14:55.490 --> 00:14:55.500 align:start position:0%
here uh why are we popping at the end uh
 

00:14:55.500 --> 00:14:57.290 align:start position:0%
here uh why are we popping at the end uh
the<00:14:55.860><c> solidity</c><00:14:56.399><c> is</c><00:14:56.459><c> doing</c><00:14:56.639><c> extra</c><00:14:56.880><c> memory</c>

00:14:57.290 --> 00:14:57.300 align:start position:0%
the solidity is doing extra memory
 

00:14:57.300 --> 00:14:58.790 align:start position:0%
the solidity is doing extra memory
management<00:14:57.540><c> that</c><00:14:58.079><c> we</c><00:14:58.380><c> don't</c><00:14:58.440><c> want</c><00:14:58.560><c> right</c>

00:14:58.790 --> 00:14:58.800 align:start position:0%
management that we don't want right
 

00:14:58.800 --> 00:15:00.170 align:start position:0%
management that we don't want right
because<00:14:58.980><c> we</c><00:14:59.160><c> want</c><00:14:59.279><c> to</c><00:14:59.399><c> be</c><00:14:59.519><c> as</c><00:14:59.639><c> gas</c><00:14:59.820><c> efficient</c>

00:15:00.170 --> 00:15:00.180 align:start position:0%
because we want to be as gas efficient
 

00:15:00.180 --> 00:15:03.650 align:start position:0%
because we want to be as gas efficient
as<00:15:00.360><c> possible</c><00:15:00.660><c> and</c><00:15:01.380><c> be</c><00:15:01.620><c> as</c><00:15:02.399><c> um</c><00:15:02.399><c> uh</c><00:15:03.120><c> yeah</c><00:15:03.240><c> be</c><00:15:03.480><c> as</c>

00:15:03.650 --> 00:15:03.660 align:start position:0%
as possible and be as um uh yeah be as
 

00:15:03.660 --> 00:15:06.170 align:start position:0%
as possible and be as um uh yeah be as
gas<00:15:03.839><c> efficient</c><00:15:04.139><c> as</c><00:15:04.260><c> possible</c><00:15:04.639><c> so</c><00:15:05.639><c> we</c><00:15:06.060><c> should</c>

00:15:06.170 --> 00:15:06.180 align:start position:0%
gas efficient as possible so we should
 

00:15:06.180 --> 00:15:08.150 align:start position:0%
gas efficient as possible so we should
jump<00:15:06.360><c> down</c><00:15:06.540><c> into</c><00:15:06.779><c> Yule</c><00:15:07.260><c> and</c><00:15:07.560><c> try</c><00:15:07.680><c> to</c><00:15:07.800><c> optimize</c>

00:15:08.150 --> 00:15:08.160 align:start position:0%
jump down into Yule and try to optimize
 

00:15:08.160 --> 00:15:12.170 align:start position:0%
jump down into Yule and try to optimize
this<00:15:08.339><c> code</c><00:15:08.579><c> right</c><00:15:09.440><c> uh</c><00:15:10.440><c> well</c><00:15:10.760><c> uh</c><00:15:11.760><c> let's</c><00:15:11.940><c> talk</c>

00:15:12.170 --> 00:15:12.180 align:start position:0%
this code right uh well uh let's talk
 

00:15:12.180 --> 00:15:16.430 align:start position:0%
this code right uh well uh let's talk
about<00:15:12.360><c> gas</c><00:15:13.139><c> optimization</c><00:15:13.860><c> uh</c><00:15:14.820><c> using</c><00:15:15.120><c> yule</c>

00:15:16.430 --> 00:15:16.440 align:start position:0%
about gas optimization uh using yule
 

00:15:16.440 --> 00:15:18.530 align:start position:0%
about gas optimization uh using yule
um<00:15:16.500><c> if</c><00:15:16.620><c> you're</c><00:15:16.740><c> not</c><00:15:16.860><c> familiar</c><00:15:17.160><c> Yule</c><00:15:18.000><c> is</c><00:15:18.240><c> simply</c>

00:15:18.530 --> 00:15:18.540 align:start position:0%
um if you're not familiar Yule is simply
 

00:15:18.540 --> 00:15:20.569 align:start position:0%
um if you're not familiar Yule is simply
a<00:15:18.779><c> language</c><00:15:18.899><c> that</c><00:15:19.320><c> we</c><00:15:19.440><c> use</c><00:15:19.620><c> to</c><00:15:19.800><c> write</c><00:15:19.980><c> assembly</c>

00:15:20.569 --> 00:15:20.579 align:start position:0%
a language that we use to write assembly
 

00:15:20.579 --> 00:15:23.090 align:start position:0%
a language that we use to write assembly
code<00:15:20.820><c> in</c><00:15:21.060><c> solidity</c><00:15:21.540><c> it's</c><00:15:22.019><c> not</c><00:15:22.320><c> exactly</c><00:15:22.800><c> like</c>

00:15:23.090 --> 00:15:23.100 align:start position:0%
code in solidity it's not exactly like
 

00:15:23.100 --> 00:15:24.470 align:start position:0%
code in solidity it's not exactly like
writing<00:15:23.459><c> op</c><00:15:23.579><c> codes</c><00:15:23.820><c> not</c><00:15:24.120><c> exactly</c><00:15:24.360><c> like</c>

00:15:24.470 --> 00:15:24.480 align:start position:0%
writing op codes not exactly like
 

00:15:24.480 --> 00:15:27.769 align:start position:0%
writing op codes not exactly like
writing<00:15:24.779><c> evm</c><00:15:25.139><c> assembly</c><00:15:25.500><c> it</c><00:15:26.279><c> has</c><00:15:26.399><c> for</c><00:15:26.699><c> Loops</c><00:15:27.060><c> if</c>

00:15:27.769 --> 00:15:27.779 align:start position:0%
writing evm assembly it has for Loops if
 

00:15:27.779 --> 00:15:29.389 align:start position:0%
writing evm assembly it has for Loops if
and<00:15:27.959><c> switch</c><00:15:28.199><c> statements</c><00:15:28.680><c> and</c><00:15:29.040><c> it</c><00:15:29.160><c> also</c>

00:15:29.389 --> 00:15:29.399 align:start position:0%
and switch statements and it also
 

00:15:29.399 --> 00:15:31.610 align:start position:0%
and switch statements and it also
disallows<00:15:29.940><c> some</c><00:15:30.120><c> commands</c><00:15:30.540><c> uh</c><00:15:31.139><c> like</c><00:15:31.380><c> jump</c>

00:15:31.610 --> 00:15:31.620 align:start position:0%
disallows some commands uh like jump
 

00:15:31.620 --> 00:15:33.230 align:start position:0%
disallows some commands uh like jump
statements<00:15:32.160><c> because</c><00:15:32.279><c> they</c><00:15:32.579><c> quickly</c><00:15:32.880><c> become</c>

00:15:33.230 --> 00:15:33.240 align:start position:0%
statements because they quickly become
 

00:15:33.240 --> 00:15:35.629 align:start position:0%
statements because they quickly become
very<00:15:33.480><c> very</c><00:15:33.720><c> difficult</c><00:15:34.079><c> to</c><00:15:34.260><c> reason</c><00:15:34.440><c> about</c>

00:15:35.629 --> 00:15:35.639 align:start position:0%
very very difficult to reason about
 

00:15:35.639 --> 00:15:38.210 align:start position:0%
very very difficult to reason about
um<00:15:35.699><c> and</c><00:15:36.120><c> yeah</c><00:15:36.420><c> all</c><00:15:36.959><c> right</c><00:15:37.139><c> so</c><00:15:37.380><c> we</c><00:15:37.560><c> added</c><00:15:37.800><c> you</c><00:15:37.920><c> we</c>

00:15:38.210 --> 00:15:38.220 align:start position:0%
um and yeah all right so we added you we
 

00:15:38.220 --> 00:15:39.650 align:start position:0%
um and yeah all right so we added you we
have<00:15:38.339><c> this</c><00:15:38.519><c> optimize</c><00:15:38.940><c> set</c><00:15:39.180><c> total</c><00:15:39.540><c> Supply</c>

00:15:39.650 --> 00:15:39.660 align:start position:0%
have this optimize set total Supply
 

00:15:39.660 --> 00:15:42.470 align:start position:0%
have this optimize set total Supply
function<00:15:40.139><c> it's</c><00:15:40.680><c> awesome</c><00:15:41.040><c> uh</c><00:15:41.699><c> we</c><00:15:41.880><c> have</c><00:15:42.240><c> an</c><00:15:42.360><c> s</c>

00:15:42.470 --> 00:15:42.480 align:start position:0%
function it's awesome uh we have an s
 

00:15:42.480 --> 00:15:44.870 align:start position:0%
function it's awesome uh we have an s
store<00:15:42.839><c> with</c><00:15:43.440><c> a</c><00:15:43.620><c> zero</c><00:15:43.980><c> and</c><00:15:44.160><c> an</c><00:15:44.279><c> eight</c><00:15:44.459><c> so</c><00:15:44.699><c> we're</c>

00:15:44.870 --> 00:15:44.880 align:start position:0%
store with a zero and an eight so we're
 

00:15:44.880 --> 00:15:47.210 align:start position:0%
store with a zero and an eight so we're
saving<00:15:45.180><c> eight</c><00:15:45.420><c> to</c><00:15:45.600><c> the</c><00:15:45.779><c> zeroth</c><00:15:46.260><c> slot</c><00:15:46.740><c> this</c><00:15:47.100><c> is</c>

00:15:47.210 --> 00:15:47.220 align:start position:0%
saving eight to the zeroth slot this is
 

00:15:47.220 --> 00:15:48.230 align:start position:0%
saving eight to the zeroth slot this is
great<00:15:47.339><c> this</c><00:15:47.519><c> is</c><00:15:47.639><c> going</c><00:15:47.760><c> to</c><00:15:47.820><c> be</c><00:15:47.940><c> way</c><00:15:48.060><c> better</c>

00:15:48.230 --> 00:15:48.240 align:start position:0%
great this is going to be way better
 

00:15:48.240 --> 00:15:51.050 align:start position:0%
great this is going to be way better
right<00:15:48.680><c> uh</c><00:15:49.680><c> go</c><00:15:49.920><c> ahead</c><00:15:50.100><c> and</c><00:15:50.220><c> let's</c><00:15:50.699><c> go</c><00:15:50.820><c> ahead</c><00:15:50.940><c> and</c>

00:15:51.050 --> 00:15:51.060 align:start position:0%
right uh go ahead and let's go ahead and
 

00:15:51.060 --> 00:15:53.930 align:start position:0%
right uh go ahead and let's go ahead and
measure<00:15:51.360><c> our</c><00:15:52.079><c> um</c><00:15:52.139><c> our</c><00:15:52.860><c> contract</c><00:15:53.220><c> so</c><00:15:53.579><c> once</c>

00:15:53.930 --> 00:15:53.940 align:start position:0%
measure our um our contract so once
 

00:15:53.940 --> 00:15:56.210 align:start position:0%
measure our um our contract so once
again<00:15:54.000><c> or</c><00:15:54.720><c> let's</c><00:15:55.320><c> go</c><00:15:55.620><c> ahead</c><00:15:55.740><c> and</c><00:15:55.800><c> look</c><00:15:55.980><c> at</c><00:15:56.100><c> the</c>

00:15:56.210 --> 00:15:56.220 align:start position:0%
again or let's go ahead and look at the
 

00:15:56.220 --> 00:15:57.710 align:start position:0%
again or let's go ahead and look at the
op<00:15:56.339><c> code</c><00:15:56.519><c> representation</c><00:15:57.120><c> of</c><00:15:57.300><c> our</c><00:15:57.420><c> contract</c>

00:15:57.710 --> 00:15:57.720 align:start position:0%
op code representation of our contract
 

00:15:57.720 --> 00:15:59.949 align:start position:0%
op code representation of our contract
first<00:15:57.959><c> so</c><00:15:58.680><c> once</c><00:15:59.100><c> again</c>

00:15:59.949 --> 00:15:59.959 align:start position:0%
first so once again
 

00:15:59.959 --> 00:16:02.750 align:start position:0%
first so once again
uh<00:16:00.959><c> we</c><00:16:01.199><c> take</c><00:16:01.320><c> a</c><00:16:01.440><c> look</c><00:16:01.500><c> at</c><00:16:01.620><c> the</c><00:16:01.740><c> op</c><00:16:01.860><c> codes</c><00:16:02.100><c> and</c><00:16:02.579><c> we</c>

00:16:02.750 --> 00:16:02.760 align:start position:0%
uh we take a look at the op codes and we
 

00:16:02.760 --> 00:16:05.210 align:start position:0%
uh we take a look at the op codes and we
see<00:16:02.880><c> that</c><00:16:03.060><c> in</c><00:16:03.300><c> fact</c><00:16:03.800><c> optimized</c><00:16:04.800><c> set</c><00:16:04.860><c> total</c>

00:16:05.210 --> 00:16:05.220 align:start position:0%
see that in fact optimized set total
 

00:16:05.220 --> 00:16:06.949 align:start position:0%
see that in fact optimized set total
Supply<00:16:05.399><c> does</c><00:16:05.760><c> have</c><00:16:05.940><c> less</c><00:16:06.120><c> opcodes</c><00:16:06.660><c> than</c>

00:16:06.949 --> 00:16:06.959 align:start position:0%
Supply does have less opcodes than
 

00:16:06.959 --> 00:16:09.050 align:start position:0%
Supply does have less opcodes than
subtotal<00:16:07.500><c> Supply</c><00:16:07.680><c> this</c><00:16:08.160><c> is</c><00:16:08.339><c> fantastic</c><00:16:08.639><c> we</c>

00:16:09.050 --> 00:16:09.060 align:start position:0%
subtotal Supply this is fantastic we
 

00:16:09.060 --> 00:16:11.329 align:start position:0%
subtotal Supply this is fantastic we
know<00:16:09.120><c> that</c><00:16:09.300><c> op</c><00:16:09.420><c> codes</c><00:16:09.660><c> cost</c><00:16:09.959><c> gas</c><00:16:10.260><c> we</c><00:16:10.860><c> see</c><00:16:11.040><c> that</c>

00:16:11.329 --> 00:16:11.339 align:start position:0%
know that op codes cost gas we see that
 

00:16:11.339 --> 00:16:13.670 align:start position:0%
know that op codes cost gas we see that
uh<00:16:12.060><c> set</c><00:16:12.360><c> total</c><00:16:12.660><c> Supply</c><00:16:12.779><c> and</c><00:16:13.079><c> optimize</c><00:16:13.440><c> that</c>

00:16:13.670 --> 00:16:13.680 align:start position:0%
uh set total Supply and optimize that
 

00:16:13.680 --> 00:16:15.530 align:start position:0%
uh set total Supply and optimize that
total<00:16:13.980><c> Supply</c><00:16:14.100><c> have</c><00:16:14.699><c> the</c><00:16:14.880><c> same</c><00:16:15.000><c> op</c><00:16:15.240><c> codes</c>

00:16:15.530 --> 00:16:15.540 align:start position:0%
total Supply have the same op codes
 

00:16:15.540 --> 00:16:18.410 align:start position:0%
total Supply have the same op codes
except<00:16:15.959><c> set</c><00:16:16.199><c> total</c><00:16:16.440><c> supply</c><00:16:16.620><c> has</c><00:16:16.920><c> more</c><00:16:17.180><c> uh</c><00:16:18.180><c> we</c>

00:16:18.410 --> 00:16:18.420 align:start position:0%
except set total supply has more uh we
 

00:16:18.420 --> 00:16:20.449 align:start position:0%
except set total supply has more uh we
just<00:16:18.540><c> like</c><00:16:18.779><c> saved</c><00:16:19.199><c> a</c><00:16:19.320><c> lot</c><00:16:19.440><c> of</c><00:16:19.620><c> time</c><00:16:20.100><c> and</c><00:16:20.279><c> money</c>

00:16:20.449 --> 00:16:20.459 align:start position:0%
just like saved a lot of time and money
 

00:16:20.459 --> 00:16:23.389 align:start position:0%
just like saved a lot of time and money
right<00:16:21.019><c> but</c><00:16:22.019><c> let's</c><00:16:22.139><c> like</c><00:16:22.380><c> measure</c><00:16:22.740><c> it</c><00:16:22.860><c> to</c><00:16:23.160><c> be</c>

00:16:23.389 --> 00:16:23.399 align:start position:0%
right but let's like measure it to be
 

00:16:23.399 --> 00:16:25.370 align:start position:0%
right but let's like measure it to be
extra<00:16:23.760><c> extra</c><00:16:24.120><c> sure</c>

00:16:25.370 --> 00:16:25.380 align:start position:0%
extra extra sure
 

00:16:25.380 --> 00:16:28.550 align:start position:0%
extra extra sure
um so<00:16:25.920><c> here</c><00:16:26.279><c> uh</c><00:16:26.880><c> we</c><00:16:27.300><c> uh</c><00:16:27.720><c> this</c><00:16:27.959><c> is</c><00:16:28.019><c> I</c><00:16:28.199><c> think</c><00:16:28.320><c> hard</c>

00:16:28.550 --> 00:16:28.560 align:start position:0%
um so here uh we uh this is I think hard
 

00:16:28.560 --> 00:16:31.670 align:start position:0%
um so here uh we uh this is I think hard
hat<00:16:28.800><c> gas</c><00:16:28.980><c> reporter</c><00:16:29.399><c> and</c><00:16:30.180><c> We've</c><00:16:30.660><c> ran</c><00:16:31.019><c> the</c><00:16:31.500><c> set</c>

00:16:31.670 --> 00:16:31.680 align:start position:0%
hat gas reporter and We've ran the set
 

00:16:31.680 --> 00:16:35.329 align:start position:0%
hat gas reporter and We've ran the set
total<00:16:32.100><c> Supply</c><00:16:32.839><c> function</c><00:16:33.839><c> 100</c><00:16:34.500><c> times</c><00:16:34.920><c> and</c><00:16:35.160><c> we</c>

00:16:35.329 --> 00:16:35.339 align:start position:0%
total Supply function 100 times and we
 

00:16:35.339 --> 00:16:38.509 align:start position:0%
total Supply function 100 times and we
see<00:16:35.519><c> that</c><00:16:35.579><c> the</c><00:16:35.760><c> average</c><00:16:35.880><c> gas</c><00:16:36.180><c> cost</c><00:16:36.360><c> is</c><00:16:36.600><c> 22</c><00:16:37.519><c> 599.</c>

00:16:38.509 --> 00:16:38.519 align:start position:0%
see that the average gas cost is 22 599.
 

00:16:38.519 --> 00:16:42.350 align:start position:0%
see that the average gas cost is 22 599.
cool<00:16:39.019><c> and</c><00:16:40.019><c> then</c><00:16:40.199><c> hey</c><00:16:40.860><c> now</c><00:16:41.339><c> we</c><00:16:41.459><c> ran</c><00:16:41.699><c> optimize</c>

00:16:42.350 --> 00:16:42.360 align:start position:0%
cool and then hey now we ran optimize
 

00:16:42.360 --> 00:16:45.410 align:start position:0%
cool and then hey now we ran optimize
set<00:16:42.540><c> total</c><00:16:42.899><c> Supply</c><00:16:43.019><c> and</c><00:16:43.740><c> we</c><00:16:43.920><c> see</c><00:16:44.100><c> that</c><00:16:44.459><c> the</c><00:16:44.940><c> gas</c>

00:16:45.410 --> 00:16:45.420 align:start position:0%
set total Supply and we see that the gas
 

00:16:45.420 --> 00:16:49.730 align:start position:0%
set total Supply and we see that the gas
cost<00:16:45.600><c> is</c><00:16:45.779><c> 23</c><00:16:46.579><c> 591.</c><00:16:47.579><c> awesome</c><00:16:48.060><c> a</c><00:16:48.779><c> gas</c><00:16:49.019><c> we</c><00:16:49.620><c> have</c>

00:16:49.730 --> 00:16:49.740 align:start position:0%
cost is 23 591. awesome a gas we have
 

00:16:49.740 --> 00:16:51.590 align:start position:0%
cost is 23 591. awesome a gas we have
just<00:16:49.920><c> saved</c><00:16:50.220><c> our</c><00:16:50.339><c> users</c><00:16:50.639><c> like</c><00:16:51.060><c> an</c><00:16:51.300><c> enormous</c>

00:16:51.590 --> 00:16:51.600 align:start position:0%
just saved our users like an enormous
 

00:16:51.600 --> 00:16:55.310 align:start position:0%
just saved our users like an enormous
amount<00:16:51.779><c> of</c><00:16:52.019><c> money</c><00:16:52.199><c> right</c><00:16:52.820><c> well</c><00:16:53.899><c> uh</c><00:16:54.899><c> not</c><00:16:55.139><c> really</c>

00:16:55.310 --> 00:16:55.320 align:start position:0%
amount of money right well uh not really
 

00:16:55.320 --> 00:16:57.590 align:start position:0%
amount of money right well uh not really
I<00:16:55.800><c> kind</c><00:16:55.920><c> of</c><00:16:56.040><c> rubbed</c><00:16:56.339><c> you</c><00:16:56.459><c> guys</c><00:16:56.579><c> here</c>

00:16:57.590 --> 00:16:57.600 align:start position:0%
I kind of rubbed you guys here
 

00:16:57.600 --> 00:17:00.530 align:start position:0%
I kind of rubbed you guys here
um<00:16:57.720><c> so</c><00:16:58.139><c> uh</c><00:16:58.860><c> if</c><00:16:59.040><c> you</c><00:16:59.160><c> notice</c><00:16:59.399><c> optimizer</c><00:16:59.880><c> enabled</c>

00:17:00.530 --> 00:17:00.540 align:start position:0%
um so uh if you notice optimizer enabled
 

00:17:00.540 --> 00:17:02.389 align:start position:0%
um so uh if you notice optimizer enabled
is<00:17:00.720><c> equal</c><00:17:00.839><c> to</c><00:17:01.019><c> false</c><00:17:01.380><c> if</c><00:17:01.800><c> you're</c><00:17:01.980><c> not</c><00:17:02.100><c> familiar</c>

00:17:02.389 --> 00:17:02.399 align:start position:0%
is equal to false if you're not familiar
 

00:17:02.399 --> 00:17:04.669 align:start position:0%
is equal to false if you're not familiar
with<00:17:02.519><c> optimize</c><00:17:02.940><c> or</c><00:17:03.180><c> something</c><00:17:03.420><c> that</c><00:17:03.779><c> you</c><00:17:04.559><c> can</c>

00:17:04.669 --> 00:17:04.679 align:start position:0%
with optimize or something that you can
 

00:17:04.679 --> 00:17:06.289 align:start position:0%
with optimize or something that you can
use<00:17:04.740><c> in</c><00:17:04.919><c> hard</c><00:17:05.160><c> hat</c><00:17:05.400><c> and</c><00:17:05.579><c> other</c><00:17:05.760><c> tools</c><00:17:06.059><c> when</c>

00:17:06.289 --> 00:17:06.299 align:start position:0%
use in hard hat and other tools when
 

00:17:06.299 --> 00:17:08.870 align:start position:0%
use in hard hat and other tools when
you're<00:17:06.419><c> deploying</c><00:17:06.959><c> smart</c><00:17:07.740><c> contracts</c><00:17:08.280><c> so</c>

00:17:08.870 --> 00:17:08.880 align:start position:0%
you're deploying smart contracts so
 

00:17:08.880 --> 00:17:11.870 align:start position:0%
you're deploying smart contracts so
let's<00:17:09.179><c> go</c><00:17:09.360><c> ahead</c><00:17:09.600><c> and</c><00:17:10.140><c> enable</c><00:17:10.620><c> our</c><00:17:11.280><c> Optimizer</c>

00:17:11.870 --> 00:17:11.880 align:start position:0%
let's go ahead and enable our Optimizer
 

00:17:11.880 --> 00:17:14.689 align:start position:0%
let's go ahead and enable our Optimizer
in<00:17:12.179><c> hard</c><00:17:12.360><c> hat</c><00:17:12.740><c> we</c><00:17:13.740><c> will</c><00:17:13.860><c> set</c><00:17:13.980><c> runs</c><00:17:14.280><c> at</c><00:17:14.339><c> 200</c>

00:17:14.689 --> 00:17:14.699 align:start position:0%
in hard hat we will set runs at 200
 

00:17:14.699 --> 00:17:18.169 align:start position:0%
in hard hat we will set runs at 200
enable<00:17:15.240><c> it</c><00:17:15.480><c> and</c><00:17:16.260><c> re-measure</c><00:17:17.220><c> and</c><00:17:17.760><c> in</c><00:17:18.000><c> fact</c>

00:17:18.169 --> 00:17:18.179 align:start position:0%
enable it and re-measure and in fact
 

00:17:18.179 --> 00:17:20.809 align:start position:0%
enable it and re-measure and in fact
when<00:17:18.480><c> we</c><00:17:18.660><c> have</c><00:17:18.839><c> the</c><00:17:19.079><c> optimizer</c><00:17:19.620><c> enabled</c><00:17:20.040><c> it</c>

00:17:20.809 --> 00:17:20.819 align:start position:0%
when we have the optimizer enabled it
 

00:17:20.819 --> 00:17:22.270 align:start position:0%
when we have the optimizer enabled it
looks<00:17:21.059><c> like</c><00:17:21.179><c> the</c><00:17:21.419><c> two</c><00:17:21.540><c> functions</c><00:17:22.020><c> cost</c>

00:17:22.270 --> 00:17:22.280 align:start position:0%
looks like the two functions cost
 

00:17:22.280 --> 00:17:24.770 align:start position:0%
looks like the two functions cost
approximately<00:17:23.280><c> the</c><00:17:23.699><c> same</c><00:17:23.819><c> amount</c><00:17:24.299><c> of</c><00:17:24.540><c> gas</c>

00:17:24.770 --> 00:17:24.780 align:start position:0%
approximately the same amount of gas
 

00:17:24.780 --> 00:17:28.549 align:start position:0%
approximately the same amount of gas
right<00:17:25.500><c> so</c><00:17:25.740><c> all</c><00:17:25.919><c> our</c><00:17:26.100><c> time</c><00:17:26.839><c> spent</c><00:17:27.839><c> studying</c><00:17:28.380><c> you</c>

00:17:28.549 --> 00:17:28.559 align:start position:0%
right so all our time spent studying you
 

00:17:28.559 --> 00:17:29.810 align:start position:0%
right so all our time spent studying you
will<00:17:28.740><c> and</c><00:17:28.919><c> learning</c><00:17:29.340><c> it</c><00:17:29.400><c> and</c><00:17:29.520><c> learning</c><00:17:29.760><c> about</c>

00:17:29.810 --> 00:17:29.820 align:start position:0%
will and learning it and learning about
 

00:17:29.820 --> 00:17:34.250 align:start position:0%
will and learning it and learning about
a<00:17:30.059><c> store</c><00:17:30.299><c> was</c><00:17:30.900><c> wasted</c><00:17:31.320><c> right</c><00:17:31.559><c> well</c><00:17:32.780><c> uh</c><00:17:33.780><c> I</c>

00:17:34.250 --> 00:17:34.260 align:start position:0%
a store was wasted right well uh I
 

00:17:34.260 --> 00:17:36.049 align:start position:0%
a store was wasted right well uh I
wouldn't<00:17:34.380><c> argue</c><00:17:34.919><c> that</c><00:17:35.100><c> exactly</c><00:17:35.460><c> but</c><00:17:35.760><c> I</c><00:17:35.880><c> will</c>

00:17:36.049 --> 00:17:36.059 align:start position:0%
wouldn't argue that exactly but I will
 

00:17:36.059 --> 00:17:37.850 align:start position:0%
wouldn't argue that exactly but I will
say<00:17:36.240><c> that</c><00:17:36.419><c> optimizing</c><00:17:37.020><c> smart</c><00:17:37.200><c> contracts</c><00:17:37.679><c> is</c>

00:17:37.850 --> 00:17:37.860 align:start position:0%
say that optimizing smart contracts is
 

00:17:37.860 --> 00:17:39.169 align:start position:0%
say that optimizing smart contracts is
hard<00:17:38.100><c> and</c><00:17:38.340><c> chances</c><00:17:38.700><c> are</c><00:17:38.820><c> that</c><00:17:39.000><c> you're</c><00:17:39.059><c> not</c>

00:17:39.169 --> 00:17:39.179 align:start position:0%
hard and chances are that you're not
 

00:17:39.179 --> 00:17:40.250 align:start position:0%
hard and chances are that you're not
going<00:17:39.299><c> to</c><00:17:39.360><c> do</c><00:17:39.480><c> a</c><00:17:39.600><c> better</c><00:17:39.660><c> job</c><00:17:39.840><c> than</c><00:17:40.080><c> the</c>

00:17:40.250 --> 00:17:40.260 align:start position:0%
going to do a better job than the
 

00:17:40.260 --> 00:17:41.690 align:start position:0%
going to do a better job than the
compiler<00:17:40.679><c> unless</c><00:17:41.160><c> you</c><00:17:41.280><c> really</c><00:17:41.400><c> know</c><00:17:41.580><c> what</c>

00:17:41.690 --> 00:17:41.700 align:start position:0%
compiler unless you really know what
 

00:17:41.700 --> 00:17:42.789 align:start position:0%
compiler unless you really know what
you're<00:17:41.820><c> doing</c>

00:17:42.789 --> 00:17:42.799 align:start position:0%
you're doing
 

00:17:42.799 --> 00:17:44.810 align:start position:0%
you're doing
contrast<00:17:43.799><c> containing</c><00:17:44.280><c> assembly</c><00:17:44.640><c> are</c>

00:17:44.810 --> 00:17:44.820 align:start position:0%
contrast containing assembly are
 

00:17:44.820 --> 00:17:46.490 align:start position:0%
contrast containing assembly are
generally<00:17:45.120><c> harder</c><00:17:45.419><c> to</c><00:17:45.539><c> reason</c><00:17:45.720><c> about</c><00:17:46.020><c> in</c>

00:17:46.490 --> 00:17:46.500 align:start position:0%
generally harder to reason about in
 

00:17:46.500 --> 00:17:48.230 align:start position:0%
generally harder to reason about in
order<00:17:46.679><c> to</c><00:17:46.919><c> audit</c><00:17:47.160><c> than</c><00:17:47.400><c> contracts</c><00:17:47.880><c> written</c><00:17:48.179><c> in</c>

00:17:48.230 --> 00:17:48.240 align:start position:0%
order to audit than contracts written in
 

00:17:48.240 --> 00:17:50.029 align:start position:0%
order to audit than contracts written in
solidity<00:17:48.660><c> and</c><00:17:48.900><c> Viper</c><00:17:49.440><c> so</c><00:17:49.559><c> what</c><00:17:49.740><c> you</c><00:17:49.919><c> might</c>

00:17:50.029 --> 00:17:50.039 align:start position:0%
solidity and Viper so what you might
 

00:17:50.039 --> 00:17:52.190 align:start position:0%
solidity and Viper so what you might
gain<00:17:50.340><c> and</c><00:17:50.640><c> gas</c><00:17:50.820><c> optimization</c><00:17:51.480><c> you</c><00:17:52.020><c> will</c>

00:17:52.190 --> 00:17:52.200 align:start position:0%
gain and gas optimization you will
 

00:17:52.200 --> 00:17:54.470 align:start position:0%
gain and gas optimization you will
probably<00:17:52.440><c> be</c><00:17:52.679><c> making</c><00:17:52.860><c> a</c><00:17:53.100><c> trade-off</c><00:17:53.460><c> in</c><00:17:54.240><c> a</c>

00:17:54.470 --> 00:17:54.480 align:start position:0%
probably be making a trade-off in a
 

00:17:54.480 --> 00:17:57.110 align:start position:0%
probably be making a trade-off in a
contract<00:17:54.900><c> or</c><00:17:55.080><c> user</c><00:17:55.380><c> security</c><00:17:55.880><c> and</c><00:17:56.880><c> the</c><00:17:57.000><c> other</c>

00:17:57.110 --> 00:17:57.120 align:start position:0%
contract or user security and the other
 

00:17:57.120 --> 00:17:58.250 align:start position:0%
contract or user security and the other
thing<00:17:57.240><c> that's</c><00:17:57.419><c> important</c><00:17:57.780><c> is</c><00:17:57.960><c> if</c><00:17:58.140><c> you're</c>

00:17:58.250 --> 00:17:58.260 align:start position:0%
thing that's important is if you're
 

00:17:58.260 --> 00:17:59.510 align:start position:0%
thing that's important is if you're
writing<00:17:58.500><c> your</c><00:17:58.500><c> own</c><00:17:58.620><c> assembly</c><00:17:58.980><c> code</c><00:17:59.160><c> always</c>

00:17:59.510 --> 00:17:59.520 align:start position:0%
writing your own assembly code always
 

00:17:59.520 --> 00:18:01.070 align:start position:0%
writing your own assembly code always
measure<00:17:59.820><c> measure</c><00:18:00.299><c> and</c><00:18:00.480><c> make</c><00:18:00.660><c> sure</c><00:18:00.780><c> that</c><00:18:00.960><c> your</c>

00:18:01.070 --> 00:18:01.080 align:start position:0%
measure measure and make sure that your
 

00:18:01.080 --> 00:18:02.450 align:start position:0%
measure measure and make sure that your
implementation<00:18:01.679><c> is</c><00:18:01.980><c> better</c><00:18:02.100><c> than</c><00:18:02.340><c> the</c>

00:18:02.450 --> 00:18:02.460 align:start position:0%
implementation is better than the
 

00:18:02.460 --> 00:18:04.490 align:start position:0%
implementation is better than the
compilers<00:18:02.880><c> because</c><00:18:03.179><c> chances</c><00:18:03.960><c> are</c><00:18:04.080><c> there</c><00:18:04.320><c> are</c>

00:18:04.490 --> 00:18:04.500 align:start position:0%
compilers because chances are there are
 

00:18:04.500 --> 00:18:06.590 align:start position:0%
compilers because chances are there are
some<00:18:04.679><c> very</c><00:18:04.919><c> very</c><00:18:05.100><c> very</c><00:18:05.280><c> smart</c><00:18:05.640><c> people</c><00:18:05.880><c> working</c>

00:18:06.590 --> 00:18:06.600 align:start position:0%
some very very very smart people working
 

00:18:06.600 --> 00:18:08.690 align:start position:0%
some very very very smart people working
on<00:18:06.780><c> the</c><00:18:06.900><c> compilers</c><00:18:07.320><c> and</c><00:18:07.500><c> optimizers</c><00:18:08.039><c> that</c>

00:18:08.690 --> 00:18:08.700 align:start position:0%
on the compilers and optimizers that
 

00:18:08.700 --> 00:18:09.950 align:start position:0%
on the compilers and optimizers that
know<00:18:08.880><c> something</c><00:18:09.120><c> that</c><00:18:09.360><c> you</c><00:18:09.539><c> don't</c><00:18:09.600><c> when</c><00:18:09.840><c> it</c>

00:18:09.950 --> 00:18:09.960 align:start position:0%
know something that you don't when it
 

00:18:09.960 --> 00:18:12.650 align:start position:0%
know something that you don't when it
comes<00:18:10.140><c> to</c><00:18:10.260><c> memory</c><00:18:10.500><c> management</c><00:18:10.799><c> or</c><00:18:11.160><c> safety</c>

00:18:12.650 --> 00:18:12.660 align:start position:0%
comes to memory management or safety
 

00:18:12.660 --> 00:18:14.570 align:start position:0%
comes to memory management or safety
um<00:18:12.720><c> and</c><00:18:13.620><c> I</c><00:18:13.799><c> guess</c><00:18:13.919><c> that's</c><00:18:14.100><c> essentially</c><00:18:14.400><c> my</c>

00:18:14.570 --> 00:18:14.580 align:start position:0%
um and I guess that's essentially my
 

00:18:14.580 --> 00:18:15.890 align:start position:0%
um and I guess that's essentially my
last<00:18:14.760><c> Point</c><00:18:14.880><c> remember</c><00:18:15.120><c> a</c><00:18:15.419><c> lot</c><00:18:15.480><c> of</c><00:18:15.600><c> the</c><00:18:15.660><c> memory</c>

00:18:15.890 --> 00:18:15.900 align:start position:0%
last Point remember a lot of the memory
 

00:18:15.900 --> 00:18:17.450 align:start position:0%
last Point remember a lot of the memory
management<00:18:16.080><c> stuff</c><00:18:16.440><c> solidity</c><00:18:16.919><c> does</c><00:18:17.160><c> under</c><00:18:17.280><c> the</c>

00:18:17.450 --> 00:18:17.460 align:start position:0%
management stuff solidity does under the
 

00:18:17.460 --> 00:18:19.130 align:start position:0%
management stuff solidity does under the
hood<00:18:17.580><c> is</c><00:18:18.000><c> there</c><00:18:18.179><c> for</c><00:18:18.360><c> safety</c><00:18:18.660><c> reasons</c><00:18:18.960><c> and</c>

00:18:19.130 --> 00:18:19.140 align:start position:0%
hood is there for safety reasons and
 

00:18:19.140 --> 00:18:20.570 align:start position:0%
hood is there for safety reasons and
just<00:18:19.320><c> because</c><00:18:19.440><c> an</c><00:18:19.620><c> OP</c><00:18:19.799><c> code</c><00:18:19.980><c> looks</c><00:18:20.340><c> like</c><00:18:20.400><c> it's</c>

00:18:20.570 --> 00:18:20.580 align:start position:0%
just because an OP code looks like it's
 

00:18:20.580 --> 00:18:21.950 align:start position:0%
just because an OP code looks like it's
unnecessary<00:18:21.120><c> doesn't</c><00:18:21.480><c> mean</c><00:18:21.660><c> that</c><00:18:21.780><c> it</c>

00:18:21.950 --> 00:18:21.960 align:start position:0%
unnecessary doesn't mean that it
 

00:18:21.960 --> 00:18:23.090 align:start position:0%
unnecessary doesn't mean that it
actually<00:18:22.080><c> is</c>

00:18:23.090 --> 00:18:23.100 align:start position:0%
actually is
 

00:18:23.100 --> 00:18:26.330 align:start position:0%
actually is
that<00:18:23.520><c> being</c><00:18:23.700><c> said</c><00:18:24.320><c> optimizing</c><00:18:25.320><c> in</c><00:18:25.740><c> Yule</c><00:18:26.160><c> and</c>

00:18:26.330 --> 00:18:26.340 align:start position:0%
that being said optimizing in Yule and
 

00:18:26.340 --> 00:18:28.850 align:start position:0%
that being said optimizing in Yule and
an<00:18:26.520><c> assembly</c><00:18:26.880><c> is</c><00:18:27.539><c> definitely</c><00:18:28.020><c> something</c><00:18:28.380><c> that</c>

00:18:28.850 --> 00:18:28.860 align:start position:0%
an assembly is definitely something that
 

00:18:28.860 --> 00:18:31.070 align:start position:0%
an assembly is definitely something that
is<00:18:29.340><c> needed</c><00:18:29.700><c> and</c><00:18:29.940><c> useful</c><00:18:30.179><c> especially</c><00:18:30.539><c> in</c><00:18:30.780><c> D5</c>

00:18:31.070 --> 00:18:31.080 align:start position:0%
is needed and useful especially in D5
 

00:18:31.080 --> 00:18:33.950 align:start position:0%
is needed and useful especially in D5
and<00:18:31.559><c> on</c><00:18:31.679><c> mainnet</c><00:18:32.160><c> where</c><00:18:32.400><c> our</c><00:18:32.700><c> gas</c><00:18:33.179><c> costs</c><00:18:33.660><c> are</c>

00:18:33.950 --> 00:18:33.960 align:start position:0%
and on mainnet where our gas costs are
 

00:18:33.960 --> 00:18:35.090 align:start position:0%
and on mainnet where our gas costs are
you<00:18:34.320><c> know</c>

00:18:35.090 --> 00:18:35.100 align:start position:0%
you know
 

00:18:35.100 --> 00:18:37.310 align:start position:0%
you know
lower<00:18:35.640><c> now</c><00:18:36.000><c> but</c><00:18:36.360><c> quite</c><00:18:36.600><c> higher</c><00:18:36.900><c> than</c><00:18:37.020><c> a</c><00:18:37.140><c> lot</c><00:18:37.260><c> of</c>

00:18:37.310 --> 00:18:37.320 align:start position:0%
lower now but quite higher than a lot of
 

00:18:37.320 --> 00:18:38.870 align:start position:0%
lower now but quite higher than a lot of
the<00:18:37.440><c> other</c><00:18:37.559><c> chains</c>

00:18:38.870 --> 00:18:38.880 align:start position:0%
the other chains
 

00:18:38.880 --> 00:18:40.909 align:start position:0%
the other chains
um<00:18:38.940><c> but</c><00:18:39.299><c> yeah</c><00:18:39.480><c> I</c><00:18:39.780><c> guess</c><00:18:39.900><c> do</c><00:18:40.200><c> so</c><00:18:40.380><c> at</c><00:18:40.679><c> your</c><00:18:40.799><c> own</c>

00:18:40.909 --> 00:18:40.919 align:start position:0%
um but yeah I guess do so at your own
 

00:18:40.919 --> 00:18:44.210 align:start position:0%
um but yeah I guess do so at your own
risk<00:18:41.360><c> so</c><00:18:42.360><c> uh</c><00:18:42.900><c> thank</c><00:18:43.140><c> you</c><00:18:43.320><c> guys</c><00:18:43.440><c> once</c><00:18:43.860><c> again</c><00:18:43.919><c> my</c>

00:18:44.210 --> 00:18:44.220 align:start position:0%
risk so uh thank you guys once again my
 

00:18:44.220 --> 00:18:46.250 align:start position:0%
risk so uh thank you guys once again my
name<00:18:44.340><c> is</c><00:18:44.400><c> Alex</c><00:18:44.640><c> I'm</c><00:18:45.179><c> a</c><00:18:45.360><c> lead</c><00:18:45.539><c> developer</c><00:18:46.020><c> at</c>

00:18:46.250 --> 00:18:46.260 align:start position:0%
name is Alex I'm a lead developer at
 

00:18:46.260 --> 00:18:49.610 align:start position:0%
name is Alex I'm a lead developer at
tally<00:18:46.440><c> ho</c><00:18:46.760><c> and</c><00:18:47.760><c> we</c><00:18:48.299><c> are</c><00:18:48.480><c> hiring</c><00:18:48.900><c> solidity</c><00:18:49.440><c> and</c>

00:18:49.610 --> 00:18:49.620 align:start position:0%
tally ho and we are hiring solidity and
 

00:18:49.620 --> 00:18:51.770 align:start position:0%
tally ho and we are hiring solidity and
typescript<00:18:49.980><c> developers</c><00:18:50.520><c> so</c><00:18:50.940><c> if</c><00:18:51.419><c> this</c><00:18:51.600><c> kind</c><00:18:51.720><c> of</c>

00:18:51.770 --> 00:18:51.780 align:start position:0%
typescript developers so if this kind of
 

00:18:51.780 --> 00:18:53.210 align:start position:0%
typescript developers so if this kind of
stuff<00:18:51.960><c> is</c><00:18:52.140><c> interesting</c><00:18:52.500><c> to</c><00:18:52.620><c> you</c><00:18:52.799><c> and</c><00:18:53.100><c> you're</c>

00:18:53.210 --> 00:18:53.220 align:start position:0%
stuff is interesting to you and you're
 

00:18:53.220 --> 00:18:55.610 align:start position:0%
stuff is interesting to you and you're
looking<00:18:53.400><c> for</c><00:18:53.640><c> a</c><00:18:53.760><c> change</c><00:18:54.000><c> uh</c><00:18:54.900><c> please</c><00:18:55.140><c> reach</c><00:18:55.500><c> out</c>

00:18:55.610 --> 00:18:55.620 align:start position:0%
looking for a change uh please reach out
 

00:18:55.620 --> 00:18:58.310 align:start position:0%
looking for a change uh please reach out
and<00:18:56.400><c> then</c><00:18:56.580><c> finally</c><00:18:57.120><c> I</c><00:18:57.480><c> want</c><00:18:57.600><c> to</c><00:18:57.720><c> give</c><00:18:57.900><c> a</c><00:18:58.080><c> big</c>

00:18:58.310 --> 00:18:58.320 align:start position:0%
and then finally I want to give a big
 

00:18:58.320 --> 00:19:00.890 align:start position:0%
and then finally I want to give a big
thanks<00:18:58.500><c> to</c><00:18:58.740><c> Gilbert</c><00:18:59.100><c> Garza</c><00:18:59.640><c> he</c><00:19:00.120><c> had</c><00:19:00.539><c> a</c><00:19:00.660><c> lecture</c>

00:19:00.890 --> 00:19:00.900 align:start position:0%
thanks to Gilbert Garza he had a lecture
 

00:19:00.900 --> 00:19:02.950 align:start position:0%
thanks to Gilbert Garza he had a lecture
at<00:19:01.080><c> Xerox</c><00:19:01.380><c> macro</c><00:19:01.860><c> that</c><00:19:02.100><c> inspired</c><00:19:02.580><c> this</c><00:19:02.760><c> talk</c>

00:19:02.950 --> 00:19:02.960 align:start position:0%
at Xerox macro that inspired this talk
 

00:19:02.960 --> 00:19:07.669 align:start position:0%
at Xerox macro that inspired this talk
and<00:19:03.960><c> there</c><00:19:04.559><c> are</c><00:19:05.120><c> a</c><00:19:06.120><c> few</c><00:19:06.240><c> research</c><00:19:06.720><c> resources</c>

00:19:07.669 --> 00:19:07.679 align:start position:0%
and there are a few research resources
 

00:19:07.679 --> 00:19:09.590 align:start position:0%
and there are a few research resources
on<00:19:07.860><c> here</c><00:19:08.039><c> if</c><00:19:08.400><c> you</c><00:19:08.520><c> would</c><00:19:08.700><c> like</c><00:19:08.880><c> to</c><00:19:09.000><c> dig</c><00:19:09.179><c> deeper</c>

00:19:09.590 --> 00:19:09.600 align:start position:0%
on here if you would like to dig deeper
 

00:19:09.600 --> 00:19:12.529 align:start position:0%
on here if you would like to dig deeper
on<00:19:10.080><c> any</c><00:19:10.320><c> of</c><00:19:10.500><c> the</c><00:19:10.559><c> topics</c><00:19:10.919><c> uh</c><00:19:11.580><c> covered</c><00:19:12.000><c> today</c>

00:19:12.529 --> 00:19:12.539 align:start position:0%
on any of the topics uh covered today
 

00:19:12.539 --> 00:19:15.289 align:start position:0%
on any of the topics uh covered today
thanks<00:19:13.020><c> so</c><00:19:13.140><c> much</c><00:19:13.340><c> thank</c><00:19:14.340><c> you</c><00:19:14.940><c> um</c><00:19:15.000><c> we</c><00:19:15.179><c> would</c>

00:19:15.289 --> 00:19:15.299 align:start position:0%
thanks so much thank you um we would
 

00:19:15.299 --> 00:19:17.529 align:start position:0%
thanks so much thank you um we would
have<00:19:15.480><c> some</c><00:19:15.600><c> time</c><00:19:15.720><c> for</c><00:19:15.900><c> questions</c><00:19:16.080><c> if</c><00:19:16.380><c> you</c><00:19:16.559><c> like</c>

00:19:17.529 --> 00:19:17.539 align:start position:0%
have some time for questions if you like
 

00:19:17.539 --> 00:19:21.590 align:start position:0%
have some time for questions if you like
why<00:19:18.539><c> the</c><00:19:18.840><c> optimizing</c><00:19:19.740><c> function</c><00:19:20.700><c> spend</c><00:19:21.480><c> the</c>

00:19:21.590 --> 00:19:21.600 align:start position:0%
why the optimizing function spend the
 

00:19:21.600 --> 00:19:24.890 align:start position:0%
why the optimizing function spend the
same<00:19:21.780><c> amount</c><00:19:21.900><c> of</c><00:19:22.140><c> gas</c><00:19:22.500><c> if</c><00:19:23.280><c> it</c><00:19:23.460><c> has</c><00:19:23.700><c> more</c>

00:19:24.890 --> 00:19:24.900 align:start position:0%
same amount of gas if it has more
 

00:19:24.900 --> 00:19:29.570 align:start position:0%
same amount of gas if it has more
uh<00:19:25.860><c> sorry</c><00:19:26.400><c> less</c><00:19:26.700><c> up</c><00:19:27.419><c> codes</c><00:19:27.799><c> so</c><00:19:28.799><c> the</c><00:19:29.280><c> app</c><00:19:29.340><c> codes</c>

00:19:29.570 --> 00:19:29.580 align:start position:0%
uh sorry less up codes so the app codes
 

00:19:29.580 --> 00:19:32.390 align:start position:0%
uh sorry less up codes so the app codes
that<00:19:29.820><c> we</c><00:19:29.880><c> were</c><00:19:30.000><c> looking</c><00:19:30.179><c> at</c><00:19:30.419><c> were</c><00:19:31.020><c> for</c><00:19:31.380><c> the</c><00:19:31.679><c> uh</c>

00:19:32.390 --> 00:19:32.400 align:start position:0%
that we were looking at were for the uh
 

00:19:32.400 --> 00:19:34.310 align:start position:0%
that we were looking at were for the uh
for<00:19:32.700><c> the</c><00:19:32.760><c> unoptimized</c><00:19:33.419><c> functions</c><00:19:33.840><c> and</c><00:19:34.200><c> we</c>

00:19:34.310 --> 00:19:34.320 align:start position:0%
for the unoptimized functions and we
 

00:19:34.320 --> 00:19:36.230 align:start position:0%
for the unoptimized functions and we
were<00:19:34.500><c> looking</c><00:19:34.679><c> at</c><00:19:34.860><c> them</c><00:19:34.980><c> because</c><00:19:35.280><c> it</c><00:19:35.580><c> is</c><00:19:35.760><c> like</c>

00:19:36.230 --> 00:19:36.240 align:start position:0%
were looking at them because it is like
 

00:19:36.240 --> 00:19:39.890 align:start position:0%
were looking at them because it is like
actually<00:19:36.660><c> it's</c><00:19:37.260><c> easier</c><00:19:37.620><c> and</c><00:19:38.059><c> possible</c><00:19:39.059><c> to</c>

00:19:39.890 --> 00:19:39.900 align:start position:0%
actually it's easier and possible to
 

00:19:39.900 --> 00:19:42.350 align:start position:0%
actually it's easier and possible to
dissect<00:19:40.440><c> them</c><00:19:40.620><c> in</c><00:19:40.860><c> a</c><00:19:40.980><c> talk</c><00:19:41.160><c> so</c><00:19:41.820><c> when</c><00:19:42.000><c> we</c><00:19:42.179><c> saw</c>

00:19:42.350 --> 00:19:42.360 align:start position:0%
dissect them in a talk so when we saw
 

00:19:42.360 --> 00:19:45.770 align:start position:0%
dissect them in a talk so when we saw
those<00:19:42.660><c> two</c><00:19:42.960><c> uh</c><00:19:43.860><c> op</c><00:19:44.100><c> code</c><00:19:44.340><c> I</c><00:19:45.179><c> guess</c><00:19:45.299><c> have</c><00:19:45.539><c> like</c>

00:19:45.770 --> 00:19:45.780 align:start position:0%
those two uh op code I guess have like
 

00:19:45.780 --> 00:19:47.930 align:start position:0%
those two uh op code I guess have like
optimized<00:19:46.679><c> what</c><00:19:47.039><c> was</c><00:19:47.160><c> it</c><00:19:47.280><c> set</c><00:19:47.460><c> total</c><00:19:47.760><c> Supply</c>

00:19:47.930 --> 00:19:47.940 align:start position:0%
optimized what was it set total Supply
 

00:19:47.940 --> 00:19:49.549 align:start position:0%
optimized what was it set total Supply
and<00:19:48.179><c> set</c><00:19:48.299><c> total</c><00:19:48.660><c> Supply</c><00:19:48.780><c> those</c><00:19:49.320><c> are</c><00:19:49.500><c> the</c>

00:19:49.549 --> 00:19:49.559 align:start position:0%
and set total Supply those are the
 

00:19:49.559 --> 00:19:52.010 align:start position:0%
and set total Supply those are the
unoptimized<00:19:50.160><c> app</c><00:19:50.340><c> codes</c><00:19:50.580><c> and</c><00:19:50.940><c> then</c><00:19:51.059><c> and</c><00:19:51.840><c> then</c>

00:19:52.010 --> 00:19:52.020 align:start position:0%
unoptimized app codes and then and then
 

00:19:52.020 --> 00:19:55.310 align:start position:0%
unoptimized app codes and then and then
when<00:19:52.380><c> uh</c><00:19:52.740><c> after</c><00:19:53.520><c> the</c><00:19:53.820><c> optimizer</c><00:19:54.419><c> runs</c><00:19:54.960><c> the</c>

00:19:55.310 --> 00:19:55.320 align:start position:0%
when uh after the optimizer runs the
 

00:19:55.320 --> 00:19:56.810 align:start position:0%
when uh after the optimizer runs the
opcode<00:19:55.740><c> representation</c><00:19:56.280><c> of</c><00:19:56.520><c> those</c><00:19:56.640><c> two</c>

00:19:56.810 --> 00:19:56.820 align:start position:0%
opcode representation of those two
 

00:19:56.820 --> 00:19:59.810 align:start position:0%
opcode representation of those two
functions<00:19:57.240><c> actually</c><00:19:57.720><c> becomes</c><00:19:58.200><c> the</c><00:19:58.320><c> same</c><00:19:58.820><c> what</c>

00:19:59.810 --> 00:19:59.820 align:start position:0%
functions actually becomes the same what
 

00:19:59.820 --> 00:20:01.970 align:start position:0%
functions actually becomes the same what
were<00:20:00.000><c> the</c><00:20:00.299><c> those</c><00:20:00.539><c> two</c><00:20:00.780><c> op</c><00:20:00.960><c> codes</c><00:20:01.200><c> two</c><00:20:01.500><c> extra</c><00:20:01.620><c> up</c>

00:20:01.970 --> 00:20:01.980 align:start position:0%
were the those two op codes two extra up
 

00:20:01.980 --> 00:20:04.130 align:start position:0%
were the those two op codes two extra up
goes<00:20:02.220><c> doing</c><00:20:02.340><c> the</c><00:20:02.580><c> swaps</c><00:20:02.940><c> we're</c><00:20:03.360><c> doing</c><00:20:03.660><c> on</c><00:20:04.020><c> the</c>

00:20:04.130 --> 00:20:04.140 align:start position:0%
goes doing the swaps we're doing on the
 

00:20:04.140 --> 00:20:06.169 align:start position:0%
goes doing the swaps we're doing on the
unoptimized<00:20:04.860><c> uh</c>

00:20:06.169 --> 00:20:06.179 align:start position:0%
unoptimized uh
 

00:20:06.179 --> 00:20:08.930 align:start position:0%
unoptimized uh
compiled<00:20:07.080><c> version</c><00:20:07.260><c> the</c><00:20:08.220><c> the</c><00:20:08.400><c> optimize</c>

00:20:08.930 --> 00:20:08.940 align:start position:0%
compiled version the the optimize
 

00:20:08.940 --> 00:20:10.490 align:start position:0%
compiled version the the optimize
compile<00:20:09.360><c> version</c>

00:20:10.490 --> 00:20:10.500 align:start position:0%
compile version
 

00:20:10.500 --> 00:20:13.970 align:start position:0%
compile version
um<00:20:10.820><c> was</c><00:20:11.820><c> a</c>

00:20:13.970 --> 00:20:13.980 align:start position:0%
um was a
 

00:20:13.980 --> 00:20:17.690 align:start position:0%
um was a
effectively<00:20:14.880><c> the</c><00:20:15.179><c> same</c><00:20:15.360><c> as</c><00:20:15.840><c> our</c><00:20:16.080><c> op</c><00:20:16.320><c> codes</c>

00:20:17.690 --> 00:20:17.700 align:start position:0%
effectively the same as our op codes
 

00:20:17.700 --> 00:20:19.850 align:start position:0%
effectively the same as our op codes
um secure<00:20:18.120><c> I</c><00:20:18.419><c> can</c><00:20:18.539><c> show</c><00:20:18.720><c> you</c>

00:20:19.850 --> 00:20:19.860 align:start position:0%
um secure I can show you
 

00:20:19.860 --> 00:20:22.970 align:start position:0%
um secure I can show you
so<00:20:20.280><c> here</c><00:20:20.520><c> we</c><00:20:20.760><c> have</c><00:20:21.000><c> uh</c><00:20:21.780><c> our</c><00:20:22.200><c> unoptimized</c><00:20:22.919><c> set</c>

00:20:22.970 --> 00:20:22.980 align:start position:0%
so here we have uh our unoptimized set
 

00:20:22.980 --> 00:20:24.830 align:start position:0%
so here we have uh our unoptimized set
total<00:20:23.340><c> Supply</c><00:20:23.520><c> and</c><00:20:23.820><c> our</c><00:20:23.940><c> optimized</c><00:20:24.360><c> set</c><00:20:24.419><c> total</c>

00:20:24.830 --> 00:20:24.840 align:start position:0%
total Supply and our optimized set total
 

00:20:24.840 --> 00:20:26.090 align:start position:0%
total Supply and our optimized set total
Supply

00:20:26.090 --> 00:20:26.100 align:start position:0%
Supply
 

00:20:26.100 --> 00:20:28.070 align:start position:0%
Supply
in<00:20:26.580><c> our</c><00:20:26.640><c> code</c><00:20:26.820><c> where</c><00:20:27.059><c> the</c><00:20:27.240><c> optimizer</c><00:20:27.720><c> has</c><00:20:27.900><c> not</c>

00:20:28.070 --> 00:20:28.080 align:start position:0%
in our code where the optimizer has not
 

00:20:28.080 --> 00:20:31.610 align:start position:0%
in our code where the optimizer has not
run<00:20:28.260><c> before</c><00:20:28.500><c> after</c><00:20:29.280><c> the</c><00:20:29.520><c> optimizer</c><00:20:30.120><c> runs</c><00:20:30.620><c> uh</c>

00:20:31.610 --> 00:20:31.620 align:start position:0%
run before after the optimizer runs uh
 

00:20:31.620 --> 00:20:33.409 align:start position:0%
run before after the optimizer runs uh
both<00:20:31.860><c> of</c><00:20:32.039><c> these</c><00:20:32.220><c> functions</c>

00:20:33.409 --> 00:20:33.419 align:start position:0%
both of these functions
 

00:20:33.419 --> 00:20:35.210 align:start position:0%
both of these functions
um<00:20:33.480><c> have</c><00:20:33.720><c> this</c><00:20:33.900><c> have</c><00:20:34.140><c> the</c><00:20:34.380><c> same</c><00:20:34.500><c> exact</c><00:20:34.799><c> op</c><00:20:34.980><c> code</c>

00:20:35.210 --> 00:20:35.220 align:start position:0%
um have this have the same exact op code
 

00:20:35.220 --> 00:20:37.730 align:start position:0%
um have this have the same exact op code
and<00:20:35.520><c> in</c><00:20:35.700><c> fact</c><00:20:35.880><c> even</c><00:20:36.539><c> though</c><00:20:36.840><c> we</c><00:20:37.380><c> have</c><00:20:37.500><c> two</c>

00:20:37.730 --> 00:20:37.740 align:start position:0%
and in fact even though we have two
 

00:20:37.740 --> 00:20:39.710 align:start position:0%
and in fact even though we have two
functions<00:20:38.280><c> in</c><00:20:38.520><c> our</c><00:20:38.640><c> contract</c><00:20:38.940><c> the</c><00:20:39.179><c> optimizer</c>

00:20:39.710 --> 00:20:39.720 align:start position:0%
functions in our contract the optimizer
 

00:20:39.720 --> 00:20:41.870 align:start position:0%
functions in our contract the optimizer
is<00:20:39.900><c> smart</c><00:20:40.080><c> enough</c><00:20:40.260><c> to</c><00:20:40.500><c> know</c><00:20:40.679><c> that</c><00:20:41.520><c> they're</c>

00:20:41.870 --> 00:20:41.880 align:start position:0%
is smart enough to know that they're
 

00:20:41.880 --> 00:20:44.330 align:start position:0%
is smart enough to know that they're
doing<00:20:42.120><c> basically</c><00:20:42.539><c> the</c><00:20:42.720><c> same</c><00:20:42.960><c> thing</c><00:20:43.140><c> so</c><00:20:43.919><c> the</c>

00:20:44.330 --> 00:20:44.340 align:start position:0%
doing basically the same thing so the
 

00:20:44.340 --> 00:20:47.049 align:start position:0%
doing basically the same thing so the
when<00:20:44.580><c> we</c><00:20:44.760><c> were</c><00:20:44.880><c> talking</c><00:20:45.059><c> earlier</c><00:20:45.539><c> about</c>

00:20:47.049 --> 00:20:47.059 align:start position:0%
when we were talking earlier about
 

00:20:47.059 --> 00:20:50.870 align:start position:0%
when we were talking earlier about
uh<00:20:48.059><c> these</c><00:20:48.660><c> selectors</c><00:20:48.960><c> over</c><00:20:49.320><c> here</c><00:20:49.559><c> right</c>

00:20:50.870 --> 00:20:50.880 align:start position:0%
uh these selectors over here right
 

00:20:50.880 --> 00:20:52.490 align:start position:0%
uh these selectors over here right
um so<00:20:51.120><c> this</c><00:20:51.299><c> selector</c><00:20:51.600><c> jumps</c><00:20:52.020><c> to</c><00:20:52.140><c> a</c>

00:20:52.490 --> 00:20:52.500 align:start position:0%
um so this selector jumps to a
 

00:20:52.500 --> 00:20:53.810 align:start position:0%
um so this selector jumps to a
destination<00:20:52.860><c> and</c><00:20:53.220><c> then</c><00:20:53.280><c> there</c><00:20:53.460><c> would</c><00:20:53.580><c> be</c><00:20:53.700><c> a</c>

00:20:53.810 --> 00:20:53.820 align:start position:0%
destination and then there would be a
 

00:20:53.820 --> 00:20:55.130 align:start position:0%
destination and then there would be a
different<00:20:54.000><c> function</c><00:20:54.419><c> selector</c><00:20:54.780><c> for</c><00:20:54.960><c> another</c>

00:20:55.130 --> 00:20:55.140 align:start position:0%
different function selector for another
 

00:20:55.140 --> 00:20:56.450 align:start position:0%
different function selector for another
function

00:20:56.450 --> 00:20:56.460 align:start position:0%
function
 

00:20:56.460 --> 00:20:58.010 align:start position:0%
function
um<00:20:56.520><c> for</c><00:20:56.880><c> for</c><00:20:57.059><c> the</c><00:20:57.299><c> other</c><00:20:57.360><c> function</c><00:20:57.660><c> they</c><00:20:57.840><c> would</c>

00:20:58.010 --> 00:20:58.020 align:start position:0%
um for for the other function they would
 

00:20:58.020 --> 00:20:59.210 align:start position:0%
um for for the other function they would
actually<00:20:58.140><c> both</c><00:20:58.440><c> jump</c><00:20:58.679><c> to</c><00:20:58.919><c> the</c><00:20:59.100><c> same</c>

00:20:59.210 --> 00:20:59.220 align:start position:0%
actually both jump to the same
 

00:20:59.220 --> 00:21:01.130 align:start position:0%
actually both jump to the same
destination<00:20:59.700><c> because</c><00:21:00.000><c> effectively</c><00:21:00.660><c> what</c>

00:21:01.130 --> 00:21:01.140 align:start position:0%
destination because effectively what
 

00:21:01.140 --> 00:21:03.350 align:start position:0%
destination because effectively what
they<00:21:01.260><c> are</c><00:21:01.440><c> doing</c><00:21:01.559><c> is</c><00:21:01.919><c> the</c><00:21:02.100><c> same</c><00:21:02.220><c> uh</c><00:21:03.059><c> what</c><00:21:03.179><c> would</c>

00:21:03.350 --> 00:21:03.360 align:start position:0%
they are doing is the same uh what would
 

00:21:03.360 --> 00:21:06.409 align:start position:0%
they are doing is the same uh what would
be<00:21:03.480><c> some</c><00:21:03.600><c> good</c><00:21:03.780><c> use</c><00:21:04.020><c> cases</c><00:21:04.440><c> for</c><00:21:05.160><c> managing</c><00:21:06.000><c> the</c>

00:21:06.409 --> 00:21:06.419 align:start position:0%
be some good use cases for managing the
 

00:21:06.419 --> 00:21:08.810 align:start position:0%
be some good use cases for managing the
assembly<00:21:06.780><c> code</c><00:21:06.960><c> within</c><00:21:07.380><c> contracts</c><00:21:07.919><c> and</c><00:21:08.520><c> do</c>

00:21:08.810 --> 00:21:08.820 align:start position:0%
assembly code within contracts and do
 

00:21:08.820 --> 00:21:10.850 align:start position:0%
assembly code within contracts and do
you<00:21:09.000><c> recommend</c><00:21:09.539><c> any</c><00:21:09.780><c> good</c><00:21:10.020><c> resources</c><00:21:10.500><c> for</c>

00:21:10.850 --> 00:21:10.860 align:start position:0%
you recommend any good resources for
 

00:21:10.860 --> 00:21:13.610 align:start position:0%
you recommend any good resources for
learning<00:21:11.400><c> you'll</c><00:21:11.880><c> yeah</c><00:21:12.299><c> so</c><00:21:12.600><c> I</c><00:21:12.900><c> think</c><00:21:13.020><c> that</c><00:21:13.320><c> the</c>

00:21:13.610 --> 00:21:13.620 align:start position:0%
learning you'll yeah so I think that the
 

00:21:13.620 --> 00:21:15.830 align:start position:0%
learning you'll yeah so I think that the
the<00:21:13.799><c> best</c><00:21:14.160><c> use</c><00:21:14.340><c> case</c><00:21:14.580><c> that</c><00:21:14.880><c> I</c><00:21:15.000><c> have</c><00:21:15.120><c> seen</c><00:21:15.360><c> is</c><00:21:15.720><c> a</c>

00:21:15.830 --> 00:21:15.840 align:start position:0%
the best use case that I have seen is a
 

00:21:15.840 --> 00:21:18.169 align:start position:0%
the best use case that I have seen is a
fairly<00:21:16.140><c> common</c><00:21:16.260><c> one</c><00:21:16.559><c> where</c><00:21:17.460><c> uh</c><00:21:17.880><c> if</c><00:21:18.059><c> you're</c>

00:21:18.169 --> 00:21:18.179 align:start position:0%
fairly common one where uh if you're
 

00:21:18.179 --> 00:21:20.810 align:start position:0%
fairly common one where uh if you're
adding<00:21:18.480><c> two</c><00:21:18.600><c> numbers</c><00:21:18.780><c> that</c><00:21:19.140><c> you</c><00:21:19.380><c> are</c><00:21:19.500><c> 100</c><00:21:19.820><c> sure</c>

00:21:20.810 --> 00:21:20.820 align:start position:0%
adding two numbers that you are 100 sure
 

00:21:20.820 --> 00:21:23.090 align:start position:0%
adding two numbers that you are 100 sure
will<00:21:21.059><c> not</c><00:21:21.299><c> overflow</c><00:21:21.900><c> the</c><00:21:22.320><c> uh</c><00:21:22.440><c> the</c><00:21:22.799><c> integer</c>

00:21:23.090 --> 00:21:23.100 align:start position:0%
will not overflow the uh the integer
 

00:21:23.100 --> 00:21:26.390 align:start position:0%
will not overflow the uh the integer
limit<00:21:23.280><c> then</c><00:21:23.940><c> in</c><00:21:24.240><c> assembly</c><00:21:24.660><c> you</c><00:21:25.080><c> can</c><00:21:25.200><c> uh</c><00:21:26.160><c> you</c>

00:21:26.390 --> 00:21:26.400 align:start position:0%
limit then in assembly you can uh you
 

00:21:26.400 --> 00:21:28.789 align:start position:0%
limit then in assembly you can uh you
can<00:21:26.520><c> add</c><00:21:26.700><c> them</c><00:21:26.940><c> with</c><00:21:27.600><c> a</c><00:21:27.900><c> uh</c><00:21:28.320><c> there's</c><00:21:28.620><c> an</c>

00:21:28.789 --> 00:21:28.799 align:start position:0%
can add them with a uh there's an
 

00:21:28.799 --> 00:21:31.250 align:start position:0%
can add them with a uh there's an
unchecked<00:21:29.280><c> flag</c><00:21:29.400><c> which</c><00:21:30.059><c> basically</c><00:21:30.419><c> tells</c><00:21:30.960><c> the</c>

00:21:31.250 --> 00:21:31.260 align:start position:0%
unchecked flag which basically tells the
 

00:21:31.260 --> 00:21:34.430 align:start position:0%
unchecked flag which basically tells the
uh<00:21:31.620><c> the</c><00:21:31.860><c> compiler</c><00:21:32.280><c> to</c><00:21:32.520><c> not</c><00:21:33.120><c> check</c><00:21:33.419><c> for</c><00:21:34.140><c> uh</c>

00:21:34.430 --> 00:21:34.440 align:start position:0%
uh the compiler to not check for uh
 

00:21:34.440 --> 00:21:36.470 align:start position:0%
uh the compiler to not check for uh
integer<00:21:34.860><c> overflow</c><00:21:35.340><c> I</c><00:21:35.640><c> believe</c><00:21:35.820><c> that</c><00:21:36.059><c> in</c>

00:21:36.470 --> 00:21:36.480 align:start position:0%
integer overflow I believe that in
 

00:21:36.480 --> 00:21:38.210 align:start position:0%
integer overflow I believe that in
solidity

00:21:38.210 --> 00:21:38.220 align:start position:0%
solidity
 

00:21:38.220 --> 00:21:41.870 align:start position:0%
solidity
nine<00:21:39.120><c> point</c><00:21:39.419><c> something</c><00:21:40.020><c> in</c><00:21:40.740><c> some</c>

00:21:41.870 --> 00:21:41.880 align:start position:0%
nine point something in some
 

00:21:41.880 --> 00:21:44.990 align:start position:0%
nine point something in some
fairly<00:21:42.480><c> recent</c><00:21:42.780><c> version</c><00:21:42.960><c> of</c><00:21:43.140><c> solidity</c><00:21:43.559><c> uh</c><00:21:44.700><c> uh</c>

00:21:44.990 --> 00:21:45.000 align:start position:0%
fairly recent version of solidity uh uh
 

00:21:45.000 --> 00:21:45.950 align:start position:0%
fairly recent version of solidity uh uh
safe

00:21:45.950 --> 00:21:45.960 align:start position:0%
safe
 

00:21:45.960 --> 00:21:48.770 align:start position:0%
safe
math<00:21:46.620><c> became</c>

00:21:48.770 --> 00:21:48.780 align:start position:0%
math became
 

00:21:48.780 --> 00:21:50.210 align:start position:0%
math became
I<00:21:49.080><c> I</c><00:21:49.200><c> guess</c><00:21:49.440><c> like</c>

00:21:50.210 --> 00:21:50.220 align:start position:0%
I I guess like
 

00:21:50.220 --> 00:21:51.830 align:start position:0%
I I guess like
well<00:21:50.640><c> there</c><00:21:51.000><c> are</c><00:21:51.059><c> a</c><00:21:51.120><c> lot</c><00:21:51.179><c> of</c><00:21:51.299><c> checks</c><00:21:51.600><c> that</c><00:21:51.720><c> run</c>

00:21:51.830 --> 00:21:51.840 align:start position:0%
well there are a lot of checks that run
 

00:21:51.840 --> 00:21:53.270 align:start position:0%
well there are a lot of checks that run
under<00:21:52.020><c> the</c><00:21:52.260><c> hood</c>

00:21:53.270 --> 00:21:53.280 align:start position:0%
under the hood
 

00:21:53.280 --> 00:21:54.950 align:start position:0%
under the hood
you<00:21:53.640><c> can</c><00:21:53.700><c> turn</c><00:21:53.880><c> off</c><00:21:54.000><c> those</c><00:21:54.179><c> checks</c><00:21:54.539><c> if</c><00:21:54.840><c> you're</c>

00:21:54.950 --> 00:21:54.960 align:start position:0%
you can turn off those checks if you're
 

00:21:54.960 --> 00:21:57.590 align:start position:0%
you can turn off those checks if you're
sure<00:21:55.260><c> that</c><00:21:55.740><c> you</c><00:21:55.919><c> don't</c><00:21:56.039><c> need</c><00:21:56.159><c> them</c><00:21:56.400><c> but</c><00:21:57.299><c> and</c>

00:21:57.590 --> 00:21:57.600 align:start position:0%
sure that you don't need them but and
 

00:21:57.600 --> 00:21:59.930 align:start position:0%
sure that you don't need them but and
that'll<00:21:57.900><c> save</c><00:21:58.020><c> gas</c><00:21:58.260><c> but</c><00:21:58.679><c> once</c><00:21:58.980><c> again</c><00:21:59.100><c> that</c><00:21:59.580><c> can</c>

00:21:59.930 --> 00:21:59.940 align:start position:0%
that'll save gas but once again that can
 

00:21:59.940 --> 00:22:03.350 align:start position:0%
that'll save gas but once again that can
be<00:22:00.120><c> very</c><00:22:00.480><c> dangerous</c><00:22:00.840><c> and</c><00:22:01.559><c> as</c><00:22:01.799><c> far</c><00:22:02.039><c> as</c><00:22:02.360><c> uh</c>

00:22:03.350 --> 00:22:03.360 align:start position:0%
be very dangerous and as far as uh
 

00:22:03.360 --> 00:22:06.049 align:start position:0%
be very dangerous and as far as uh
resources<00:22:04.260><c> for</c><00:22:04.620><c> learning</c><00:22:05.220><c> UL</c><00:22:05.220><c> I</c><00:22:05.760><c> think</c><00:22:05.880><c> just</c>

00:22:06.049 --> 00:22:06.059 align:start position:0%
resources for learning UL I think just
 

00:22:06.059 --> 00:22:07.610 align:start position:0%
resources for learning UL I think just
like<00:22:06.179><c> reading</c><00:22:06.480><c> smart</c><00:22:06.659><c> contracts</c><00:22:07.200><c> and</c><00:22:07.440><c> trying</c>

00:22:07.610 --> 00:22:07.620 align:start position:0%
like reading smart contracts and trying
 

00:22:07.620 --> 00:22:08.930 align:start position:0%
like reading smart contracts and trying
to<00:22:07.740><c> figure</c><00:22:07.860><c> out</c><00:22:07.980><c> what's</c><00:22:08.220><c> going</c><00:22:08.340><c> on</c><00:22:08.520><c> there</c><00:22:08.700><c> is</c>

00:22:08.930 --> 00:22:08.940 align:start position:0%
to figure out what's going on there is
 

00:22:08.940 --> 00:22:10.250 align:start position:0%
to figure out what's going on there is
the<00:22:09.120><c> best</c><00:22:09.240><c> way</c><00:22:09.360><c> to</c><00:22:09.539><c> do</c><00:22:09.600><c> it</c><00:22:09.720><c> there</c><00:22:10.080><c> are</c>

00:22:10.250 --> 00:22:10.260 align:start position:0%
the best way to do it there are
 

00:22:10.260 --> 00:22:12.049 align:start position:0%
the best way to do it there are
unfortunately<00:22:10.679><c> no</c><00:22:11.100><c> good</c><00:22:11.340><c> resources</c><00:22:11.760><c> to</c><00:22:11.940><c> you</c>

00:22:12.049 --> 00:22:12.059 align:start position:0%
unfortunately no good resources to you
 

00:22:12.059 --> 00:22:14.029 align:start position:0%
unfortunately no good resources to you
or<00:22:12.179><c> to</c><00:22:12.419><c> learn</c><00:22:12.539><c> you</c><00:22:12.780><c> will</c><00:22:12.960><c> or</c><00:22:13.380><c> really</c><00:22:13.559><c> evm</c>

00:22:14.029 --> 00:22:14.039 align:start position:0%
or to learn you will or really evm
 

00:22:14.039 --> 00:22:16.610 align:start position:0%
or to learn you will or really evm
assembly<00:22:14.460><c> and</c><00:22:14.940><c> which</c><00:22:15.179><c> is</c><00:22:15.360><c> that</c><00:22:16.080><c> I</c><00:22:16.320><c> want</c><00:22:16.440><c> to</c>

00:22:16.610 --> 00:22:16.620 align:start position:0%
assembly and which is that I want to
 

00:22:16.620 --> 00:22:20.570 align:start position:0%
assembly and which is that I want to
just<00:22:16.860><c> talk</c><00:22:17.100><c> just</c><00:22:17.460><c> like</c><00:22:17.580><c> yeah</c>

00:22:20.570 --> 00:22:20.580 align:start position:0%
just talk just like yeah
 

00:22:20.580 --> 00:22:23.270 align:start position:0%
just talk just like yeah
just<00:22:21.179><c> to</c><00:22:21.419><c> like</c><00:22:21.720><c> follow</c><00:22:21.900><c> up</c><00:22:22.080><c> on</c><00:22:22.260><c> that</c><00:22:22.500><c> have</c><00:22:23.159><c> you</c>

00:22:23.270 --> 00:22:23.280 align:start position:0%
just to like follow up on that have you
 

00:22:23.280 --> 00:22:28.190 align:start position:0%
just to like follow up on that have you
heard<00:22:23.520><c> of</c><00:22:24.179><c> um</c><00:22:24.240><c> trim</c><00:22:25.159><c> yeah</c><00:22:26.159><c> yeah</c><00:22:26.159><c> okay</c><00:22:27.059><c> so</c><00:22:27.539><c> my</c>

00:22:28.190 --> 00:22:28.200 align:start position:0%
heard of um trim yeah yeah okay so my
 

00:22:28.200 --> 00:22:30.350 align:start position:0%
heard of um trim yeah yeah okay so my
question<00:22:28.380><c> is</c><00:22:28.620><c> this</c><00:22:28.860><c> right</c><00:22:29.100><c> like</c><00:22:29.760><c> say</c><00:22:30.059><c> for</c>

00:22:30.350 --> 00:22:30.360 align:start position:0%
question is this right like say for
 

00:22:30.360 --> 00:22:34.190 align:start position:0%
question is this right like say for
instance<00:22:30.480><c> if</c><00:22:30.900><c> I'm</c><00:22:31.799><c> writing</c><00:22:32.340><c> trim</c><00:22:33.000><c> and</c><00:22:33.960><c> I'm</c>

00:22:34.190 --> 00:22:34.200 align:start position:0%
instance if I'm writing trim and I'm
 

00:22:34.200 --> 00:22:37.070 align:start position:0%
instance if I'm writing trim and I'm
basically<00:22:34.559><c> you</c><00:22:34.919><c> know</c><00:22:35.039><c> trans</c><00:22:35.940><c> transpiling</c><00:22:36.840><c> my</c>

00:22:37.070 --> 00:22:37.080 align:start position:0%
basically you know trans transpiling my
 

00:22:37.080 --> 00:22:40.310 align:start position:0%
basically you know trans transpiling my
smart<00:22:37.320><c> contract</c><00:22:37.799><c> into</c><00:22:38.100><c> into</c><00:22:38.580><c> trim</c><00:22:39.059><c> like</c>

00:22:40.310 --> 00:22:40.320 align:start position:0%
smart contract into into trim like
 

00:22:40.320 --> 00:22:43.010 align:start position:0%
smart contract into into trim like
um<00:22:40.919><c> what</c><00:22:41.520><c> are</c><00:22:41.640><c> the</c><00:22:41.760><c> I</c><00:22:42.120><c> guess</c><00:22:42.240><c> like</c><00:22:42.419><c> the</c><00:22:42.600><c> pros</c>

00:22:43.010 --> 00:22:43.020 align:start position:0%
um what are the I guess like the pros
 

00:22:43.020 --> 00:22:46.070 align:start position:0%
um what are the I guess like the pros
and<00:22:43.140><c> cons</c><00:22:43.320><c> to</c><00:22:43.740><c> that</c><00:22:43.980><c> as</c><00:22:44.580><c> opposed</c><00:22:44.940><c> to</c><00:22:45.000><c> doing</c><00:22:45.299><c> it</c>

00:22:46.070 --> 00:22:46.080 align:start position:0%
and cons to that as opposed to doing it
 

00:22:46.080 --> 00:22:47.990 align:start position:0%
and cons to that as opposed to doing it
um<00:22:46.140><c> you</c><00:22:46.620><c> know</c><00:22:46.740><c> your</c><00:22:46.980><c> style</c><00:22:47.280><c> like</c><00:22:47.580><c> within</c>

00:22:47.990 --> 00:22:48.000 align:start position:0%
um you know your style like within
 

00:22:48.000 --> 00:22:49.669 align:start position:0%
um you know your style like within
solidity<00:22:48.539><c> and</c><00:22:48.659><c> then</c><00:22:48.780><c> don't</c><00:22:49.020><c> use</c><00:22:49.200><c> Yule</c>

00:22:49.669 --> 00:22:49.679 align:start position:0%
solidity and then don't use Yule
 

00:22:49.679 --> 00:22:52.549 align:start position:0%
solidity and then don't use Yule
unfortunately<00:22:50.640><c> I</c><00:22:51.120><c> can't</c><00:22:51.299><c> uh</c><00:22:51.960><c> I</c><00:22:52.200><c> can't</c><00:22:52.380><c> answer</c>

00:22:52.549 --> 00:22:52.559 align:start position:0%
unfortunately I can't uh I can't answer
 

00:22:52.559 --> 00:22:53.870 align:start position:0%
unfortunately I can't uh I can't answer
that<00:22:52.740><c> question</c><00:22:52.919><c> because</c><00:22:53.159><c> I'm</c><00:22:53.400><c> not</c><00:22:53.520><c> familiar</c>

00:22:53.870 --> 00:22:53.880 align:start position:0%
that question because I'm not familiar
 

00:22:53.880 --> 00:22:56.090 align:start position:0%
that question because I'm not familiar
enough<00:22:54.000><c> with</c><00:22:54.179><c> trim</c><00:22:54.480><c> I</c><00:22:54.720><c> do</c><00:22:54.840><c> believe</c><00:22:55.080><c> that</c><00:22:55.620><c> uh</c>

00:22:56.090 --> 00:22:56.100 align:start position:0%
enough with trim I do believe that uh
 

00:22:56.100 --> 00:22:58.070 align:start position:0%
enough with trim I do believe that uh
Gilbert<00:22:56.520><c> was</c><00:22:56.940><c> the</c><00:22:57.179><c> the</c><00:22:57.419><c> person</c><00:22:57.720><c> that</c><00:22:57.960><c> I</c>

00:22:58.070 --> 00:22:58.080 align:start position:0%
Gilbert was the the person that I
 

00:22:58.080 --> 00:22:59.210 align:start position:0%
Gilbert was the the person that I
mentioned<00:22:58.200><c> anything</c><00:22:58.320><c> in</c><00:22:58.559><c> my</c><00:22:58.620><c> talk</c><00:22:58.799><c> was</c><00:22:59.039><c> the</c>

00:22:59.210 --> 00:22:59.220 align:start position:0%
mentioned anything in my talk was the
 

00:22:59.220 --> 00:23:01.250 align:start position:0%
mentioned anything in my talk was the
person<00:22:59.460><c> that</c><00:22:59.700><c> developed</c><00:23:00.120><c> trim</c>

00:23:01.250 --> 00:23:01.260 align:start position:0%
person that developed trim
 

00:23:01.260 --> 00:23:03.350 align:start position:0%
person that developed trim
um<00:23:01.380><c> or</c><00:23:01.860><c> one</c><00:23:02.400><c> of</c><00:23:02.520><c> the</c><00:23:02.640><c> developers</c><00:23:02.940><c> and</c><00:23:03.179><c> I</c><00:23:03.299><c> would</c>

00:23:03.350 --> 00:23:03.360 align:start position:0%
um or one of the developers and I would
 

00:23:03.360 --> 00:23:04.549 align:start position:0%
um or one of the developers and I would
encourage<00:23:03.600><c> you</c><00:23:03.720><c> to</c><00:23:03.840><c> reach</c><00:23:04.020><c> out</c><00:23:04.140><c> to</c><00:23:04.260><c> him</c><00:23:04.380><c> on</c>

00:23:04.549 --> 00:23:04.559 align:start position:0%
encourage you to reach out to him on
 

00:23:04.559 --> 00:23:06.710 align:start position:0%
encourage you to reach out to him on
Twitter<00:23:04.679><c> but</c><00:23:05.460><c> I'm</c><00:23:05.820><c> not</c><00:23:06.059><c> familiar</c><00:23:06.360><c> enough</c><00:23:06.539><c> with</c>

00:23:06.710 --> 00:23:06.720 align:start position:0%
Twitter but I'm not familiar enough with
 

00:23:06.720 --> 00:23:09.770 align:start position:0%
Twitter but I'm not familiar enough with
shrimp<00:23:07.140><c> to</c><00:23:07.320><c> answer</c><00:23:07.740><c> that</c><00:23:08.400><c> hey</c><00:23:09.059><c> thanks</c><00:23:09.419><c> for</c><00:23:09.600><c> the</c>

00:23:09.770 --> 00:23:09.780 align:start position:0%
shrimp to answer that hey thanks for the
 

00:23:09.780 --> 00:23:10.850 align:start position:0%
shrimp to answer that hey thanks for the
talk

00:23:10.850 --> 00:23:10.860 align:start position:0%
talk
 

00:23:10.860 --> 00:23:13.250 align:start position:0%
talk
um<00:23:10.980><c> I</c><00:23:11.520><c> saw</c><00:23:11.700><c> somebody</c><00:23:11.880><c> asked</c><00:23:12.299><c> about</c><00:23:12.419><c> you</c><00:23:12.720><c> today</c>

00:23:13.250 --> 00:23:13.260 align:start position:0%
um I saw somebody asked about you today
 

00:23:13.260 --> 00:23:15.169 align:start position:0%
um I saw somebody asked about you today
there<00:23:13.559><c> was</c><00:23:13.679><c> an</c><00:23:13.980><c> awesome</c><00:23:14.220><c> Workshop</c><00:23:14.700><c> about</c><00:23:14.940><c> that</c>

00:23:15.169 --> 00:23:15.179 align:start position:0%
there was an awesome Workshop about that
 

00:23:15.179 --> 00:23:17.090 align:start position:0%
there was an awesome Workshop about that
it's<00:23:15.539><c> like</c><00:23:15.780><c> two</c><00:23:15.900><c> hours</c><00:23:16.020><c> long</c><00:23:16.320><c> you</c><00:23:16.980><c> should</c>

00:23:17.090 --> 00:23:17.100 align:start position:0%
it's like two hours long you should
 

00:23:17.100 --> 00:23:19.490 align:start position:0%
it's like two hours long you should
watch<00:23:17.280><c> that</c><00:23:17.520><c> and</c><00:23:18.179><c> then</c><00:23:18.360><c> uh</c><00:23:18.780><c> I</c><00:23:19.020><c> had</c><00:23:19.200><c> a</c><00:23:19.320><c> question</c>

00:23:19.490 --> 00:23:19.500 align:start position:0%
watch that and then uh I had a question
 

00:23:19.500 --> 00:23:22.549 align:start position:0%
watch that and then uh I had a question
for<00:23:20.100><c> Optimizer</c><00:23:20.820><c> runs</c><00:23:21.179><c> what</c><00:23:21.840><c> number</c><00:23:22.080><c> do</c><00:23:22.380><c> you</c>

00:23:22.549 --> 00:23:22.559 align:start position:0%
for Optimizer runs what number do you
 

00:23:22.559 --> 00:23:23.690 align:start position:0%
for Optimizer runs what number do you
recommend

00:23:23.690 --> 00:23:23.700 align:start position:0%
recommend
 

00:23:23.700 --> 00:23:25.190 align:start position:0%
recommend
what<00:23:24.120><c> number</c>

00:23:25.190 --> 00:23:25.200 align:start position:0%
what number
 

00:23:25.200 --> 00:23:27.049 align:start position:0%
what number
um<00:23:25.320><c> I</c><00:23:25.740><c> just</c><00:23:25.860><c> choose</c><00:23:26.100><c> 200</c><00:23:26.460><c> because</c><00:23:26.760><c> it's</c>

00:23:27.049 --> 00:23:27.059 align:start position:0%
um I just choose 200 because it's
 

00:23:27.059 --> 00:23:29.090 align:start position:0%
um I just choose 200 because it's
standard<00:23:27.419><c> I</c><00:23:27.659><c> know</c><00:23:27.780><c> there's</c><00:23:28.380><c> I</c><00:23:28.860><c> know</c><00:23:28.980><c> that</c>

00:23:29.090 --> 00:23:29.100 align:start position:0%
standard I know there's I know that
 

00:23:29.100 --> 00:23:30.590 align:start position:0%
standard I know there's I know that
there<00:23:29.340><c> is</c><00:23:29.460><c> a</c><00:23:29.640><c> or</c><00:23:29.820><c> it's</c><00:23:30.000><c> not</c><00:23:30.120><c> standard</c><00:23:30.480><c> it's</c>

00:23:30.590 --> 00:23:30.600 align:start position:0%
there is a or it's not standard it's
 

00:23:30.600 --> 00:23:31.909 align:start position:0%
there is a or it's not standard it's
just<00:23:30.720><c> like</c><00:23:30.840><c> standard</c><00:23:31.260><c> in</c><00:23:31.380><c> what</c><00:23:31.500><c> I've</c><00:23:31.620><c> written</c>

00:23:31.909 --> 00:23:31.919 align:start position:0%
just like standard in what I've written
 

00:23:31.919 --> 00:23:34.250 align:start position:0%
just like standard in what I've written
I<00:23:32.700><c> know</c><00:23:32.820><c> that</c><00:23:33.000><c> there</c><00:23:33.179><c> is</c><00:23:33.360><c> a</c><00:23:33.720><c> there's</c>

00:23:34.250 --> 00:23:34.260 align:start position:0%
I know that there is a there's
 

00:23:34.260 --> 00:23:37.130 align:start position:0%
I know that there is a there's
eventually<00:23:34.679><c> a</c><00:23:34.919><c> trade-off</c><00:23:35.220><c> size</c><00:23:35.460><c> between</c><00:23:36.140><c> uh</c>

00:23:37.130 --> 00:23:37.140 align:start position:0%
eventually a trade-off size between uh
 

00:23:37.140 --> 00:23:39.470 align:start position:0%
eventually a trade-off size between uh
contract<00:23:37.679><c> size</c><00:23:37.919><c> and</c><00:23:38.460><c> and</c><00:23:38.700><c> gas</c><00:23:39.000><c> efficiency</c>

00:23:39.470 --> 00:23:39.480 align:start position:0%
contract size and and gas efficiency
 

00:23:39.480 --> 00:23:41.690 align:start position:0%
contract size and and gas efficiency
that<00:23:39.720><c> you</c><00:23:39.840><c> get</c><00:23:39.900><c> if</c><00:23:40.080><c> you</c><00:23:40.260><c> set</c><00:23:40.440><c> your</c><00:23:40.860><c> Optimizer</c>

00:23:41.690 --> 00:23:41.700 align:start position:0%
that you get if you set your Optimizer
 

00:23:41.700 --> 00:23:44.750 align:start position:0%
that you get if you set your Optimizer
to<00:23:41.880><c> like</c><00:23:42.179><c> I</c><00:23:42.539><c> don't</c><00:23:42.600><c> know</c><00:23:42.720><c> 500</c><00:23:43.559><c> 000</c><00:23:43.679><c> a</c><00:23:43.860><c> million</c>

00:23:44.750 --> 00:23:44.760 align:start position:0%
to like I don't know 500 000 a million
 

00:23:44.760 --> 00:23:46.850 align:start position:0%
to like I don't know 500 000 a million
um<00:23:44.880><c> or</c><00:23:45.059><c> maybe</c><00:23:45.360><c> less</c><00:23:45.539><c> but</c><00:23:46.140><c> I</c><00:23:46.380><c> generally</c><00:23:46.620><c> go</c><00:23:46.740><c> with</c>

00:23:46.850 --> 00:23:46.860 align:start position:0%
um or maybe less but I generally go with
 

00:23:46.860 --> 00:23:50.149 align:start position:0%
um or maybe less but I generally go with
200.<00:23:48.000><c> um</c><00:23:48.000><c> I</c><00:23:48.539><c> don't</c><00:23:48.780><c> work</c><00:23:48.960><c> in</c><00:23:49.140><c> the</c><00:23:49.260><c> D5</c><00:23:49.500><c> space</c><00:23:49.799><c> so</c>

00:23:50.149 --> 00:23:50.159 align:start position:0%
200. um I don't work in the D5 space so
 

00:23:50.159 --> 00:23:52.730 align:start position:0%
200. um I don't work in the D5 space so
I'm<00:23:50.340><c> not</c><00:23:50.640><c> like</c><00:23:51.480><c> too</c><00:23:51.780><c> concerned</c><00:23:52.200><c> with</c><00:23:52.380><c> ultra</c>

00:23:52.730 --> 00:23:52.740 align:start position:0%
I'm not like too concerned with ultra
 

00:23:52.740 --> 00:23:55.250 align:start position:0%
I'm not like too concerned with ultra
Ultra<00:23:53.039><c> Ultra</c><00:23:53.340><c> optimization</c><00:23:53.880><c> but</c><00:23:54.419><c> 200</c><00:23:54.840><c> seems</c>

00:23:55.250 --> 00:23:55.260 align:start position:0%
Ultra Ultra optimization but 200 seems
 

00:23:55.260 --> 00:23:57.470 align:start position:0%
Ultra Ultra optimization but 200 seems
to<00:23:55.320><c> be</c><00:23:55.440><c> a</c><00:23:55.679><c> good</c><00:23:55.919><c> number</c><00:23:56.039><c> for</c><00:23:56.280><c> what</c><00:23:56.400><c> I'm</c><00:23:56.520><c> seeing</c>

00:23:57.470 --> 00:23:57.480 align:start position:0%
to be a good number for what I'm seeing
 

00:23:57.480 --> 00:23:59.870 align:start position:0%
to be a good number for what I'm seeing
if<00:23:58.020><c> that</c><00:23:58.260><c> was</c><00:23:58.380><c> it</c><00:23:58.559><c> thank</c><00:23:58.860><c> you</c><00:23:58.980><c> so</c><00:23:59.100><c> much</c><00:23:59.280><c> thank</c>

00:23:59.870 --> 00:23:59.880 align:start position:0%
if that was it thank you so much thank
 

00:23:59.880 --> 00:24:00.220 align:start position:0%
if that was it thank you so much thank
you<00:24:00.000><c> guys</c>

00:24:00.220 --> 00:24:00.230 align:start position:0%
you guys
 

00:24:00.230 --> 00:24:05.210 align:start position:0%
you guys
[Applause]

