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

00:00:13.749 --> 00:00:13.759 align:start position:0%
 
 

00:00:13.759 --> 00:00:16.970 align:start position:0%
 
math<00:00:14.759><c> this</c><00:00:15.059><c> is</c><00:00:15.240><c> also</c><00:00:15.540><c> developing</c><00:00:16.139><c> this</c><00:00:16.859><c> is</c>

00:00:16.970 --> 00:00:16.980 align:start position:0%
math this is also developing this is
 

00:00:16.980 --> 00:00:18.890 align:start position:0%
math this is also developing this is
also<00:00:17.220><c> tooling</c><00:00:17.520><c> for</c><00:00:17.699><c> developers</c><00:00:18.119><c> so</c><00:00:18.600><c> today</c><00:00:18.720><c> I'm</c>

00:00:18.890 --> 00:00:18.900 align:start position:0%
also tooling for developers so today I'm
 

00:00:18.900 --> 00:00:20.810 align:start position:0%
also tooling for developers so today I'm
going<00:00:19.020><c> to</c><00:00:19.140><c> present</c><00:00:19.320><c> Socrates</c><00:00:19.800><c> I'm</c><00:00:20.460><c> going</c><00:00:20.640><c> to</c>

00:00:20.810 --> 00:00:20.820 align:start position:0%
going to present Socrates I'm going to
 

00:00:20.820 --> 00:00:22.429 align:start position:0%
going to present Socrates I'm going to
give<00:00:20.939><c> a</c><00:00:21.180><c> quick</c><00:00:21.300><c> introduction</c><00:00:21.720><c> to</c><00:00:21.960><c> what</c><00:00:22.140><c> it</c><00:00:22.260><c> is</c>

00:00:22.429 --> 00:00:22.439 align:start position:0%
give a quick introduction to what it is
 

00:00:22.439 --> 00:00:25.550 align:start position:0%
give a quick introduction to what it is
for<00:00:23.160><c> those</c><00:00:23.460><c> of</c><00:00:23.640><c> you</c><00:00:24.000><c> who</c><00:00:24.300><c> don't</c><00:00:24.420><c> know</c><00:00:24.600><c> it</c><00:00:24.840><c> and</c>

00:00:25.550 --> 00:00:25.560 align:start position:0%
for those of you who don't know it and
 

00:00:25.560 --> 00:00:27.470 align:start position:0%
for those of you who don't know it and
then<00:00:25.740><c> I</c><00:00:25.920><c> will</c><00:00:26.160><c> present</c><00:00:26.760><c> a</c><00:00:27.000><c> few</c><00:00:27.119><c> things</c><00:00:27.240><c> that</c>

00:00:27.470 --> 00:00:27.480 align:start position:0%
then I will present a few things that
 

00:00:27.480 --> 00:00:28.730 align:start position:0%
then I will present a few things that
we've<00:00:27.720><c> been</c><00:00:27.840><c> working</c><00:00:28.019><c> on</c><00:00:28.199><c> and</c><00:00:28.380><c> that</c><00:00:28.619><c> I'm</c>

00:00:28.730 --> 00:00:28.740 align:start position:0%
we've been working on and that I'm
 

00:00:28.740 --> 00:00:31.970 align:start position:0%
we've been working on and that I'm
excited<00:00:29.099><c> to</c><00:00:29.220><c> share</c><00:00:29.939><c> so</c><00:00:30.359><c> what</c><00:00:30.539><c> is</c><00:00:30.660><c> Socrates</c><00:00:31.080><c> if</c>

00:00:31.970 --> 00:00:31.980 align:start position:0%
excited to share so what is Socrates if
 

00:00:31.980 --> 00:00:34.910 align:start position:0%
excited to share so what is Socrates if
you<00:00:32.040><c> want</c><00:00:32.220><c> to</c><00:00:32.340><c> program</c><00:00:32.960><c> snarks</c><00:00:33.960><c> today</c>

00:00:34.910 --> 00:00:34.920 align:start position:0%
you want to program snarks today
 

00:00:34.920 --> 00:00:36.770 align:start position:0%
you want to program snarks today
there's<00:00:35.460><c> different</c><00:00:35.700><c> tools</c><00:00:36.180><c> that</c><00:00:36.300><c> you</c><00:00:36.480><c> can</c><00:00:36.600><c> use</c>

00:00:36.770 --> 00:00:36.780 align:start position:0%
there's different tools that you can use
 

00:00:36.780 --> 00:00:39.049 align:start position:0%
there's different tools that you can use
maybe<00:00:37.140><c> some</c><00:00:37.440><c> of</c><00:00:37.559><c> you</c><00:00:37.680><c> have</c><00:00:37.800><c> heard</c><00:00:38.160><c> of</c><00:00:38.579><c> Socrates</c>

00:00:39.049 --> 00:00:39.059 align:start position:0%
maybe some of you have heard of Socrates
 

00:00:39.059 --> 00:00:41.030 align:start position:0%
maybe some of you have heard of Socrates
and<00:00:39.840><c> all</c><00:00:40.020><c> those</c><00:00:40.200><c> tools</c><00:00:40.559><c> have</c><00:00:40.800><c> different</c>

00:00:41.030 --> 00:00:41.040 align:start position:0%
and all those tools have different
 

00:00:41.040 --> 00:00:43.430 align:start position:0%
and all those tools have different
trade-offs<00:00:41.820><c> in</c><00:00:42.120><c> terms</c><00:00:42.360><c> of</c><00:00:42.540><c> power</c><00:00:43.079><c> that</c><00:00:43.320><c> they</c>

00:00:43.430 --> 00:00:43.440 align:start position:0%
trade-offs in terms of power that they
 

00:00:43.440 --> 00:00:45.290 align:start position:0%
trade-offs in terms of power that they
give<00:00:43.620><c> to</c><00:00:43.800><c> developers</c><00:00:44.280><c> and</c><00:00:44.579><c> how</c><00:00:44.820><c> easy</c><00:00:44.940><c> they</c><00:00:45.180><c> are</c>

00:00:45.290 --> 00:00:45.300 align:start position:0%
give to developers and how easy they are
 

00:00:45.300 --> 00:00:47.330 align:start position:0%
give to developers and how easy they are
to<00:00:45.480><c> use</c><00:00:45.600><c> and</c><00:00:45.780><c> how</c><00:00:46.020><c> high</c><00:00:46.620><c> level</c><00:00:46.800><c> or</c><00:00:47.040><c> low</c><00:00:47.219><c> level</c>

00:00:47.330 --> 00:00:47.340 align:start position:0%
to use and how high level or low level
 

00:00:47.340 --> 00:00:49.330 align:start position:0%
to use and how high level or low level
they<00:00:47.640><c> are</c><00:00:47.820><c> Socrates</c>

00:00:49.330 --> 00:00:49.340 align:start position:0%
they are Socrates
 

00:00:49.340 --> 00:00:52.430 align:start position:0%
they are Socrates
has<00:00:50.340><c> a</c><00:00:50.520><c> positioning</c><00:00:50.940><c> as</c><00:00:51.180><c> a</c><00:00:51.480><c> very</c><00:00:51.660><c> high</c><00:00:52.260><c> level</c>

00:00:52.430 --> 00:00:52.440 align:start position:0%
has a positioning as a very high level
 

00:00:52.440 --> 00:00:55.189 align:start position:0%
has a positioning as a very high level
language<00:00:53.340><c> so</c><00:00:54.180><c> when</c><00:00:54.300><c> you</c><00:00:54.420><c> write</c><00:00:54.539><c> Socrates</c><00:00:54.899><c> it</c>

00:00:55.189 --> 00:00:55.199 align:start position:0%
language so when you write Socrates it
 

00:00:55.199 --> 00:00:57.229 align:start position:0%
language so when you write Socrates it
looks<00:00:55.559><c> very</c><00:00:55.680><c> similar</c><00:00:56.100><c> to</c><00:00:56.280><c> if</c><00:00:56.879><c> you</c><00:00:57.120><c> were</c>

00:00:57.229 --> 00:00:57.239 align:start position:0%
looks very similar to if you were
 

00:00:57.239 --> 00:00:59.510 align:start position:0%
looks very similar to if you were
writing<00:00:57.539><c> rust</c><00:00:58.020><c> or</c><00:00:58.379><c> python</c><00:00:58.920><c> or</c><00:00:59.100><c> something</c><00:00:59.280><c> like</c>

00:00:59.510 --> 00:00:59.520 align:start position:0%
writing rust or python or something like
 

00:00:59.520 --> 00:01:03.410 align:start position:0%
writing rust or python or something like
that<00:00:59.640><c> it</c><00:01:00.539><c> compiles</c><00:01:00.899><c> to</c><00:01:01.020><c> r1cs</c><00:01:01.800><c> so</c><00:01:02.399><c> this</c><00:01:02.760><c> is</c><00:01:02.940><c> uh</c>

00:01:03.410 --> 00:01:03.420 align:start position:0%
that it compiles to r1cs so this is uh
 

00:01:03.420 --> 00:01:05.570 align:start position:0%
that it compiles to r1cs so this is uh
the<00:01:03.600><c> kind</c><00:01:03.719><c> of</c><00:01:03.840><c> snarks</c><00:01:04.260><c> that</c><00:01:04.440><c> are</c><00:01:04.619><c> easy</c><00:01:05.220><c> to</c>

00:01:05.570 --> 00:01:05.580 align:start position:0%
the kind of snarks that are easy to
 

00:01:05.580 --> 00:01:08.330 align:start position:0%
the kind of snarks that are easy to
verify<00:01:06.000><c> today</c><00:01:06.540><c> on</c><00:01:07.020><c> ethereum</c><00:01:07.500><c> so</c><00:01:07.979><c> you</c><00:01:08.159><c> can</c>

00:01:08.330 --> 00:01:08.340 align:start position:0%
verify today on ethereum so you can
 

00:01:08.340 --> 00:01:10.310 align:start position:0%
verify today on ethereum so you can
verify<00:01:08.939><c> directly</c><00:01:09.299><c> in</c><00:01:09.479><c> your</c><00:01:09.659><c> smart</c><00:01:09.780><c> contracts</c>

00:01:10.310 --> 00:01:10.320 align:start position:0%
verify directly in your smart contracts
 

00:01:10.320 --> 00:01:13.910 align:start position:0%
verify directly in your smart contracts
it<00:01:11.159><c> uses</c><00:01:11.520><c> modular</c><00:01:12.320><c> backend</c><00:01:13.320><c> implementations</c>

00:01:13.910 --> 00:01:13.920 align:start position:0%
it uses modular backend implementations
 

00:01:13.920 --> 00:01:16.010 align:start position:0%
it uses modular backend implementations
which<00:01:14.460><c> means</c><00:01:14.700><c> that</c><00:01:14.880><c> rocket</c><00:01:15.360><c> is</c><00:01:15.540><c> does</c><00:01:15.840><c> not</c>

00:01:16.010 --> 00:01:16.020 align:start position:0%
which means that rocket is does not
 

00:01:16.020 --> 00:01:18.830 align:start position:0%
which means that rocket is does not
develop<00:01:16.439><c> a</c><00:01:16.979><c> proof</c><00:01:17.280><c> system</c><00:01:17.400><c> itself</c><00:01:17.939><c> but</c><00:01:18.540><c> rather</c>

00:01:18.830 --> 00:01:18.840 align:start position:0%
develop a proof system itself but rather
 

00:01:18.840 --> 00:01:20.030 align:start position:0%
develop a proof system itself but rather
uses

00:01:20.030 --> 00:01:20.040 align:start position:0%
uses
 

00:01:20.040 --> 00:01:21.830 align:start position:0%
uses
back-end<00:01:20.759><c> implementations</c><00:01:21.299><c> from</c><00:01:21.659><c> the</c>

00:01:21.830 --> 00:01:21.840 align:start position:0%
back-end implementations from the
 

00:01:21.840 --> 00:01:25.370 align:start position:0%
back-end implementations from the
community<00:01:22.020><c> for</c><00:01:22.799><c> different</c><00:01:22.979><c> proof</c><00:01:23.340><c> systems</c>

00:01:25.370 --> 00:01:25.380 align:start position:0%
community for different proof systems
 

00:01:25.380 --> 00:01:27.950 align:start position:0%
community for different proof systems
and<00:01:25.920><c> just</c><00:01:26.040><c> targets</c><00:01:26.580><c> that</c><00:01:26.759><c> and</c><00:01:27.180><c> uses</c><00:01:27.780><c> those</c>

00:01:27.950 --> 00:01:27.960 align:start position:0%
and just targets that and uses those
 

00:01:27.960 --> 00:01:30.490 align:start position:0%
and just targets that and uses those
great<00:01:28.200><c> implementations</c>

00:01:30.490 --> 00:01:30.500 align:start position:0%
great implementations
 

00:01:30.500 --> 00:01:32.810 align:start position:0%
great implementations
in<00:01:31.500><c> order</c><00:01:31.619><c> to</c><00:01:31.860><c> have</c><00:01:32.100><c> such</c><00:01:32.400><c> a</c><00:01:32.520><c> high</c><00:01:32.640><c> level</c>

00:01:32.810 --> 00:01:32.820 align:start position:0%
in order to have such a high level
 

00:01:32.820 --> 00:01:35.510 align:start position:0%
in order to have such a high level
language<00:01:33.680><c> but</c><00:01:34.680><c> still</c><00:01:34.860><c> have</c><00:01:35.040><c> something</c><00:01:35.220><c> that's</c>

00:01:35.510 --> 00:01:35.520 align:start position:0%
language but still have something that's
 

00:01:35.520 --> 00:01:38.230 align:start position:0%
language but still have something that's
really<00:01:35.700><c> efficient</c><00:01:36.240><c> at</c><00:01:36.960><c> the</c><00:01:37.020><c> at</c><00:01:37.259><c> the</c><00:01:37.380><c> low</c><00:01:37.560><c> level</c>

00:01:38.230 --> 00:01:38.240 align:start position:0%
really efficient at the at the low level
 

00:01:38.240 --> 00:01:41.990 align:start position:0%
really efficient at the at the low level
zocoties<00:01:39.240><c> Max</c><00:01:39.479><c> use</c><00:01:39.780><c> of</c><00:01:40.520><c> optimizations</c><00:01:41.520><c> in</c><00:01:41.880><c> the</c>

00:01:41.990 --> 00:01:42.000 align:start position:0%
zocoties Max use of optimizations in the
 

00:01:42.000 --> 00:01:44.390 align:start position:0%
zocoties Max use of optimizations in the
compiler<00:01:42.900><c> which</c><00:01:43.380><c> is</c><00:01:43.500><c> something</c><00:01:43.740><c> that's</c><00:01:44.040><c> also</c>

00:01:44.390 --> 00:01:44.400 align:start position:0%
compiler which is something that's also
 

00:01:44.400 --> 00:01:46.730 align:start position:0%
compiler which is something that's also
different<00:01:44.520><c> from</c><00:01:44.880><c> some</c><00:01:45.060><c> other</c><00:01:45.240><c> tools</c><00:01:45.740><c> which</c>

00:01:46.730 --> 00:01:46.740 align:start position:0%
different from some other tools which
 

00:01:46.740 --> 00:01:49.249 align:start position:0%
different from some other tools which
give<00:01:47.220><c> you</c><00:01:47.400><c> a</c><00:01:47.640><c> very</c><00:01:47.700><c> low</c><00:01:47.939><c> level</c><00:01:48.119><c> access</c><00:01:48.720><c> to</c>

00:01:49.249 --> 00:01:49.259 align:start position:0%
give you a very low level access to
 

00:01:49.259 --> 00:01:51.670 align:start position:0%
give you a very low level access to
what's<00:01:49.680><c> going</c><00:01:49.920><c> on</c><00:01:50.100><c> on</c><00:01:50.579><c> the</c><00:01:50.759><c> constraint</c><00:01:51.060><c> level</c>

00:01:51.670 --> 00:01:51.680 align:start position:0%
what's going on on the constraint level
 

00:01:51.680 --> 00:01:53.690 align:start position:0%
what's going on on the constraint level
but<00:01:52.680><c> don't</c><00:01:52.799><c> really</c><00:01:52.979><c> apply</c><00:01:53.340><c> a</c><00:01:53.520><c> lot</c><00:01:53.640><c> of</c>

00:01:53.690 --> 00:01:53.700 align:start position:0%
but don't really apply a lot of
 

00:01:53.700 --> 00:01:55.670 align:start position:0%
but don't really apply a lot of
optimizations

00:01:55.670 --> 00:01:55.680 align:start position:0%
optimizations
 

00:01:55.680 --> 00:01:58.429 align:start position:0%
optimizations
um so<00:01:55.920><c> where</c><00:01:56.100><c> does</c><00:01:56.280><c> it</c><00:01:56.399><c> run</c><00:01:56.579><c> so</c><00:01:57.479><c> the</c><00:01:58.200><c> part</c><00:01:58.320><c> of</c>

00:01:58.429 --> 00:01:58.439 align:start position:0%
um so where does it run so the part of
 

00:01:58.439 --> 00:02:00.770 align:start position:0%
um so where does it run so the part of
Socrates<00:01:58.860><c> uh</c><00:01:59.579><c> which</c><00:01:59.820><c> allows</c><00:02:00.180><c> you</c><00:02:00.240><c> to</c><00:02:00.420><c> compile</c>

00:02:00.770 --> 00:02:00.780 align:start position:0%
Socrates uh which allows you to compile
 

00:02:00.780 --> 00:02:03.649 align:start position:0%
Socrates uh which allows you to compile
so<00:02:01.079><c> the</c><00:02:01.259><c> compiler</c><00:02:01.680><c> you</c><00:02:02.520><c> can</c><00:02:02.579><c> run</c><00:02:02.759><c> it</c><00:02:03.000><c> natively</c>

00:02:03.649 --> 00:02:03.659 align:start position:0%
so the compiler you can run it natively
 

00:02:03.659 --> 00:02:06.050 align:start position:0%
so the compiler you can run it natively
on<00:02:03.960><c> your</c><00:02:04.140><c> machine</c><00:02:04.320><c> we</c><00:02:04.860><c> have</c><00:02:04.979><c> a</c><00:02:05.219><c> remix</c><00:02:05.399><c> plugin</c>

00:02:06.050 --> 00:02:06.060 align:start position:0%
on your machine we have a remix plugin
 

00:02:06.060 --> 00:02:08.330 align:start position:0%
on your machine we have a remix plugin
as<00:02:06.299><c> well</c><00:02:06.420><c> and</c><00:02:06.960><c> we</c><00:02:07.140><c> also</c><00:02:07.380><c> now</c><00:02:07.560><c> have</c><00:02:07.920><c> a</c>

00:02:08.330 --> 00:02:08.340 align:start position:0%
as well and we also now have a
 

00:02:08.340 --> 00:02:10.669 align:start position:0%
as well and we also now have a
playground<00:02:08.759><c> that</c><00:02:09.119><c> you</c><00:02:09.179><c> can</c><00:02:09.360><c> access</c><00:02:09.539><c> at</c><00:02:10.319><c> play</c>

00:02:10.669 --> 00:02:10.679 align:start position:0%
playground that you can access at play
 

00:02:10.679 --> 00:02:13.729 align:start position:0%
playground that you can access at play
dot<00:02:11.099><c> socrate.es</c><00:02:11.900><c> which</c><00:02:12.900><c> I</c><00:02:13.080><c> encourage</c><00:02:13.379><c> you</c><00:02:13.500><c> to</c>

00:02:13.729 --> 00:02:13.739 align:start position:0%
dot socrate.es which I encourage you to
 

00:02:13.739 --> 00:02:15.830 align:start position:0%
dot socrate.es which I encourage you to
to<00:02:14.160><c> start</c><00:02:14.459><c> that's</c><00:02:14.879><c> probably</c><00:02:15.120><c> the</c><00:02:15.360><c> easiest</c><00:02:15.599><c> way</c>

00:02:15.830 --> 00:02:15.840 align:start position:0%
to start that's probably the easiest way
 

00:02:15.840 --> 00:02:17.270 align:start position:0%
to start that's probably the easiest way
to<00:02:15.959><c> get</c><00:02:16.080><c> started</c><00:02:16.379><c> with</c><00:02:16.500><c> Socrates</c><00:02:16.860><c> and</c><00:02:17.099><c> just</c>

00:02:17.270 --> 00:02:17.280 align:start position:0%
to get started with Socrates and just
 

00:02:17.280 --> 00:02:19.309 align:start position:0%
to get started with Socrates and just
write<00:02:17.400><c> some</c><00:02:17.580><c> simple</c><00:02:17.819><c> programs</c>

00:02:19.309 --> 00:02:19.319 align:start position:0%
write some simple programs
 

00:02:19.319 --> 00:02:20.690 align:start position:0%
write some simple programs
um<00:02:19.379><c> in</c><00:02:19.620><c> terms</c><00:02:19.800><c> of</c><00:02:19.860><c> the</c><00:02:20.040><c> schemes</c><00:02:20.340><c> so</c><00:02:20.459><c> there's</c>

00:02:20.690 --> 00:02:20.700 align:start position:0%
um in terms of the schemes so there's
 

00:02:20.700 --> 00:02:22.190 align:start position:0%
um in terms of the schemes so there's
back-end<00:02:21.000><c> implementations</c><00:02:21.480><c> that</c><00:02:21.780><c> we</c><00:02:21.959><c> support</c>

00:02:22.190 --> 00:02:22.200 align:start position:0%
back-end implementations that we support
 

00:02:22.200 --> 00:02:24.949 align:start position:0%
back-end implementations that we support
we<00:02:23.160><c> currently</c><00:02:23.459><c> have</c><00:02:23.700><c> support</c><00:02:23.940><c> for</c><00:02:24.300><c> a</c><00:02:24.420><c> graph</c><00:02:24.660><c> 16</c>

00:02:24.949 --> 00:02:24.959 align:start position:0%
we currently have support for a graph 16
 

00:02:24.959 --> 00:02:29.470 align:start position:0%
we currently have support for a graph 16
which<00:02:25.739><c> is</c><00:02:26.420><c> some</c><00:02:27.420><c> of</c><00:02:27.599><c> you</c><00:02:27.660><c> may</c><00:02:27.959><c> know</c><00:02:28.200><c> the</c><00:02:28.620><c> the</c>

00:02:29.470 --> 00:02:29.480 align:start position:0%
which is some of you may know the the
 

00:02:29.480 --> 00:02:31.970 align:start position:0%
which is some of you may know the the
snark<00:02:30.480><c> that</c><00:02:30.720><c> is</c><00:02:30.900><c> the</c><00:02:31.080><c> smallest</c>

00:02:31.970 --> 00:02:31.980 align:start position:0%
snark that is the smallest
 

00:02:31.980 --> 00:02:35.630 align:start position:0%
snark that is the smallest
and<00:02:32.640><c> the</c><00:02:32.819><c> fastest</c><00:02:33.120><c> to</c><00:02:33.300><c> verify</c><00:02:34.080><c> for</c><00:02:34.500><c> gm17</c><00:02:35.220><c> which</c>

00:02:35.630 --> 00:02:35.640 align:start position:0%
and the fastest to verify for gm17 which
 

00:02:35.640 --> 00:02:37.250 align:start position:0%
and the fastest to verify for gm17 which
is<00:02:35.760><c> an</c><00:02:35.940><c> uh</c>

00:02:37.250 --> 00:02:37.260 align:start position:0%
is an uh
 

00:02:37.260 --> 00:02:39.530 align:start position:0%
is an uh
an<00:02:37.319><c> evolution</c><00:02:37.920><c> of</c><00:02:38.160><c> graph</c><00:02:38.280><c> 16</c><00:02:38.580><c> let's</c><00:02:39.000><c> say</c><00:02:39.120><c> for</c>

00:02:39.530 --> 00:02:39.540 align:start position:0%
an evolution of graph 16 let's say for
 

00:02:39.540 --> 00:02:42.070 align:start position:0%
an evolution of graph 16 let's say for
Moreland<00:02:40.080><c> which</c><00:02:40.319><c> is</c><00:02:40.500><c> a</c><00:02:41.040><c> universal</c><00:02:41.700><c> snark</c>

00:02:42.070 --> 00:02:42.080 align:start position:0%
Moreland which is a universal snark
 

00:02:42.080 --> 00:02:44.869 align:start position:0%
Moreland which is a universal snark
which<00:02:43.080><c> I'll</c><00:02:43.260><c> touch</c><00:02:43.440><c> on</c><00:02:43.620><c> a</c><00:02:43.800><c> bit</c><00:02:43.920><c> later</c>

00:02:44.869 --> 00:02:44.879 align:start position:0%
which I'll touch on a bit later
 

00:02:44.879 --> 00:02:47.390 align:start position:0%
which I'll touch on a bit later
and<00:02:45.300><c> for</c><00:02:45.420><c> Nova</c><00:02:45.840><c> which</c><00:02:46.080><c> I</c><00:02:46.260><c> also</c><00:02:46.500><c> go</c><00:02:46.680><c> into</c><00:02:46.860><c> which</c>

00:02:47.390 --> 00:02:47.400 align:start position:0%
and for Nova which I also go into which
 

00:02:47.400 --> 00:02:49.670 align:start position:0%
and for Nova which I also go into which
is<00:02:47.519><c> a</c><00:02:47.700><c> new</c><00:02:47.819><c> type</c><00:02:48.120><c> of</c><00:02:48.480><c> exciting</c><00:02:48.959><c> snark</c><00:02:49.319><c> that</c>

00:02:49.670 --> 00:02:49.680 align:start position:0%
is a new type of exciting snark that
 

00:02:49.680 --> 00:02:52.250 align:start position:0%
is a new type of exciting snark that
enables<00:02:50.099><c> new</c><00:02:50.400><c> use</c><00:02:50.700><c> cases</c>

00:02:52.250 --> 00:02:52.260 align:start position:0%
enables new use cases
 

00:02:52.260 --> 00:02:54.470 align:start position:0%
enables new use cases
for<00:02:52.980><c> proving</c><00:02:53.459><c> so</c><00:02:53.940><c> the</c><00:02:54.180><c> particular</c>

00:02:54.470 --> 00:02:54.480 align:start position:0%
for proving so the particular
 

00:02:54.480 --> 00:02:56.809 align:start position:0%
for proving so the particular
implementations<00:02:55.080><c> we</c><00:02:55.440><c> rely</c><00:02:55.739><c> on</c><00:02:55.920><c> Bellman</c><00:02:56.340><c> Arc</c>

00:02:56.809 --> 00:02:56.819 align:start position:0%
implementations we rely on Bellman Arc
 

00:02:56.819 --> 00:02:59.470 align:start position:0%
implementations we rely on Bellman Arc
Bel<00:02:57.120><c> person</c><00:02:57.360><c> and</c><00:02:57.599><c> also</c><00:02:57.840><c> snark.js</c>

00:02:59.470 --> 00:02:59.480 align:start position:0%
Bel person and also snark.js
 

00:02:59.480 --> 00:03:02.809 align:start position:0%
Bel person and also snark.js
I'll<00:03:00.480><c> also</c><00:03:00.720><c> go</c><00:03:00.959><c> into</c><00:03:01.379><c> a</c><00:03:01.620><c> bit</c><00:03:01.739><c> more</c><00:03:01.920><c> detail</c><00:03:02.340><c> on</c>

00:03:02.809 --> 00:03:02.819 align:start position:0%
I'll also go into a bit more detail on
 

00:03:02.819 --> 00:03:04.850 align:start position:0%
I'll also go into a bit more detail on
on<00:03:03.060><c> that</c><00:03:03.540><c> integration</c>

00:03:04.850 --> 00:03:04.860 align:start position:0%
on that integration
 

00:03:04.860 --> 00:03:07.729 align:start position:0%
on that integration
and<00:03:05.340><c> in</c><00:03:05.519><c> terms</c><00:03:05.700><c> of</c><00:03:05.760><c> the</c><00:03:05.940><c> verifier</c><00:03:06.420><c> we</c><00:03:06.840><c> have</c><00:03:07.019><c> you</c>

00:03:07.729 --> 00:03:07.739 align:start position:0%
and in terms of the verifier we have you
 

00:03:07.739 --> 00:03:09.710 align:start position:0%
and in terms of the verifier we have you
can<00:03:07.860><c> verify</c><00:03:08.280><c> in</c><00:03:08.580><c> JavaScript</c><00:03:09.000><c> or</c><00:03:09.239><c> in</c><00:03:09.420><c> this</c><00:03:09.480><c> in</c>

00:03:09.710 --> 00:03:09.720 align:start position:0%
can verify in JavaScript or in this in
 

00:03:09.720 --> 00:03:12.589 align:start position:0%
can verify in JavaScript or in this in
the<00:03:09.959><c> CLI</c><00:03:10.379><c> and</c><00:03:10.980><c> for</c><00:03:11.159><c> some</c><00:03:11.340><c> of</c><00:03:11.519><c> the</c><00:03:11.700><c> schemes</c><00:03:12.120><c> that</c>

00:03:12.589 --> 00:03:12.599 align:start position:0%
the CLI and for some of the schemes that
 

00:03:12.599 --> 00:03:15.949 align:start position:0%
the CLI and for some of the schemes that
are<00:03:12.720><c> compatible</c><00:03:13.080><c> with</c><00:03:13.560><c> devm</c><00:03:14.519><c> we</c><00:03:15.120><c> generate</c><00:03:15.599><c> a</c>

00:03:15.949 --> 00:03:15.959 align:start position:0%
are compatible with devm we generate a
 

00:03:15.959 --> 00:03:17.630 align:start position:0%
are compatible with devm we generate a
verifier<00:03:16.379><c> contract</c><00:03:16.800><c> so</c><00:03:17.220><c> that</c><00:03:17.400><c> you</c><00:03:17.519><c> can</c>

00:03:17.630 --> 00:03:17.640 align:start position:0%
verifier contract so that you can
 

00:03:17.640 --> 00:03:20.390 align:start position:0%
verifier contract so that you can
directly<00:03:18.120><c> send</c><00:03:18.959><c> your</c><00:03:19.140><c> proofs</c><00:03:19.500><c> to</c><00:03:19.860><c> your</c><00:03:20.220><c> smart</c>

00:03:20.390 --> 00:03:20.400 align:start position:0%
directly send your proofs to your smart
 

00:03:20.400 --> 00:03:23.030 align:start position:0%
directly send your proofs to your smart
contracts<00:03:20.879><c> and</c><00:03:21.060><c> verify</c><00:03:21.540><c> them</c><00:03:21.720><c> and</c><00:03:22.019><c> and</c><00:03:22.319><c> Link</c>

00:03:23.030 --> 00:03:23.040 align:start position:0%
contracts and verify them and and Link
 

00:03:23.040 --> 00:03:24.649 align:start position:0%
contracts and verify them and and Link
them<00:03:23.220><c> to</c><00:03:23.400><c> your</c><00:03:23.519><c> dab</c>

00:03:24.649 --> 00:03:24.659 align:start position:0%
them to your dab
 

00:03:24.659 --> 00:03:26.949 align:start position:0%
them to your dab
so<00:03:25.019><c> to</c><00:03:25.200><c> give</c><00:03:25.379><c> a</c><00:03:25.620><c> bit</c><00:03:25.680><c> of</c><00:03:25.800><c> a</c><00:03:25.920><c> Hello</c><00:03:26.040><c> word</c><00:03:26.400><c> of</c>

00:03:26.949 --> 00:03:26.959 align:start position:0%
so to give a bit of a Hello word of
 

00:03:26.959 --> 00:03:31.250 align:start position:0%
so to give a bit of a Hello word of
zocoties<00:03:27.959><c> here's</c><00:03:28.700><c> a</c><00:03:29.700><c> a</c><00:03:29.760><c> program</c><00:03:30.120><c> which</c><00:03:30.959><c> takes</c>

00:03:31.250 --> 00:03:31.260 align:start position:0%
zocoties here's a a program which takes
 

00:03:31.260 --> 00:03:34.309 align:start position:0%
zocoties here's a a program which takes
two<00:03:31.980><c> private</c><00:03:32.400><c> inputs</c><00:03:32.940><c> A</c><00:03:33.180><c> and</c><00:03:33.360><c> B</c>

00:03:34.309 --> 00:03:34.319 align:start position:0%
two private inputs A and B
 

00:03:34.319 --> 00:03:38.930 align:start position:0%
two private inputs A and B
and<00:03:34.860><c> one</c><00:03:35.099><c> public</c><00:03:35.340><c> input</c><00:03:35.940><c> C</c><00:03:36.440><c> and</c><00:03:37.440><c> then</c><00:03:37.940><c> asserts</c>

00:03:38.930 --> 00:03:38.940 align:start position:0%
and one public input C and then asserts
 

00:03:38.940 --> 00:03:41.630 align:start position:0%
and one public input C and then asserts
that<00:03:39.060><c> a</c><00:03:39.300><c> times</c><00:03:39.480><c> B</c><00:03:39.840><c> is</c><00:03:40.260><c> equals</c><00:03:40.680><c> to</c><00:03:40.739><c> C</c><00:03:40.980><c> so</c>

00:03:41.630 --> 00:03:41.640 align:start position:0%
that a times B is equals to C so
 

00:03:41.640 --> 00:03:43.369 align:start position:0%
that a times B is equals to C so
technically<00:03:42.060><c> this</c><00:03:42.299><c> is</c><00:03:42.420><c> a</c><00:03:42.599><c> program</c><00:03:42.720><c> where</c><00:03:43.080><c> with</c>

00:03:43.369 --> 00:03:43.379 align:start position:0%
technically this is a program where with
 

00:03:43.379 --> 00:03:44.750 align:start position:0%
technically this is a program where with
which<00:03:43.620><c> you</c><00:03:43.799><c> can</c><00:03:43.920><c> prove</c><00:03:44.220><c> that</c><00:03:44.340><c> you</c><00:03:44.519><c> know</c><00:03:44.640><c> the</c>

00:03:44.750 --> 00:03:44.760 align:start position:0%
which you can prove that you know the
 

00:03:44.760 --> 00:03:48.350 align:start position:0%
which you can prove that you know the
factorization<00:03:45.360><c> of</c><00:03:46.319><c> a</c><00:03:46.500><c> number</c><00:03:47.060><c> the</c><00:03:48.060><c> way</c><00:03:48.180><c> you</c>

00:03:48.350 --> 00:03:48.360 align:start position:0%
factorization of a number the way you
 

00:03:48.360 --> 00:03:50.149 align:start position:0%
factorization of a number the way you
would<00:03:48.599><c> run</c><00:03:49.140><c> that</c><00:03:49.319><c> is</c><00:03:49.500><c> you</c><00:03:49.680><c> would</c><00:03:49.860><c> first</c>

00:03:50.149 --> 00:03:50.159 align:start position:0%
would run that is you would first
 

00:03:50.159 --> 00:03:53.869 align:start position:0%
would run that is you would first
compile<00:03:50.760><c> that</c><00:03:51.360><c> program</c><00:03:51.599><c> which</c><00:03:52.560><c> would</c><00:03:52.980><c> turn</c><00:03:53.700><c> it</c>

00:03:53.869 --> 00:03:53.879 align:start position:0%
compile that program which would turn it
 

00:03:53.879 --> 00:03:56.270 align:start position:0%
compile that program which would turn it
into<00:03:54.120><c> this</c><00:03:54.420><c> low</c><00:03:54.599><c> level</c><00:03:54.780><c> representation</c><00:03:55.379><c> uh</c>

00:03:56.270 --> 00:03:56.280 align:start position:0%
into this low level representation uh
 

00:03:56.280 --> 00:03:58.729 align:start position:0%
into this low level representation uh
that's<00:03:56.819><c> let's</c><00:03:57.299><c> say</c><00:03:57.420><c> r1cs</c>

00:03:58.729 --> 00:03:58.739 align:start position:0%
that's let's say r1cs
 

00:03:58.739 --> 00:04:00.830 align:start position:0%
that's let's say r1cs
then<00:03:59.340><c> you</c><00:03:59.519><c> could</c><00:03:59.700><c> execute</c><00:04:00.120><c> that</c><00:04:00.360><c> program</c><00:04:00.480><c> with</c>

00:04:00.830 --> 00:04:00.840 align:start position:0%
then you could execute that program with
 

00:04:00.840 --> 00:04:03.890 align:start position:0%
then you could execute that program with
an<00:04:00.959><c> input</c><00:04:01.319><c> here</c><00:04:01.620><c> three</c><00:04:02.280><c> three</c><00:04:02.519><c> and</c><00:04:02.700><c> nine</c><00:04:03.420><c> then</c>

00:04:03.890 --> 00:04:03.900 align:start position:0%
an input here three three and nine then
 

00:04:03.900 --> 00:04:06.050 align:start position:0%
an input here three three and nine then
you<00:04:04.019><c> could</c><00:04:04.140><c> generate</c><00:04:04.560><c> a</c><00:04:04.739><c> proof</c><00:04:05.220><c> using</c><00:04:05.760><c> a</c>

00:04:06.050 --> 00:04:06.060 align:start position:0%
you could generate a proof using a
 

00:04:06.060 --> 00:04:09.050 align:start position:0%
you could generate a proof using a
particular<00:04:06.360><c> proof</c><00:04:07.200><c> system</c><00:04:07.459><c> and</c><00:04:08.459><c> you</c><00:04:08.940><c> could</c>

00:04:09.050 --> 00:04:09.060 align:start position:0%
particular proof system and you could
 

00:04:09.060 --> 00:04:10.190 align:start position:0%
particular proof system and you could
also

00:04:10.190 --> 00:04:10.200 align:start position:0%
also
 

00:04:10.200 --> 00:04:12.350 align:start position:0%
also
generate<00:04:10.920><c> a</c><00:04:11.280><c> verifier</c><00:04:11.760><c> that</c><00:04:12.000><c> you</c><00:04:12.120><c> can</c><00:04:12.239><c> then</c>

00:04:12.350 --> 00:04:12.360 align:start position:0%
generate a verifier that you can then
 

00:04:12.360 --> 00:04:14.210 align:start position:0%
generate a verifier that you can then
Deploy<00:04:12.720><c> on</c><00:04:12.900><c> the</c><00:04:13.019><c> evm</c>

00:04:14.210 --> 00:04:14.220 align:start position:0%
Deploy on the evm
 

00:04:14.220 --> 00:04:16.009 align:start position:0%
Deploy on the evm
and<00:04:14.700><c> then</c><00:04:14.819><c> send</c><00:04:15.060><c> you</c><00:04:15.239><c> proof</c><00:04:15.540><c> to</c><00:04:15.659><c> and</c><00:04:15.900><c> then</c>

00:04:16.009 --> 00:04:16.019 align:start position:0%
and then send you proof to and then
 

00:04:16.019 --> 00:04:17.949 align:start position:0%
and then send you proof to and then
convince<00:04:16.500><c> basically</c><00:04:16.859><c> convince</c><00:04:17.340><c> the</c><00:04:17.519><c> network</c>

00:04:17.949 --> 00:04:17.959 align:start position:0%
convince basically convince the network
 

00:04:17.959 --> 00:04:20.090 align:start position:0%
convince basically convince the network
that<00:04:18.959><c> you</c><00:04:19.440><c> actually</c><00:04:19.560><c> knew</c><00:04:19.979><c> this</c>

00:04:20.090 --> 00:04:20.100 align:start position:0%
that you actually knew this
 

00:04:20.100 --> 00:04:22.310 align:start position:0%
that you actually knew this
factorization<00:04:20.699><c> for</c><00:04:21.600><c> an</c><00:04:21.780><c> example</c><00:04:22.019><c> if</c>

00:04:22.310 --> 00:04:22.320 align:start position:0%
factorization for an example if
 

00:04:22.320 --> 00:04:23.450 align:start position:0%
factorization for an example if
something<00:04:22.500><c> that's</c><00:04:22.800><c> a</c><00:04:22.979><c> little</c><00:04:23.040><c> bit</c><00:04:23.220><c> more</c>

00:04:23.450 --> 00:04:23.460 align:start position:0%
something that's a little bit more
 

00:04:23.460 --> 00:04:25.730 align:start position:0%
something that's a little bit more
advanced<00:04:23.940><c> to</c><00:04:24.720><c> make</c><00:04:24.840><c> the</c><00:04:25.020><c> point</c><00:04:25.139><c> that</c><00:04:25.320><c> this</c><00:04:25.560><c> is</c>

00:04:25.730 --> 00:04:25.740 align:start position:0%
advanced to make the point that this is
 

00:04:25.740 --> 00:04:27.430 align:start position:0%
advanced to make the point that this is
actually<00:04:25.919><c> a</c><00:04:26.280><c> high</c><00:04:26.400><c> level</c><00:04:26.580><c> language</c>

00:04:27.430 --> 00:04:27.440 align:start position:0%
actually a high level language
 

00:04:27.440 --> 00:04:30.110 align:start position:0%
actually a high level language
here's<00:04:28.440><c> the</c><00:04:28.620><c> implementation</c><00:04:29.280><c> and</c><00:04:29.639><c> Socrates</c>

00:04:30.110 --> 00:04:30.120 align:start position:0%
here's the implementation and Socrates
 

00:04:30.120 --> 00:04:32.450 align:start position:0%
here's the implementation and Socrates
of<00:04:30.479><c> the</c><00:04:30.600><c> shot</c><00:04:30.780><c> 256</c><00:04:31.380><c> function</c>

00:04:32.450 --> 00:04:32.460 align:start position:0%
of the shot 256 function
 

00:04:32.460 --> 00:04:34.490 align:start position:0%
of the shot 256 function
so<00:04:33.000><c> just</c><00:04:33.240><c> to</c><00:04:33.419><c> give</c><00:04:33.600><c> you</c><00:04:33.720><c> a</c><00:04:33.900><c> few</c><00:04:34.020><c> things</c><00:04:34.199><c> that</c>

00:04:34.490 --> 00:04:34.500 align:start position:0%
so just to give you a few things that
 

00:04:34.500 --> 00:04:36.530 align:start position:0%
so just to give you a few things that
are<00:04:34.680><c> expected</c><00:04:35.340><c> in</c><00:04:35.520><c> high</c><00:04:35.699><c> level</c><00:04:35.880><c> language</c><00:04:36.120><c> we</c>

00:04:36.530 --> 00:04:36.540 align:start position:0%
are expected in high level language we
 

00:04:36.540 --> 00:04:38.450 align:start position:0%
are expected in high level language we
have<00:04:36.660><c> a</c><00:04:36.960><c> module</c><00:04:37.259><c> import</c><00:04:37.500><c> system</c><00:04:37.919><c> you</c><00:04:38.280><c> can</c>

00:04:38.450 --> 00:04:38.460 align:start position:0%
have a module import system you can
 

00:04:38.460 --> 00:04:41.270 align:start position:0%
have a module import system you can
import<00:04:38.580><c> constants</c><00:04:39.180><c> as</c><00:04:39.419><c> well</c><00:04:39.979><c> we</c><00:04:40.979><c> have</c><00:04:41.040><c> for</c>

00:04:41.270 --> 00:04:41.280 align:start position:0%
import constants as well we have for
 

00:04:41.280 --> 00:04:43.610 align:start position:0%
import constants as well we have for
Loops<00:04:41.639><c> of</c><00:04:41.880><c> course</c><00:04:42.000><c> we</c><00:04:42.720><c> have</c><00:04:42.840><c> function</c><00:04:43.139><c> calls</c>

00:04:43.610 --> 00:04:43.620 align:start position:0%
Loops of course we have function calls
 

00:04:43.620 --> 00:04:45.950 align:start position:0%
Loops of course we have function calls
and<00:04:44.160><c> also</c><00:04:44.400><c> one</c><00:04:44.759><c> exciting</c><00:04:45.360><c> thing</c><00:04:45.600><c> that</c><00:04:45.900><c> we</c>

00:04:45.950 --> 00:04:45.960 align:start position:0%
and also one exciting thing that we
 

00:04:45.960 --> 00:04:47.689 align:start position:0%
and also one exciting thing that we
added<00:04:46.259><c> kind</c><00:04:46.500><c> of</c><00:04:46.620><c> recently</c><00:04:46.860><c> and</c><00:04:47.040><c> maybe</c><00:04:47.220><c> some</c><00:04:47.520><c> of</c>

00:04:47.689 --> 00:04:47.699 align:start position:0%
added kind of recently and maybe some of
 

00:04:47.699 --> 00:04:49.909 align:start position:0%
added kind of recently and maybe some of
you<00:04:47.820><c> who</c><00:04:48.300><c> use</c><00:04:48.479><c> rust</c><00:04:48.840><c> are</c><00:04:49.080><c> familiar</c><00:04:49.560><c> with</c><00:04:49.620><c> that</c>

00:04:49.909 --> 00:04:49.919 align:start position:0%
you who use rust are familiar with that
 

00:04:49.919 --> 00:04:52.490 align:start position:0%
you who use rust are familiar with that
feature<00:04:50.280><c> is</c><00:04:50.639><c> the</c><00:04:50.880><c> notion</c><00:04:51.180><c> of</c><00:04:51.500><c> constant</c>

00:04:52.490 --> 00:04:52.500 align:start position:0%
feature is the notion of constant
 

00:04:52.500 --> 00:04:55.570 align:start position:0%
feature is the notion of constant
generics<00:04:52.919><c> so</c><00:04:53.880><c> in</c><00:04:54.000><c> this</c><00:04:54.180><c> case</c><00:04:54.300><c> the</c><00:04:54.780><c> shot</c><00:04:55.259><c> 25</c>

00:04:55.570 --> 00:04:55.580 align:start position:0%
generics so in this case the shot 25
 

00:04:55.580 --> 00:04:58.790 align:start position:0%
generics so in this case the shot 25
shot<00:04:56.580><c> 256</c><00:04:57.240><c> function</c><00:04:57.660><c> is</c><00:04:58.259><c> a</c><00:04:58.380><c> hash</c><00:04:58.560><c> function</c>

00:04:58.790 --> 00:04:58.800 align:start position:0%
shot 256 function is a hash function
 

00:04:58.800 --> 00:05:00.830 align:start position:0%
shot 256 function is a hash function
that<00:04:59.040><c> can</c><00:04:59.280><c> take</c><00:04:59.460><c> an</c><00:05:00.000><c> arbitrary</c><00:05:00.419><c> number</c><00:05:00.660><c> of</c>

00:05:00.830 --> 00:05:00.840 align:start position:0%
that can take an arbitrary number of
 

00:05:00.840 --> 00:05:04.550 align:start position:0%
that can take an arbitrary number of
bytes<00:05:01.259><c> as</c><00:05:01.440><c> input</c><00:05:01.880><c> however</c><00:05:02.880><c> in</c><00:05:03.540><c> circuits</c><00:05:04.080><c> all</c>

00:05:04.550 --> 00:05:04.560 align:start position:0%
bytes as input however in circuits all
 

00:05:04.560 --> 00:05:07.430 align:start position:0%
bytes as input however in circuits all
the<00:05:04.680><c> inputs</c><00:05:05.040><c> are</c><00:05:05.100><c> always</c><00:05:05.280><c> static</c><00:05:06.180><c> so</c><00:05:06.960><c> all</c><00:05:07.320><c> of</c>

00:05:07.430 --> 00:05:07.440 align:start position:0%
the inputs are always static so all of
 

00:05:07.440 --> 00:05:10.370 align:start position:0%
the inputs are always static so all of
these<00:05:07.800><c> uh</c><00:05:08.460><c> the</c><00:05:08.759><c> size</c><00:05:08.880><c> of</c><00:05:09.120><c> the</c><00:05:09.240><c> input</c><00:05:09.600><c> will</c>

00:05:10.370 --> 00:05:10.380 align:start position:0%
these uh the size of the input will
 

00:05:10.380 --> 00:05:13.610 align:start position:0%
these uh the size of the input will
always<00:05:10.560><c> have</c><00:05:10.860><c> to</c><00:05:11.040><c> be</c><00:05:11.160><c> known</c><00:05:11.400><c> at</c><00:05:12.180><c> compile</c><00:05:13.020><c> time</c>

00:05:13.610 --> 00:05:13.620 align:start position:0%
always have to be known at compile time
 

00:05:13.620 --> 00:05:15.830 align:start position:0%
always have to be known at compile time
but<00:05:14.040><c> this</c><00:05:14.220><c> is</c><00:05:14.340><c> something</c><00:05:14.520><c> that</c><00:05:14.820><c> we</c><00:05:15.000><c> do</c><00:05:15.120><c> you</c><00:05:15.720><c> can</c>

00:05:15.830 --> 00:05:15.840 align:start position:0%
but this is something that we do you can
 

00:05:15.840 --> 00:05:18.170 align:start position:0%
but this is something that we do you can
still<00:05:15.960><c> Define</c><00:05:16.259><c> this</c><00:05:16.800><c> uh</c><00:05:17.400><c> as</c><00:05:17.580><c> something</c><00:05:17.820><c> that</c>

00:05:18.170 --> 00:05:18.180 align:start position:0%
still Define this uh as something that
 

00:05:18.180 --> 00:05:20.810 align:start position:0%
still Define this uh as something that
is<00:05:18.360><c> generic</c><00:05:18.960><c> over</c><00:05:19.199><c> K</c><00:05:19.500><c> and</c><00:05:20.040><c> then</c><00:05:20.220><c> have</c><00:05:20.400><c> a</c><00:05:20.699><c> number</c>

00:05:20.810 --> 00:05:20.820 align:start position:0%
is generic over K and then have a number
 

00:05:20.820 --> 00:05:24.350 align:start position:0%
is generic over K and then have a number
of<00:05:21.139><c> rounds</c><00:05:22.139><c> of</c><00:05:22.380><c> this</c><00:05:22.620><c> sha</c><00:05:22.979><c> round</c><00:05:23.160><c> function</c>

00:05:24.350 --> 00:05:24.360 align:start position:0%
of rounds of this sha round function
 

00:05:24.360 --> 00:05:25.909 align:start position:0%
of rounds of this sha round function
but<00:05:24.780><c> then</c><00:05:24.900><c> when</c><00:05:25.080><c> you</c><00:05:25.199><c> compile</c><00:05:25.500><c> your</c><00:05:25.740><c> program</c>

00:05:25.909 --> 00:05:25.919 align:start position:0%
but then when you compile your program
 

00:05:25.919 --> 00:05:28.010 align:start position:0%
but then when you compile your program
and<00:05:26.160><c> actually</c><00:05:26.460><c> use</c><00:05:26.880><c> the</c><00:05:27.120><c> function</c><00:05:27.479><c> the</c><00:05:27.840><c> shot</c>

00:05:28.010 --> 00:05:28.020 align:start position:0%
and actually use the function the shot
 

00:05:28.020 --> 00:05:29.650 align:start position:0%
and actually use the function the shot
five<00:05:28.380><c> six</c>

00:05:29.650 --> 00:05:29.660 align:start position:0%
five six
 

00:05:29.660 --> 00:05:33.830 align:start position:0%
five six
this<00:05:30.860><c> this</c><00:05:31.860><c> variable</c><00:05:32.280><c> K</c><00:05:32.639><c> is</c><00:05:33.180><c> going</c><00:05:33.300><c> to</c><00:05:33.479><c> have</c><00:05:33.660><c> a</c>

00:05:33.830 --> 00:05:33.840 align:start position:0%
this this variable K is going to have a
 

00:05:33.840 --> 00:05:36.170 align:start position:0%
this this variable K is going to have a
concrete<00:05:34.199><c> value</c><00:05:34.380><c> which</c><00:05:35.340><c> will</c><00:05:35.520><c> then</c><00:05:35.699><c> compile</c>

00:05:36.170 --> 00:05:36.180 align:start position:0%
concrete value which will then compile
 

00:05:36.180 --> 00:05:37.610 align:start position:0%
concrete value which will then compile
to<00:05:36.360><c> the</c><00:05:36.600><c> exact</c><00:05:36.840><c> number</c><00:05:37.020><c> of</c><00:05:37.199><c> blocks</c><00:05:37.440><c> that</c>

00:05:37.610 --> 00:05:37.620 align:start position:0%
to the exact number of blocks that
 

00:05:37.620 --> 00:05:39.409 align:start position:0%
to the exact number of blocks that
you're<00:05:37.740><c> hashing</c><00:05:38.160><c> and</c><00:05:38.699><c> if</c><00:05:38.820><c> you're</c><00:05:38.940><c> trying</c><00:05:39.180><c> to</c>

00:05:39.409 --> 00:05:39.419 align:start position:0%
you're hashing and if you're trying to
 

00:05:39.419 --> 00:05:41.749 align:start position:0%
you're hashing and if you're trying to
do<00:05:39.539><c> something</c><00:05:39.720><c> that's</c><00:05:40.020><c> Dynamic</c><00:05:40.860><c> calling</c><00:05:41.580><c> this</c>

00:05:41.749 --> 00:05:41.759 align:start position:0%
do something that's Dynamic calling this
 

00:05:41.759 --> 00:05:44.450 align:start position:0%
do something that's Dynamic calling this
function<00:05:42.060><c> on</c><00:05:42.419><c> something</c><00:05:42.960><c> that's</c><00:05:43.320><c> not</c><00:05:43.560><c> whose</c>

00:05:44.450 --> 00:05:44.460 align:start position:0%
function on something that's not whose
 

00:05:44.460 --> 00:05:46.370 align:start position:0%
function on something that's not whose
size<00:05:45.060><c> does</c><00:05:45.300><c> not</c><00:05:45.419><c> know</c><00:05:45.539><c> that</c><00:05:45.780><c> compile</c><00:05:46.020><c> time</c><00:05:46.199><c> is</c>

00:05:46.370 --> 00:05:46.380 align:start position:0%
size does not know that compile time is
 

00:05:46.380 --> 00:05:48.469 align:start position:0%
size does not know that compile time is
just<00:05:46.560><c> going</c><00:05:46.680><c> to</c><00:05:46.800><c> fail</c><00:05:46.979><c> at</c><00:05:47.220><c> compile</c><00:05:47.520><c> time</c><00:05:47.759><c> so</c><00:05:48.360><c> we</c>

00:05:48.469 --> 00:05:48.479 align:start position:0%
just going to fail at compile time so we
 

00:05:48.479 --> 00:05:50.930 align:start position:0%
just going to fail at compile time so we
can<00:05:48.600><c> have</c><00:05:48.720><c> a</c><00:05:48.960><c> very</c><00:05:49.100><c> idiomatic</c><00:05:50.100><c> implementation</c>

00:05:50.930 --> 00:05:50.940 align:start position:0%
can have a very idiomatic implementation
 

00:05:50.940 --> 00:05:52.310 align:start position:0%
can have a very idiomatic implementation
of<00:05:51.180><c> chapter</c><00:05:51.360><c> five</c><00:05:51.660><c> six</c><00:05:51.840><c> of</c><00:05:52.080><c> course</c><00:05:52.139><c> there's</c>

00:05:52.310 --> 00:05:52.320 align:start position:0%
of chapter five six of course there's
 

00:05:52.320 --> 00:05:54.770 align:start position:0%
of chapter five six of course there's
more<00:05:52.560><c> complexity</c><00:05:52.919><c> in</c><00:05:53.160><c> the</c><00:05:53.220><c> show</c><00:05:53.340><c> around</c><00:05:53.780><c> but</c>

00:05:54.770 --> 00:05:54.780 align:start position:0%
more complexity in the show around but
 

00:05:54.780 --> 00:05:57.529 align:start position:0%
more complexity in the show around but
if<00:05:55.020><c> you</c><00:05:55.080><c> look</c><00:05:55.259><c> at</c><00:05:55.380><c> the</c><00:05:55.560><c> code</c><00:05:55.740><c> it's</c>

00:05:57.529 --> 00:05:57.539 align:start position:0%
if you look at the code it's
 

00:05:57.539 --> 00:06:00.890 align:start position:0%
if you look at the code it's
almost<00:05:58.139><c> line</c><00:05:58.440><c> for</c><00:05:58.680><c> line</c><00:05:58.800><c> equivalent</c><00:05:59.340><c> to</c><00:05:59.699><c> uh</c><00:06:00.419><c> an</c>

00:06:00.890 --> 00:06:00.900 align:start position:0%
almost line for line equivalent to uh an
 

00:06:00.900 --> 00:06:02.510 align:start position:0%
almost line for line equivalent to uh an
implementation<00:06:01.380><c> that</c><00:06:01.860><c> you</c><00:06:02.039><c> would</c><00:06:02.160><c> see</c><00:06:02.340><c> on</c>

00:06:02.510 --> 00:06:02.520 align:start position:0%
implementation that you would see on
 

00:06:02.520 --> 00:06:03.890 align:start position:0%
implementation that you would see on
Wikipedia<00:06:03.000><c> for</c><00:06:03.120><c> example</c><00:06:03.300><c> as</c><00:06:03.539><c> pseudocode</c>

00:06:03.890 --> 00:06:03.900 align:start position:0%
Wikipedia for example as pseudocode
 

00:06:03.900 --> 00:06:05.150 align:start position:0%
Wikipedia for example as pseudocode
implementation

00:06:05.150 --> 00:06:05.160 align:start position:0%
implementation
 

00:06:05.160 --> 00:06:07.969 align:start position:0%
implementation
now<00:06:05.639><c> I'm</c><00:06:05.759><c> going</c><00:06:05.940><c> to</c><00:06:06.120><c> go</c><00:06:06.479><c> in</c><00:06:07.259><c> a</c><00:06:07.380><c> bit</c><00:06:07.440><c> more</c><00:06:07.620><c> detail</c>

00:06:07.969 --> 00:06:07.979 align:start position:0%
now I'm going to go in a bit more detail
 

00:06:07.979 --> 00:06:11.689 align:start position:0%
now I'm going to go in a bit more detail
on<00:06:08.639><c> a</c><00:06:09.360><c> a</c><00:06:10.020><c> detail</c><00:06:10.440><c> of</c><00:06:10.919><c> the</c><00:06:11.100><c> shot</c><00:06:11.280><c> 256</c>

00:06:11.689 --> 00:06:11.699 align:start position:0%
on a a detail of the shot 256
 

00:06:11.699 --> 00:06:15.350 align:start position:0%
on a a detail of the shot 256
implementation<00:06:12.360><c> so</c><00:06:12.660><c> inside</c><00:06:13.080><c> the</c><00:06:13.979><c> Sha</c><00:06:14.520><c> round</c>

00:06:15.350 --> 00:06:15.360 align:start position:0%
implementation so inside the Sha round
 

00:06:15.360 --> 00:06:18.290 align:start position:0%
implementation so inside the Sha round
this<00:06:16.080><c> expression</c><00:06:16.560><c> needs</c><00:06:16.919><c> to</c><00:06:16.919><c> be</c><00:06:17.039><c> calculated</c>

00:06:18.290 --> 00:06:18.300 align:start position:0%
this expression needs to be calculated
 

00:06:18.300 --> 00:06:21.610 align:start position:0%
this expression needs to be calculated
a<00:06:18.720><c> lot</c><00:06:18.780><c> of</c><00:06:18.900><c> times</c><00:06:19.080><c> it</c><00:06:19.560><c> basically</c><00:06:19.860><c> takes</c><00:06:20.639><c> three</c>

00:06:21.610 --> 00:06:21.620 align:start position:0%
a lot of times it basically takes three
 

00:06:21.620 --> 00:06:24.969 align:start position:0%
a lot of times it basically takes three
unsigned<00:06:22.620><c> integers</c><00:06:22.979><c> a</c><00:06:23.340><c> b</c><00:06:23.460><c> and</c><00:06:23.639><c> c</c><00:06:23.819><c> of</c><00:06:24.120><c> 32</c><00:06:24.539><c> bits</c>

00:06:24.969 --> 00:06:24.979 align:start position:0%
unsigned integers a b and c of 32 bits
 

00:06:24.979 --> 00:06:29.990 align:start position:0%
unsigned integers a b and c of 32 bits
and<00:06:25.979><c> calculates</c><00:06:26.759><c> a</c><00:06:27.000><c> and</c><00:06:27.180><c> bigs</c><00:06:27.600><c> or</c><00:06:27.780><c> ancs</c><00:06:28.740><c> or</c><00:06:29.039><c> BNC</c>

00:06:29.990 --> 00:06:30.000 align:start position:0%
and calculates a and bigs or ancs or BNC
 

00:06:30.000 --> 00:06:31.610 align:start position:0%
and calculates a and bigs or ancs or BNC
and<00:06:30.600><c> this</c><00:06:30.720><c> is</c><00:06:30.840><c> something</c><00:06:31.020><c> that</c><00:06:31.259><c> you</c><00:06:31.380><c> can</c><00:06:31.500><c> just</c>

00:06:31.610 --> 00:06:31.620 align:start position:0%
and this is something that you can just
 

00:06:31.620 --> 00:06:33.290 align:start position:0%
and this is something that you can just
write<00:06:31.800><c> like</c><00:06:32.039><c> this</c><00:06:32.280><c> in</c><00:06:32.460><c> Socrates</c><00:06:32.880><c> today</c>

00:06:33.290 --> 00:06:33.300 align:start position:0%
write like this in Socrates today
 

00:06:33.300 --> 00:06:35.689 align:start position:0%
write like this in Socrates today
compile<00:06:34.020><c> and</c><00:06:34.259><c> it</c><00:06:34.440><c> will</c><00:06:34.680><c> translate</c><00:06:35.039><c> that</c><00:06:35.400><c> to</c><00:06:35.580><c> a</c>

00:06:35.689 --> 00:06:35.699 align:start position:0%
compile and it will translate that to a
 

00:06:35.699 --> 00:06:37.730 align:start position:0%
compile and it will translate that to a
number<00:06:35.759><c> of</c><00:06:35.940><c> constraints</c><00:06:36.419><c> at</c><00:06:36.720><c> the</c><00:06:36.840><c> low</c><00:06:36.960><c> level</c>

00:06:37.730 --> 00:06:37.740 align:start position:0%
number of constraints at the low level
 

00:06:37.740 --> 00:06:39.430 align:start position:0%
number of constraints at the low level
however

00:06:39.430 --> 00:06:39.440 align:start position:0%
however
 

00:06:39.440 --> 00:06:43.730 align:start position:0%
however
if<00:06:40.460><c> you</c><00:06:41.460><c> do</c><00:06:41.639><c> the</c><00:06:41.819><c> math</c><00:06:41.940><c> and</c><00:06:42.180><c> look</c><00:06:42.419><c> at</c><00:06:42.720><c> the</c><00:06:43.560><c> let's</c>

00:06:43.730 --> 00:06:43.740 align:start position:0%
if you do the math and look at the let's
 

00:06:43.740 --> 00:06:45.529 align:start position:0%
if you do the math and look at the let's
say<00:06:43.919><c> the</c><00:06:44.160><c> first</c><00:06:44.280><c> bit</c><00:06:44.460><c> of</c><00:06:44.639><c> a</c><00:06:44.819><c> the</c><00:06:45.060><c> first</c><00:06:45.180><c> bit</c><00:06:45.360><c> of</c>

00:06:45.529 --> 00:06:45.539 align:start position:0%
say the first bit of a the first bit of
 

00:06:45.539 --> 00:06:47.710 align:start position:0%
say the first bit of a the first bit of
B<00:06:45.720><c> and</c><00:06:45.900><c> the</c><00:06:46.080><c> first</c><00:06:46.139><c> bit</c><00:06:46.380><c> of</c><00:06:46.800><c> C</c>

00:06:47.710 --> 00:06:47.720 align:start position:0%
B and the first bit of C
 

00:06:47.720 --> 00:06:50.510 align:start position:0%
B and the first bit of C
you<00:06:48.720><c> can</c><00:06:48.840><c> see</c><00:06:49.139><c> that</c><00:06:49.440><c> if</c><00:06:49.740><c> you</c><00:06:49.860><c> considering</c><00:06:50.340><c> them</c>

00:06:50.510 --> 00:06:50.520 align:start position:0%
you can see that if you considering them
 

00:06:50.520 --> 00:06:53.210 align:start position:0%
you can see that if you considering them
as<00:06:50.880><c> numbers</c><00:06:51.120><c> so</c><00:06:51.419><c> as</c><00:06:51.600><c> field</c><00:06:51.840><c> elements</c><00:06:52.380><c> they</c>

00:06:53.210 --> 00:06:53.220 align:start position:0%
as numbers so as field elements they
 

00:06:53.220 --> 00:06:55.550 align:start position:0%
as numbers so as field elements they
actually<00:06:53.460><c> verify</c><00:06:54.300><c> so</c><00:06:54.660><c> the</c><00:06:54.900><c> result</c><00:06:55.080><c> actually</c>

00:06:55.550 --> 00:06:55.560 align:start position:0%
actually verify so the result actually
 

00:06:55.560 --> 00:06:58.309 align:start position:0%
actually verify so the result actually
verifies<00:06:56.340><c> those</c><00:06:56.819><c> two</c><00:06:57.060><c> equations</c>

00:06:58.309 --> 00:06:58.319 align:start position:0%
verifies those two equations
 

00:06:58.319 --> 00:07:00.770 align:start position:0%
verifies those two equations
so<00:06:58.380><c> you</c><00:06:58.800><c> define</c><00:06:59.100><c> or</c><00:06:59.759><c> you</c><00:07:00.000><c> constrain</c><00:07:00.360><c> a</c><00:07:00.660><c> new</c>

00:07:00.770 --> 00:07:00.780 align:start position:0%
so you define or you constrain a new
 

00:07:00.780 --> 00:07:03.230 align:start position:0%
so you define or you constrain a new
variable<00:07:01.139><c> BC</c><00:07:01.560><c> to</c><00:07:01.800><c> be</c><00:07:01.919><c> equals</c><00:07:02.280><c> to</c><00:07:02.400><c> equal</c><00:07:02.759><c> to</c><00:07:03.060><c> B</c>

00:07:03.230 --> 00:07:03.240 align:start position:0%
variable BC to be equals to equal to B
 

00:07:03.240 --> 00:07:06.230 align:start position:0%
variable BC to be equals to equal to B
times<00:07:03.419><c> C</c><00:07:03.720><c> and</c><00:07:04.560><c> here</c><00:07:04.979><c> I</c><00:07:05.220><c> just</c><00:07:05.520><c> want</c><00:07:05.699><c> to</c><00:07:05.819><c> clarify</c>

00:07:06.230 --> 00:07:06.240 align:start position:0%
times C and here I just want to clarify
 

00:07:06.240 --> 00:07:08.749 align:start position:0%
times C and here I just want to clarify
that<00:07:06.600><c> these</c><00:07:07.199><c> constraints</c><00:07:07.620><c> are</c><00:07:08.160><c> the</c><00:07:08.460><c> low</c><00:07:08.580><c> level</c>

00:07:08.749 --> 00:07:08.759 align:start position:0%
that these constraints are the low level
 

00:07:08.759 --> 00:07:10.249 align:start position:0%
that these constraints are the low level
constraints<00:07:09.240><c> that</c><00:07:09.360><c> we</c><00:07:09.539><c> deal</c><00:07:09.720><c> with</c><00:07:09.840><c> so</c><00:07:10.139><c> the</c>

00:07:10.249 --> 00:07:10.259 align:start position:0%
constraints that we deal with so the
 

00:07:10.259 --> 00:07:12.110 align:start position:0%
constraints that we deal with so the
r1cn's<00:07:10.979><c> constraints</c><00:07:11.280><c> they</c><00:07:11.520><c> look</c><00:07:11.699><c> like</c><00:07:11.880><c> this</c>

00:07:12.110 --> 00:07:12.120 align:start position:0%
r1cn's constraints they look like this
 

00:07:12.120 --> 00:07:15.170 align:start position:0%
r1cn's constraints they look like this
they<00:07:12.660><c> have</c><00:07:13.259><c> one</c><00:07:13.500><c> sign</c><00:07:13.740><c> which</c><00:07:14.100><c> is</c><00:07:14.220><c> linear</c><00:07:14.699><c> so</c><00:07:15.000><c> in</c>

00:07:15.170 --> 00:07:15.180 align:start position:0%
they have one sign which is linear so in
 

00:07:15.180 --> 00:07:16.969 align:start position:0%
they have one sign which is linear so in
this<00:07:15.539><c> case</c><00:07:15.660><c> it's</c><00:07:15.840><c> only</c><00:07:16.020><c> one</c><00:07:16.199><c> variable</c><00:07:16.560><c> but</c><00:07:16.800><c> you</c>

00:07:16.969 --> 00:07:16.979 align:start position:0%
this case it's only one variable but you
 

00:07:16.979 --> 00:07:19.790 align:start position:0%
this case it's only one variable but you
can<00:07:17.100><c> have</c><00:07:17.220><c> a</c><00:07:17.520><c> sum</c><00:07:17.819><c> of</c><00:07:18.660><c> different</c><00:07:18.900><c> variables</c>

00:07:19.790 --> 00:07:19.800 align:start position:0%
can have a sum of different variables
 

00:07:19.800 --> 00:07:23.629 align:start position:0%
can have a sum of different variables
one<00:07:20.400><c> side</c><00:07:20.699><c> which</c><00:07:21.539><c> is</c><00:07:21.720><c> quadratic</c><00:07:22.500><c> right</c><00:07:23.099><c> so</c>

00:07:23.629 --> 00:07:23.639 align:start position:0%
one side which is quadratic right so
 

00:07:23.639 --> 00:07:25.969 align:start position:0%
one side which is quadratic right so
this<00:07:23.880><c> first</c><00:07:24.060><c> one</c><00:07:24.300><c> uh</c><00:07:24.660><c> just</c><00:07:24.780><c> defines</c><00:07:25.259><c> BC</c><00:07:25.680><c> or</c>

00:07:25.969 --> 00:07:25.979 align:start position:0%
this first one uh just defines BC or
 

00:07:25.979 --> 00:07:27.890 align:start position:0%
this first one uh just defines BC or
like<00:07:26.160><c> constrains</c><00:07:26.580><c> a</c><00:07:26.759><c> new</c><00:07:26.880><c> variable</c><00:07:27.180><c> BC</c><00:07:27.539><c> to</c><00:07:27.720><c> be</c>

00:07:27.890 --> 00:07:27.900 align:start position:0%
like constrains a new variable BC to be
 

00:07:27.900 --> 00:07:30.469 align:start position:0%
like constrains a new variable BC to be
equal<00:07:28.080><c> to</c><00:07:28.259><c> B</c><00:07:28.440><c> times</c><00:07:28.680><c> C</c><00:07:28.979><c> and</c><00:07:29.819><c> then</c><00:07:30.000><c> uh</c>

00:07:30.469 --> 00:07:30.479 align:start position:0%
equal to B times C and then uh
 

00:07:30.479 --> 00:07:33.170 align:start position:0%
equal to B times C and then uh
introduces<00:07:31.020><c> this</c><00:07:31.380><c> res</c><00:07:31.560><c> variable</c><00:07:32.099><c> here</c><00:07:32.400><c> which</c>

00:07:33.170 --> 00:07:33.180 align:start position:0%
introduces this res variable here which
 

00:07:33.180 --> 00:07:35.450 align:start position:0%
introduces this res variable here which
is<00:07:33.300><c> our</c><00:07:33.479><c> result</c><00:07:33.720><c> for</c><00:07:34.020><c> the</c><00:07:34.139><c> first</c><00:07:34.259><c> bit</c>

00:07:35.450 --> 00:07:35.460 align:start position:0%
is our result for the first bit
 

00:07:35.460 --> 00:07:38.029 align:start position:0%
is our result for the first bit
um<00:07:35.940><c> and</c><00:07:36.300><c> then</c><00:07:36.419><c> constrains</c><00:07:37.080><c> it</c><00:07:37.259><c> in</c><00:07:37.680><c> this</c><00:07:37.919><c> way</c>

00:07:38.029 --> 00:07:38.039 align:start position:0%
um and then constrains it in this way
 

00:07:38.039 --> 00:07:41.749 align:start position:0%
um and then constrains it in this way
and<00:07:38.819><c> this</c><00:07:39.000><c> is</c><00:07:39.240><c> actually</c><00:07:39.560><c> more</c><00:07:40.560><c> efficient</c><00:07:41.280><c> that</c>

00:07:41.749 --> 00:07:41.759 align:start position:0%
and this is actually more efficient that
 

00:07:41.759 --> 00:07:44.270 align:start position:0%
and this is actually more efficient that
what<00:07:42.180><c> the</c><00:07:42.479><c> compiler</c><00:07:43.199><c> would</c><00:07:43.500><c> generate</c><00:07:43.919><c> itself</c>

00:07:44.270 --> 00:07:44.280 align:start position:0%
what the compiler would generate itself
 

00:07:44.280 --> 00:07:47.930 align:start position:0%
what the compiler would generate itself
because<00:07:44.759><c> here</c><00:07:45.120><c> we</c><00:07:45.419><c> have</c><00:07:45.740><c> uh</c><00:07:46.740><c> more</c><00:07:47.580><c> knowledge</c>

00:07:47.930 --> 00:07:47.940 align:start position:0%
because here we have uh more knowledge
 

00:07:47.940 --> 00:07:50.150 align:start position:0%
because here we have uh more knowledge
of<00:07:48.120><c> what</c><00:07:48.419><c> we're</c><00:07:48.599><c> actually</c><00:07:48.840><c> trying</c><00:07:49.139><c> to</c><00:07:49.319><c> do</c>

00:07:50.150 --> 00:07:50.160 align:start position:0%
of what we're actually trying to do
 

00:07:50.160 --> 00:07:52.189 align:start position:0%
of what we're actually trying to do
than<00:07:50.699><c> the</c><00:07:50.880><c> compiler</c><00:07:51.300><c> does</c>

00:07:52.189 --> 00:07:52.199 align:start position:0%
than the compiler does
 

00:07:52.199 --> 00:07:54.950 align:start position:0%
than the compiler does
on<00:07:52.740><c> the</c><00:07:52.860><c> flip</c><00:07:53.099><c> side</c><00:07:53.300><c> here</c><00:07:54.300><c> what</c><00:07:54.660><c> we're</c><00:07:54.780><c> doing</c>

00:07:54.950 --> 00:07:54.960 align:start position:0%
on the flip side here what we're doing
 

00:07:54.960 --> 00:07:58.370 align:start position:0%
on the flip side here what we're doing
is<00:07:55.319><c> that</c><00:07:55.680><c> we're</c><00:07:56.520><c> introducing</c><00:07:57.300><c> a</c><00:07:57.900><c> new</c><00:07:58.020><c> variable</c>

00:07:58.370 --> 00:07:58.380 align:start position:0%
is that we're introducing a new variable
 

00:07:58.380 --> 00:08:00.790 align:start position:0%
is that we're introducing a new variable
res<00:07:58.620><c> and</c><00:07:59.160><c> then</c><00:07:59.280><c> constraining</c><00:08:00.000><c> it</c><00:08:00.120><c> with</c><00:08:00.419><c> this</c>

00:08:00.790 --> 00:08:00.800 align:start position:0%
res and then constraining it with this
 

00:08:00.800 --> 00:08:04.370 align:start position:0%
res and then constraining it with this
uh<00:08:01.800><c> with</c><00:08:02.099><c> this</c><00:08:02.340><c> equation</c><00:08:02.900><c> however</c><00:08:03.900><c> when</c>

00:08:04.370 --> 00:08:04.380 align:start position:0%
uh with this equation however when
 

00:08:04.380 --> 00:08:05.870 align:start position:0%
uh with this equation however when
you're<00:08:04.500><c> dealing</c><00:08:04.860><c> with</c><00:08:05.039><c> such</c><00:08:05.460><c> low</c><00:08:05.639><c> level</c>

00:08:05.870 --> 00:08:05.880 align:start position:0%
you're dealing with such low level
 

00:08:05.880 --> 00:08:08.510 align:start position:0%
you're dealing with such low level
details<00:08:06.419><c> in</c><00:08:06.720><c> strikes</c><00:08:07.199><c> it's</c><00:08:07.620><c> really</c><00:08:07.860><c> easy</c><00:08:08.099><c> to</c>

00:08:08.510 --> 00:08:08.520 align:start position:0%
details in strikes it's really easy to
 

00:08:08.520 --> 00:08:11.029 align:start position:0%
details in strikes it's really easy to
introduce<00:08:08.880><c> new</c><00:08:09.180><c> variables</c><00:08:09.660><c> but</c><00:08:10.560><c> fail</c><00:08:10.800><c> to</c>

00:08:11.029 --> 00:08:11.039 align:start position:0%
introduce new variables but fail to
 

00:08:11.039 --> 00:08:14.510 align:start position:0%
introduce new variables but fail to
constrain<00:08:11.460><c> them</c><00:08:11.699><c> sufficiently</c><00:08:12.599><c> so</c><00:08:13.319><c> that</c><00:08:13.620><c> you</c>

00:08:14.510 --> 00:08:14.520 align:start position:0%
constrain them sufficiently so that you
 

00:08:14.520 --> 00:08:17.029 align:start position:0%
constrain them sufficiently so that you
actually<00:08:15.120><c> introduce</c><00:08:15.680><c> vulnerabilities</c><00:08:16.680><c> in</c>

00:08:17.029 --> 00:08:17.039 align:start position:0%
actually introduce vulnerabilities in
 

00:08:17.039 --> 00:08:18.290 align:start position:0%
actually introduce vulnerabilities in
your<00:08:17.220><c> circuits</c>

00:08:18.290 --> 00:08:18.300 align:start position:0%
your circuits
 

00:08:18.300 --> 00:08:20.570 align:start position:0%
your circuits
so<00:08:18.840><c> this</c><00:08:19.020><c> is</c><00:08:19.139><c> something</c><00:08:19.319><c> that</c><00:08:19.620><c> Socrates</c><00:08:20.039><c> does</c>

00:08:20.570 --> 00:08:20.580 align:start position:0%
so this is something that Socrates does
 

00:08:20.580 --> 00:08:22.129 align:start position:0%
so this is something that Socrates does
not<00:08:20.759><c> expose</c><00:08:21.120><c> at</c><00:08:21.360><c> the</c><00:08:21.479><c> moment</c><00:08:21.599><c> to</c><00:08:21.960><c> the</c>

00:08:22.129 --> 00:08:22.139 align:start position:0%
not expose at the moment to the
 

00:08:22.139 --> 00:08:24.230 align:start position:0%
not expose at the moment to the
developer<00:08:22.560><c> which</c><00:08:23.099><c> means</c><00:08:23.340><c> that</c><00:08:23.520><c> you</c><00:08:23.819><c> can</c><00:08:24.000><c> only</c>

00:08:24.230 --> 00:08:24.240 align:start position:0%
developer which means that you can only
 

00:08:24.240 --> 00:08:27.050 align:start position:0%
developer which means that you can only
do<00:08:24.599><c> this</c><00:08:25.379><c> one</c><00:08:25.500><c> which</c><00:08:25.740><c> is</c><00:08:25.860><c> less</c><00:08:26.039><c> efficient</c><00:08:26.460><c> if</c>

00:08:27.050 --> 00:08:27.060 align:start position:0%
do this one which is less efficient if
 

00:08:27.060 --> 00:08:29.809 align:start position:0%
do this one which is less efficient if
you<00:08:27.120><c> look</c><00:08:27.300><c> at</c><00:08:27.419><c> more</c><00:08:27.780><c> lower</c><00:08:28.139><c> level</c><00:08:28.379><c> tools</c><00:08:28.919><c> they</c>

00:08:29.809 --> 00:08:29.819 align:start position:0%
you look at more lower level tools they
 

00:08:29.819 --> 00:08:32.329 align:start position:0%
you look at more lower level tools they
let<00:08:30.060><c> you</c><00:08:30.240><c> use</c><00:08:30.479><c> these</c><00:08:30.840><c> things</c><00:08:30.960><c> but</c><00:08:31.379><c> then</c><00:08:31.620><c> it's</c>

00:08:32.329 --> 00:08:32.339 align:start position:0%
let you use these things but then it's
 

00:08:32.339 --> 00:08:33.769 align:start position:0%
let you use these things but then it's
at<00:08:32.520><c> your</c><00:08:32.700><c> own</c><00:08:32.820><c> risk</c>

00:08:33.769 --> 00:08:33.779 align:start position:0%
at your own risk
 

00:08:33.779 --> 00:08:35.570 align:start position:0%
at your own risk
and<00:08:34.440><c> then</c><00:08:34.620><c> it's</c><00:08:34.800><c> likely</c><00:08:35.099><c> that</c><00:08:35.219><c> you're</c><00:08:35.399><c> going</c>

00:08:35.570 --> 00:08:35.580 align:start position:0%
and then it's likely that you're going
 

00:08:35.580 --> 00:08:38.029 align:start position:0%
and then it's likely that you're going
to<00:08:35.700><c> introduce</c><00:08:36.120><c> vulnerabilities</c>

00:08:38.029 --> 00:08:38.039 align:start position:0%
to introduce vulnerabilities
 

00:08:38.039 --> 00:08:40.670 align:start position:0%
to introduce vulnerabilities
so<00:08:38.339><c> what</c><00:08:38.580><c> I</c><00:08:38.700><c> want</c><00:08:38.880><c> to</c><00:08:39.000><c> showcase</c><00:08:39.360><c> today</c><00:08:39.599><c> is</c><00:08:39.959><c> uh</c>

00:08:40.670 --> 00:08:40.680 align:start position:0%
so what I want to showcase today is uh
 

00:08:40.680 --> 00:08:43.250 align:start position:0%
so what I want to showcase today is uh
the<00:08:41.159><c> addition</c><00:08:41.399><c> to</c><00:08:41.640><c> Socrates</c><00:08:42.060><c> a</c><00:08:42.899><c> way</c><00:08:43.080><c> to</c>

00:08:43.250 --> 00:08:43.260 align:start position:0%
the addition to Socrates a way to
 

00:08:43.260 --> 00:08:46.190 align:start position:0%
the addition to Socrates a way to
actually<00:08:43.440><c> encode</c><00:08:43.979><c> this</c><00:08:44.279><c> thing</c><00:08:44.399><c> and</c><00:08:45.120><c> have</c>

00:08:46.190 --> 00:08:46.200 align:start position:0%
actually encode this thing and have
 

00:08:46.200 --> 00:08:48.350 align:start position:0%
actually encode this thing and have
um the<00:08:46.680><c> performance</c><00:08:47.040><c> from</c><00:08:47.279><c> this</c><00:08:47.519><c> thing</c><00:08:47.700><c> in</c>

00:08:48.350 --> 00:08:48.360 align:start position:0%
um the performance from this thing in
 

00:08:48.360 --> 00:08:49.610 align:start position:0%
um the performance from this thing in
the<00:08:48.420><c> context</c><00:08:48.660><c> of</c><00:08:48.839><c> the</c><00:08:48.959><c> higher</c><00:08:49.200><c> level</c><00:08:49.320><c> language</c>

00:08:49.610 --> 00:08:49.620 align:start position:0%
the context of the higher level language
 

00:08:49.620 --> 00:08:52.790 align:start position:0%
the context of the higher level language
yeah<00:08:50.580><c> so</c><00:08:50.820><c> I</c><00:08:51.000><c> have</c><00:08:51.120><c> a</c><00:08:51.240><c> video</c><00:08:51.480><c> now</c><00:08:51.839><c> if</c><00:08:52.500><c> you</c><00:08:52.620><c> could</c>

00:08:52.790 --> 00:08:52.800 align:start position:0%
yeah so I have a video now if you could
 

00:08:52.800 --> 00:08:55.130 align:start position:0%
yeah so I have a video now if you could
start<00:08:52.920><c> the</c><00:08:53.100><c> video</c><00:08:53.279><c> right</c><00:08:54.000><c> so</c><00:08:54.480><c> this</c><00:08:54.660><c> is</c><00:08:54.779><c> using</c>

00:08:55.130 --> 00:08:55.140 align:start position:0%
start the video right so this is using
 

00:08:55.140 --> 00:08:58.490 align:start position:0%
start the video right so this is using
the<00:08:55.440><c> actually</c><00:08:55.680><c> the</c><00:08:55.920><c> Socrates</c><00:08:56.720><c> playground</c><00:08:57.720><c> so</c>

00:08:58.490 --> 00:08:58.500 align:start position:0%
the actually the Socrates playground so
 

00:08:58.500 --> 00:09:01.370 align:start position:0%
the actually the Socrates playground so
here<00:08:58.740><c> I</c><00:08:59.040><c> defined</c><00:08:59.600><c> the</c><00:09:00.600><c> default</c><00:09:01.080><c> function</c>

00:09:01.370 --> 00:09:01.380 align:start position:0%
here I defined the default function
 

00:09:01.380 --> 00:09:02.690 align:start position:0%
here I defined the default function
which<00:09:01.560><c> I</c><00:09:01.680><c> call</c><00:09:01.800><c> the</c><00:09:01.920><c> default</c><00:09:02.279><c> function</c><00:09:02.399><c> where</c>

00:09:02.690 --> 00:09:02.700 align:start position:0%
which I call the default function where
 

00:09:02.700 --> 00:09:07.250 align:start position:0%
which I call the default function where
I<00:09:02.940><c> just</c><00:09:03.120><c> I'll</c><00:09:03.779><c> just</c><00:09:04.019><c> use</c><00:09:04.320><c> the</c><00:09:04.560><c> compiler</c><00:09:05.519><c> uh</c><00:09:06.480><c> to</c>

00:09:07.250 --> 00:09:07.260 align:start position:0%
I just I'll just use the compiler uh to
 

00:09:07.260 --> 00:09:10.670 align:start position:0%
I just I'll just use the compiler uh to
generate<00:09:08.100><c> the</c><00:09:08.279><c> constraints</c><00:09:08.640><c> for</c><00:09:08.940><c> this</c><00:09:09.120><c> uh</c>

00:09:10.670 --> 00:09:10.680 align:start position:0%
generate the constraints for this uh
 

00:09:10.680 --> 00:09:13.030 align:start position:0%
generate the constraints for this uh
this<00:09:11.220><c> expression</c>

00:09:13.030 --> 00:09:13.040 align:start position:0%
this expression
 

00:09:13.040 --> 00:09:15.889 align:start position:0%
this expression
here<00:09:14.040><c> I'm</c><00:09:14.220><c> going</c><00:09:14.399><c> to</c><00:09:14.580><c> create</c><00:09:14.760><c> an</c><00:09:15.120><c> uh</c><00:09:15.300><c> an</c><00:09:15.600><c> entry</c>

00:09:15.889 --> 00:09:15.899 align:start position:0%
here I'm going to create an uh an entry
 

00:09:15.899 --> 00:09:17.509 align:start position:0%
here I'm going to create an uh an entry
point<00:09:16.140><c> for</c><00:09:16.440><c> this</c><00:09:16.620><c> program</c>

00:09:17.509 --> 00:09:17.519 align:start position:0%
point for this program
 

00:09:17.519 --> 00:09:20.269 align:start position:0%
point for this program
uh<00:09:18.120><c> so</c><00:09:18.240><c> taking</c><00:09:18.480><c> also</c><00:09:18.899><c> a</c><00:09:19.140><c> b</c><00:09:19.320><c> and</c><00:09:19.440><c> c</c><00:09:19.560><c> returning</c><00:09:20.160><c> a</c>

00:09:20.269 --> 00:09:20.279 align:start position:0%
uh so taking also a b and c returning a
 

00:09:20.279 --> 00:09:21.949 align:start position:0%
uh so taking also a b and c returning a
u32

00:09:21.949 --> 00:09:21.959 align:start position:0%
u32
 

00:09:21.959 --> 00:09:24.829 align:start position:0%
u32
and<00:09:22.320><c> I'm</c><00:09:22.440><c> just</c><00:09:22.620><c> gonna</c><00:09:22.860><c> call</c><00:09:23.760><c> the</c><00:09:24.300><c> default</c>

00:09:24.829 --> 00:09:24.839 align:start position:0%
and I'm just gonna call the default
 

00:09:24.839 --> 00:09:26.710 align:start position:0%
and I'm just gonna call the default
function<00:09:25.440><c> and</c><00:09:25.680><c> see</c><00:09:25.860><c> how</c><00:09:25.980><c> many</c><00:09:26.160><c> constraints</c>

00:09:26.710 --> 00:09:26.720 align:start position:0%
function and see how many constraints
 

00:09:26.720 --> 00:09:29.750 align:start position:0%
function and see how many constraints
are<00:09:27.720><c> created</c><00:09:28.260><c> in</c><00:09:28.620><c> the</c><00:09:28.740><c> process</c>

00:09:29.750 --> 00:09:29.760 align:start position:0%
are created in the process
 

00:09:29.760 --> 00:09:32.150 align:start position:0%
are created in the process
so<00:09:30.060><c> I</c><00:09:30.240><c> compile</c><00:09:30.600><c> and</c><00:09:31.080><c> then</c><00:09:31.200><c> I</c><00:09:31.440><c> get</c><00:09:31.560><c> the</c><00:09:31.980><c> result</c>

00:09:32.150 --> 00:09:32.160 align:start position:0%
so I compile and then I get the result
 

00:09:32.160 --> 00:09:35.449 align:start position:0%
so I compile and then I get the result
260<00:09:33.000><c> constraints</c><00:09:33.540><c> here</c><00:09:34.320><c> and</c><00:09:34.920><c> now</c><00:09:35.100><c> what</c><00:09:35.279><c> I'm</c>

00:09:35.449 --> 00:09:35.459 align:start position:0%
260 constraints here and now what I'm
 

00:09:35.459 --> 00:09:37.550 align:start position:0%
260 constraints here and now what I'm
going<00:09:35.580><c> to</c><00:09:35.700><c> do</c><00:09:35.880><c> is</c><00:09:36.180><c> to</c><00:09:36.540><c> Define</c><00:09:36.779><c> another</c><00:09:37.200><c> version</c>

00:09:37.550 --> 00:09:37.560 align:start position:0%
going to do is to Define another version
 

00:09:37.560 --> 00:09:40.850 align:start position:0%
going to do is to Define another version
of<00:09:38.459><c> this</c><00:09:38.580><c> function</c><00:09:38.940><c> which</c><00:09:39.480><c> hopefully</c><00:09:39.899><c> will</c>

00:09:40.850 --> 00:09:40.860 align:start position:0%
of this function which hopefully will
 

00:09:40.860 --> 00:09:42.949 align:start position:0%
of this function which hopefully will
reduce<00:09:41.339><c> the</c><00:09:41.640><c> number</c><00:09:41.820><c> of</c><00:09:41.940><c> constraints</c><00:09:42.360><c> by</c>

00:09:42.949 --> 00:09:42.959 align:start position:0%
reduce the number of constraints by
 

00:09:42.959 --> 00:09:45.350 align:start position:0%
reduce the number of constraints by
leveraging<00:09:43.940><c> this</c><00:09:44.940><c> lower</c><00:09:45.120><c> level</c>

00:09:45.350 --> 00:09:45.360 align:start position:0%
leveraging this lower level
 

00:09:45.360 --> 00:09:47.509 align:start position:0%
leveraging this lower level
implementation<00:09:46.560><c> so</c><00:09:46.980><c> I</c><00:09:47.160><c> call</c><00:09:47.220><c> it</c><00:09:47.339><c> hand</c>

00:09:47.509 --> 00:09:47.519 align:start position:0%
implementation so I call it hand
 

00:09:47.519 --> 00:09:48.710 align:start position:0%
implementation so I call it hand
optimized

00:09:48.710 --> 00:09:48.720 align:start position:0%
optimized
 

00:09:48.720 --> 00:09:51.889 align:start position:0%
optimized
has<00:09:49.260><c> the</c><00:09:49.440><c> same</c><00:09:49.560><c> signature</c><00:09:50.100><c> a</c><00:09:50.640><c> b</c><00:09:50.880><c> and</c><00:09:51.060><c> c</c>

00:09:51.889 --> 00:09:51.899 align:start position:0%
has the same signature a b and c
 

00:09:51.899 --> 00:09:54.050 align:start position:0%
has the same signature a b and c
also<00:09:52.440><c> return</c><00:09:52.560><c> a</c><00:09:52.800><c> u32</c>

00:09:54.050 --> 00:09:54.060 align:start position:0%
also return a u32
 

00:09:54.060 --> 00:09:56.030 align:start position:0%
also return a u32
as<00:09:54.480><c> I</c><00:09:54.660><c> described</c><00:09:54.959><c> earlier</c><00:09:55.200><c> I</c><00:09:55.500><c> want</c><00:09:55.560><c> to</c><00:09:55.680><c> operate</c>

00:09:56.030 --> 00:09:56.040 align:start position:0%
as I described earlier I want to operate
 

00:09:56.040 --> 00:09:59.030 align:start position:0%
as I described earlier I want to operate
on<00:09:56.279><c> each</c><00:09:56.700><c> individual</c><00:09:57.300><c> bit</c><00:09:57.720><c> of</c><00:09:58.200><c> this</c><00:09:58.380><c> year</c><00:09:58.620><c> 32</c>

00:09:59.030 --> 00:09:59.040 align:start position:0%
on each individual bit of this year 32
 

00:09:59.040 --> 00:10:00.829 align:start position:0%
on each individual bit of this year 32
so<00:09:59.399><c> the</c><00:09:59.519><c> first</c><00:09:59.640><c> thing</c><00:09:59.820><c> I'm</c><00:09:59.940><c> going</c><00:10:00.120><c> to</c><00:10:00.240><c> do</c><00:10:00.420><c> is</c>

00:10:00.829 --> 00:10:00.839 align:start position:0%
so the first thing I'm going to do is
 

00:10:00.839 --> 00:10:04.550 align:start position:0%
so the first thing I'm going to do is
turning<00:10:01.200><c> those</c><00:10:01.320><c> u32</c><00:10:01.980><c> into</c><00:10:02.779><c> an</c><00:10:03.779><c> array</c><00:10:04.080><c> of</c>

00:10:04.550 --> 00:10:04.560 align:start position:0%
turning those u32 into an array of
 

00:10:04.560 --> 00:10:08.030 align:start position:0%
turning those u32 into an array of
booleans

00:10:08.030 --> 00:10:08.040 align:start position:0%
 
 

00:10:08.040 --> 00:10:11.150 align:start position:0%
 
we<00:10:08.940><c> have</c><00:10:09.300><c> sort</c><00:10:09.660><c> of</c><00:10:09.779><c> a</c><00:10:09.959><c> magic</c><00:10:10.200><c> tool</c><00:10:10.860><c> in</c><00:10:11.040><c> our</c>

00:10:11.150 --> 00:10:11.160 align:start position:0%
we have sort of a magic tool in our
 

00:10:11.160 --> 00:10:12.829 align:start position:0%
we have sort of a magic tool in our
standard<00:10:11.459><c> library</c><00:10:11.640><c> to</c><00:10:12.000><c> do</c><00:10:12.180><c> that</c><00:10:12.360><c> which</c><00:10:12.720><c> is</c>

00:10:12.829 --> 00:10:12.839 align:start position:0%
standard library to do that which is
 

00:10:12.839 --> 00:10:16.310 align:start position:0%
standard library to do that which is
called<00:10:13.080><c> the</c><00:10:13.200><c> cast</c><00:10:13.380><c> function</c><00:10:14.360><c> and</c><00:10:15.360><c> which</c>

00:10:16.310 --> 00:10:16.320 align:start position:0%
called the cast function and which
 

00:10:16.320 --> 00:10:19.009 align:start position:0%
called the cast function and which
can<00:10:16.800><c> do</c><00:10:16.980><c> this</c><00:10:17.220><c> conversion</c><00:10:17.760><c> for</c><00:10:18.000><c> you</c><00:10:18.180><c> and</c><00:10:18.839><c> here</c>

00:10:19.009 --> 00:10:19.019 align:start position:0%
can do this conversion for you and here
 

00:10:19.019 --> 00:10:20.150 align:start position:0%
can do this conversion for you and here
I<00:10:19.200><c> want</c><00:10:19.260><c> to</c><00:10:19.380><c> point</c><00:10:19.440><c> out</c><00:10:19.620><c> that</c><00:10:19.800><c> this</c><00:10:19.980><c> is</c>

00:10:20.150 --> 00:10:20.160 align:start position:0%
I want to point out that this is
 

00:10:20.160 --> 00:10:23.870 align:start position:0%
I want to point out that this is
actually<00:10:20.339><c> free</c><00:10:20.700><c> because</c><00:10:21.660><c> the</c><00:10:21.959><c> u32</c><00:10:22.620><c> type</c><00:10:23.519><c> is</c>

00:10:23.870 --> 00:10:23.880 align:start position:0%
actually free because the u32 type is
 

00:10:23.880 --> 00:10:26.630 align:start position:0%
actually free because the u32 type is
actually<00:10:24.000><c> represented</c><00:10:24.660><c> as</c><00:10:24.839><c> 32</c><00:10:25.320><c> bits</c><00:10:25.740><c> under</c>

00:10:26.630 --> 00:10:26.640 align:start position:0%
actually represented as 32 bits under
 

00:10:26.640 --> 00:10:28.310 align:start position:0%
actually represented as 32 bits under
the<00:10:26.880><c> hood</c><00:10:27.000><c> so</c><00:10:27.600><c> we're</c><00:10:27.720><c> not</c><00:10:27.899><c> paying</c><00:10:28.200><c> any</c>

00:10:28.310 --> 00:10:28.320 align:start position:0%
the hood so we're not paying any
 

00:10:28.320 --> 00:10:30.590 align:start position:0%
the hood so we're not paying any
constraints<00:10:28.740><c> for</c><00:10:29.040><c> this</c>

00:10:30.590 --> 00:10:30.600 align:start position:0%
constraints for this
 

00:10:30.600 --> 00:10:33.889 align:start position:0%
constraints for this
so<00:10:31.019><c> just</c><00:10:31.320><c> cast</c><00:10:31.440><c> the</c><00:10:31.680><c> three</c><00:10:31.860><c> of</c><00:10:31.980><c> them</c>

00:10:33.889 --> 00:10:33.899 align:start position:0%
so just cast the three of them
 

00:10:33.899 --> 00:10:35.750 align:start position:0%
so just cast the three of them
the<00:10:34.380><c> next</c><00:10:34.560><c> thing</c><00:10:34.740><c> I'm</c><00:10:34.920><c> going</c><00:10:35.100><c> to</c><00:10:35.220><c> do</c><00:10:35.459><c> is</c>

00:10:35.750 --> 00:10:35.760 align:start position:0%
the next thing I'm going to do is
 

00:10:35.760 --> 00:10:39.829 align:start position:0%
the next thing I'm going to do is
introduce<00:10:36.300><c> a</c><00:10:36.779><c> new</c><00:10:37.220><c> array</c><00:10:38.220><c> of</c><00:10:38.459><c> booleans</c>

00:10:39.829 --> 00:10:39.839 align:start position:0%
introduce a new array of booleans
 

00:10:39.839 --> 00:10:42.590 align:start position:0%
introduce a new array of booleans
for<00:10:40.560><c> the</c><00:10:40.860><c> result</c>

00:10:42.590 --> 00:10:42.600 align:start position:0%
for the result
 

00:10:42.600 --> 00:10:45.949 align:start position:0%
for the result
here<00:10:43.640><c> one</c><00:10:44.640><c> relatively</c><00:10:45.180><c> new</c><00:10:45.360><c> feature</c><00:10:45.660><c> we</c><00:10:45.839><c> have</c>

00:10:45.949 --> 00:10:45.959 align:start position:0%
here one relatively new feature we have
 

00:10:45.959 --> 00:10:47.329 align:start position:0%
here one relatively new feature we have
is<00:10:46.079><c> that</c><00:10:46.260><c> everything</c><00:10:46.440><c> is</c><00:10:46.680><c> immutable</c><00:10:47.100><c> by</c>

00:10:47.329 --> 00:10:47.339 align:start position:0%
is that everything is immutable by
 

00:10:47.339 --> 00:10:49.730 align:start position:0%
is that everything is immutable by
default<00:10:47.640><c> so</c><00:10:47.940><c> here</c><00:10:48.180><c> I</c><00:10:48.480><c> have</c><00:10:49.140><c> to</c><00:10:49.260><c> declare</c><00:10:49.560><c> this</c>

00:10:49.730 --> 00:10:49.740 align:start position:0%
default so here I have to declare this
 

00:10:49.740 --> 00:10:51.650 align:start position:0%
default so here I have to declare this
variable<00:10:50.040><c> mutable</c><00:10:50.459><c> if</c><00:10:50.820><c> I</c><00:10:51.000><c> want</c><00:10:51.120><c> to</c><00:10:51.240><c> be</c><00:10:51.360><c> able</c><00:10:51.480><c> to</c>

00:10:51.650 --> 00:10:51.660 align:start position:0%
variable mutable if I want to be able to
 

00:10:51.660 --> 00:10:53.389 align:start position:0%
variable mutable if I want to be able to
modify<00:10:52.079><c> it</c><00:10:52.200><c> after</c>

00:10:53.389 --> 00:10:53.399 align:start position:0%
modify it after
 

00:10:53.399 --> 00:10:54.769 align:start position:0%
modify it after
okay

00:10:54.769 --> 00:10:54.779 align:start position:0%
okay
 

00:10:54.779 --> 00:10:57.230 align:start position:0%
okay
so<00:10:55.140><c> now</c><00:10:55.260><c> that</c><00:10:55.440><c> I</c><00:10:55.620><c> have</c><00:10:55.680><c> all</c><00:10:55.860><c> the</c><00:10:56.040><c> bits</c><00:10:56.339><c> I</c><00:10:56.940><c> can</c>

00:10:57.230 --> 00:10:57.240 align:start position:0%
so now that I have all the bits I can
 

00:10:57.240 --> 00:10:59.389 align:start position:0%
so now that I have all the bits I can
start<00:10:57.600><c> a</c><00:10:57.779><c> for</c><00:10:57.899><c> Loop</c>

00:10:59.389 --> 00:10:59.399 align:start position:0%
start a for Loop
 

00:10:59.399 --> 00:11:01.670 align:start position:0%
start a for Loop
so<00:11:00.000><c> for</c><00:11:00.240><c> I</c><00:11:00.660><c> from</c>

00:11:01.670 --> 00:11:01.680 align:start position:0%
so for I from
 

00:11:01.680 --> 00:11:05.150 align:start position:0%
so for I from
0<00:11:02.459><c> to</c><00:11:02.880><c> 32</c>

00:11:05.150 --> 00:11:05.160 align:start position:0%
0 to 32
 

00:11:05.160 --> 00:11:07.190 align:start position:0%
0 to 32
and<00:11:05.640><c> here</c><00:11:05.760><c> I'm</c><00:11:05.940><c> going</c><00:11:06.060><c> to</c><00:11:06.180><c> consider</c><00:11:06.540><c> the</c><00:11:06.779><c> if</c>

00:11:07.190 --> 00:11:07.200 align:start position:0%
and here I'm going to consider the if
 

00:11:07.200 --> 00:11:10.190 align:start position:0%
and here I'm going to consider the if
bit<00:11:07.800><c> of</c><00:11:08.579><c> a</c><00:11:08.700><c> b</c><00:11:08.880><c> and</c><00:11:09.000><c> c</c>

00:11:10.190 --> 00:11:10.200 align:start position:0%
bit of a b and c
 

00:11:10.200 --> 00:11:13.550 align:start position:0%
bit of a b and c
and<00:11:11.339><c> if</c><00:11:11.700><c> we</c><00:11:11.940><c> want</c><00:11:12.120><c> to</c><00:11:12.180><c> have</c><00:11:12.360><c> access</c><00:11:12.540><c> to</c><00:11:12.839><c> those</c>

00:11:13.550 --> 00:11:13.560 align:start position:0%
and if we want to have access to those
 

00:11:13.560 --> 00:11:16.250 align:start position:0%
and if we want to have access to those
low<00:11:13.800><c> level</c><00:11:13.980><c> constraints</c><00:11:14.839><c> we</c><00:11:15.839><c> need</c><00:11:15.959><c> to</c><00:11:16.079><c> reason</c>

00:11:16.250 --> 00:11:16.260 align:start position:0%
low level constraints we need to reason
 

00:11:16.260 --> 00:11:18.410 align:start position:0%
low level constraints we need to reason
at<00:11:16.860><c> the</c><00:11:16.980><c> level</c><00:11:17.100><c> of</c><00:11:17.279><c> field</c><00:11:17.459><c> elements</c><00:11:18.000><c> so</c><00:11:18.300><c> we</c>

00:11:18.410 --> 00:11:18.420 align:start position:0%
at the level of field elements so we
 

00:11:18.420 --> 00:11:20.750 align:start position:0%
at the level of field elements so we
need<00:11:18.540><c> to</c><00:11:18.660><c> turn</c><00:11:18.839><c> those</c><00:11:19.019><c> booleans</c><00:11:19.560><c> into</c><00:11:20.459><c> field</c>

00:11:20.750 --> 00:11:20.760 align:start position:0%
need to turn those booleans into field
 

00:11:20.760 --> 00:11:23.870 align:start position:0%
need to turn those booleans into field
Elements<00:11:21.300><c> which</c><00:11:21.540><c> is</c><00:11:21.660><c> a</c><00:11:21.839><c> lower</c><00:11:22.019><c> level</c>

00:11:23.870 --> 00:11:23.880 align:start position:0%
Elements which is a lower level
 

00:11:23.880 --> 00:11:25.430 align:start position:0%
Elements which is a lower level
representation

00:11:25.430 --> 00:11:25.440 align:start position:0%
representation
 

00:11:25.440 --> 00:11:28.030 align:start position:0%
representation
for<00:11:25.800><c> this</c><00:11:25.920><c> I</c><00:11:26.100><c> call</c><00:11:26.279><c> this</c><00:11:26.399><c> Bluetooth</c><00:11:26.640><c> field</c>

00:11:28.030 --> 00:11:28.040 align:start position:0%
for this I call this Bluetooth field
 

00:11:28.040 --> 00:11:31.069 align:start position:0%
for this I call this Bluetooth field
function<00:11:29.040><c> which</c><00:11:29.640><c> I'm</c><00:11:29.820><c> going</c><00:11:30.060><c> to</c>

00:11:31.069 --> 00:11:31.079 align:start position:0%
function which I'm going to
 

00:11:31.079 --> 00:11:35.389 align:start position:0%
function which I'm going to
Define<00:11:31.740><c> in</c><00:11:32.160><c> a</c><00:11:32.279><c> second</c>

00:11:35.389 --> 00:11:35.399 align:start position:0%
 
 

00:11:35.399 --> 00:11:46.850 align:start position:0%
 
I<00:11:36.000><c> do</c><00:11:36.240><c> the</c><00:11:36.360><c> same</c><00:11:36.540><c> for</c><00:11:36.779><c> B</c><00:11:36.959><c> and</c><00:11:37.200><c> C</c>

00:11:46.850 --> 00:11:46.860 align:start position:0%
 
 

00:11:46.860 --> 00:11:49.069 align:start position:0%
 
and<00:11:47.760><c> here</c>

00:11:49.069 --> 00:11:49.079 align:start position:0%
and here
 

00:11:49.079 --> 00:11:51.230 align:start position:0%
and here
I'm<00:11:49.500><c> going</c><00:11:49.620><c> to</c><00:11:49.740><c> Define</c><00:11:49.860><c> this</c><00:11:50.160><c> function</c><00:11:50.459><c> and</c>

00:11:51.230 --> 00:11:51.240 align:start position:0%
I'm going to Define this function and
 

00:11:51.240 --> 00:11:53.030 align:start position:0%
I'm going to Define this function and
again<00:11:51.839><c> this</c><00:11:52.200><c> is</c><00:11:52.320><c> something</c><00:11:52.500><c> that's</c><00:11:52.740><c> going</c><00:11:52.980><c> to</c>

00:11:53.030 --> 00:11:53.040 align:start position:0%
again this is something that's going to
 

00:11:53.040 --> 00:11:55.130 align:start position:0%
again this is something that's going to
be<00:11:53.220><c> free</c><00:11:53.399><c> that's</c><00:11:53.940><c> not</c><00:11:54.240><c> going</c><00:11:54.420><c> to</c><00:11:54.540><c> create</c><00:11:54.899><c> any</c>

00:11:55.130 --> 00:11:55.140 align:start position:0%
be free that's not going to create any
 

00:11:55.140 --> 00:11:56.750 align:start position:0%
be free that's not going to create any
constraints<00:11:55.560><c> for</c><00:11:56.100><c> the</c><00:11:56.220><c> same</c><00:11:56.339><c> reason</c><00:11:56.519><c> as</c>

00:11:56.750 --> 00:11:56.760 align:start position:0%
constraints for the same reason as
 

00:11:56.760 --> 00:11:59.329 align:start position:0%
constraints for the same reason as
earlier<00:11:57.120><c> because</c><00:11:57.600><c> the</c><00:11:57.839><c> Boolean</c>

00:11:59.329 --> 00:11:59.339 align:start position:0%
earlier because the Boolean
 

00:11:59.339 --> 00:12:01.190 align:start position:0%
earlier because the Boolean
is<00:11:59.760><c> actually</c><00:11:59.940><c> presented</c><00:12:00.540><c> as</c><00:12:00.660><c> a</c><00:12:00.779><c> field</c><00:12:00.899><c> element</c>

00:12:01.190 --> 00:12:01.200 align:start position:0%
is actually presented as a field element
 

00:12:01.200 --> 00:12:02.990 align:start position:0%
is actually presented as a field element
at<00:12:01.680><c> the</c><00:12:01.800><c> low</c><00:12:01.920><c> level</c>

00:12:02.990 --> 00:12:03.000 align:start position:0%
at the low level
 

00:12:03.000 --> 00:12:05.509 align:start position:0%
at the low level
it's<00:12:03.300><c> just</c><00:12:03.480><c> that</c><00:12:03.600><c> it</c><00:12:03.779><c> can</c><00:12:03.899><c> only</c><00:12:04.019><c> be</c><00:12:04.320><c> value</c><00:12:05.220><c> 0</c>

00:12:05.509 --> 00:12:05.519 align:start position:0%
it's just that it can only be value 0
 

00:12:05.519 --> 00:12:11.810 align:start position:0%
it's just that it can only be value 0
for<00:12:05.880><c> false</c><00:12:06.240><c> and</c><00:12:06.480><c> one</c><00:12:06.660><c> for</c><00:12:06.899><c> two</c>

00:12:11.810 --> 00:12:11.820 align:start position:0%
 
 

00:12:11.820 --> 00:12:14.870 align:start position:0%
 
so<00:12:12.480><c> I</c><00:12:12.720><c> can</c><00:12:12.899><c> just</c><00:12:13.200><c> return</c><00:12:13.800><c> that</c><00:12:14.220><c> using</c><00:12:14.640><c> a</c>

00:12:14.870 --> 00:12:14.880 align:start position:0%
so I can just return that using a
 

00:12:14.880 --> 00:12:20.030 align:start position:0%
so I can just return that using a
ternary<00:12:15.540><c> expression</c>

00:12:20.030 --> 00:12:20.040 align:start position:0%
 
 

00:12:20.040 --> 00:12:21.889 align:start position:0%
 
okay

00:12:21.889 --> 00:12:21.899 align:start position:0%
okay
 

00:12:21.899 --> 00:12:26.389 align:start position:0%
okay
so<00:12:22.380><c> now</c><00:12:22.500><c> I</c><00:12:22.680><c> have</c><00:12:22.740><c> ABC</c><00:12:23.540><c> as</c><00:12:24.540><c> uh</c><00:12:25.019><c> SPL</c><00:12:25.500><c> elements</c>

00:12:26.389 --> 00:12:26.399 align:start position:0%
so now I have ABC as uh SPL elements
 

00:12:26.399 --> 00:12:28.550 align:start position:0%
so now I have ABC as uh SPL elements
now<00:12:26.880><c> I</c><00:12:27.180><c> have</c><00:12:27.300><c> this</c><00:12:27.540><c> first</c><00:12:27.660><c> constraint</c><00:12:28.140><c> which</c>

00:12:28.550 --> 00:12:28.560 align:start position:0%
now I have this first constraint which
 

00:12:28.560 --> 00:12:30.670 align:start position:0%
now I have this first constraint which
was<00:12:28.740><c> uh</c><00:12:29.519><c> BC</c>

00:12:30.670 --> 00:12:30.680 align:start position:0%
was uh BC
 

00:12:30.680 --> 00:12:33.829 align:start position:0%
was uh BC
equals<00:12:31.680><c> B</c><00:12:32.579><c> times</c><00:12:32.760><c> C</c><00:12:33.000><c> and</c><00:12:33.480><c> actually</c><00:12:33.660><c> this</c>

00:12:33.829 --> 00:12:33.839 align:start position:0%
equals B times C and actually this
 

00:12:33.839 --> 00:12:36.889 align:start position:0%
equals B times C and actually this
constraint<00:12:34.200><c> I</c><00:12:34.440><c> can</c><00:12:34.560><c> already</c><00:12:34.880><c> Define</c><00:12:35.880><c> in</c><00:12:36.600><c> in</c>

00:12:36.889 --> 00:12:36.899 align:start position:0%
constraint I can already Define in in
 

00:12:36.899 --> 00:12:38.569 align:start position:0%
constraint I can already Define in in
the<00:12:37.079><c> high</c><00:12:37.200><c> level</c><00:12:37.440><c> language</c><00:12:37.740><c> because</c><00:12:38.220><c> I'm</c>

00:12:38.569 --> 00:12:38.579 align:start position:0%
the high level language because I'm
 

00:12:38.579 --> 00:12:42.350 align:start position:0%
the high level language because I'm
doing<00:12:38.820><c> both</c><00:12:39.060><c> constraining</c><00:12:39.779><c> and</c><00:12:40.079><c> assigning</c><00:12:40.800><c> VC</c>

00:12:42.350 --> 00:12:42.360 align:start position:0%
doing both constraining and assigning VC
 

00:12:42.360 --> 00:12:44.150 align:start position:0%
doing both constraining and assigning VC
so<00:12:42.720><c> I</c><00:12:42.959><c> do</c><00:12:43.079><c> that</c><00:12:43.260><c> so</c><00:12:43.620><c> I</c><00:12:43.740><c> have</c><00:12:43.860><c> that</c><00:12:43.980><c> first</c>

00:12:44.150 --> 00:12:44.160 align:start position:0%
so I do that so I have that first
 

00:12:44.160 --> 00:12:46.670 align:start position:0%
so I do that so I have that first
constraint<00:12:44.519><c> is</c><00:12:44.820><c> done</c><00:12:45.000><c> then</c><00:12:45.540><c> I</c><00:12:45.720><c> declare</c><00:12:46.079><c> this</c>

00:12:46.670 --> 00:12:46.680 align:start position:0%
constraint is done then I declare this
 

00:12:46.680 --> 00:12:49.069 align:start position:0%
constraint is done then I declare this
result<00:12:47.100><c> all</c><00:12:47.639><c> again</c><00:12:48.000><c> mutable</c>

00:12:49.069 --> 00:12:49.079 align:start position:0%
result all again mutable
 

00:12:49.079 --> 00:12:51.889 align:start position:0%
result all again mutable
and<00:12:49.560><c> this</c><00:12:49.740><c> is</c><00:12:49.860><c> where</c><00:12:50.279><c> the</c><00:12:51.240><c> interesting</c><00:12:51.720><c> new</c>

00:12:51.889 --> 00:12:51.899 align:start position:0%
and this is where the interesting new
 

00:12:51.899 --> 00:12:53.990 align:start position:0%
and this is where the interesting new
thing<00:12:52.139><c> happens</c><00:12:52.320><c> I</c><00:12:52.680><c> have</c><00:12:52.860><c> this</c><00:12:53.220><c> assembly</c><00:12:53.760><c> block</c>

00:12:53.990 --> 00:12:54.000 align:start position:0%
thing happens I have this assembly block
 

00:12:54.000 --> 00:12:56.269 align:start position:0%
thing happens I have this assembly block
that<00:12:54.300><c> I</c><00:12:54.480><c> can</c><00:12:54.600><c> create</c><00:12:55.200><c> and</c><00:12:55.440><c> here</c><00:12:55.620><c> as</c><00:12:55.800><c> I</c><00:12:55.980><c> I</c><00:12:56.100><c> have</c>

00:12:56.269 --> 00:12:56.279 align:start position:0%
that I can create and here as I I have
 

00:12:56.279 --> 00:12:59.449 align:start position:0%
that I can create and here as I I have
access<00:12:56.459><c> to</c><00:12:56.839><c> and</c><00:12:57.839><c> two</c><00:12:58.680><c> special</c><00:12:58.860><c> kinds</c><00:12:59.339><c> of</c>

00:12:59.449 --> 00:12:59.459 align:start position:0%
access to and two special kinds of
 

00:12:59.459 --> 00:13:02.030 align:start position:0%
access to and two special kinds of
statements

00:13:02.030 --> 00:13:02.040 align:start position:0%
statements
 

00:13:02.040 --> 00:13:03.710 align:start position:0%
statements
the<00:13:02.459><c> first</c><00:13:02.519><c> one</c><00:13:02.700><c> is</c><00:13:02.880><c> going</c><00:13:03.060><c> to</c><00:13:03.180><c> be</c><00:13:03.300><c> just</c><00:13:03.540><c> an</c>

00:13:03.710 --> 00:13:03.720 align:start position:0%
the first one is going to be just an
 

00:13:03.720 --> 00:13:06.769 align:start position:0%
the first one is going to be just an
assignment<00:13:04.139><c> so</c><00:13:04.380><c> I</c><00:13:04.560><c> introduce</c><00:13:05.040><c> I</c><00:13:05.820><c> just</c><00:13:06.000><c> assign</c>

00:13:06.769 --> 00:13:06.779 align:start position:0%
assignment so I introduce I just assign
 

00:13:06.779 --> 00:13:08.990 align:start position:0%
assignment so I introduce I just assign
the<00:13:07.440><c> value</c>

00:13:08.990 --> 00:13:09.000 align:start position:0%
the value
 

00:13:09.000 --> 00:13:11.389 align:start position:0%
the value
BC<00:13:09.660><c> minus</c><00:13:10.139><c> this</c><00:13:10.320><c> other</c><00:13:10.500><c> expression</c><00:13:10.980><c> to</c><00:13:11.160><c> Res</c>

00:13:11.389 --> 00:13:11.399 align:start position:0%
BC minus this other expression to Res
 

00:13:11.399 --> 00:13:13.250 align:start position:0%
BC minus this other expression to Res
but<00:13:11.880><c> I</c><00:13:12.060><c> did</c><00:13:12.240><c> not</c><00:13:12.360><c> create</c><00:13:12.540><c> any</c><00:13:12.839><c> constraints</c>

00:13:13.250 --> 00:13:13.260 align:start position:0%
but I did not create any constraints
 

00:13:13.260 --> 00:13:15.710 align:start position:0%
but I did not create any constraints
it's<00:13:13.500><c> purely</c><00:13:13.860><c> just</c><00:13:14.040><c> an</c><00:13:14.220><c> assignment</c>

00:13:15.710 --> 00:13:15.720 align:start position:0%
it's purely just an assignment
 

00:13:15.720 --> 00:13:17.509 align:start position:0%
it's purely just an assignment
so<00:13:16.200><c> this</c><00:13:16.380><c> has</c><00:13:16.560><c> no</c><00:13:16.740><c> influence</c><00:13:17.160><c> on</c><00:13:17.399><c> the</c>

00:13:17.509 --> 00:13:17.519 align:start position:0%
so this has no influence on the
 

00:13:17.519 --> 00:13:23.690 align:start position:0%
so this has no influence on the
constraint<00:13:17.760><c> system</c>

00:13:23.690 --> 00:13:23.700 align:start position:0%
 
 

00:13:23.700 --> 00:13:27.050 align:start position:0%
 
and<00:13:24.180><c> then</c><00:13:24.300><c> I</c><00:13:24.600><c> want</c><00:13:24.660><c> to</c><00:13:24.779><c> be</c><00:13:24.899><c> able</c><00:13:25.079><c> to</c><00:13:25.200><c> use</c><00:13:25.440><c> this</c>

00:13:27.050 --> 00:13:27.060 align:start position:0%
and then I want to be able to use this
 

00:13:27.060 --> 00:13:31.190 align:start position:0%
and then I want to be able to use this
this<00:13:27.540><c> res</c><00:13:28.160><c> value</c><00:13:29.160><c> later</c><00:13:29.519><c> but</c><00:13:30.420><c> to</c><00:13:30.720><c> use</c><00:13:30.899><c> it</c><00:13:31.019><c> I</c>

00:13:31.190 --> 00:13:31.200 align:start position:0%
this res value later but to use it I
 

00:13:31.200 --> 00:13:32.750 align:start position:0%
this res value later but to use it I
need<00:13:31.320><c> to</c><00:13:31.440><c> make</c><00:13:31.560><c> sure</c><00:13:31.680><c> that</c><00:13:31.920><c> it's</c><00:13:32.220><c> really</c>

00:13:32.750 --> 00:13:32.760 align:start position:0%
need to make sure that it's really
 

00:13:32.760 --> 00:13:35.329 align:start position:0%
need to make sure that it's really
constrained<00:13:33.360><c> in</c><00:13:33.660><c> the</c><00:13:33.779><c> constraint</c><00:13:34.079><c> system</c>

00:13:35.329 --> 00:13:35.339 align:start position:0%
constrained in the constraint system
 

00:13:35.339 --> 00:13:37.970 align:start position:0%
constrained in the constraint system
so<00:13:35.579><c> after</c><00:13:35.760><c> this</c><00:13:35.940><c> is</c><00:13:36.120><c> I</c><00:13:36.360><c> did</c><00:13:36.600><c> this</c><00:13:36.959><c> assignment</c><00:13:37.500><c> I</c>

00:13:37.970 --> 00:13:37.980 align:start position:0%
so after this is I did this assignment I
 

00:13:37.980 --> 00:13:41.889 align:start position:0%
so after this is I did this assignment I
add<00:13:38.279><c> actually</c><00:13:39.000><c> constrained</c><00:13:39.779><c> which</c>

00:13:41.889 --> 00:13:41.899 align:start position:0%
add actually constrained which
 

00:13:41.899 --> 00:13:44.569 align:start position:0%
add actually constrained which
which<00:13:42.899><c> makes</c><00:13:43.200><c> sure</c><00:13:43.380><c> that</c><00:13:43.560><c> everything</c>

00:13:44.569 --> 00:13:44.579 align:start position:0%
which makes sure that everything
 

00:13:44.579 --> 00:13:48.769 align:start position:0%
which makes sure that everything
is<00:13:45.180><c> uh</c><00:13:45.660><c> is</c><00:13:46.019><c> set</c><00:13:46.200><c> in</c><00:13:46.440><c> stone</c>

00:13:48.769 --> 00:13:48.779 align:start position:0%
 
 

00:13:48.779 --> 00:13:51.470 align:start position:0%
 
so<00:13:49.740><c> here</c><00:13:49.860><c> BC</c><00:13:50.220><c> minus</c><00:13:50.579><c> res</c><00:13:50.820><c> equals</c><00:13:51.300><c> this</c>

00:13:51.470 --> 00:13:51.480 align:start position:0%
so here BC minus res equals this
 

00:13:51.480 --> 00:13:53.170 align:start position:0%
so here BC minus res equals this
multiplication<00:13:51.959><c> you</c><00:13:52.380><c> can</c><00:13:52.500><c> see</c><00:13:52.620><c> that</c><00:13:52.860><c> again</c>

00:13:53.170 --> 00:13:53.180 align:start position:0%
multiplication you can see that again
 

00:13:53.180 --> 00:13:56.210 align:start position:0%
multiplication you can see that again
this<00:13:54.180><c> can</c><00:13:54.300><c> be</c><00:13:54.480><c> any</c><00:13:54.779><c> expression</c><00:13:55.380><c> here</c><00:13:55.620><c> when</c><00:13:56.040><c> I</c>

00:13:56.210 --> 00:13:56.220 align:start position:0%
this can be any expression here when I
 

00:13:56.220 --> 00:13:59.389 align:start position:0%
this can be any expression here when I
assign<00:13:56.519><c> but</c><00:13:56.820><c> this</c><00:13:57.060><c> has</c><00:13:57.300><c> to</c><00:13:57.480><c> be</c><00:13:57.800><c> linear</c><00:13:58.800><c> equals</c>

00:13:59.389 --> 00:13:59.399 align:start position:0%
assign but this has to be linear equals
 

00:13:59.399 --> 00:14:02.329 align:start position:0%
assign but this has to be linear equals
quadratic<00:14:00.120><c> right</c><00:14:00.779><c> so</c><00:14:01.200><c> here</c>

00:14:02.329 --> 00:14:02.339 align:start position:0%
quadratic right so here
 

00:14:02.339 --> 00:14:05.269 align:start position:0%
quadratic right so here
this<00:14:02.880><c> is</c><00:14:03.000><c> this</c><00:14:03.300><c> is</c><00:14:03.480><c> working</c>

00:14:05.269 --> 00:14:05.279 align:start position:0%
this is this is working
 

00:14:05.279 --> 00:14:08.569 align:start position:0%
this is this is working
okay<00:14:05.760><c> so</c><00:14:06.060><c> now</c><00:14:06.240><c> I</c><00:14:06.480><c> have</c><00:14:06.600><c> everything</c><00:14:06.899><c> set</c><00:14:07.500><c> up</c>

00:14:08.569 --> 00:14:08.579 align:start position:0%
okay so now I have everything set up
 

00:14:08.579 --> 00:14:10.370 align:start position:0%
okay so now I have everything set up
um<00:14:08.639><c> and</c><00:14:08.880><c> I'm</c><00:14:09.000><c> convinced</c><00:14:09.420><c> that</c><00:14:09.600><c> res</c><00:14:09.779><c> has</c><00:14:10.200><c> a</c>

00:14:10.370 --> 00:14:10.380 align:start position:0%
um and I'm convinced that res has a
 

00:14:10.380 --> 00:14:11.990 align:start position:0%
um and I'm convinced that res has a
result<00:14:10.500><c> that</c><00:14:10.860><c> I</c><00:14:11.040><c> need</c>

00:14:11.990 --> 00:14:12.000 align:start position:0%
result that I need
 

00:14:12.000 --> 00:14:13.550 align:start position:0%
result that I need
the<00:14:12.420><c> next</c><00:14:12.480><c> thing</c><00:14:12.600><c> that</c><00:14:12.779><c> I</c><00:14:12.899><c> want</c><00:14:13.019><c> to</c><00:14:13.079><c> do</c><00:14:13.200><c> is</c><00:14:13.380><c> that</c>

00:14:13.550 --> 00:14:13.560 align:start position:0%
the next thing that I want to do is that
 

00:14:13.560 --> 00:14:14.990 align:start position:0%
the next thing that I want to do is that
I<00:14:13.740><c> actually</c><00:14:13.860><c> want</c><00:14:14.040><c> to</c><00:14:14.160><c> have</c><00:14:14.279><c> a</c><00:14:14.459><c> Boolean</c><00:14:14.820><c> I'm</c>

00:14:14.990 --> 00:14:15.000 align:start position:0%
I actually want to have a Boolean I'm
 

00:14:15.000 --> 00:14:16.629 align:start position:0%
I actually want to have a Boolean I'm
going<00:14:15.180><c> to</c><00:14:15.240><c> go</c><00:14:15.480><c> the</c><00:14:15.600><c> other</c><00:14:15.720><c> way</c><00:14:15.959><c> around</c><00:14:16.139><c> and</c>

00:14:16.629 --> 00:14:16.639 align:start position:0%
going to go the other way around and
 

00:14:16.639 --> 00:14:19.370 align:start position:0%
going to go the other way around and
reconstruct<00:14:17.639><c> my</c><00:14:18.240><c> result</c><00:14:18.360><c> but</c><00:14:18.839><c> I</c><00:14:18.959><c> want</c><00:14:19.200><c> to</c><00:14:19.320><c> have</c>

00:14:19.370 --> 00:14:19.380 align:start position:0%
reconstruct my result but I want to have
 

00:14:19.380 --> 00:14:21.769 align:start position:0%
reconstruct my result but I want to have
a<00:14:19.500><c> Boolean</c><00:14:19.860><c> and</c><00:14:20.040><c> I</c><00:14:20.160><c> want</c><00:14:20.220><c> to</c><00:14:20.339><c> go</c><00:14:20.519><c> from</c><00:14:21.300><c> a</c><00:14:21.660><c> field</c>

00:14:21.769 --> 00:14:21.779 align:start position:0%
a Boolean and I want to go from a field
 

00:14:21.779 --> 00:14:24.530 align:start position:0%
a Boolean and I want to go from a field
element<00:14:22.019><c> to</c><00:14:22.320><c> a</c><00:14:22.440><c> Boolean</c><00:14:22.800><c> and</c><00:14:23.519><c> here</c><00:14:23.940><c> I</c><00:14:24.300><c> want</c><00:14:24.420><c> to</c>

00:14:24.530 --> 00:14:24.540 align:start position:0%
element to a Boolean and here I want to
 

00:14:24.540 --> 00:14:26.449 align:start position:0%
element to a Boolean and here I want to
make<00:14:24.660><c> it</c><00:14:24.779><c> really</c><00:14:24.899><c> clear</c><00:14:25.139><c> that</c><00:14:25.440><c> this</c><00:14:25.680><c> is</c><00:14:25.860><c> an</c>

00:14:26.449 --> 00:14:26.459 align:start position:0%
make it really clear that this is an
 

00:14:26.459 --> 00:14:28.730 align:start position:0%
make it really clear that this is an
unsafe<00:14:27.060><c> a</c><00:14:27.420><c> potentially</c><00:14:27.839><c> unsafe</c><00:14:28.200><c> operation</c>

00:14:28.730 --> 00:14:28.740 align:start position:0%
unsafe a potentially unsafe operation
 

00:14:28.740 --> 00:14:32.210 align:start position:0%
unsafe a potentially unsafe operation
because<00:14:29.660><c> this</c><00:14:30.660><c> res</c><00:14:30.899><c> value</c><00:14:31.200><c> I</c><00:14:31.560><c> know</c><00:14:31.680><c> that</c><00:14:32.040><c> it's</c>

00:14:32.210 --> 00:14:32.220 align:start position:0%
because this res value I know that it's
 

00:14:32.220 --> 00:14:35.389 align:start position:0%
because this res value I know that it's
0<00:14:32.459><c> or</c><00:14:33.060><c> 1</c><00:14:33.180><c> because</c><00:14:33.360><c> I</c><00:14:33.600><c> I</c><00:14:33.779><c> wrote</c><00:14:34.079><c> this</c><00:14:34.320><c> but</c><00:14:35.040><c> in</c>

00:14:35.389 --> 00:14:35.399 align:start position:0%
0 or 1 because I I wrote this but in
 

00:14:35.399 --> 00:14:38.389 align:start position:0%
0 or 1 because I I wrote this but in
theory<00:14:35.700><c> it</c><00:14:36.060><c> could</c><00:14:36.180><c> be</c><00:14:36.360><c> any</c><00:14:37.200><c> value</c><00:14:37.500><c> so</c><00:14:38.160><c> I</c><00:14:38.279><c> need</c>

00:14:38.389 --> 00:14:38.399 align:start position:0%
theory it could be any value so I need
 

00:14:38.399 --> 00:14:42.170 align:start position:0%
theory it could be any value so I need
to<00:14:38.519><c> be</c><00:14:38.639><c> really</c><00:14:38.820><c> careful</c><00:14:39.120><c> when</c><00:14:39.360><c> I</c><00:14:39.480><c> do</c><00:14:39.600><c> this</c>

00:14:42.170 --> 00:14:42.180 align:start position:0%
 
 

00:14:42.180 --> 00:14:44.990 align:start position:0%
 
um but<00:14:42.540><c> I</c><00:14:42.779><c> can</c><00:14:42.959><c> force</c><00:14:43.440><c> uh</c><00:14:44.339><c> the</c><00:14:44.519><c> creation</c><00:14:44.760><c> of</c>

00:14:44.990 --> 00:14:45.000 align:start position:0%
um but I can force uh the creation of
 

00:14:45.000 --> 00:14:46.850 align:start position:0%
um but I can force uh the creation of
this<00:14:45.180><c> Boolean</c><00:14:45.600><c> with</c><00:14:45.899><c> this</c><00:14:46.079><c> value</c>

00:14:46.850 --> 00:14:46.860 align:start position:0%
this Boolean with this value
 

00:14:46.860 --> 00:14:50.629 align:start position:0%
this Boolean with this value
finally<00:14:47.519><c> I</c><00:14:48.120><c> reconstruct</c><00:14:48.660><c> the</c><00:14:49.019><c> u32</c><00:14:49.560><c> value</c><00:14:49.800><c> from</c>

00:14:50.629 --> 00:14:50.639 align:start position:0%
finally I reconstruct the u32 value from
 

00:14:50.639 --> 00:14:53.150 align:start position:0%
finally I reconstruct the u32 value from
the<00:14:50.820><c> Boolean</c><00:14:51.240><c> array</c>

00:14:53.150 --> 00:14:53.160 align:start position:0%
the Boolean array
 

00:14:53.160 --> 00:14:57.110 align:start position:0%
the Boolean array
using<00:14:53.699><c> this</c><00:14:53.820><c> cost</c><00:14:54.000><c> function</c><00:14:54.300><c> again</c>

00:14:57.110 --> 00:14:57.120 align:start position:0%
 
 

00:14:57.120 --> 00:14:59.150 align:start position:0%
 
okay<00:14:57.480><c> and</c><00:14:57.899><c> I</c><00:14:58.019><c> changed</c><00:14:58.260><c> my</c><00:14:58.380><c> entry</c><00:14:58.680><c> point</c><00:14:58.800><c> to</c><00:14:58.980><c> use</c>

00:14:59.150 --> 00:14:59.160 align:start position:0%
okay and I changed my entry point to use
 

00:14:59.160 --> 00:15:01.129 align:start position:0%
okay and I changed my entry point to use
the<00:14:59.279><c> hand</c><00:14:59.459><c> optimized</c><00:15:00.000><c> version</c>

00:15:01.129 --> 00:15:01.139 align:start position:0%
the hand optimized version
 

00:15:01.139 --> 00:15:05.290 align:start position:0%
the hand optimized version
so<00:15:01.500><c> we</c><00:15:01.680><c> were</c><00:15:01.800><c> at</c><00:15:01.980><c> 260</c><00:15:02.699><c> and</c><00:15:03.480><c> now</c><00:15:03.600><c> we're</c><00:15:03.779><c> at</c><00:15:03.899><c> 164.</c>

00:15:05.290 --> 00:15:05.300 align:start position:0%
so we were at 260 and now we're at 164.
 

00:15:05.300 --> 00:15:09.650 align:start position:0%
so we were at 260 and now we're at 164.
so<00:15:06.300><c> we</c><00:15:06.540><c> made</c><00:15:06.720><c> uh</c><00:15:07.620><c> quite</c><00:15:08.399><c> quite</c><00:15:08.699><c> a</c><00:15:08.820><c> bit</c><00:15:08.940><c> uh</c><00:15:09.420><c> dent</c>

00:15:09.650 --> 00:15:09.660 align:start position:0%
so we made uh quite quite a bit uh dent
 

00:15:09.660 --> 00:15:12.949 align:start position:0%
so we made uh quite quite a bit uh dent
in<00:15:10.199><c> our</c><00:15:10.500><c> constraint</c><00:15:10.980><c> count</c>

00:15:12.949 --> 00:15:12.959 align:start position:0%
in our constraint count
 

00:15:12.959 --> 00:15:15.050 align:start position:0%
in our constraint count
so<00:15:13.380><c> what's</c><00:15:13.560><c> the</c><00:15:13.800><c> idea</c><00:15:14.040><c> here</c>

00:15:15.050 --> 00:15:15.060 align:start position:0%
so what's the idea here
 

00:15:15.060 --> 00:15:15.650 align:start position:0%
so what's the idea here
um

00:15:15.650 --> 00:15:15.660 align:start position:0%
um
 

00:15:15.660 --> 00:15:18.170 align:start position:0%
um
we<00:15:16.380><c> want</c><00:15:16.560><c> to</c><00:15:16.680><c> keep</c><00:15:16.980><c> all</c><00:15:17.399><c> the</c><00:15:17.519><c> guarantees</c><00:15:17.940><c> that</c>

00:15:18.170 --> 00:15:18.180 align:start position:0%
we want to keep all the guarantees that
 

00:15:18.180 --> 00:15:19.850 align:start position:0%
we want to keep all the guarantees that
we<00:15:18.300><c> have</c><00:15:18.420><c> from</c><00:15:18.720><c> our</c><00:15:18.959><c> higher</c><00:15:19.380><c> level</c><00:15:19.500><c> language</c>

00:15:19.850 --> 00:15:19.860 align:start position:0%
we have from our higher level language
 

00:15:19.860 --> 00:15:21.949 align:start position:0%
we have from our higher level language
we<00:15:20.279><c> have</c><00:15:20.399><c> types</c><00:15:20.820><c> we</c><00:15:21.000><c> have</c><00:15:21.120><c> things</c><00:15:21.360><c> we</c><00:15:21.779><c> know</c>

00:15:21.949 --> 00:15:21.959 align:start position:0%
we have types we have things we know
 

00:15:21.959 --> 00:15:23.870 align:start position:0%
we have types we have things we know
that<00:15:22.139><c> booleans</c><00:15:22.500><c> can</c><00:15:22.740><c> be</c><00:15:22.860><c> only</c><00:15:23.040><c> zero</c><00:15:23.459><c> one</c><00:15:23.579><c> if</c>

00:15:23.870 --> 00:15:23.880 align:start position:0%
that booleans can be only zero one if
 

00:15:23.880 --> 00:15:25.910 align:start position:0%
that booleans can be only zero one if
you<00:15:24.060><c> don't</c><00:15:24.180><c> write</c><00:15:24.300><c> assembly</c><00:15:24.779><c> blocks</c><00:15:25.199><c> but</c><00:15:25.800><c> at</c>

00:15:25.910 --> 00:15:25.920 align:start position:0%
you don't write assembly blocks but at
 

00:15:25.920 --> 00:15:27.290 align:start position:0%
you don't write assembly blocks but at
the<00:15:26.040><c> same</c><00:15:26.160><c> time</c><00:15:26.279><c> we</c><00:15:26.459><c> want</c><00:15:26.579><c> to</c><00:15:26.699><c> have</c><00:15:26.820><c> access</c><00:15:27.060><c> to</c>

00:15:27.290 --> 00:15:27.300 align:start position:0%
the same time we want to have access to
 

00:15:27.300 --> 00:15:29.150 align:start position:0%
the same time we want to have access to
this<00:15:27.480><c> low</c><00:15:27.660><c> level</c><00:15:27.839><c> thing</c><00:15:28.139><c> and</c><00:15:28.740><c> here</c><00:15:28.860><c> I</c><00:15:29.040><c> think</c>

00:15:29.150 --> 00:15:29.160 align:start position:0%
this low level thing and here I think
 

00:15:29.160 --> 00:15:31.430 align:start position:0%
this low level thing and here I think
there's<00:15:29.399><c> actually</c><00:15:29.699><c> a</c><00:15:29.940><c> parallel</c><00:15:30.300><c> with</c><00:15:30.540><c> rust</c><00:15:31.199><c> in</c>

00:15:31.430 --> 00:15:31.440 align:start position:0%
there's actually a parallel with rust in
 

00:15:31.440 --> 00:15:33.650 align:start position:0%
there's actually a parallel with rust in
a<00:15:31.560><c> way</c><00:15:31.680><c> which</c><00:15:32.220><c> says</c><00:15:32.579><c> okay</c><00:15:32.699><c> we</c><00:15:33.060><c> we</c><00:15:33.300><c> have</c><00:15:33.540><c> a</c>

00:15:33.650 --> 00:15:33.660 align:start position:0%
a way which says okay we we have a
 

00:15:33.660 --> 00:15:35.569 align:start position:0%
a way which says okay we we have a
compiler<00:15:34.019><c> that's</c><00:15:34.199><c> like</c><00:15:34.500><c> really</c><00:15:34.980><c> strict</c><00:15:35.279><c> all</c>

00:15:35.569 --> 00:15:35.579 align:start position:0%
compiler that's like really strict all
 

00:15:35.579 --> 00:15:36.769 align:start position:0%
compiler that's like really strict all
these<00:15:35.820><c> things</c><00:15:35.940><c> but</c><00:15:36.180><c> we</c><00:15:36.360><c> still</c><00:15:36.480><c> want</c><00:15:36.600><c> to</c><00:15:36.720><c> be</c>

00:15:36.769 --> 00:15:36.779 align:start position:0%
these things but we still want to be
 

00:15:36.779 --> 00:15:39.050 align:start position:0%
these things but we still want to be
able<00:15:36.899><c> to</c><00:15:37.079><c> do</c><00:15:37.260><c> all</c><00:15:37.500><c> these</c><00:15:37.860><c> lower</c><00:15:38.519><c> level</c><00:15:38.760><c> things</c>

00:15:39.050 --> 00:15:39.060 align:start position:0%
able to do all these lower level things
 

00:15:39.060 --> 00:15:41.930 align:start position:0%
able to do all these lower level things
we<00:15:39.240><c> want</c><00:15:39.480><c> to</c><00:15:39.600><c> disable</c><00:15:40.079><c> a</c><00:15:40.320><c> bunch</c><00:15:40.500><c> of</c><00:15:40.620><c> checks</c><00:15:41.399><c> and</c>

00:15:41.930 --> 00:15:41.940 align:start position:0%
we want to disable a bunch of checks and
 

00:15:41.940 --> 00:15:44.509 align:start position:0%
we want to disable a bunch of checks and
we<00:15:42.060><c> have</c><00:15:42.240><c> a</c><00:15:42.480><c> similar</c><00:15:42.839><c> approach</c><00:15:43.199><c> where</c><00:15:44.100><c> as</c><00:15:44.339><c> a</c>

00:15:44.509 --> 00:15:44.519 align:start position:0%
we have a similar approach where as a
 

00:15:44.519 --> 00:15:46.610 align:start position:0%
we have a similar approach where as a
developer<00:15:44.880><c> you</c><00:15:45.120><c> would</c><00:15:45.240><c> write</c><00:15:45.480><c> most</c><00:15:46.079><c> of</c><00:15:46.320><c> your</c>

00:15:46.610 --> 00:15:46.620 align:start position:0%
developer you would write most of your
 

00:15:46.620 --> 00:15:50.689 align:start position:0%
developer you would write most of your
program<00:15:47.220><c> in</c><00:15:48.180><c> safe</c><00:15:48.480><c> zocots</c><00:15:49.019><c> let's</c><00:15:49.380><c> say</c><00:15:49.699><c> but</c>

00:15:50.689 --> 00:15:50.699 align:start position:0%
program in safe zocots let's say but
 

00:15:50.699 --> 00:15:52.790 align:start position:0%
program in safe zocots let's say but
then<00:15:50.820><c> for</c><00:15:51.000><c> the</c><00:15:51.120><c> few</c><00:15:51.240><c> parts</c><00:15:51.480><c> that</c><00:15:52.079><c> need</c><00:15:52.380><c> the</c>

00:15:52.790 --> 00:15:52.800 align:start position:0%
then for the few parts that need the
 

00:15:52.800 --> 00:15:54.710 align:start position:0%
then for the few parts that need the
extra<00:15:52.980><c> performance</c><00:15:53.579><c> you</c><00:15:53.880><c> can</c><00:15:54.000><c> write</c><00:15:54.180><c> them</c><00:15:54.420><c> in</c>

00:15:54.710 --> 00:15:54.720 align:start position:0%
extra performance you can write them in
 

00:15:54.720 --> 00:15:57.769 align:start position:0%
extra performance you can write them in
those<00:15:54.899><c> ASM</c><00:15:55.740><c> blocks</c><00:15:56.100><c> and</c><00:15:57.060><c> try</c><00:15:57.240><c> to</c><00:15:57.420><c> make</c><00:15:57.540><c> those</c>

00:15:57.769 --> 00:15:57.779 align:start position:0%
those ASM blocks and try to make those
 

00:15:57.779 --> 00:15:59.689 align:start position:0%
those ASM blocks and try to make those
blocks<00:15:58.139><c> as</c><00:15:58.380><c> small</c><00:15:58.620><c> as</c><00:15:58.800><c> possible</c><00:15:59.100><c> so</c><00:15:59.399><c> that</c><00:15:59.519><c> when</c>

00:15:59.689 --> 00:15:59.699 align:start position:0%
blocks as small as possible so that when
 

00:15:59.699 --> 00:16:01.490 align:start position:0%
blocks as small as possible so that when
you<00:15:59.820><c> need</c><00:15:59.940><c> to</c><00:16:00.060><c> review</c><00:16:00.180><c> the</c><00:16:00.480><c> code</c><00:16:00.660><c> or</c><00:16:01.260><c> make</c><00:16:01.380><c> sure</c>

00:16:01.490 --> 00:16:01.500 align:start position:0%
you need to review the code or make sure
 

00:16:01.500 --> 00:16:03.769 align:start position:0%
you need to review the code or make sure
that<00:16:01.680><c> things</c><00:16:01.920><c> are</c><00:16:02.040><c> not</c><00:16:02.160><c> unconstrained</c><00:16:03.360><c> you</c>

00:16:03.769 --> 00:16:03.779 align:start position:0%
that things are not unconstrained you
 

00:16:03.779 --> 00:16:05.269 align:start position:0%
that things are not unconstrained you
know<00:16:03.959><c> exactly</c><00:16:04.260><c> where</c><00:16:04.380><c> to</c><00:16:04.560><c> look</c><00:16:04.740><c> at</c><00:16:04.860><c> and</c><00:16:05.040><c> these</c>

00:16:05.269 --> 00:16:05.279 align:start position:0%
know exactly where to look at and these
 

00:16:05.279 --> 00:16:08.150 align:start position:0%
know exactly where to look at and these
things<00:16:05.399><c> are</c><00:16:05.579><c> relatively</c><00:16:06.360><c> small</c>

00:16:08.150 --> 00:16:08.160 align:start position:0%
things are relatively small
 

00:16:08.160 --> 00:16:10.670 align:start position:0%
things are relatively small
um<00:16:08.220><c> one</c><00:16:08.820><c> side</c><00:16:09.120><c> effect</c><00:16:09.300><c> of</c><00:16:09.720><c> this</c><00:16:09.899><c> also</c><00:16:10.320><c> for</c><00:16:10.500><c> us</c>

00:16:10.670 --> 00:16:10.680 align:start position:0%
um one side effect of this also for us
 

00:16:10.680 --> 00:16:13.129 align:start position:0%
um one side effect of this also for us
as<00:16:11.040><c> a</c><00:16:11.160><c> compiler</c><00:16:11.579><c> team</c><00:16:11.760><c> is</c><00:16:12.480><c> that</c><00:16:12.660><c> we</c><00:16:12.839><c> can</c><00:16:12.959><c> use</c>

00:16:13.129 --> 00:16:13.139 align:start position:0%
as a compiler team is that we can use
 

00:16:13.139 --> 00:16:15.110 align:start position:0%
as a compiler team is that we can use
this<00:16:13.440><c> ourselves</c><00:16:13.920><c> to</c><00:16:14.279><c> reduce</c><00:16:14.399><c> the</c><00:16:14.699><c> complexity</c>

00:16:15.110 --> 00:16:15.120 align:start position:0%
this ourselves to reduce the complexity
 

00:16:15.120 --> 00:16:17.689 align:start position:0%
this ourselves to reduce the complexity
of<00:16:15.240><c> the</c><00:16:15.360><c> compiler</c><00:16:15.839><c> this</c><00:16:16.440><c> particular</c>

00:16:17.689 --> 00:16:17.699 align:start position:0%
of the compiler this particular
 

00:16:17.699 --> 00:16:21.250 align:start position:0%
of the compiler this particular
um<00:16:18.180><c> operation</c><00:16:18.839><c> and</c><00:16:19.079><c> the</c><00:16:19.199><c> shot</c><00:16:19.380><c> 256</c><00:16:20.180><c> algorithm</c>

00:16:21.250 --> 00:16:21.260 align:start position:0%
um operation and the shot 256 algorithm
 

00:16:21.260 --> 00:16:24.290 align:start position:0%
um operation and the shot 256 algorithm
we<00:16:22.260><c> in</c><00:16:22.500><c> the</c><00:16:22.680><c> compiler</c><00:16:23.160><c> we</c><00:16:23.639><c> have</c><00:16:23.820><c> a</c><00:16:24.120><c> special</c>

00:16:24.290 --> 00:16:24.300 align:start position:0%
we in the compiler we have a special
 

00:16:24.300 --> 00:16:26.210 align:start position:0%
we in the compiler we have a special
case<00:16:24.600><c> which</c><00:16:25.019><c> detects</c><00:16:25.500><c> whenever</c><00:16:25.860><c> we're</c><00:16:25.980><c> doing</c>

00:16:26.210 --> 00:16:26.220 align:start position:0%
case which detects whenever we're doing
 

00:16:26.220 --> 00:16:29.930 align:start position:0%
case which detects whenever we're doing
this<00:16:26.519><c> and</c><00:16:27.240><c> uses</c><00:16:27.720><c> this</c><00:16:28.380><c> exact</c><00:16:28.800><c> constraints</c>

00:16:29.930 --> 00:16:29.940 align:start position:0%
this and uses this exact constraints
 

00:16:29.940 --> 00:16:32.030 align:start position:0%
this and uses this exact constraints
but<00:16:30.540><c> now</c><00:16:30.779><c> potentially</c><00:16:31.260><c> using</c><00:16:31.620><c> assembly</c>

00:16:32.030 --> 00:16:32.040 align:start position:0%
but now potentially using assembly
 

00:16:32.040 --> 00:16:34.629 align:start position:0%
but now potentially using assembly
blocks<00:16:32.399><c> what</c><00:16:32.639><c> we</c><00:16:32.760><c> can</c><00:16:32.880><c> do</c><00:16:33.060><c> is</c><00:16:33.300><c> rewriting</c>

00:16:34.629 --> 00:16:34.639 align:start position:0%
blocks what we can do is rewriting
 

00:16:34.639 --> 00:16:36.530 align:start position:0%
blocks what we can do is rewriting
some<00:16:35.639><c> of</c>

00:16:36.530 --> 00:16:36.540 align:start position:0%
some of
 

00:16:36.540 --> 00:16:38.389 align:start position:0%
some of
the<00:16:37.019><c> internals</c><00:16:37.440><c> of</c><00:16:37.560><c> the</c><00:16:37.680><c> compiler</c><00:16:38.100><c> to</c>

00:16:38.389 --> 00:16:38.399 align:start position:0%
the internals of the compiler to
 

00:16:38.399 --> 00:16:40.249 align:start position:0%
the internals of the compiler to
actually<00:16:38.579><c> use</c><00:16:38.940><c> these</c><00:16:39.300><c> things</c>

00:16:40.249 --> 00:16:40.259 align:start position:0%
actually use these things
 

00:16:40.259 --> 00:16:42.769 align:start position:0%
actually use these things
which<00:16:40.980><c> then</c><00:16:41.339><c> reduce</c><00:16:41.639><c> the</c><00:16:42.000><c> size</c><00:16:42.360><c> of</c><00:16:42.600><c> the</c>

00:16:42.769 --> 00:16:42.779 align:start position:0%
which then reduce the size of the
 

00:16:42.779 --> 00:16:44.569 align:start position:0%
which then reduce the size of the
compiler<00:16:43.320><c> code</c><00:16:43.440><c> base</c><00:16:43.620><c> and</c><00:16:43.860><c> makes</c><00:16:43.980><c> it</c><00:16:44.220><c> easier</c>

00:16:44.569 --> 00:16:44.579 align:start position:0%
compiler code base and makes it easier
 

00:16:44.579 --> 00:16:47.449 align:start position:0%
compiler code base and makes it easier
to<00:16:44.820><c> reason</c><00:16:45.000><c> about</c><00:16:45.300><c> an</c><00:16:45.600><c> audit</c><00:16:46.380><c> the</c><00:16:47.220><c> next</c><00:16:47.339><c> thing</c>

00:16:47.449 --> 00:16:47.459 align:start position:0%
to reason about an audit the next thing
 

00:16:47.459 --> 00:16:50.210 align:start position:0%
to reason about an audit the next thing
that<00:16:47.639><c> I</c><00:16:47.759><c> want</c><00:16:47.880><c> to</c><00:16:48.000><c> talk</c><00:16:48.180><c> about</c><00:16:48.360><c> which</c><00:16:49.079><c> is</c><00:16:49.320><c> uh</c>

00:16:50.210 --> 00:16:50.220 align:start position:0%
that I want to talk about which is uh
 

00:16:50.220 --> 00:16:52.370 align:start position:0%
that I want to talk about which is uh
unrelated<00:16:50.699><c> to</c><00:16:50.940><c> this</c><00:16:51.120><c> is</c><00:16:51.839><c> the</c><00:16:52.139><c> fact</c><00:16:52.259><c> that</c>

00:16:52.370 --> 00:16:52.380 align:start position:0%
unrelated to this is the fact that
 

00:16:52.380 --> 00:16:54.110 align:start position:0%
unrelated to this is the fact that
Socrates<00:16:52.800><c> is</c><00:16:52.980><c> not</c><00:16:53.160><c> compatible</c><00:16:53.519><c> with</c><00:16:53.699><c> with</c>

00:16:54.110 --> 00:16:54.120 align:start position:0%
Socrates is not compatible with with
 

00:16:54.120 --> 00:16:57.530 align:start position:0%
Socrates is not compatible with with
snot<00:16:54.660><c> JS</c><00:16:55.019><c> so</c><00:16:55.500><c> snog</c><00:16:55.860><c> JS</c><00:16:56.160><c> is</c><00:16:56.639><c> a</c><00:16:57.000><c> JavaScript</c>

00:16:57.530 --> 00:16:57.540 align:start position:0%
snot JS so snog JS is a JavaScript
 

00:16:57.540 --> 00:17:00.949 align:start position:0%
snot JS so snog JS is a JavaScript
library<00:16:57.899><c> for</c><00:16:58.500><c> snorix</c><00:16:59.040><c> from</c><00:16:59.579><c> the</c><00:17:00.540><c> identity</c>

00:17:00.949 --> 00:17:00.959 align:start position:0%
library for snorix from the identity
 

00:17:00.959 --> 00:17:03.949 align:start position:0%
library for snorix from the identity
team<00:17:01.259><c> from</c><00:17:01.740><c> the</c><00:17:01.860><c> circum</c><00:17:02.220><c> team</c><00:17:02.660><c> which</c><00:17:03.660><c> has</c><00:17:03.839><c> a</c>

00:17:03.949 --> 00:17:03.959 align:start position:0%
team from the circum team which has a
 

00:17:03.959 --> 00:17:06.169 align:start position:0%
team from the circum team which has a
bunch<00:17:04.079><c> of</c><00:17:04.199><c> tools</c><00:17:04.500><c> allowing</c><00:17:04.919><c> you</c><00:17:05.100><c> to</c><00:17:05.579><c> work</c><00:17:06.000><c> with</c>

00:17:06.169 --> 00:17:06.179 align:start position:0%
bunch of tools allowing you to work with
 

00:17:06.179 --> 00:17:08.689 align:start position:0%
bunch of tools allowing you to work with
snarks<00:17:06.660><c> in</c><00:17:07.199><c> a</c><00:17:07.319><c> JavaScript</c><00:17:07.740><c> context</c>

00:17:08.689 --> 00:17:08.699 align:start position:0%
snarks in a JavaScript context
 

00:17:08.699 --> 00:17:11.990 align:start position:0%
snarks in a JavaScript context
what<00:17:09.240><c> we</c><00:17:09.419><c> have</c><00:17:09.600><c> now</c><00:17:09.900><c> available</c><00:17:10.260><c> today</c><00:17:10.679><c> is</c><00:17:11.640><c> uh</c>

00:17:11.990 --> 00:17:12.000 align:start position:0%
what we have now available today is uh
 

00:17:12.000 --> 00:17:14.210 align:start position:0%
what we have now available today is uh
if<00:17:12.240><c> you</c><00:17:12.360><c> start</c><00:17:12.540><c> from</c><00:17:12.839><c> your</c><00:17:13.199><c> your</c><00:17:13.500><c> zocoties</c>

00:17:14.210 --> 00:17:14.220 align:start position:0%
if you start from your your zocoties
 

00:17:14.220 --> 00:17:16.309 align:start position:0%
if you start from your your zocoties
program<00:17:14.400><c> and</c><00:17:15.059><c> you</c><00:17:15.179><c> run</c><00:17:15.360><c> the</c><00:17:15.720><c> compilation</c>

00:17:16.309 --> 00:17:16.319 align:start position:0%
program and you run the compilation
 

00:17:16.319 --> 00:17:18.530 align:start position:0%
program and you run the compilation
currently

00:17:18.530 --> 00:17:18.540 align:start position:0%
currently
 

00:17:18.540 --> 00:17:21.289 align:start position:0%
currently
um it<00:17:19.199><c> returns</c><00:17:19.679><c> an</c><00:17:19.799><c> output</c><00:17:20.160><c> which</c><00:17:20.520><c> is</c><00:17:20.699><c> the</c><00:17:21.120><c> low</c>

00:17:21.289 --> 00:17:21.299 align:start position:0%
um it returns an output which is the low
 

00:17:21.299 --> 00:17:23.569 align:start position:0%
um it returns an output which is the low
level<00:17:21.480><c> zocchi's</c><00:17:22.260><c> representation</c><00:17:22.620><c> but</c><00:17:23.459><c> you</c>

00:17:23.569 --> 00:17:23.579 align:start position:0%
level zocchi's representation but you
 

00:17:23.579 --> 00:17:27.169 align:start position:0%
level zocchi's representation but you
can<00:17:23.699><c> also</c><00:17:24.000><c> optionally</c><00:17:24.540><c> return</c><00:17:25.260><c> and</c><00:17:25.980><c> Dot</c><00:17:26.459><c> r1cs</c>

00:17:27.169 --> 00:17:27.179 align:start position:0%
can also optionally return and Dot r1cs
 

00:17:27.179 --> 00:17:29.990 align:start position:0%
can also optionally return and Dot r1cs
file<00:17:27.540><c> which</c><00:17:27.780><c> is</c><00:17:27.959><c> uh</c><00:17:28.439><c> the</c><00:17:29.040><c> format</c><00:17:29.400><c> that</c><00:17:29.760><c> is</c>

00:17:29.990 --> 00:17:30.000 align:start position:0%
file which is uh the format that is
 

00:17:30.000 --> 00:17:33.110 align:start position:0%
file which is uh the format that is
accepted<00:17:30.540><c> by</c><00:17:30.900><c> it's</c><00:17:31.799><c> not</c><00:17:31.980><c> Js</c>

00:17:33.110 --> 00:17:33.120 align:start position:0%
accepted by it's not Js
 

00:17:33.120 --> 00:17:36.110 align:start position:0%
accepted by it's not Js
and<00:17:33.840><c> then</c><00:17:34.140><c> if</c><00:17:34.740><c> you</c><00:17:34.860><c> want</c><00:17:35.039><c> to</c><00:17:35.160><c> execute</c><00:17:35.880><c> your</c>

00:17:36.110 --> 00:17:36.120 align:start position:0%
and then if you want to execute your
 

00:17:36.120 --> 00:17:40.490 align:start position:0%
and then if you want to execute your
program<00:17:36.299><c> you</c><00:17:37.200><c> take</c><00:17:37.440><c> your</c><00:17:38.280><c> input</c><00:17:38.780><c> and</c><00:17:39.780><c> uh</c><00:17:40.260><c> and</c>

00:17:40.490 --> 00:17:40.500 align:start position:0%
program you take your input and uh and
 

00:17:40.500 --> 00:17:43.190 align:start position:0%
program you take your input and uh and
the<00:17:40.620><c> program</c><00:17:40.740><c> itself</c><00:17:41.220><c> and</c><00:17:42.059><c> you</c><00:17:42.240><c> can</c><00:17:42.299><c> create</c>

00:17:43.190 --> 00:17:43.200 align:start position:0%
the program itself and you can create
 

00:17:43.200 --> 00:17:45.529 align:start position:0%
the program itself and you can create
a<00:17:43.799><c> witness</c><00:17:44.100><c> file</c><00:17:44.460><c> which</c><00:17:44.760><c> is</c><00:17:44.880><c> also</c><00:17:45.120><c> compatible</c>

00:17:45.529 --> 00:17:45.539 align:start position:0%
a witness file which is also compatible
 

00:17:45.539 --> 00:17:48.049 align:start position:0%
a witness file which is also compatible
with<00:17:45.780><c> with</c><00:17:46.080><c> snot</c><00:17:46.740><c> Js</c>

00:17:48.049 --> 00:17:48.059 align:start position:0%
with with snot Js
 

00:17:48.059 --> 00:17:51.529 align:start position:0%
with with snot Js
and<00:17:48.539><c> from</c><00:17:48.780><c> this</c><00:17:48.960><c> point</c><00:17:49.140><c> on</c><00:17:49.700><c> your</c><00:17:50.700><c> Instagram</c><00:17:51.000><c> JS</c>

00:17:51.529 --> 00:17:51.539 align:start position:0%
and from this point on your Instagram JS
 

00:17:51.539 --> 00:17:53.630 align:start position:0%
and from this point on your Instagram JS
lens<00:17:51.840><c> so</c><00:17:51.960><c> you</c><00:17:52.140><c> can</c><00:17:52.200><c> do</c><00:17:52.380><c> whatever</c><00:17:52.620><c> snog</c><00:17:53.400><c> JS</c>

00:17:53.630 --> 00:17:53.640 align:start position:0%
lens so you can do whatever snog JS
 

00:17:53.640 --> 00:17:56.270 align:start position:0%
lens so you can do whatever snog JS
enables<00:17:54.059><c> you</c><00:17:54.240><c> to</c><00:17:54.360><c> do</c><00:17:54.559><c> using</c><00:17:55.559><c> different</c><00:17:55.919><c> proof</c>

00:17:56.270 --> 00:17:56.280 align:start position:0%
enables you to do using different proof
 

00:17:56.280 --> 00:17:58.850 align:start position:0%
enables you to do using different proof
systems<00:17:56.760><c> uh</c><00:17:57.600><c> using</c><00:17:57.900><c> a</c><00:17:58.080><c> powersoft</c><00:17:58.500><c> Tau</c>

00:17:58.850 --> 00:17:58.860 align:start position:0%
systems uh using a powersoft Tau
 

00:17:58.860 --> 00:18:00.350 align:start position:0%
systems uh using a powersoft Tau
ceremony

00:18:00.350 --> 00:18:00.360 align:start position:0%
ceremony
 

00:18:00.360 --> 00:18:01.010 align:start position:0%
ceremony
um

00:18:01.010 --> 00:18:01.020 align:start position:0%
um
 

00:18:01.020 --> 00:18:04.430 align:start position:0%
um
uh<00:18:01.799><c> and</c><00:18:02.520><c> run</c><00:18:02.880><c> your</c><00:18:03.360><c> verifier</c><00:18:03.780><c> in</c><00:18:03.900><c> the</c><00:18:04.020><c> browser</c>

00:18:04.430 --> 00:18:04.440 align:start position:0%
uh and run your verifier in the browser
 

00:18:04.440 --> 00:18:05.990 align:start position:0%
uh and run your verifier in the browser
etc<00:18:04.860><c> etc</c>

00:18:05.990 --> 00:18:06.000 align:start position:0%
etc etc
 

00:18:06.000 --> 00:18:08.270 align:start position:0%
etc etc
so<00:18:06.419><c> any</c><00:18:06.660><c> tooling</c><00:18:07.260><c> that's</c><00:18:07.380><c> compatible</c><00:18:07.860><c> with</c>

00:18:08.270 --> 00:18:08.280 align:start position:0%
so any tooling that's compatible with
 

00:18:08.280 --> 00:18:10.310 align:start position:0%
so any tooling that's compatible with
these<00:18:09.000><c> formats</c><00:18:09.480><c> can</c><00:18:09.720><c> now</c><00:18:09.840><c> be</c><00:18:10.080><c> used</c><00:18:10.200><c> with</c>

00:18:10.310 --> 00:18:10.320 align:start position:0%
these formats can now be used with
 

00:18:10.320 --> 00:18:11.870 align:start position:0%
these formats can now be used with
circuses<00:18:10.860><c> as</c><00:18:11.039><c> well</c>

00:18:11.870 --> 00:18:11.880 align:start position:0%
circuses as well
 

00:18:11.880 --> 00:18:15.169 align:start position:0%
circuses as well
another<00:18:12.419><c> topic</c><00:18:12.840><c> that</c><00:18:12.960><c> I</c><00:18:13.140><c> wanted</c><00:18:13.200><c> to</c><00:18:13.380><c> touch</c><00:18:13.620><c> on</c>

00:18:15.169 --> 00:18:15.179 align:start position:0%
another topic that I wanted to touch on
 

00:18:15.179 --> 00:18:18.289 align:start position:0%
another topic that I wanted to touch on
quickly<00:18:15.900><c> is</c><00:18:16.799><c> the</c>

00:18:18.289 --> 00:18:18.299 align:start position:0%
quickly is the
 

00:18:18.299 --> 00:18:20.690 align:start position:0%
quickly is the
is<00:18:18.840><c> incrementally</c><00:18:19.700><c> incrementally</c>

00:18:20.690 --> 00:18:20.700 align:start position:0%
is incrementally incrementally
 

00:18:20.700 --> 00:18:22.789 align:start position:0%
is incrementally incrementally
verifiable<00:18:21.360><c> computation</c><00:18:21.840><c> so</c><00:18:22.380><c> this</c><00:18:22.559><c> is</c><00:18:22.679><c> a</c>

00:18:22.789 --> 00:18:22.799 align:start position:0%
verifiable computation so this is a
 

00:18:22.799 --> 00:18:24.350 align:start position:0%
verifiable computation so this is a
scary<00:18:22.919><c> word</c><00:18:23.220><c> but</c><00:18:23.520><c> it's</c><00:18:23.700><c> basically</c><00:18:23.940><c> the</c><00:18:24.120><c> idea</c>

00:18:24.350 --> 00:18:24.360 align:start position:0%
scary word but it's basically the idea
 

00:18:24.360 --> 00:18:26.090 align:start position:0%
scary word but it's basically the idea
that<00:18:24.539><c> if</c><00:18:24.720><c> you</c><00:18:24.840><c> have</c><00:18:24.960><c> a</c><00:18:25.080><c> computation</c>

00:18:26.090 --> 00:18:26.100 align:start position:0%
that if you have a computation
 

00:18:26.100 --> 00:18:29.510 align:start position:0%
that if you have a computation
which<00:18:26.580><c> you</c><00:18:26.760><c> can</c><00:18:26.880><c> split</c><00:18:27.299><c> in</c><00:18:27.600><c> steps</c><00:18:28.080><c> which</c><00:18:28.799><c> are</c>

00:18:29.510 --> 00:18:29.520 align:start position:0%
which you can split in steps which are
 

00:18:29.520 --> 00:18:31.850 align:start position:0%
which you can split in steps which are
basically<00:18:29.880><c> the</c><00:18:30.120><c> same</c><00:18:30.299><c> function</c>

00:18:31.850 --> 00:18:31.860 align:start position:0%
basically the same function
 

00:18:31.860 --> 00:18:34.130 align:start position:0%
basically the same function
being<00:18:32.340><c> run</c><00:18:32.640><c> over</c><00:18:33.059><c> and</c><00:18:33.240><c> over</c><00:18:33.480><c> again</c><00:18:33.660><c> on</c><00:18:34.020><c> the</c>

00:18:34.130 --> 00:18:34.140 align:start position:0%
being run over and over again on the
 

00:18:34.140 --> 00:18:36.230 align:start position:0%
being run over and over again on the
same<00:18:34.320><c> on</c><00:18:34.679><c> on</c><00:18:34.799><c> the</c><00:18:35.039><c> state</c><00:18:35.220><c> and</c><00:18:35.520><c> updating</c><00:18:36.000><c> the</c>

00:18:36.230 --> 00:18:36.240 align:start position:0%
same on on the state and updating the
 

00:18:36.240 --> 00:18:37.690 align:start position:0%
same on on the state and updating the
state

00:18:37.690 --> 00:18:37.700 align:start position:0%
state
 

00:18:37.700 --> 00:18:40.549 align:start position:0%
state
then<00:18:38.700><c> you</c><00:18:39.179><c> can</c><00:18:39.299><c> actually</c><00:18:39.539><c> use</c><00:18:40.020><c> recursive</c>

00:18:40.549 --> 00:18:40.559 align:start position:0%
then you can actually use recursive
 

00:18:40.559 --> 00:18:42.650 align:start position:0%
then you can actually use recursive
snarks<00:18:41.160><c> to</c><00:18:41.700><c> prove</c><00:18:42.000><c> this</c><00:18:42.120><c> computation</c>

00:18:42.650 --> 00:18:42.660 align:start position:0%
snarks to prove this computation
 

00:18:42.660 --> 00:18:45.289 align:start position:0%
snarks to prove this computation
incrementally<00:18:43.559><c> so</c><00:18:44.340><c> as</c><00:18:44.520><c> opposed</c><00:18:44.820><c> to</c><00:18:44.820><c> Socrates</c>

00:18:45.289 --> 00:18:45.299 align:start position:0%
incrementally so as opposed to Socrates
 

00:18:45.299 --> 00:18:47.270 align:start position:0%
incrementally so as opposed to Socrates
currently<00:18:45.780><c> to</c><00:18:46.080><c> others</c><00:18:46.620><c> proof</c><00:18:46.799><c> systems</c><00:18:47.100><c> where</c>

00:18:47.270 --> 00:18:47.280 align:start position:0%
currently to others proof systems where
 

00:18:47.280 --> 00:18:48.710 align:start position:0%
currently to others proof systems where
we<00:18:47.400><c> can</c><00:18:47.520><c> think</c><00:18:47.640><c> of</c><00:18:47.760><c> them</c><00:18:47.940><c> as</c><00:18:48.179><c> more</c><00:18:48.419><c> like</c><00:18:48.539><c> an</c>

00:18:48.710 --> 00:18:48.720 align:start position:0%
we can think of them as more like an
 

00:18:48.720 --> 00:18:51.110 align:start position:0%
we can think of them as more like an
Asic<00:18:49.080><c> so</c><00:18:49.679><c> your</c><00:18:49.799><c> circuit</c><00:18:50.220><c> is</c><00:18:50.400><c> like</c><00:18:50.580><c> this</c><00:18:50.700><c> Asic</c>

00:18:51.110 --> 00:18:51.120 align:start position:0%
Asic so your circuit is like this Asic
 

00:18:51.120 --> 00:18:53.210 align:start position:0%
Asic so your circuit is like this Asic
that's<00:18:51.360><c> really</c><00:18:51.600><c> set</c><00:18:52.140><c> in</c><00:18:52.380><c> a</c><00:18:52.500><c> stone</c><00:18:52.620><c> and</c><00:18:52.980><c> you</c><00:18:53.100><c> can</c>

00:18:53.210 --> 00:18:53.220 align:start position:0%
that's really set in a stone and you can
 

00:18:53.220 --> 00:18:54.650 align:start position:0%
that's really set in a stone and you can
do<00:18:53.460><c> only</c><00:18:53.640><c> one</c><00:18:53.880><c> computation</c><00:18:54.299><c> and</c><00:18:54.539><c> everything</c>

00:18:54.650 --> 00:18:54.660 align:start position:0%
do only one computation and everything
 

00:18:54.660 --> 00:18:57.409 align:start position:0%
do only one computation and everything
is<00:18:55.020><c> bounded</c><00:18:55.440><c> and</c><00:18:55.740><c> static</c><00:18:56.160><c> in</c><00:18:56.940><c> this</c><00:18:57.059><c> case</c><00:18:57.179><c> you</c>

00:18:57.409 --> 00:18:57.419 align:start position:0%
is bounded and static in this case you
 

00:18:57.419 --> 00:19:00.169 align:start position:0%
is bounded and static in this case you
can<00:18:57.539><c> have</c><00:18:57.720><c> a</c><00:18:58.020><c> computation</c><00:18:58.440><c> where</c><00:18:58.740><c> you</c><00:18:58.919><c> run</c><00:18:59.179><c> one</c>

00:19:00.169 --> 00:19:00.179 align:start position:0%
can have a computation where you run one
 

00:19:00.179 --> 00:19:01.549 align:start position:0%
can have a computation where you run one
round<00:19:00.360><c> of</c><00:19:00.600><c> the</c><00:19:00.780><c> computation</c><00:19:01.140><c> and</c><00:19:01.440><c> then</c>

00:19:01.549 --> 00:19:01.559 align:start position:0%
round of the computation and then
 

00:19:01.559 --> 00:19:04.070 align:start position:0%
round of the computation and then
another<00:19:01.740><c> one</c><00:19:02.039><c> later</c><00:19:02.220><c> and</c><00:19:02.460><c> you</c><00:19:02.640><c> can</c><00:19:03.020><c> prove</c><00:19:04.020><c> the</c>

00:19:04.070 --> 00:19:04.080 align:start position:0%
another one later and you can prove the
 

00:19:04.080 --> 00:19:06.169 align:start position:0%
another one later and you can prove the
execute<00:19:04.440><c> the</c><00:19:04.860><c> execution</c><00:19:05.280><c> of</c><00:19:06.000><c> that</c>

00:19:06.169 --> 00:19:06.179 align:start position:0%
execute the execution of that
 

00:19:06.179 --> 00:19:09.289 align:start position:0%
execute the execution of that
competition<00:19:06.660><c> at</c><00:19:07.440><c> each</c><00:19:07.620><c> step</c>

00:19:09.289 --> 00:19:09.299 align:start position:0%
competition at each step
 

00:19:09.299 --> 00:19:11.529 align:start position:0%
competition at each step
so<00:19:09.720><c> some</c><00:19:09.960><c> use</c><00:19:10.140><c> cases</c><00:19:10.440><c> for</c><00:19:10.740><c> that</c><00:19:10.919><c> are</c>

00:19:11.529 --> 00:19:11.539 align:start position:0%
so some use cases for that are
 

00:19:11.539 --> 00:19:13.669 align:start position:0%
so some use cases for that are
succinctly<00:19:12.539><c> verifiable</c><00:19:13.140><c> blockchain</c><00:19:13.500><c> so</c>

00:19:13.669 --> 00:19:13.679 align:start position:0%
succinctly verifiable blockchain so
 

00:19:13.679 --> 00:19:15.289 align:start position:0%
succinctly verifiable blockchain so
maybe<00:19:13.860><c> some</c><00:19:14.039><c> of</c><00:19:14.160><c> you</c><00:19:14.220><c> have</c><00:19:14.340><c> heard</c><00:19:14.520><c> of</c><00:19:14.700><c> the</c><00:19:15.059><c> Mina</c>

00:19:15.289 --> 00:19:15.299 align:start position:0%
maybe some of you have heard of the Mina
 

00:19:15.299 --> 00:19:17.990 align:start position:0%
maybe some of you have heard of the Mina
blockchain<00:19:15.840><c> where</c><00:19:16.440><c> basically</c><00:19:16.919><c> you</c><00:19:17.580><c> use</c><00:19:17.760><c> this</c>

00:19:17.990 --> 00:19:18.000 align:start position:0%
blockchain where basically you use this
 

00:19:18.000 --> 00:19:21.950 align:start position:0%
blockchain where basically you use this
to<00:19:18.299><c> have</c><00:19:18.480><c> a</c><00:19:19.200><c> a</c><00:19:19.740><c> blockchain</c><00:19:20.340><c> where</c><00:19:20.780><c> each</c><00:19:21.780><c> time</c>

00:19:21.950 --> 00:19:21.960 align:start position:0%
to have a a blockchain where each time
 

00:19:21.960 --> 00:19:24.350 align:start position:0%
to have a a blockchain where each time
you<00:19:22.140><c> get</c><00:19:22.260><c> a</c><00:19:22.380><c> new</c><00:19:22.500><c> block</c><00:19:22.679><c> you</c>

00:19:24.350 --> 00:19:24.360 align:start position:0%
you get a new block you
 

00:19:24.360 --> 00:19:26.510 align:start position:0%
you get a new block you
you<00:19:24.419><c> verify</c><00:19:25.260><c> the</c><00:19:25.500><c> previous</c><00:19:25.679><c> block</c><00:19:25.980><c> as</c><00:19:26.220><c> well</c><00:19:26.400><c> as</c>

00:19:26.510 --> 00:19:26.520 align:start position:0%
you verify the previous block as well as
 

00:19:26.520 --> 00:19:27.890 align:start position:0%
you verify the previous block as well as
the<00:19:26.640><c> transaction</c><00:19:26.940><c> of</c><00:19:27.179><c> this</c><00:19:27.299><c> block</c><00:19:27.480><c> and</c><00:19:27.720><c> it</c>

00:19:27.890 --> 00:19:27.900 align:start position:0%
the transaction of this block and it
 

00:19:27.900 --> 00:19:29.390 align:start position:0%
the transaction of this block and it
creates<00:19:28.320><c> a</c><00:19:28.440><c> snark</c><00:19:28.679><c> and</c><00:19:28.919><c> then</c><00:19:29.039><c> you</c><00:19:29.160><c> have</c><00:19:29.280><c> this</c>

00:19:29.390 --> 00:19:29.400 align:start position:0%
creates a snark and then you have this
 

00:19:29.400 --> 00:19:32.390 align:start position:0%
creates a snark and then you have this
kind<00:19:29.580><c> of</c><00:19:29.640><c> recursive</c><00:19:30.179><c> verification</c>

00:19:32.390 --> 00:19:32.400 align:start position:0%
kind of recursive verification
 

00:19:32.400 --> 00:19:35.630 align:start position:0%
kind of recursive verification
another<00:19:32.940><c> use</c><00:19:33.900><c> case</c><00:19:34.080><c> is</c><00:19:34.320><c> vdfs</c><00:19:35.220><c> because</c><00:19:35.340><c> some</c><00:19:35.520><c> of</c>

00:19:35.630 --> 00:19:35.640 align:start position:0%
another use case is vdfs because some of
 

00:19:35.640 --> 00:19:37.730 align:start position:0%
another use case is vdfs because some of
the<00:19:35.760><c> vdfs</c><00:19:36.240><c> actually</c><00:19:36.360><c> have</c><00:19:36.539><c> the</c><00:19:36.720><c> structure</c><00:19:37.140><c> of</c>

00:19:37.730 --> 00:19:37.740 align:start position:0%
the vdfs actually have the structure of
 

00:19:37.740 --> 00:19:41.210 align:start position:0%
the vdfs actually have the structure of
having<00:19:38.039><c> some</c><00:19:38.940><c> state</c><00:19:39.179><c> which</c><00:19:40.080><c> is</c><00:19:40.380><c> then</c><00:19:40.559><c> to</c><00:19:40.980><c> which</c>

00:19:41.210 --> 00:19:41.220 align:start position:0%
having some state which is then to which
 

00:19:41.220 --> 00:19:42.169 align:start position:0%
having some state which is then to which
you

00:19:42.169 --> 00:19:42.179 align:start position:0%
you
 

00:19:42.179 --> 00:19:45.289 align:start position:0%
you
um<00:19:42.720><c> apply</c><00:19:43.380><c> a</c><00:19:43.500><c> function</c><00:19:43.740><c> recursively</c><00:19:44.340><c> and</c><00:19:45.059><c> then</c>

00:19:45.289 --> 00:19:45.299 align:start position:0%
um apply a function recursively and then
 

00:19:45.299 --> 00:19:47.690 align:start position:0%
um apply a function recursively and then
being<00:19:46.200><c> able</c><00:19:46.440><c> to</c><00:19:46.620><c> have</c><00:19:46.860><c> a</c><00:19:47.100><c> snark</c><00:19:47.400><c> of</c><00:19:47.580><c> this</c>

00:19:47.690 --> 00:19:47.700 align:start position:0%
being able to have a snark of this
 

00:19:47.700 --> 00:19:49.130 align:start position:0%
being able to have a snark of this
computation<00:19:48.120><c> can</c><00:19:48.360><c> be</c><00:19:48.480><c> really</c><00:19:48.600><c> really</c><00:19:48.780><c> useful</c>

00:19:49.130 --> 00:19:49.140 align:start position:0%
computation can be really really useful
 

00:19:49.140 --> 00:19:51.110 align:start position:0%
computation can be really really useful
so<00:19:49.740><c> what</c><00:19:49.919><c> we're</c><00:19:50.039><c> working</c><00:19:50.220><c> on</c><00:19:50.400><c> now</c><00:19:50.640><c> now</c><00:19:50.880><c> we're</c>

00:19:51.110 --> 00:19:51.120 align:start position:0%
so what we're working on now now we're
 

00:19:51.120 --> 00:19:52.370 align:start position:0%
so what we're working on now now we're
actually<00:19:51.240><c> pretty</c><00:19:51.480><c> close</c><00:19:51.720><c> to</c><00:19:51.900><c> having</c><00:19:52.080><c> this</c>

00:19:52.370 --> 00:19:52.380 align:start position:0%
actually pretty close to having this
 

00:19:52.380 --> 00:19:56.150 align:start position:0%
actually pretty close to having this
ready<00:19:52.559><c> in</c><00:19:52.799><c> production</c><00:19:53.100><c> uh</c><00:19:54.000><c> is</c><00:19:54.240><c> integrating</c><00:19:54.900><c> a</c>

00:19:56.150 --> 00:19:56.160 align:start position:0%
ready in production uh is integrating a
 

00:19:56.160 --> 00:19:59.870 align:start position:0%
ready in production uh is integrating a
um<00:19:56.640><c> proof</c><00:19:57.059><c> system</c><00:19:57.179><c> called</c><00:19:57.539><c> Nova</c><00:19:58.580><c> which</c><00:19:59.580><c> does</c>

00:19:59.870 --> 00:19:59.880 align:start position:0%
um proof system called Nova which does
 

00:19:59.880 --> 00:20:02.810 align:start position:0%
um proof system called Nova which does
exactly<00:20:00.299><c> this</c><00:20:00.559><c> and</c><00:20:01.559><c> the</c><00:20:02.039><c> way</c><00:20:02.220><c> that</c><00:20:02.400><c> I'm</c><00:20:02.700><c> not</c>

00:20:02.810 --> 00:20:02.820 align:start position:0%
exactly this and the way that I'm not
 

00:20:02.820 --> 00:20:04.250 align:start position:0%
exactly this and the way that I'm not
going<00:20:02.940><c> to</c><00:20:03.000><c> go</c><00:20:03.059><c> too</c><00:20:03.240><c> much</c><00:20:03.360><c> in</c><00:20:03.539><c> detail</c><00:20:03.780><c> here</c><00:20:04.020><c> but</c>

00:20:04.250 --> 00:20:04.260 align:start position:0%
going to go too much in detail here but
 

00:20:04.260 --> 00:20:06.529 align:start position:0%
going to go too much in detail here but
the<00:20:04.559><c> way</c><00:20:04.679><c> that</c><00:20:04.860><c> the</c><00:20:05.340><c> API</c><00:20:06.059><c> would</c><00:20:06.240><c> work</c><00:20:06.419><c> for</c>

00:20:06.529 --> 00:20:06.539 align:start position:0%
the way that the API would work for
 

00:20:06.539 --> 00:20:08.570 align:start position:0%
the way that the API would work for
developers<00:20:06.960><c> today</c><00:20:07.200><c> is</c><00:20:07.559><c> that</c><00:20:07.740><c> you</c><00:20:07.919><c> write</c><00:20:08.100><c> a</c>

00:20:08.570 --> 00:20:08.580 align:start position:0%
developers today is that you write a
 

00:20:08.580 --> 00:20:10.990 align:start position:0%
developers today is that you write a
function<00:20:08.940><c> and</c><00:20:09.660><c> the</c><00:20:09.900><c> only</c>

00:20:10.990 --> 00:20:11.000 align:start position:0%
function and the only
 

00:20:11.000 --> 00:20:13.549 align:start position:0%
function and the only
restriction<00:20:12.000><c> here</c><00:20:12.299><c> is</c><00:20:12.480><c> that</c><00:20:12.660><c> the</c><00:20:12.900><c> input</c><00:20:13.140><c> needs</c>

00:20:13.549 --> 00:20:13.559 align:start position:0%
restriction here is that the input needs
 

00:20:13.559 --> 00:20:15.350 align:start position:0%
restriction here is that the input needs
to<00:20:13.620><c> be</c><00:20:13.799><c> the</c><00:20:14.280><c> type</c><00:20:14.460><c> the</c><00:20:14.640><c> input</c><00:20:14.820><c> type</c><00:20:15.000><c> needs</c><00:20:15.299><c> to</c>

00:20:15.350 --> 00:20:15.360 align:start position:0%
to be the type the input type needs to
 

00:20:15.360 --> 00:20:17.090 align:start position:0%
to be the type the input type needs to
be<00:20:15.480><c> the</c><00:20:15.600><c> output</c><00:20:15.900><c> type</c><00:20:16.080><c> because</c><00:20:16.380><c> you</c><00:20:16.679><c> want</c><00:20:16.799><c> the</c>

00:20:17.090 --> 00:20:17.100 align:start position:0%
be the output type because you want the
 

00:20:17.100 --> 00:20:19.789 align:start position:0%
be the output type because you want the
recursive<00:20:17.580><c> aspect</c><00:20:18.360><c> to</c><00:20:18.600><c> to</c><00:20:18.840><c> work</c>

00:20:19.789 --> 00:20:19.799 align:start position:0%
recursive aspect to to work
 

00:20:19.799 --> 00:20:22.250 align:start position:0%
recursive aspect to to work
and<00:20:20.340><c> then</c><00:20:20.520><c> you</c><00:20:20.760><c> can</c><00:20:20.880><c> compile</c><00:20:21.539><c> this</c><00:20:21.960><c> function</c>

00:20:22.250 --> 00:20:22.260 align:start position:0%
and then you can compile this function
 

00:20:22.260 --> 00:20:24.230 align:start position:0%
and then you can compile this function
to<00:20:22.799><c> a</c><00:20:22.980><c> specific</c><00:20:23.220><c> curve</c><00:20:23.580><c> so</c><00:20:23.700><c> you</c><00:20:23.880><c> need</c><00:20:24.000><c> to</c><00:20:24.059><c> use</c>

00:20:24.230 --> 00:20:24.240 align:start position:0%
to a specific curve so you need to use
 

00:20:24.240 --> 00:20:26.690 align:start position:0%
to a specific curve so you need to use
this<00:20:24.600><c> balance</c><00:20:25.200><c> curve</c><00:20:25.559><c> because</c><00:20:26.100><c> under</c><00:20:26.460><c> the</c>

00:20:26.690 --> 00:20:26.700 align:start position:0%
this balance curve because under the
 

00:20:26.700 --> 00:20:30.049 align:start position:0%
this balance curve because under the
hood<00:20:26.820><c> Nova</c><00:20:27.720><c> uses</c><00:20:28.280><c> cycles</c><00:20:29.280><c> of</c><00:20:29.460><c> electric</c><00:20:29.580><c> curves</c>

00:20:30.049 --> 00:20:30.059 align:start position:0%
hood Nova uses cycles of electric curves
 

00:20:30.059 --> 00:20:31.789 align:start position:0%
hood Nova uses cycles of electric curves
so<00:20:30.179><c> this</c><00:20:30.360><c> doesn't</c><00:20:30.480><c> work</c><00:20:30.720><c> for</c><00:20:30.960><c> any</c><00:20:31.140><c> curve</c><00:20:31.500><c> but</c>

00:20:31.789 --> 00:20:31.799 align:start position:0%
so this doesn't work for any curve but
 

00:20:31.799 --> 00:20:34.850 align:start position:0%
so this doesn't work for any curve but
we<00:20:32.340><c> support</c><00:20:32.580><c> the</c><00:20:32.880><c> curves</c><00:20:33.179><c> that</c><00:20:33.419><c> enable</c><00:20:33.960><c> that</c>

00:20:34.850 --> 00:20:34.860 align:start position:0%
we support the curves that enable that
 

00:20:34.860 --> 00:20:37.610 align:start position:0%
we support the curves that enable that
and<00:20:35.280><c> then</c><00:20:35.400><c> you</c><00:20:35.640><c> can</c><00:20:35.820><c> basically</c><00:20:36.240><c> prove</c><00:20:36.960><c> a</c>

00:20:37.610 --> 00:20:37.620 align:start position:0%
and then you can basically prove a
 

00:20:37.620 --> 00:20:41.270 align:start position:0%
and then you can basically prove a
number<00:20:37.799><c> of</c><00:20:37.980><c> steps</c><00:20:38.520><c> starting</c><00:20:38.940><c> from</c><00:20:39.480><c> a</c><00:20:40.440><c> given</c><00:20:40.980><c> a</c>

00:20:41.270 --> 00:20:41.280 align:start position:0%
number of steps starting from a given a
 

00:20:41.280 --> 00:20:44.690 align:start position:0%
number of steps starting from a given a
given<00:20:41.580><c> State</c><00:20:41.900><c> and</c><00:20:42.900><c> even</c><00:20:43.260><c> after</c><00:20:43.679><c> running</c><00:20:44.400><c> this</c>

00:20:44.690 --> 00:20:44.700 align:start position:0%
given State and even after running this
 

00:20:44.700 --> 00:20:46.610 align:start position:0%
given State and even after running this
you<00:20:44.880><c> could</c><00:20:45.000><c> run</c><00:20:45.179><c> it</c><00:20:45.360><c> again</c><00:20:45.539><c> starting</c><00:20:46.020><c> from</c><00:20:46.380><c> the</c>

00:20:46.610 --> 00:20:46.620 align:start position:0%
you could run it again starting from the
 

00:20:46.620 --> 00:20:48.230 align:start position:0%
you could run it again starting from the
last<00:20:46.740><c> state</c><00:20:46.980><c> that</c><00:20:47.340><c> you</c><00:20:47.520><c> had</c>

00:20:48.230 --> 00:20:48.240 align:start position:0%
last state that you had
 

00:20:48.240 --> 00:20:51.230 align:start position:0%
last state that you had
this<00:20:48.840><c> hope</c><00:20:49.020><c> this</c><00:20:49.320><c> opens</c><00:20:49.740><c> a</c><00:20:50.400><c> lot</c><00:20:50.520><c> of</c><00:20:50.640><c> use</c><00:20:51.000><c> cases</c>

00:20:51.230 --> 00:20:51.240 align:start position:0%
this hope this opens a lot of use cases
 

00:20:51.240 --> 00:20:53.090 align:start position:0%
this hope this opens a lot of use cases
for<00:20:51.600><c> people</c><00:20:51.720><c> who</c><00:20:51.900><c> want</c><00:20:52.080><c> to</c><00:20:52.200><c> to</c><00:20:52.500><c> experiment</c>

00:20:53.090 --> 00:20:53.100 align:start position:0%
for people who want to to experiment
 

00:20:53.100 --> 00:20:54.250 align:start position:0%
for people who want to to experiment
with

00:20:54.250 --> 00:20:54.260 align:start position:0%
with
 

00:20:54.260 --> 00:20:57.049 align:start position:0%
with
incrementable<00:20:55.460><c> incremental</c><00:20:56.460><c> verifiable</c>

00:20:57.049 --> 00:20:57.059 align:start position:0%
incrementable incremental verifiable
 

00:20:57.059 --> 00:20:59.750 align:start position:0%
incrementable incremental verifiable
computation<00:20:58.020><c> so</c><00:20:58.620><c> I</c><00:20:58.740><c> invite</c><00:20:59.039><c> you</c><00:20:59.100><c> to</c><00:20:59.340><c> to</c><00:20:59.520><c> test</c>

00:20:59.750 --> 00:20:59.760 align:start position:0%
computation so I invite you to to test
 

00:20:59.760 --> 00:21:01.490 align:start position:0%
computation so I invite you to to test
that<00:20:59.940><c> it's</c><00:21:00.240><c> it's</c><00:21:00.419><c> going</c><00:21:00.660><c> to</c><00:21:00.720><c> be</c><00:21:00.840><c> out</c><00:21:00.960><c> very</c><00:21:01.320><c> soon</c>

00:21:01.490 --> 00:21:01.500 align:start position:0%
that it's it's going to be out very soon
 

00:21:01.500 --> 00:21:03.409 align:start position:0%
that it's it's going to be out very soon
okay

00:21:03.409 --> 00:21:03.419 align:start position:0%
okay
 

00:21:03.419 --> 00:21:04.850 align:start position:0%
okay
um<00:21:03.480><c> since</c><00:21:03.900><c> I</c><00:21:04.020><c> only</c><00:21:04.200><c> have</c><00:21:04.380><c> two</c><00:21:04.500><c> minutes</c><00:21:04.620><c> left</c>

00:21:04.850 --> 00:21:04.860 align:start position:0%
um since I only have two minutes left
 

00:21:04.860 --> 00:21:07.549 align:start position:0%
um since I only have two minutes left
I'll<00:21:05.100><c> just</c><00:21:05.220><c> go</c><00:21:05.460><c> very</c><00:21:05.700><c> quickly</c><00:21:06.320><c> through</c><00:21:07.320><c> some</c>

00:21:07.549 --> 00:21:07.559 align:start position:0%
I'll just go very quickly through some
 

00:21:07.559 --> 00:21:09.710 align:start position:0%
I'll just go very quickly through some
things<00:21:07.799><c> that</c><00:21:08.100><c> we</c><00:21:08.280><c> that</c><00:21:08.520><c> we</c><00:21:08.700><c> added</c><00:21:08.940><c> recently</c><00:21:09.240><c> so</c>

00:21:09.710 --> 00:21:09.720 align:start position:0%
things that we that we added recently so
 

00:21:09.720 --> 00:21:11.510 align:start position:0%
things that we that we added recently so
there's<00:21:09.900><c> the</c><00:21:10.080><c> powers</c><00:21:10.140><c> of</c><00:21:10.440><c> Tau</c><00:21:10.679><c> ceremony</c><00:21:11.160><c> so</c><00:21:11.400><c> if</c>

00:21:11.510 --> 00:21:11.520 align:start position:0%
there's the powers of Tau ceremony so if
 

00:21:11.520 --> 00:21:14.450 align:start position:0%
there's the powers of Tau ceremony so if
you<00:21:11.640><c> look</c><00:21:11.760><c> at</c><00:21:11.940><c> gross</c><00:21:12.360><c> 16</c><00:21:12.539><c> for</c><00:21:12.960><c> example</c><00:21:13.140><c> it's</c><00:21:13.679><c> it</c>

00:21:14.450 --> 00:21:14.460 align:start position:0%
you look at gross 16 for example it's it
 

00:21:14.460 --> 00:21:16.789 align:start position:0%
you look at gross 16 for example it's it
requires<00:21:14.820><c> a</c><00:21:14.940><c> trusted</c><00:21:15.240><c> setup</c><00:21:15.600><c> and</c><00:21:16.500><c> the</c><00:21:16.620><c> powers</c>

00:21:16.789 --> 00:21:16.799 align:start position:0%
requires a trusted setup and the powers
 

00:21:16.799 --> 00:21:19.610 align:start position:0%
requires a trusted setup and the powers
of<00:21:16.980><c> tower</c><00:21:17.220><c> ceremony</c><00:21:17.900><c> enables</c><00:21:18.900><c> you</c><00:21:18.960><c> to</c><00:21:19.140><c> do</c><00:21:19.380><c> that</c>

00:21:19.610 --> 00:21:19.620 align:start position:0%
of tower ceremony enables you to do that
 

00:21:19.620 --> 00:21:21.289 align:start position:0%
of tower ceremony enables you to do that
using<00:21:20.100><c> NPC</c>

00:21:21.289 --> 00:21:21.299 align:start position:0%
using NPC
 

00:21:21.299 --> 00:21:22.789 align:start position:0%
using NPC
so<00:21:21.720><c> you</c><00:21:21.840><c> can</c><00:21:21.960><c> do</c><00:21:22.080><c> that</c><00:21:22.200><c> directly</c><00:21:22.440><c> with</c><00:21:22.679><c> this</c>

00:21:22.789 --> 00:21:22.799 align:start position:0%
so you can do that directly with this
 

00:21:22.799 --> 00:21:25.370 align:start position:0%
so you can do that directly with this
oxtail<00:21:23.220><c> CLI</c><00:21:23.640><c> and</c><00:21:24.419><c> also</c><00:21:24.660><c> in</c><00:21:24.780><c> the</c><00:21:24.960><c> in</c><00:21:25.140><c> soccer</c>

00:21:25.370 --> 00:21:25.380 align:start position:0%
oxtail CLI and also in the in soccer
 

00:21:25.380 --> 00:21:26.690 align:start position:0%
oxtail CLI and also in the in soccer
says<00:21:25.740><c> JS</c><00:21:25.919><c> actually</c>

00:21:26.690 --> 00:21:26.700 align:start position:0%
says JS actually
 

00:21:26.700 --> 00:21:28.669 align:start position:0%
says JS actually
we<00:21:27.120><c> also</c><00:21:27.299><c> have</c><00:21:27.360><c> support</c><00:21:27.539><c> for</c><00:21:27.780><c> lock</c><00:21:27.960><c> statements</c>

00:21:28.669 --> 00:21:28.679 align:start position:0%
we also have support for lock statements
 

00:21:28.679 --> 00:21:30.830 align:start position:0%
we also have support for lock statements
uh<00:21:29.340><c> that</c><00:21:29.520><c> you</c><00:21:29.640><c> can</c><00:21:29.760><c> where</c><00:21:30.179><c> you</c><00:21:30.299><c> can</c><00:21:30.419><c> inspect</c>

00:21:30.830 --> 00:21:30.840 align:start position:0%
uh that you can where you can inspect
 

00:21:30.840 --> 00:21:33.710 align:start position:0%
uh that you can where you can inspect
certain<00:21:31.620><c> values</c><00:21:32.039><c> of</c><00:21:32.280><c> your</c><00:21:32.520><c> code</c><00:21:32.820><c> at</c><00:21:33.179><c> runtime</c>

00:21:33.710 --> 00:21:33.720 align:start position:0%
certain values of your code at runtime
 

00:21:33.720 --> 00:21:35.930 align:start position:0%
certain values of your code at runtime
we<00:21:34.320><c> have</c><00:21:34.440><c> support</c><00:21:34.620><c> for</c><00:21:35.100><c> the</c><00:21:35.340><c> more</c><00:21:35.580><c> input</c>

00:21:35.930 --> 00:21:35.940 align:start position:0%
we have support for the more input
 

00:21:35.940 --> 00:21:38.450 align:start position:0%
we have support for the more input
system<00:21:36.179><c> that</c><00:21:36.600><c> I</c><00:21:36.840><c> mentioned</c><00:21:37.620><c> earlier</c><00:21:37.980><c> which</c><00:21:38.280><c> is</c>

00:21:38.450 --> 00:21:38.460 align:start position:0%
system that I mentioned earlier which is
 

00:21:38.460 --> 00:21:41.029 align:start position:0%
system that I mentioned earlier which is
a<00:21:38.820><c> universal</c><00:21:39.780><c> setup</c><00:21:40.140><c> which</c><00:21:40.559><c> means</c><00:21:40.799><c> that</c><00:21:40.919><c> you</c>

00:21:41.029 --> 00:21:41.039 align:start position:0%
a universal setup which means that you
 

00:21:41.039 --> 00:21:42.590 align:start position:0%
a universal setup which means that you
can<00:21:41.159><c> do</c><00:21:41.280><c> one</c><00:21:41.460><c> setup</c><00:21:41.760><c> and</c><00:21:41.940><c> then</c><00:21:42.059><c> use</c><00:21:42.240><c> it</c><00:21:42.419><c> for</c>

00:21:42.590 --> 00:21:42.600 align:start position:0%
can do one setup and then use it for
 

00:21:42.600 --> 00:21:44.990 align:start position:0%
can do one setup and then use it for
different<00:21:42.780><c> circuits</c><00:21:43.320><c> we</c><00:21:44.280><c> also</c><00:21:44.520><c> change</c><00:21:44.700><c> a</c><00:21:44.940><c> lot</c>

00:21:44.990 --> 00:21:45.000 align:start position:0%
different circuits we also change a lot
 

00:21:45.000 --> 00:21:47.510 align:start position:0%
different circuits we also change a lot
of<00:21:45.120><c> the</c><00:21:45.299><c> syntax</c><00:21:46.039><c> following</c><00:21:47.039><c> some</c><00:21:47.159><c> feedback</c>

00:21:47.510 --> 00:21:47.520 align:start position:0%
of the syntax following some feedback
 

00:21:47.520 --> 00:21:50.210 align:start position:0%
of the syntax following some feedback
from<00:21:47.940><c> from</c><00:21:48.240><c> members</c><00:21:49.020><c> of</c><00:21:49.140><c> the</c><00:21:49.200><c> community</c><00:21:49.440><c> and</c>

00:21:50.210 --> 00:21:50.220 align:start position:0%
from from members of the community and
 

00:21:50.220 --> 00:21:52.730 align:start position:0%
from from members of the community and
finally<00:21:50.520><c> yeah</c><00:21:50.760><c> the</c><00:21:51.179><c> this</c><00:21:51.480><c> this</c><00:21:51.740><c> playground</c>

00:21:52.730 --> 00:21:52.740 align:start position:0%
finally yeah the this this playground
 

00:21:52.740 --> 00:21:54.770 align:start position:0%
finally yeah the this this playground
which<00:21:53.400><c> is</c><00:21:53.580><c> now</c><00:21:53.760><c> accessible</c>

00:21:54.770 --> 00:21:54.780 align:start position:0%
which is now accessible
 

00:21:54.780 --> 00:21:57.710 align:start position:0%
which is now accessible
which<00:21:55.380><c> I</c><00:21:55.620><c> invite</c><00:21:55.860><c> you</c><00:21:56.039><c> to</c><00:21:56.159><c> to</c><00:21:56.520><c> check</c><00:21:56.700><c> out</c><00:21:56.940><c> okay</c>

00:21:57.710 --> 00:21:57.720 align:start position:0%
which I invite you to to check out okay
 

00:21:57.720 --> 00:21:59.330 align:start position:0%
which I invite you to to check out okay
I<00:21:58.080><c> think</c><00:21:58.200><c> that's</c><00:21:58.380><c> that's</c><00:21:58.620><c> all</c><00:21:58.799><c> I</c><00:21:58.980><c> had</c><00:21:59.039><c> to</c><00:21:59.159><c> share</c>

00:21:59.330 --> 00:21:59.340 align:start position:0%
I think that's that's all I had to share
 

00:21:59.340 --> 00:22:01.789 align:start position:0%
I think that's that's all I had to share
uh<00:22:00.059><c> so</c><00:22:00.299><c> thanks</c><00:22:00.539><c> for</c><00:22:00.720><c> listening</c><00:22:01.380><c> if</c><00:22:01.679><c> there's</c>

00:22:01.789 --> 00:22:01.799 align:start position:0%
uh so thanks for listening if there's
 

00:22:01.799 --> 00:22:03.169 align:start position:0%
uh so thanks for listening if there's
any<00:22:01.919><c> questions</c><00:22:02.159><c> yeah</c><00:22:02.520><c> I'm</c><00:22:02.700><c> happy</c><00:22:02.880><c> to</c><00:22:03.059><c> take</c>

00:22:03.169 --> 00:22:03.179 align:start position:0%
any questions yeah I'm happy to take
 

00:22:03.179 --> 00:22:04.490 align:start position:0%
any questions yeah I'm happy to take
questions

00:22:04.490 --> 00:22:04.500 align:start position:0%
questions
 

00:22:04.500 --> 00:22:07.490 align:start position:0%
questions
um<00:22:04.620><c> can</c><00:22:04.860><c> we</c><00:22:05.039><c> use</c><00:22:05.220><c> the</c><00:22:05.640><c> new</c><00:22:05.820><c> Nova</c><00:22:06.299><c> support</c><00:22:06.500><c> to</c>

00:22:07.490 --> 00:22:07.500 align:start position:0%
um can we use the new Nova support to
 

00:22:07.500 --> 00:22:08.510 align:start position:0%
um can we use the new Nova support to
write

00:22:08.510 --> 00:22:08.520 align:start position:0%
write
 

00:22:08.520 --> 00:22:11.330 align:start position:0%
write
um<00:22:08.580><c> another</c><00:22:08.880><c> but</c><00:22:09.360><c> shorter</c><00:22:09.780><c> SDK</c><00:22:10.200><c> VM</c>

00:22:11.330 --> 00:22:11.340 align:start position:0%
um another but shorter SDK VM
 

00:22:11.340 --> 00:22:13.250 align:start position:0%
um another but shorter SDK VM
I<00:22:11.640><c> think</c><00:22:11.760><c> in</c><00:22:11.880><c> theory</c><00:22:12.240><c> yes</c><00:22:12.539><c> I'm</c><00:22:12.840><c> not</c><00:22:13.020><c> sure</c><00:22:13.080><c> it</c>

00:22:13.250 --> 00:22:13.260 align:start position:0%
I think in theory yes I'm not sure it
 

00:22:13.260 --> 00:22:14.690 align:start position:0%
I think in theory yes I'm not sure it
would<00:22:13.380><c> be</c><00:22:13.500><c> the</c><00:22:13.620><c> most</c><00:22:13.740><c> efficient</c>

00:22:14.690 --> 00:22:14.700 align:start position:0%
would be the most efficient
 

00:22:14.700 --> 00:22:16.789 align:start position:0%
would be the most efficient
but<00:22:15.480><c> they</c><00:22:15.600><c> were</c><00:22:15.780><c> already</c>

00:22:16.789 --> 00:22:16.799 align:start position:0%
but they were already
 

00:22:16.799 --> 00:22:18.890 align:start position:0%
but they were already
actually<00:22:17.280><c> a</c><00:22:17.520><c> long</c><00:22:17.640><c> time</c><00:22:17.820><c> ago</c>

00:22:18.890 --> 00:22:18.900 align:start position:0%
actually a long time ago
 

00:22:18.900 --> 00:22:20.750 align:start position:0%
actually a long time ago
VMS<00:22:19.500><c> that</c><00:22:19.679><c> were</c><00:22:19.799><c> built</c><00:22:19.980><c> on</c><00:22:20.100><c> top</c><00:22:20.220><c> of</c><00:22:20.340><c> recursive</c>

00:22:20.750 --> 00:22:20.760 align:start position:0%
VMS that were built on top of recursive
 

00:22:20.760 --> 00:22:24.110 align:start position:0%
VMS that were built on top of recursive
snarks<00:22:21.440><c> but</c><00:22:22.440><c> they</c><00:22:22.559><c> were</c><00:22:22.679><c> using</c><00:22:22.919><c> recursion</c>

00:22:24.110 --> 00:22:24.120 align:start position:0%
snarks but they were using recursion
 

00:22:24.120 --> 00:22:27.770 align:start position:0%
snarks but they were using recursion
at<00:22:24.720><c> each</c><00:22:24.960><c> cycle</c><00:22:25.320><c> of</c><00:22:25.679><c> the</c><00:22:25.799><c> CPU</c><00:22:26.280><c> which</c><00:22:27.000><c> was</c>

00:22:27.770 --> 00:22:27.780 align:start position:0%
at each cycle of the CPU which was
 

00:22:27.780 --> 00:22:29.870 align:start position:0%
at each cycle of the CPU which was
quite<00:22:28.320><c> inefficient</c><00:22:28.860><c> but</c><00:22:29.340><c> maybe</c><00:22:29.520><c> there's</c><00:22:29.760><c> a</c>

00:22:29.870 --> 00:22:29.880 align:start position:0%
quite inefficient but maybe there's a
 

00:22:29.880 --> 00:22:31.730 align:start position:0%
quite inefficient but maybe there's a
new<00:22:30.000><c> take</c><00:22:30.179><c> that</c><00:22:30.360><c> could</c><00:22:30.539><c> be</c>

00:22:31.730 --> 00:22:31.740 align:start position:0%
new take that could be
 

00:22:31.740 --> 00:22:34.310 align:start position:0%
new take that could be
that<00:22:32.159><c> you</c><00:22:32.340><c> can</c><00:22:32.460><c> have</c><00:22:32.580><c> on</c><00:22:32.820><c> on</c><00:22:33.000><c> that</c><00:22:33.299><c> so</c><00:22:34.020><c> that</c>

00:22:34.310 --> 00:22:34.320 align:start position:0%
that you can have on on that so that
 

00:22:34.320 --> 00:22:35.870 align:start position:0%
that you can have on on that so that
would<00:22:34.500><c> be</c>

00:22:35.870 --> 00:22:35.880 align:start position:0%
would be
 

00:22:35.880 --> 00:22:38.870 align:start position:0%
would be
one<00:22:36.720><c> cycle</c><00:22:37.020><c> for</c><00:22:37.200><c> each</c><00:22:37.320><c> op</c><00:22:37.559><c> code</c><00:22:37.740><c> right</c><00:22:38.100><c> that</c>

00:22:38.870 --> 00:22:38.880 align:start position:0%
one cycle for each op code right that
 

00:22:38.880 --> 00:22:40.909 align:start position:0%
one cycle for each op code right that
that's<00:22:39.059><c> that</c><00:22:39.299><c> was</c><00:22:39.539><c> the</c><00:22:39.659><c> case</c><00:22:39.780><c> and</c><00:22:40.140><c> those</c><00:22:40.380><c> uh</c>

00:22:40.909 --> 00:22:40.919 align:start position:0%
that's that was the case and those uh
 

00:22:40.919 --> 00:22:42.230 align:start position:0%
that's that was the case and those uh
project<00:22:41.159><c> 10</c><00:22:41.460><c> years</c><00:22:41.640><c> ago</c><00:22:41.820><c> it's</c><00:22:42.000><c> a</c><00:22:42.120><c> project</c>

00:22:42.230 --> 00:22:42.240 align:start position:0%
project 10 years ago it's a project
 

00:22:42.240 --> 00:22:43.549 align:start position:0%
project 10 years ago it's a project
called<00:22:42.419><c> tiny</c><00:22:42.780><c> Ram</c>

00:22:43.549 --> 00:22:43.559 align:start position:0%
called tiny Ram
 

00:22:43.559 --> 00:22:44.990 align:start position:0%
called tiny Ram
where<00:22:43.919><c> that's</c><00:22:44.100><c> what</c><00:22:44.400><c> they</c><00:22:44.520><c> did</c><00:22:44.700><c> they</c>

00:22:44.990 --> 00:22:45.000 align:start position:0%
where that's what they did they
 

00:22:45.000 --> 00:22:47.990 align:start position:0%
where that's what they did they
basically<00:22:45.360><c> took</c><00:22:45.600><c> the</c><00:22:45.780><c> state</c><00:22:46.020><c> of</c><00:22:46.500><c> the</c><00:22:46.740><c> CPU</c><00:22:47.340><c> and</c>

00:22:47.990 --> 00:22:48.000 align:start position:0%
basically took the state of the CPU and
 

00:22:48.000 --> 00:22:51.590 align:start position:0%
basically took the state of the CPU and
just<00:22:48.179><c> run</c><00:22:48.480><c> each</c><00:22:49.080><c> time</c><00:22:49.320><c> one</c><00:22:49.860><c> one</c><00:22:50.280><c> up</c><00:22:50.580><c> code</c><00:22:50.820><c> and</c>

00:22:51.590 --> 00:22:51.600 align:start position:0%
just run each time one one up code and
 

00:22:51.600 --> 00:22:53.990 align:start position:0%
just run each time one one up code and
then<00:22:51.720><c> have</c><00:22:51.900><c> a</c><00:22:52.080><c> recursive</c><00:22:52.440><c> snarks</c><00:22:52.919><c> a</c><00:22:53.340><c> recursive</c>

00:22:53.990 --> 00:22:54.000 align:start position:0%
then have a recursive snarks a recursive
 

00:22:54.000 --> 00:22:56.210 align:start position:0%
then have a recursive snarks a recursive
snark<00:22:54.299><c> each</c><00:22:54.480><c> time</c><00:22:54.659><c> but</c><00:22:55.320><c> maybe</c><00:22:55.860><c> there's</c><00:22:56.039><c> other</c>

00:22:56.210 --> 00:22:56.220 align:start position:0%
snark each time but maybe there's other
 

00:22:56.220 --> 00:22:59.630 align:start position:0%
snark each time but maybe there's other
approaches<00:22:57.059><c> to</c><00:22:57.320><c> leverage</c><00:22:58.320><c> this</c><00:22:58.559><c> proof</c><00:22:58.919><c> system</c>

00:22:59.630 --> 00:22:59.640 align:start position:0%
approaches to leverage this proof system
 

00:22:59.640 --> 00:23:02.870 align:start position:0%
approaches to leverage this proof system
so<00:23:00.299><c> instead</c><00:23:01.140><c> of</c><00:23:01.260><c> making</c><00:23:01.679><c> users</c><00:23:02.159><c> to</c><00:23:02.400><c> write</c><00:23:02.580><c> very</c>

00:23:02.870 --> 00:23:02.880 align:start position:0%
so instead of making users to write very
 

00:23:02.880 --> 00:23:05.810 align:start position:0%
so instead of making users to write very
optimized<00:23:03.480><c> code</c><00:23:03.720><c> have</c><00:23:04.559><c> you</c><00:23:04.740><c> put</c><00:23:05.159><c> effort</c><00:23:05.640><c> on</c>

00:23:05.810 --> 00:23:05.820 align:start position:0%
optimized code have you put effort on
 

00:23:05.820 --> 00:23:08.690 align:start position:0%
optimized code have you put effort on
kind<00:23:06.179><c> of</c><00:23:06.299><c> making</c><00:23:06.900><c> the</c><00:23:07.340><c> compiler</c><00:23:08.340><c> kind</c><00:23:08.580><c> of</c>

00:23:08.690 --> 00:23:08.700 align:start position:0%
kind of making the compiler kind of
 

00:23:08.700 --> 00:23:10.130 align:start position:0%
kind of making the compiler kind of
figure<00:23:08.820><c> out</c><00:23:09.000><c> what</c><00:23:09.240><c> the</c><00:23:09.419><c> user</c><00:23:09.659><c> wants</c><00:23:09.900><c> and</c><00:23:10.020><c> then</c>

00:23:10.130 --> 00:23:10.140 align:start position:0%
figure out what the user wants and then
 

00:23:10.140 --> 00:23:12.529 align:start position:0%
figure out what the user wants and then
optimize<00:23:10.559><c> the</c><00:23:10.740><c> circuit</c><00:23:11.039><c> based</c><00:23:11.400><c> on</c><00:23:11.460><c> that</c><00:23:11.640><c> so</c>

00:23:12.529 --> 00:23:12.539 align:start position:0%
optimize the circuit based on that so
 

00:23:12.539 --> 00:23:13.850 align:start position:0%
optimize the circuit based on that so
are<00:23:12.659><c> you</c><00:23:12.780><c> saying</c><00:23:13.020><c> that</c><00:23:13.140><c> okay</c><00:23:13.380><c> is</c><00:23:13.620><c> your</c>

00:23:13.850 --> 00:23:13.860 align:start position:0%
are you saying that okay is your
 

00:23:13.860 --> 00:23:15.110 align:start position:0%
are you saying that okay is your
question

00:23:15.110 --> 00:23:15.120 align:start position:0%
question
 

00:23:15.120 --> 00:23:16.970 align:start position:0%
question
that<00:23:15.780><c> we</c><00:23:16.020><c> should</c><00:23:16.140><c> instead</c><00:23:16.440><c> of</c><00:23:16.559><c> having</c><00:23:16.679><c> low</c>

00:23:16.970 --> 00:23:16.980 align:start position:0%
that we should instead of having low
 

00:23:16.980 --> 00:23:19.549 align:start position:0%
that we should instead of having low
level<00:23:17.220><c> code</c><00:23:17.520><c> have</c><00:23:17.940><c> the</c><00:23:18.120><c> have</c><00:23:18.840><c> the</c><00:23:19.020><c> compiler</c>

00:23:19.549 --> 00:23:19.559 align:start position:0%
level code have the have the compiler
 

00:23:19.559 --> 00:23:21.230 align:start position:0%
level code have the have the compiler
detect<00:23:20.039><c> when</c><00:23:20.400><c> it</c><00:23:20.580><c> can</c><00:23:20.760><c> do</c><00:23:20.880><c> those</c>

00:23:21.230 --> 00:23:21.240 align:start position:0%
detect when it can do those
 

00:23:21.240 --> 00:23:24.409 align:start position:0%
detect when it can do those
optimizations<00:23:21.780><c> right</c><00:23:22.080><c> I'm</c><00:23:22.980><c> in</c><00:23:23.159><c> both</c><00:23:23.340><c> but</c><00:23:23.760><c> like</c>

00:23:24.409 --> 00:23:24.419 align:start position:0%
optimizations right I'm in both but like
 

00:23:24.419 --> 00:23:26.510 align:start position:0%
optimizations right I'm in both but like
you<00:23:24.780><c> will</c><00:23:24.960><c> only</c><00:23:25.140><c> talk</c><00:23:25.380><c> about</c><00:23:25.559><c> what</c><00:23:26.159><c> the</c><00:23:26.340><c> case</c>

00:23:26.510 --> 00:23:26.520 align:start position:0%
you will only talk about what the case
 

00:23:26.520 --> 00:23:28.190 align:start position:0%
you will only talk about what the case
right

00:23:28.190 --> 00:23:28.200 align:start position:0%
right
 

00:23:28.200 --> 00:23:29.990 align:start position:0%
right
so<00:23:28.679><c> this</c><00:23:28.799><c> is</c><00:23:28.919><c> something</c><00:23:29.100><c> that</c><00:23:29.400><c> as</c><00:23:29.580><c> I</c><00:23:29.760><c> mentioned</c>

00:23:29.990 --> 00:23:30.000 align:start position:0%
so this is something that as I mentioned
 

00:23:30.000 --> 00:23:31.250 align:start position:0%
so this is something that as I mentioned
this<00:23:30.240><c> is</c><00:23:30.299><c> something</c><00:23:30.419><c> that</c><00:23:30.659><c> we</c><00:23:30.780><c> do</c><00:23:30.900><c> currently</c>

00:23:31.250 --> 00:23:31.260 align:start position:0%
this is something that we do currently
 

00:23:31.260 --> 00:23:33.110 align:start position:0%
this is something that we do currently
where<00:23:31.740><c> we</c><00:23:31.919><c> identify</c><00:23:32.460><c> some</c><00:23:32.700><c> of</c><00:23:32.820><c> those</c><00:23:32.940><c> use</c>

00:23:33.110 --> 00:23:33.120 align:start position:0%
where we identify some of those use
 

00:23:33.120 --> 00:23:35.510 align:start position:0%
where we identify some of those use
cases<00:23:33.419><c> I</c><00:23:33.840><c> mean</c><00:23:33.960><c> some</c><00:23:34.140><c> of</c><00:23:34.260><c> those</c><00:23:34.440><c> cases</c><00:23:34.860><c> and</c>

00:23:35.510 --> 00:23:35.520 align:start position:0%
cases I mean some of those cases and
 

00:23:35.520 --> 00:23:37.850 align:start position:0%
cases I mean some of those cases and
just<00:23:35.700><c> have</c><00:23:35.820><c> them</c><00:23:36.000><c> in</c><00:23:36.179><c> the</c><00:23:36.299><c> compiler</c>

00:23:37.850 --> 00:23:37.860 align:start position:0%
just have them in the compiler
 

00:23:37.860 --> 00:23:39.409 align:start position:0%
just have them in the compiler
um<00:23:37.919><c> but</c><00:23:38.159><c> it's</c><00:23:38.340><c> just</c><00:23:38.520><c> really</c><00:23:38.700><c> hard</c><00:23:38.940><c> to</c><00:23:39.240><c> cover</c>

00:23:39.409 --> 00:23:39.419 align:start position:0%
um but it's just really hard to cover
 

00:23:39.419 --> 00:23:41.029 align:start position:0%
um but it's just really hard to cover
them<00:23:39.600><c> to</c><00:23:39.900><c> cover</c><00:23:40.140><c> them</c><00:23:40.380><c> all</c><00:23:40.559><c> because</c><00:23:40.799><c> it's</c>

00:23:41.029 --> 00:23:41.039 align:start position:0%
them to cover them all because it's
 

00:23:41.039 --> 00:23:43.789 align:start position:0%
them to cover them all because it's
really<00:23:41.159><c> use</c><00:23:41.400><c> case</c><00:23:41.520><c> dependent</c><00:23:42.140><c> uh</c><00:23:43.140><c> here</c><00:23:43.440><c> this</c>

00:23:43.789 --> 00:23:43.799 align:start position:0%
really use case dependent uh here this
 

00:23:43.799 --> 00:23:46.070 align:start position:0%
really use case dependent uh here this
is<00:23:43.980><c> just</c><00:23:44.580><c> for</c><00:23:44.820><c> one</c><00:23:45.120><c> part</c><00:23:45.240><c> of</c><00:23:45.360><c> the</c><00:23:45.480><c> shot</c><00:23:45.600><c> 256</c>

00:23:46.070 --> 00:23:46.080 align:start position:0%
is just for one part of the shot 256
 

00:23:46.080 --> 00:23:47.750 align:start position:0%
is just for one part of the shot 256
function<00:23:46.440><c> but</c><00:23:46.679><c> there's</c><00:23:46.919><c> so</c><00:23:47.400><c> many</c><00:23:47.520><c> different</c>

00:23:47.750 --> 00:23:47.760 align:start position:0%
function but there's so many different
 

00:23:47.760 --> 00:23:51.470 align:start position:0%
function but there's so many different
things<00:23:48.000><c> that</c><00:23:48.240><c> you</c><00:23:48.900><c> could</c><00:23:49.559><c> optimize</c>

00:23:51.470 --> 00:23:51.480 align:start position:0%
things that you could optimize
 

00:23:51.480 --> 00:23:52.970 align:start position:0%
things that you could optimize
um so<00:23:51.720><c> I</c><00:23:51.840><c> think</c><00:23:52.020><c> it's</c><00:23:52.140><c> actually</c><00:23:52.320><c> a</c><00:23:52.500><c> good</c><00:23:52.620><c> idea</c>

00:23:52.970 --> 00:23:52.980 align:start position:0%
um so I think it's actually a good idea
 

00:23:52.980 --> 00:23:55.549 align:start position:0%
um so I think it's actually a good idea
to<00:23:53.460><c> open</c><00:23:53.940><c> that</c><00:23:54.179><c> to</c><00:23:54.360><c> developers</c><00:23:54.840><c> but</c><00:23:55.140><c> in</c><00:23:55.260><c> a</c><00:23:55.440><c> way</c>

00:23:55.549 --> 00:23:55.559 align:start position:0%
to open that to developers but in a way
 

00:23:55.559 --> 00:23:57.950 align:start position:0%
to open that to developers but in a way
that<00:23:55.799><c> that's</c><00:23:56.100><c> quite</c><00:23:56.480><c> separated</c><00:23:57.480><c> from</c><00:23:57.780><c> the</c>

00:23:57.950 --> 00:23:57.960 align:start position:0%
that that's quite separated from the
 

00:23:57.960 --> 00:24:01.270 align:start position:0%
that that's quite separated from the
rest<00:23:58.020><c> of</c><00:23:58.200><c> the</c><00:23:58.320><c> high</c><00:23:58.440><c> level</c><00:23:58.620><c> code</c>

00:24:01.270 --> 00:24:01.280 align:start position:0%
 
 

00:24:01.280 --> 00:24:04.710 align:start position:0%
 
[Applause]

