WEBVTT
Kind: captions
Language: en

00:00:00.000 --> 00:00:19.510 align:start position:0%
 
I

00:00:19.510 --> 00:00:19.520 align:start position:0%
 
 

00:00:19.520 --> 00:00:22.790 align:start position:0%
 
yeah<00:00:20.520><c> and</c><00:00:20.760><c> the</c><00:00:20.820><c> slides</c><00:00:21.029><c> are</c><00:00:21.150><c> they're</c><00:00:21.300><c> great</c><00:00:21.800><c> so</c>

00:00:22.790 --> 00:00:22.800 align:start position:0%
yeah and the slides are they're great so
 

00:00:22.800 --> 00:00:27.290 align:start position:0%
yeah and the slides are they're great so
yeah<00:00:23.550><c> this</c><00:00:23.759><c> talk</c><00:00:24.450><c> will</c><00:00:24.750><c> basically</c><00:00:25.970><c> yeah</c><00:00:26.970><c> I</c>

00:00:27.290 --> 00:00:27.300 align:start position:0%
yeah this talk will basically yeah I
 

00:00:27.300 --> 00:00:29.330 align:start position:0%
yeah this talk will basically yeah I
just<00:00:27.450><c> want</c><00:00:27.720><c> to</c><00:00:27.810><c> tell</c><00:00:27.930><c> what</c><00:00:28.140><c> we</c><00:00:28.230><c> did</c><00:00:28.410><c> during</c><00:00:29.130><c> the</c>

00:00:29.330 --> 00:00:29.340 align:start position:0%
just want to tell what we did during the
 

00:00:29.340 --> 00:00:31.580 align:start position:0%
just want to tell what we did during the
last<00:00:29.520><c> year</c><00:00:29.939><c> and</c><00:00:29.970><c> what</c><00:00:30.779><c> the</c><00:00:30.930><c> plans</c><00:00:31.169><c> for</c><00:00:31.380><c> the</c>

00:00:31.580 --> 00:00:31.590 align:start position:0%
last year and what the plans for the
 

00:00:31.590 --> 00:00:39.280 align:start position:0%
last year and what the plans for the
future<00:00:31.680><c> are</c><00:00:31.950><c> with</c><00:00:32.550><c> regard</c><00:00:32.730><c> to</c><00:00:32.910><c> solidity</c><00:00:33.270><c> I</c>

00:00:39.280 --> 00:00:39.290 align:start position:0%
 
 

00:00:39.290 --> 00:00:42.830 align:start position:0%
 
want<00:00:40.290><c> to</c><00:00:40.500><c> start</c><00:00:41.040><c> with</c><00:00:41.130><c> explaining</c><00:00:41.880><c> what</c><00:00:42.210><c> what</c>

00:00:42.830 --> 00:00:42.840 align:start position:0%
want to start with explaining what what
 

00:00:42.840 --> 00:00:46.360 align:start position:0%
want to start with explaining what what
the<00:00:43.050><c> the</c><00:00:43.710><c> initial</c><00:00:44.070><c> goals</c><00:00:44.309><c> were</c><00:00:44.760><c> for</c><00:00:45.030><c> solidity</c>

00:00:46.360 --> 00:00:46.370 align:start position:0%
the the initial goals were for solidity
 

00:00:46.370 --> 00:00:50.180 align:start position:0%
the the initial goals were for solidity
so<00:00:47.370><c> the</c><00:00:47.630><c> the</c><00:00:48.630><c> idea</c><00:00:48.870><c> was</c><00:00:49.020><c> to</c><00:00:49.050><c> have</c><00:00:49.560><c> a</c><00:00:49.710><c> statically</c>

00:00:50.180 --> 00:00:50.190 align:start position:0%
so the the idea was to have a statically
 

00:00:50.190 --> 00:00:53.630 align:start position:0%
so the the idea was to have a statically
typed<00:00:50.310><c> language</c><00:00:51.090><c> that</c><00:00:51.510><c> is</c><00:00:52.040><c> easily</c><00:00:53.040><c> readable</c>

00:00:53.630 --> 00:00:53.640 align:start position:0%
typed language that is easily readable
 

00:00:53.640 --> 00:00:57.110 align:start position:0%
typed language that is easily readable
for<00:00:54.270><c> web</c><00:00:55.020><c> developers</c><00:00:55.560><c> or</c><00:00:55.860><c> for</c><00:00:56.120><c> not</c>

00:00:57.110 --> 00:00:57.120 align:start position:0%
for web developers or for not
 

00:00:57.120 --> 00:00:59.660 align:start position:0%
for web developers or for not
necessarily<00:00:57.570><c> rapid</c><00:00:57.810><c> wellas</c><00:00:58.050><c> but</c><00:00:58.260><c> for</c><00:00:58.500><c> I</c><00:00:58.770><c> don't</c>

00:00:59.660 --> 00:00:59.670 align:start position:0%
necessarily rapid wellas but for I don't
 

00:00:59.670 --> 00:01:06.200 align:start position:0%
necessarily rapid wellas but for I don't
know<00:00:59.820><c> casual</c><00:01:00.390><c> programmers</c><00:01:02.390><c> so</c><00:01:04.460><c> yeah</c><00:01:05.460><c> we</c><00:01:05.640><c> we</c>

00:01:06.200 --> 00:01:06.210 align:start position:0%
know casual programmers so yeah we we
 

00:01:06.210 --> 00:01:08.510 align:start position:0%
know casual programmers so yeah we we
chose<00:01:06.630><c> something</c><00:01:07.530><c> that</c><00:01:07.649><c> looks</c><00:01:07.920><c> like</c><00:01:08.460><c> a</c>

00:01:08.510 --> 00:01:08.520 align:start position:0%
chose something that looks like a
 

00:01:08.520 --> 00:01:16.719 align:start position:0%
chose something that looks like a
symbiosis<00:01:09.509><c> between</c><00:01:09.780><c> JavaScript</c><00:01:10.590><c> c</c><00:01:11.149><c> java</c><00:01:12.710><c> and</c>

00:01:16.719 --> 00:01:16.729 align:start position:0%
 
 

00:01:16.729 --> 00:01:20.090 align:start position:0%
 
it<00:01:17.729><c> should</c><00:01:17.970><c> be</c><00:01:18.119><c> high</c><00:01:18.270><c> level</c><00:01:18.600><c> but</c><00:01:19.049><c> at</c><00:01:19.380><c> the</c><00:01:19.799><c> same</c>

00:01:20.090 --> 00:01:20.100 align:start position:0%
it should be high level but at the same
 

00:01:20.100 --> 00:01:24.139 align:start position:0%
it should be high level but at the same
time<00:01:21.200><c> it</c><00:01:22.200><c> should</c><00:01:22.859><c> be</c><00:01:23.009><c> also</c><00:01:23.280><c> very</c><00:01:23.639><c> very</c>

00:01:24.139 --> 00:01:24.149 align:start position:0%
time it should be also very very
 

00:01:24.149 --> 00:01:26.120 align:start position:0%
time it should be also very very
efficient<00:01:24.630><c> because</c><00:01:24.840><c> there's</c><00:01:25.439><c> not</c><00:01:25.740><c> a</c><00:01:25.799><c> lot</c><00:01:26.100><c> we</c>

00:01:26.120 --> 00:01:26.130 align:start position:0%
efficient because there's not a lot we
 

00:01:26.130 --> 00:01:29.239 align:start position:0%
efficient because there's not a lot we
can<00:01:26.429><c> do</c><00:01:26.639><c> inside</c><00:01:27.270><c> a</c><00:01:27.689><c> single</c><00:01:28.679><c> block</c><00:01:28.889><c> at</c><00:01:29.069><c> least</c>

00:01:29.239 --> 00:01:29.249 align:start position:0%
can do inside a single block at least
 

00:01:29.249 --> 00:01:33.469 align:start position:0%
can do inside a single block at least
currently<00:01:29.729><c> and</c><00:01:31.459><c> yeah</c><00:01:32.459><c> keep</c><00:01:32.880><c> that</c><00:01:33.060><c> it</c><00:01:33.270><c> keep</c>

00:01:33.469 --> 00:01:33.479 align:start position:0%
currently and yeah keep that it keep
 

00:01:33.479 --> 00:01:36.889 align:start position:0%
currently and yeah keep that it keep
that<00:01:33.630><c> in</c><00:01:33.749><c> mind</c><00:01:33.929><c> because</c><00:01:34.549><c> sometimes</c><00:01:35.749><c> yes</c><00:01:36.749><c> a</c>

00:01:36.889 --> 00:01:36.899 align:start position:0%
that in mind because sometimes yes a
 

00:01:36.899 --> 00:01:38.300 align:start position:0%
that in mind because sometimes yes a
little<00:01:37.109><c> she</c><00:01:37.229><c> looks</c><00:01:37.439><c> really</c><00:01:37.950><c> really</c><00:01:38.189><c> high</c>

00:01:38.300 --> 00:01:38.310 align:start position:0%
little she looks really really high
 

00:01:38.310 --> 00:01:40.819 align:start position:0%
little she looks really really high
level<00:01:38.490><c> but</c><00:01:39.020><c> actually</c><00:01:40.020><c> it's</c><00:01:40.139><c> not</c><00:01:40.289><c> that</c><00:01:40.350><c> far</c>

00:01:40.819 --> 00:01:40.829 align:start position:0%
level but actually it's not that far
 

00:01:40.829 --> 00:01:46.279 align:start position:0%
level but actually it's not that far
away<00:01:41.009><c> from</c><00:01:41.240><c> assembly</c><00:01:44.509><c> okay</c><00:01:45.509><c> what</c><00:01:45.990><c> happened</c>

00:01:46.279 --> 00:01:46.289 align:start position:0%
away from assembly okay what happened
 

00:01:46.289 --> 00:01:50.510 align:start position:0%
away from assembly okay what happened
since<00:01:46.590><c> DEFCON</c><00:01:47.130><c> 1</c><00:01:47.959><c> we</c><00:01:48.959><c> extended</c><00:01:49.619><c> solidity</c><00:01:50.100><c> to</c>

00:01:50.510 --> 00:01:50.520 align:start position:0%
since DEFCON 1 we extended solidity to
 

00:01:50.520 --> 00:01:56.929 align:start position:0%
since DEFCON 1 we extended solidity to
be<00:01:50.670><c> more</c><00:01:51.209><c> flexible</c><00:01:51.709><c> more</c><00:01:54.799><c> usable</c><00:01:55.799><c> so</c><00:01:56.189><c> we</c><00:01:56.789><c> added</c>

00:01:56.929 --> 00:01:56.939 align:start position:0%
be more flexible more usable so we added
 

00:01:56.939 --> 00:02:00.169 align:start position:0%
be more flexible more usable so we added
some<00:01:57.060><c> some</c><00:01:57.450><c> usability</c><00:01:57.749><c> features</c><00:01:58.079><c> and</c><00:01:59.090><c> not</c><00:02:00.090><c> to</c>

00:02:00.169 --> 00:02:00.179 align:start position:0%
some some usability features and not to
 

00:02:00.179 --> 00:02:03.230 align:start position:0%
some some usability features and not to
forget<00:02:00.329><c> we</c><00:02:00.840><c> made</c><00:02:01.109><c> it</c><00:02:01.399><c> safer</c><00:02:02.399><c> at</c><00:02:02.670><c> least</c><00:02:02.939><c> I</c><00:02:03.090><c> hope</c>

00:02:03.230 --> 00:02:03.240 align:start position:0%
forget we made it safer at least I hope
 

00:02:03.240 --> 00:02:09.650 align:start position:0%
forget we made it safer at least I hope
so<00:02:03.709><c> so</c><00:02:04.709><c> what</c><00:02:04.920><c> exactly</c><00:02:05.009><c> did</c><00:02:05.340><c> we</c><00:02:05.399><c> do</c><00:02:08.599><c> next</c><00:02:09.599><c> slide</c>

00:02:09.650 --> 00:02:09.660 align:start position:0%
so so what exactly did we do next slide
 

00:02:09.660 --> 00:02:14.780 align:start position:0%
so so what exactly did we do next slide
please<00:02:12.260><c> it's</c><00:02:13.260><c> now</c><00:02:13.560><c> possible</c><00:02:13.830><c> to</c><00:02:14.099><c> build</c><00:02:14.250><c> custom</c>

00:02:14.780 --> 00:02:14.790 align:start position:0%
please it's now possible to build custom
 

00:02:14.790 --> 00:02:18.170 align:start position:0%
please it's now possible to build custom
types<00:02:15.030><c> and</c><00:02:15.270><c> solidity</c><00:02:15.599><c> and</c><00:02:16.520><c> that</c><00:02:17.520><c> leverages</c>

00:02:18.170 --> 00:02:18.180 align:start position:0%
types and solidity and that leverages
 

00:02:18.180 --> 00:02:22.869 align:start position:0%
types and solidity and that leverages
the<00:02:18.209><c> new</c><00:02:18.480><c> features</c><00:02:18.720><c> of</c><00:02:19.200><c> inline</c><00:02:19.590><c> assembly</c><00:02:20.069><c> and</c>

00:02:22.869 --> 00:02:22.879 align:start position:0%
the new features of inline assembly and
 

00:02:22.879 --> 00:02:25.670 align:start position:0%
the new features of inline assembly and
libraries<00:02:23.879><c> that</c><00:02:24.329><c> were</c><00:02:24.780><c> present</c><00:02:25.110><c> for</c><00:02:25.379><c> DEFCON</c>

00:02:25.670 --> 00:02:25.680 align:start position:0%
libraries that were present for DEFCON
 

00:02:25.680 --> 00:02:28.460 align:start position:0%
libraries that were present for DEFCON
one<00:02:25.890><c> already</c><00:02:26.159><c> but</c><00:02:26.340><c> we</c><00:02:26.579><c> added</c><00:02:27.260><c> so</c><00:02:28.260><c> called</c>

00:02:28.460 --> 00:02:28.470 align:start position:0%
one already but we added so called
 

00:02:28.470 --> 00:02:28.970 align:start position:0%
one already but we added so called
intern

00:02:28.970 --> 00:02:28.980 align:start position:0%
intern
 

00:02:28.980 --> 00:02:31.820 align:start position:0%
intern
library<00:02:29.459><c> functions</c><00:02:29.909><c> and</c><00:02:30.319><c> not</c><00:02:31.319><c> to</c><00:02:31.409><c> forget</c><00:02:31.530><c> the</c>

00:02:31.820 --> 00:02:31.830 align:start position:0%
library functions and not to forget the
 

00:02:31.830 --> 00:02:33.740 align:start position:0%
library functions and not to forget the
using<00:02:32.159><c> X</c><00:02:32.310><c> for</c><00:02:32.580><c> y</c><00:02:32.760><c> so</c><00:02:33.030><c> let's</c><00:02:33.360><c> look</c><00:02:33.540><c> at</c><00:02:33.659><c> an</c>

00:02:33.740 --> 00:02:33.750 align:start position:0%
using X for y so let's look at an
 

00:02:33.750 --> 00:02:38.420 align:start position:0%
using X for y so let's look at an
example<00:02:34.849><c> this</c><00:02:35.849><c> is</c><00:02:35.989><c> I</c><00:02:36.989><c> think</c><00:02:37.470><c> Nick</c><00:02:37.920><c> Johnson</c>

00:02:38.420 --> 00:02:38.430 align:start position:0%
example this is I think Nick Johnson
 

00:02:38.430 --> 00:02:41.210 align:start position:0%
example this is I think Nick Johnson
string<00:02:39.420><c> library</c><00:02:39.659><c> at</c><00:02:40.110><c> least</c><00:02:40.290><c> a</c><00:02:40.500><c> small</c><00:02:40.860><c> fragment</c>

00:02:41.210 --> 00:02:41.220 align:start position:0%
string library at least a small fragment
 

00:02:41.220 --> 00:02:45.979 align:start position:0%
string library at least a small fragment
of<00:02:41.489><c> it</c><00:02:41.640><c> and</c><00:02:43.129><c> it</c><00:02:44.330><c> inside</c><00:02:45.330><c> this</c><00:02:45.450><c> library</c><00:02:45.840><c> you</c>

00:02:45.979 --> 00:02:45.989 align:start position:0%
of it and it inside this library you
 

00:02:45.989 --> 00:02:49.460 align:start position:0%
of it and it inside this library you
have<00:02:46.019><c> this</c><00:02:46.379><c> struct</c><00:02:47.040><c> slice</c><00:02:47.720><c> which</c><00:02:48.720><c> defines</c><00:02:49.349><c> a</c>

00:02:49.460 --> 00:02:49.470 align:start position:0%
have this struct slice which defines a
 

00:02:49.470 --> 00:02:53.080 align:start position:0%
have this struct slice which defines a
new<00:02:49.590><c> type</c><00:02:49.830><c> and</c><00:02:50.129><c> it's</c><00:02:50.849><c> basically</c><00:02:51.060><c> a</c><00:02:51.540><c> a</c><00:02:52.080><c> view</c><00:02:52.739><c> on</c>

00:02:53.080 --> 00:02:53.090 align:start position:0%
new type and it's basically a a view on
 

00:02:53.090 --> 00:02:56.930 align:start position:0%
new type and it's basically a a view on
memory<00:02:54.090><c> it</c><00:02:54.750><c> has</c><00:02:55.140><c> a</c><00:02:55.319><c> pointer</c><00:02:55.920><c> which</c><00:02:56.250><c> is</c><00:02:56.430><c> so</c><00:02:56.670><c> it's</c>

00:02:56.930 --> 00:02:56.940 align:start position:0%
memory it has a pointer which is so it's
 

00:02:56.940 --> 00:02:59.149 align:start position:0%
memory it has a pointer which is so it's
a<00:02:57.030><c> kind</c><00:02:57.209><c> of</c><00:02:57.269><c> rather</c><00:02:58.079><c> low</c><00:02:58.290><c> level</c><00:02:58.560><c> object</c><00:02:58.920><c> it</c><00:02:59.040><c> has</c>

00:02:59.149 --> 00:02:59.159 align:start position:0%
a kind of rather low level object it has
 

00:02:59.159 --> 00:03:00.949 align:start position:0%
a kind of rather low level object it has
a<00:02:59.190><c> pointer</c><00:02:59.610><c> and</c><00:02:59.760><c> a</c><00:02:59.819><c> length</c><00:02:59.970><c> so</c><00:03:00.269><c> it</c><00:03:00.299><c> references</c>

00:03:00.949 --> 00:03:00.959 align:start position:0%
a pointer and a length so it references
 

00:03:00.959 --> 00:03:04.910 align:start position:0%
a pointer and a length so it references
a<00:03:01.200><c> chunk</c><00:03:02.160><c> of</c><00:03:02.310><c> memory</c><00:03:02.459><c> and</c><00:03:03.019><c> the</c><00:03:04.019><c> function</c><00:03:04.680><c> to</c>

00:03:04.910 --> 00:03:04.920 align:start position:0%
a chunk of memory and the function to
 

00:03:04.920 --> 00:03:08.259 align:start position:0%
a chunk of memory and the function to
slice<00:03:05.190><c> can</c><00:03:05.579><c> be</c><00:03:05.670><c> called</c><00:03:05.940><c> on</c><00:03:06.150><c> any</c><00:03:06.269><c> string</c><00:03:06.660><c> and</c><00:03:06.840><c> it</c>

00:03:08.259 --> 00:03:08.269 align:start position:0%
slice can be called on any string and it
 

00:03:08.269 --> 00:03:11.300 align:start position:0%
slice can be called on any string and it
creates<00:03:09.319><c> such</c><00:03:10.319><c> a</c><00:03:10.349><c> slice</c><00:03:10.680><c> object</c><00:03:11.220><c> that</c>

00:03:11.300 --> 00:03:11.310 align:start position:0%
creates such a slice object that
 

00:03:11.310 --> 00:03:15.170 align:start position:0%
creates such a slice object that
references<00:03:11.970><c> the</c><00:03:12.030><c> data</c><00:03:12.359><c> of</c><00:03:12.599><c> that</c><00:03:12.810><c> string</c><00:03:14.180><c> that</c>

00:03:15.170 --> 00:03:15.180 align:start position:0%
references the data of that string that
 

00:03:15.180 --> 00:03:19.449 align:start position:0%
references the data of that string that
is<00:03:15.239><c> important</c><00:03:15.750><c> because</c><00:03:15.900><c> usually</c><00:03:16.379><c> when</c><00:03:16.769><c> you</c>

00:03:19.449 --> 00:03:19.459 align:start position:0%
 
 

00:03:19.459 --> 00:03:26.449 align:start position:0%
 
when<00:03:20.459><c> you</c><00:03:23.120><c> create</c><00:03:24.120><c> so</c><00:03:24.739><c> we</c><00:03:25.739><c> want</c><00:03:25.920><c> to</c><00:03:26.010><c> be</c><00:03:26.099><c> able</c><00:03:26.220><c> to</c>

00:03:26.449 --> 00:03:26.459 align:start position:0%
when you create so we want to be able to
 

00:03:26.459 --> 00:03:28.759 align:start position:0%
when you create so we want to be able to
reference<00:03:26.700><c> parts</c><00:03:27.450><c> of</c><00:03:27.660><c> strings</c><00:03:27.989><c> and</c><00:03:28.319><c> if</c><00:03:28.470><c> we</c><00:03:28.590><c> use</c>

00:03:28.759 --> 00:03:28.769 align:start position:0%
reference parts of strings and if we use
 

00:03:28.769 --> 00:03:30.619 align:start position:0%
reference parts of strings and if we use
just<00:03:29.160><c> the</c><00:03:29.400><c> string</c><00:03:29.760><c> type</c><00:03:29.940><c> itself</c><00:03:30.269><c> we</c><00:03:30.510><c> would</c>

00:03:30.619 --> 00:03:30.629 align:start position:0%
just the string type itself we would
 

00:03:30.629 --> 00:03:32.869 align:start position:0%
just the string type itself we would
have<00:03:30.780><c> to</c><00:03:30.900><c> copy</c><00:03:31.109><c> it</c><00:03:31.290><c> all</c><00:03:31.410><c> the</c><00:03:31.530><c> time</c><00:03:31.560><c> and</c><00:03:31.950><c> using</c>

00:03:32.869 --> 00:03:32.879 align:start position:0%
have to copy it all the time and using
 

00:03:32.879 --> 00:03:35.300 align:start position:0%
have to copy it all the time and using
this<00:03:33.090><c> slice</c><00:03:33.389><c> we</c><00:03:33.690><c> can</c><00:03:33.930><c> talk</c><00:03:34.290><c> about</c><00:03:34.470><c> parts</c><00:03:35.190><c> of</c>

00:03:35.300 --> 00:03:35.310 align:start position:0%
this slice we can talk about parts of
 

00:03:35.310 --> 00:03:39.710 align:start position:0%
this slice we can talk about parts of
strings<00:03:35.579><c> and</c><00:03:36.139><c> let's</c><00:03:37.639><c> so</c><00:03:38.639><c> at</c><00:03:38.910><c> the</c><00:03:39.329><c> bottom</c><00:03:39.599><c> we</c>

00:03:39.710 --> 00:03:39.720 align:start position:0%
strings and let's so at the bottom we
 

00:03:39.720 --> 00:03:41.890 align:start position:0%
strings and let's so at the bottom we
have<00:03:39.750><c> a</c><00:03:39.870><c> contract</c><00:03:40.109><c> that</c><00:03:40.230><c> actually</c><00:03:40.620><c> uses</c><00:03:40.769><c> this</c>

00:03:41.890 --> 00:03:41.900 align:start position:0%
have a contract that actually uses this
 

00:03:41.900 --> 00:03:46.250 align:start position:0%
have a contract that actually uses this
slice<00:03:43.430><c> it</c><00:03:44.430><c> takes</c><00:03:44.700><c> a</c><00:03:44.819><c> string</c><00:03:45.060><c> it</c><00:03:45.720><c> calls</c><00:03:45.989><c> to</c>

00:03:46.250 --> 00:03:46.260 align:start position:0%
slice it takes a string it calls to
 

00:03:46.260 --> 00:03:47.780 align:start position:0%
slice it takes a string it calls to
slice<00:03:46.500><c> which</c><00:03:46.769><c> converts</c><00:03:47.099><c> it</c><00:03:47.250><c> to</c><00:03:47.280><c> such</c><00:03:47.489><c> a</c><00:03:47.519><c> slice</c>

00:03:47.780 --> 00:03:47.790 align:start position:0%
slice which converts it to such a slice
 

00:03:47.790 --> 00:03:51.229 align:start position:0%
slice which converts it to such a slice
and<00:03:48.060><c> then</c><00:03:48.599><c> checks</c><00:03:49.500><c> whether</c><00:03:49.739><c> it</c><00:03:50.220><c> starts</c><00:03:50.790><c> with</c>

00:03:51.229 --> 00:03:51.239 align:start position:0%
and then checks whether it starts with
 

00:03:51.239 --> 00:03:55.220 align:start position:0%
and then checks whether it starts with
foo<00:03:51.810><c> so</c><00:03:52.109><c> it</c><00:03:53.209><c> checks</c><00:03:54.209><c> whether</c><00:03:54.359><c> the</c><00:03:54.540><c> prefix</c><00:03:54.989><c> is</c>

00:03:55.220 --> 00:03:55.230 align:start position:0%
foo so it checks whether the prefix is
 

00:03:55.230 --> 00:04:01.039 align:start position:0%
foo so it checks whether the prefix is
foo<00:03:55.440><c> and</c><00:03:56.989><c> no</c><00:03:57.989><c> not</c><00:03:58.139><c> yet</c><00:03:58.430><c> so</c><00:03:59.430><c> and</c><00:03:59.840><c> the</c><00:04:00.840><c> great</c>

00:04:01.039 --> 00:04:01.049 align:start position:0%
foo and no not yet so and the great
 

00:04:01.049 --> 00:04:03.770 align:start position:0%
foo and no not yet so and the great
thing<00:04:01.079><c> is</c><00:04:01.290><c> that</c><00:04:01.410><c> you</c><00:04:01.769><c> can</c><00:04:02.060><c> so</c><00:04:03.060><c> using</c><00:04:03.690><c> this</c>

00:04:03.770 --> 00:04:03.780 align:start position:0%
thing is that you can so using this
 

00:04:03.780 --> 00:04:06.860 align:start position:0%
thing is that you can so using this
using<00:04:04.440><c> strings</c><00:04:04.799><c> for</c><00:04:05.130><c> star</c><00:04:05.430><c> statement</c><00:04:06.329><c> you</c><00:04:06.840><c> can</c>

00:04:06.860 --> 00:04:06.870 align:start position:0%
using strings for star statement you can
 

00:04:06.870 --> 00:04:10.460 align:start position:0%
using strings for star statement you can
basically<00:04:07.230><c> attached</c><00:04:08.840><c> functions</c><00:04:09.840><c> from</c><00:04:10.380><c> a</c>

00:04:10.460 --> 00:04:10.470 align:start position:0%
basically attached functions from a
 

00:04:10.470 --> 00:04:13.250 align:start position:0%
basically attached functions from a
library<00:04:10.950><c> to</c><00:04:11.280><c> an</c><00:04:11.430><c> existing</c><00:04:11.700><c> type</c><00:04:12.150><c> and</c><00:04:12.389><c> that's</c>

00:04:13.250 --> 00:04:13.260 align:start position:0%
library to an existing type and that's
 

00:04:13.260 --> 00:04:15.979 align:start position:0%
library to an existing type and that's
why<00:04:13.530><c> we</c><00:04:13.709><c> can</c><00:04:13.889><c> call</c><00:04:14.069><c> s</c><00:04:14.340><c> dot</c><00:04:14.639><c> to</c><00:04:14.879><c> slice</c><00:04:15.180><c> although</c>

00:04:15.979 --> 00:04:15.989 align:start position:0%
why we can call s dot to slice although
 

00:04:15.989 --> 00:04:20.000 align:start position:0%
why we can call s dot to slice although
s<00:04:16.229><c> is</c><00:04:16.530><c> a</c><00:04:16.729><c> built-in</c><00:04:17.900><c> type</c><00:04:18.900><c> that</c><00:04:19.139><c> usually</c><00:04:19.530><c> that</c>

00:04:20.000 --> 00:04:20.010 align:start position:0%
s is a built-in type that usually that
 

00:04:20.010 --> 00:04:21.170 align:start position:0%
s is a built-in type that usually that
that<00:04:20.160><c> of</c><00:04:20.250><c> course</c><00:04:20.400><c> does</c><00:04:20.579><c> not</c><00:04:20.609><c> have</c><00:04:21.000><c> the</c>

00:04:21.170 --> 00:04:21.180 align:start position:0%
that of course does not have the
 

00:04:21.180 --> 00:04:23.990 align:start position:0%
that of course does not have the
function<00:04:21.539><c> to</c><00:04:21.660><c> slice</c><00:04:21.930><c> and</c><00:04:22.310><c> I</c><00:04:23.310><c> think</c><00:04:23.760><c> this</c><00:04:23.820><c> is</c><00:04:23.880><c> a</c>

00:04:23.990 --> 00:04:24.000 align:start position:0%
function to slice and I think this is a
 

00:04:24.000 --> 00:04:27.529 align:start position:0%
function to slice and I think this is a
really<00:04:24.210><c> powerful</c><00:04:24.930><c> tool</c><00:04:26.060><c> especially</c><00:04:27.060><c> when</c>

00:04:27.529 --> 00:04:27.539 align:start position:0%
really powerful tool especially when
 

00:04:27.539 --> 00:04:29.240 align:start position:0%
really powerful tool especially when
coupled<00:04:27.750><c> with</c><00:04:27.960><c> inline</c><00:04:28.320><c> assembly</c><00:04:28.800><c> because</c><00:04:28.919><c> you</c>

00:04:29.240 --> 00:04:29.250 align:start position:0%
coupled with inline assembly because you
 

00:04:29.250 --> 00:04:33.800 align:start position:0%
coupled with inline assembly because you
can<00:04:30.139><c> create</c><00:04:31.139><c> tools</c><00:04:31.910><c> using</c><00:04:32.910><c> inline</c><00:04:33.180><c> assembly</c>

00:04:33.800 --> 00:04:33.810 align:start position:0%
can create tools using inline assembly
 

00:04:33.810 --> 00:04:35.900 align:start position:0%
can create tools using inline assembly
without<00:04:34.320><c> having</c><00:04:34.860><c> to</c><00:04:34.949><c> change</c><00:04:35.220><c> the</c><00:04:35.400><c> compilers</c>

00:04:35.900 --> 00:04:35.910 align:start position:0%
without having to change the compilers
 

00:04:35.910 --> 00:04:38.570 align:start position:0%
without having to change the compilers
you<00:04:36.090><c> can</c><00:04:36.300><c> basically</c><00:04:36.990><c> add</c><00:04:37.320><c> types</c><00:04:37.950><c> that</c><00:04:38.340><c> look</c>

00:04:38.570 --> 00:04:38.580 align:start position:0%
you can basically add types that look
 

00:04:38.580 --> 00:04:41.209 align:start position:0%
you can basically add types that look
like<00:04:38.789><c> built-in</c><00:04:39.330><c> types</c><00:04:39.630><c> but</c><00:04:40.469><c> you</c><00:04:40.710><c> do</c><00:04:40.830><c> not</c><00:04:40.950><c> have</c>

00:04:41.209 --> 00:04:41.219 align:start position:0%
like built-in types but you do not have
 

00:04:41.219 --> 00:04:43.100 align:start position:0%
like built-in types but you do not have
to<00:04:41.729><c> take</c><00:04:41.940><c> do</c>

00:04:43.100 --> 00:04:43.110 align:start position:0%
to take do
 

00:04:43.110 --> 00:04:48.080 align:start position:0%
to take do
have<00:04:43.320><c> to</c><00:04:43.470><c> look</c><00:04:43.620><c> into</c><00:04:43.770><c> the</c><00:04:43.950><c> compiler</c><00:04:46.760><c> okay</c><00:04:47.760><c> what</c>

00:04:48.080 --> 00:04:48.090 align:start position:0%
have to look into the compiler okay what
 

00:04:48.090 --> 00:04:54.260 align:start position:0%
have to look into the compiler okay what
we<00:04:48.210><c> also</c><00:04:48.360><c> did</c><00:04:48.690><c> is</c><00:04:49.520><c> we</c><00:04:50.520><c> so</c><00:04:51.330><c> we</c><00:04:52.670><c> extended</c><00:04:53.670><c> the</c><00:04:53.790><c> AST</c>

00:04:54.260 --> 00:04:54.270 align:start position:0%
we also did is we so we extended the AST
 

00:04:54.270 --> 00:04:57.740 align:start position:0%
we also did is we so we extended the AST
output<00:04:54.720><c> capabilities</c><00:04:55.050><c> and</c><00:04:56.360><c> one</c><00:04:57.360><c> of</c><00:04:57.450><c> the</c><00:04:57.540><c> goals</c>

00:04:57.740 --> 00:04:57.750 align:start position:0%
output capabilities and one of the goals
 

00:04:57.750 --> 00:05:01.880 align:start position:0%
output capabilities and one of the goals
there<00:04:58.110><c> is</c><00:04:58.350><c> to</c><00:04:58.680><c> provide</c><00:04:59.370><c> more</c><00:05:00.740><c> make</c><00:05:01.740><c> the</c>

00:05:01.880 --> 00:05:01.890 align:start position:0%
there is to provide more make the
 

00:05:01.890 --> 00:05:04.130 align:start position:0%
there is to provide more make the
compiler<00:05:02.370><c> more</c><00:05:02.760><c> accessible</c><00:05:03.360><c> to</c><00:05:03.390><c> external</c>

00:05:04.130 --> 00:05:04.140 align:start position:0%
compiler more accessible to external
 

00:05:04.140 --> 00:05:06.890 align:start position:0%
compiler more accessible to external
tools<00:05:04.350><c> which</c><00:05:04.830><c> want</c><00:05:05.340><c> to</c><00:05:05.460><c> do</c><00:05:05.640><c> static</c><00:05:06.390><c> analysis</c>

00:05:06.890 --> 00:05:06.900 align:start position:0%
tools which want to do static analysis
 

00:05:06.900 --> 00:05:12.440 align:start position:0%
tools which want to do static analysis
or<00:05:07.110><c> debugging</c><00:05:07.710><c> and</c><00:05:09.350><c> so</c><00:05:10.350><c> this</c><00:05:10.620><c> is</c><00:05:10.850><c> still</c><00:05:11.850><c> a</c><00:05:12.240><c> bit</c>

00:05:12.440 --> 00:05:12.450 align:start position:0%
or debugging and so this is still a bit
 

00:05:12.450 --> 00:05:15.290 align:start position:0%
or debugging and so this is still a bit
fluid<00:05:13.050><c> so</c><00:05:13.350><c> we</c><00:05:13.530><c> might</c><00:05:13.770><c> change</c><00:05:14.100><c> the</c><00:05:14.490><c> we</c><00:05:15.090><c> might</c>

00:05:15.290 --> 00:05:15.300 align:start position:0%
fluid so we might change the we might
 

00:05:15.300 --> 00:05:17.450 align:start position:0%
fluid so we might change the we might
still<00:05:15.510><c> change</c><00:05:15.570><c> the</c><00:05:16.050><c> design</c><00:05:16.740><c> of</c><00:05:16.920><c> the</c><00:05:17.130><c> AST</c>

00:05:17.450 --> 00:05:17.460 align:start position:0%
still change the design of the AST
 

00:05:17.460 --> 00:05:22.280 align:start position:0%
still change the design of the AST
output<00:05:17.820><c> but</c><00:05:18.750><c> as</c><00:05:19.640><c> an</c><00:05:20.640><c> example</c><00:05:20.970><c> we</c><00:05:21.570><c> have</c><00:05:21.720><c> the</c><00:05:21.960><c> the</c>

00:05:22.280 --> 00:05:22.290 align:start position:0%
output but as an example we have the the
 

00:05:22.290 --> 00:05:26.570 align:start position:0%
output but as an example we have the the
statement<00:05:22.710><c> return</c><00:05:23.010><c> x</c><00:05:23.340><c> +</c><00:05:23.670><c> y</c><00:05:23.940><c> and</c><00:05:24.380><c> this</c><00:05:25.580><c> gets</c>

00:05:26.570 --> 00:05:26.580 align:start position:0%
statement return x + y and this gets
 

00:05:26.580 --> 00:05:28.460 align:start position:0%
statement return x + y and this gets
converted<00:05:26.970><c> into</c><00:05:27.210><c> the</c><00:05:27.450><c> to</c><00:05:27.660><c> the</c><00:05:27.750><c> following</c><00:05:28.020><c> json</c>

00:05:28.460 --> 00:05:28.470 align:start position:0%
converted into the to the following json
 

00:05:28.470 --> 00:05:31.490 align:start position:0%
converted into the to the following json
a<00:05:28.710><c> representation</c><00:05:29.520><c> of</c><00:05:29.580><c> the</c><00:05:29.730><c> ast</c><00:05:30.120><c> ast</c><00:05:30.320><c> we</c><00:05:31.320><c> have</c>

00:05:31.490 --> 00:05:31.500 align:start position:0%
a representation of the ast ast we have
 

00:05:31.500 --> 00:05:36.260 align:start position:0%
a representation of the ast ast we have
an<00:05:31.620><c> ID</c><00:05:32.930><c> which</c><00:05:33.930><c> is</c><00:05:34.370><c> used</c><00:05:35.370><c> to</c><00:05:35.610><c> reference</c><00:05:35.790><c> other</c>

00:05:36.260 --> 00:05:36.270 align:start position:0%
an ID which is used to reference other
 

00:05:36.270 --> 00:05:39.170 align:start position:0%
an ID which is used to reference other
nodes<00:05:36.570><c> in</c><00:05:36.780><c> the</c><00:05:36.900><c> ASCO</c><00:05:37.260><c> perhaps</c><00:05:37.770><c> I</c><00:05:37.860><c> took</c><00:05:38.430><c> a</c><00:05:38.610><c> STS</c>

00:05:39.170 --> 00:05:39.180 align:start position:0%
nodes in the ASCO perhaps I took a STS
 

00:05:39.180 --> 00:05:41.540 align:start position:0%
nodes in the ASCO perhaps I took a STS
then<00:05:39.420><c> is</c><00:05:39.750><c> short</c><00:05:40.050><c> for</c><00:05:40.080><c> abstract</c><00:05:40.920><c> syntax</c><00:05:41.100><c> tree</c>

00:05:41.540 --> 00:05:41.550 align:start position:0%
then is short for abstract syntax tree
 

00:05:41.550 --> 00:05:45.350 align:start position:0%
then is short for abstract syntax tree
and<00:05:41.840><c> that</c><00:05:42.840><c> is</c><00:05:42.960><c> basically</c><00:05:43.350><c> a</c><00:05:44.360><c> representation</c>

00:05:45.350 --> 00:05:45.360 align:start position:0%
and that is basically a representation
 

00:05:45.360 --> 00:05:48.080 align:start position:0%
and that is basically a representation
of<00:05:45.480><c> a</c><00:05:45.930><c> structured</c><00:05:46.650><c> representation</c><00:05:47.490><c> of</c><00:05:47.610><c> the</c>

00:05:48.080 --> 00:05:48.090 align:start position:0%
of a structured representation of the
 

00:05:48.090 --> 00:05:52.520 align:start position:0%
of a structured representation of the
source<00:05:48.330><c> code</c><00:05:48.540><c> of</c><00:05:48.720><c> a</c><00:05:48.780><c> program</c><00:05:49.820><c> and</c><00:05:51.410><c> so</c><00:05:52.410><c> this</c>

00:05:52.520 --> 00:05:52.530 align:start position:0%
source code of a program and so this
 

00:05:52.530 --> 00:05:54.560 align:start position:0%
source code of a program and so this
return<00:05:52.980><c> X</c><00:05:53.190><c> plus</c><00:05:53.400><c> y</c><00:05:53.610><c> is</c><00:05:53.640><c> decomposed</c><00:05:54.090><c> in</c><00:05:54.480><c> the</c>

00:05:54.560 --> 00:05:54.570 align:start position:0%
return X plus y is decomposed in the
 

00:05:54.570 --> 00:05:57.110 align:start position:0%
return X plus y is decomposed in the
return<00:05:55.080><c> statement</c><00:05:55.320><c> and</c><00:05:55.770><c> then</c><00:05:56.400><c> inside</c><00:05:56.940><c> this</c>

00:05:57.110 --> 00:05:57.120 align:start position:0%
return statement and then inside this
 

00:05:57.120 --> 00:05:59.030 align:start position:0%
return statement and then inside this
return<00:05:57.480><c> statement</c><00:05:57.990><c> we</c><00:05:58.110><c> have</c><00:05:58.290><c> a</c><00:05:58.320><c> binary</c>

00:05:59.030 --> 00:05:59.040 align:start position:0%
return statement we have a binary
 

00:05:59.040 --> 00:06:02.990 align:start position:0%
return statement we have a binary
operation<00:05:59.670><c> which</c><00:05:59.910><c> is</c><00:06:00.060><c> the</c><00:06:00.210><c> addition</c><00:06:00.630><c> and</c><00:06:02.000><c> the</c>

00:06:02.990 --> 00:06:03.000 align:start position:0%
operation which is the addition and the
 

00:06:03.000 --> 00:06:05.750 align:start position:0%
operation which is the addition and the
two<00:06:03.180><c> operands</c><00:06:03.630><c> again</c><00:06:04.050><c> are</c><00:06:04.320><c> inside</c><00:06:05.100><c> the</c><00:06:05.400><c> binary</c>

00:06:05.750 --> 00:06:05.760 align:start position:0%
two operands again are inside the binary
 

00:06:05.760 --> 00:06:07.130 align:start position:0%
two operands again are inside the binary
operation<00:06:06.300><c> and</c><00:06:06.510><c> these</c><00:06:06.780><c> are</c><00:06:06.930><c> the</c><00:06:07.020><c> two</c>

00:06:07.130 --> 00:06:07.140 align:start position:0%
operation and these are the two
 

00:06:07.140 --> 00:06:12.490 align:start position:0%
operation and these are the two
identifies<00:06:07.680><c> x</c><00:06:07.980><c> and</c><00:06:08.190><c> y</c><00:06:08.340><c> and</c><00:06:08.720><c> you</c><00:06:09.720><c> can</c><00:06:09.900><c> see</c><00:06:10.850><c> this</c>

00:06:12.490 --> 00:06:12.500 align:start position:0%
identifies x and y and you can see this
 

00:06:12.500 --> 00:06:15.860 align:start position:0%
identifies x and y and you can see this
this<00:06:13.500><c> attribute</c><00:06:13.710><c> SRC</c><00:06:14.670><c> that</c><00:06:15.360><c> is</c><00:06:15.510><c> a</c><00:06:15.540><c> reference</c>

00:06:15.860 --> 00:06:15.870 align:start position:0%
this attribute SRC that is a reference
 

00:06:15.870 --> 00:06:17.840 align:start position:0%
this attribute SRC that is a reference
to<00:06:16.200><c> the</c><00:06:16.530><c> actual</c><00:06:16.890><c> position</c><00:06:17.370><c> in</c><00:06:17.520><c> the</c><00:06:17.640><c> source</c>

00:06:17.840 --> 00:06:17.850 align:start position:0%
to the actual position in the source
 

00:06:17.850 --> 00:06:20.630 align:start position:0%
to the actual position in the source
code<00:06:18.090><c> where</c><00:06:18.420><c> this</c><00:06:18.680><c> this</c><00:06:19.680><c> piece</c><00:06:20.010><c> of</c><00:06:20.160><c> the</c><00:06:20.280><c> AST</c>

00:06:20.630 --> 00:06:20.640 align:start position:0%
code where this this piece of the AST
 

00:06:20.640 --> 00:06:24.200 align:start position:0%
code where this this piece of the AST
came<00:06:20.850><c> from</c><00:06:21.090><c> and</c><00:06:21.300><c> that</c><00:06:22.490><c> is</c><00:06:23.490><c> very</c><00:06:23.640><c> important</c><00:06:24.030><c> for</c>

00:06:24.200 --> 00:06:24.210 align:start position:0%
came from and that is very important for
 

00:06:24.210 --> 00:06:27.770 align:start position:0%
came from and that is very important for
further<00:06:24.480><c> bugger</c><00:06:24.810><c> because</c><00:06:25.680><c> at</c><00:06:26.610><c> any</c><00:06:27.330><c> point</c><00:06:27.600><c> in</c>

00:06:27.770 --> 00:06:27.780 align:start position:0%
further bugger because at any point in
 

00:06:27.780 --> 00:06:33.400 align:start position:0%
further bugger because at any point in
the<00:06:27.840><c> code</c><00:06:28.140><c> it</c><00:06:28.410><c> can</c><00:06:28.590><c> show</c><00:06:28.830><c> you</c><00:06:28.890><c> so</c><00:06:31.100><c> if</c><00:06:32.150><c> your</c>

00:06:33.400 --> 00:06:33.410 align:start position:0%
the code it can show you so if your
 

00:06:33.410 --> 00:06:36.110 align:start position:0%
the code it can show you so if your
debugger<00:06:34.410><c> transaction</c><00:06:34.980><c> then</c><00:06:35.130><c> you</c><00:06:35.280><c> can</c><00:06:35.490><c> at</c><00:06:36.030><c> any</c>

00:06:36.110 --> 00:06:36.120 align:start position:0%
debugger transaction then you can at any
 

00:06:36.120 --> 00:06:38.240 align:start position:0%
debugger transaction then you can at any
point<00:06:36.500><c> inside</c><00:06:37.500><c> the</c><00:06:37.650><c> execution</c><00:06:38.100><c> of</c><00:06:38.130><c> the</c>

00:06:38.240 --> 00:06:38.250 align:start position:0%
point inside the execution of the
 

00:06:38.250 --> 00:06:41.150 align:start position:0%
point inside the execution of the
transaction<00:06:38.670><c> you</c><00:06:38.760><c> know</c><00:06:39.050><c> where</c><00:06:40.050><c> that</c><00:06:40.470><c> was</c>

00:06:41.150 --> 00:06:41.160 align:start position:0%
transaction you know where that was
 

00:06:41.160 --> 00:06:42.830 align:start position:0%
transaction you know where that was
where<00:06:41.850><c> you</c><00:06:41.940><c> currently</c><00:06:42.060><c> are</c><00:06:42.270><c> in</c><00:06:42.390><c> the</c><00:06:42.630><c> source</c>

00:06:42.830 --> 00:06:42.840 align:start position:0%
where you currently are in the source
 

00:06:42.840 --> 00:06:47.210 align:start position:0%
where you currently are in the source
code<00:06:42.990><c> and</c><00:06:44.600><c> you</c><00:06:45.600><c> can</c><00:06:45.630><c> also</c><00:06:45.870><c> do</c><00:06:46.140><c> more</c><00:06:46.680><c> analysis</c>

00:06:47.210 --> 00:06:47.220 align:start position:0%
code and you can also do more analysis
 

00:06:47.220 --> 00:06:52.240 align:start position:0%
code and you can also do more analysis
on<00:06:47.490><c> the</c><00:06:47.640><c> ast</c><00:06:48.060><c> and</c><00:06:48.090><c> perhaps</c><00:06:48.810><c> so</c><00:06:49.320><c> perhaps</c>

00:06:52.240 --> 00:06:52.250 align:start position:0%
 
 

00:06:52.250 --> 00:06:55.980 align:start position:0%
 
analyze<00:06:53.250><c> the</c><00:06:53.400><c> AST</c><00:06:53.760><c> for</c><00:06:54.120><c> insecure</c><00:06:55.050><c> stuff</c>

00:06:55.980 --> 00:06:55.990 align:start position:0%
analyze the AST for insecure stuff
 

00:06:55.990 --> 00:06:58.380 align:start position:0%
analyze the AST for insecure stuff
and<00:06:56.100><c> notify</c><00:06:57.100><c> the</c><00:06:57.160><c> user</c><00:06:57.310><c> and</c><00:06:57.790><c> point</c><00:06:58.120><c> to</c><00:06:58.300><c> an</c>

00:06:58.380 --> 00:06:58.390 align:start position:0%
and notify the user and point to an
 

00:06:58.390 --> 00:07:00.630 align:start position:0%
and notify the user and point to an
exact<00:06:58.690><c> location</c><00:06:58.750><c> in</c><00:06:59.200><c> the</c><00:06:59.320><c> source</c><00:06:59.530><c> where</c><00:06:59.830><c> this</c>

00:07:00.630 --> 00:07:00.640 align:start position:0%
exact location in the source where this
 

00:07:00.640 --> 00:07:07.560 align:start position:0%
exact location in the source where this
problem<00:07:01.030><c> is</c><00:07:04.590><c> yeah</c><00:07:05.590><c> concerning</c><00:07:06.040><c> safety</c><00:07:06.570><c> we</c>

00:07:07.560 --> 00:07:07.570 align:start position:0%
problem is yeah concerning safety we
 

00:07:07.570 --> 00:07:09.360 align:start position:0%
problem is yeah concerning safety we
already<00:07:07.750><c> had</c><00:07:08.050><c> several</c><00:07:08.500><c> talks</c><00:07:08.830><c> about</c><00:07:09.070><c> formal</c>

00:07:09.360 --> 00:07:09.370 align:start position:0%
already had several talks about formal
 

00:07:09.370 --> 00:07:11.400 align:start position:0%
already had several talks about formal
verification<00:07:09.490><c> so</c><00:07:10.060><c> I</c><00:07:10.120><c> won't</c><00:07:10.780><c> say</c><00:07:11.230><c> anything</c>

00:07:11.400 --> 00:07:11.410 align:start position:0%
verification so I won't say anything
 

00:07:11.410 --> 00:07:16.380 align:start position:0%
verification so I won't say anything
about<00:07:11.560><c> that</c><00:07:12.270><c> with</c><00:07:13.270><c> the</c><00:07:14.580><c> 040</c><00:07:15.580><c> release</c><00:07:16.060><c> of</c>

00:07:16.380 --> 00:07:16.390 align:start position:0%
about that with the 040 release of
 

00:07:16.390 --> 00:07:19.440 align:start position:0%
about that with the 040 release of
solidity<00:07:16.750><c> we</c><00:07:17.110><c> added</c><00:07:17.380><c> some</c><00:07:18.180><c> changes</c><00:07:19.180><c> that</c>

00:07:19.440 --> 00:07:19.450 align:start position:0%
solidity we added some changes that
 

00:07:19.450 --> 00:07:21.180 align:start position:0%
solidity we added some changes that
intentionally<00:07:20.350><c> broke</c><00:07:20.680><c> backwards</c>

00:07:21.180 --> 00:07:21.190 align:start position:0%
intentionally broke backwards
 

00:07:21.190 --> 00:07:23.520 align:start position:0%
intentionally broke backwards
compatibility<00:07:21.850><c> in</c><00:07:22.120><c> order</c><00:07:22.450><c> to</c><00:07:22.630><c> add</c><00:07:22.990><c> some</c>

00:07:23.520 --> 00:07:23.530 align:start position:0%
compatibility in order to add some
 

00:07:23.530 --> 00:07:26.880 align:start position:0%
compatibility in order to add some
safety<00:07:23.920><c> features</c><00:07:24.430><c> and</c><00:07:25.560><c> some</c><00:07:26.560><c> of</c><00:07:26.680><c> them</c><00:07:26.860><c> were</c>

00:07:26.880 --> 00:07:26.890 align:start position:0%
safety features and some of them were
 

00:07:26.890 --> 00:07:32.910 align:start position:0%
safety features and some of them were
that<00:07:27.580><c> we</c><00:07:28.740><c> created</c><00:07:29.740><c> exceptions</c><00:07:30.780><c> for</c><00:07:31.780><c> in</c><00:07:32.290><c> more</c>

00:07:32.910 --> 00:07:32.920 align:start position:0%
that we created exceptions for in more
 

00:07:32.920 --> 00:07:35.970 align:start position:0%
that we created exceptions for in more
situations<00:07:33.190><c> than</c><00:07:33.730><c> before</c><00:07:33.880><c> and</c><00:07:34.620><c> the</c><00:07:35.620><c> effect</c><00:07:35.890><c> of</c>

00:07:35.970 --> 00:07:35.980 align:start position:0%
situations than before and the effect of
 

00:07:35.980 --> 00:07:40.050 align:start position:0%
situations than before and the effect of
an<00:07:36.100><c> exception</c><00:07:36.550><c> is</c><00:07:36.700><c> that</c><00:07:37.000><c> a</c><00:07:39.060><c> transactions</c>

00:07:40.050 --> 00:07:40.060 align:start position:0%
an exception is that a transactions
 

00:07:40.060 --> 00:07:43.260 align:start position:0%
an exception is that a transactions
rolled<00:07:40.360><c> back</c><00:07:40.630><c> or</c><00:07:40.840><c> at</c><00:07:40.960><c> least</c><00:07:41.140><c> a</c><00:07:41.880><c> call</c><00:07:42.880><c> inside</c>

00:07:43.260 --> 00:07:43.270 align:start position:0%
rolled back or at least a call inside
 

00:07:43.270 --> 00:07:46.470 align:start position:0%
rolled back or at least a call inside
the<00:07:43.450><c> transaction</c><00:07:43.990><c> so</c><00:07:45.060><c> whenever</c><00:07:46.060><c> you</c>

00:07:46.470 --> 00:07:46.480 align:start position:0%
the transaction so whenever you
 

00:07:46.480 --> 00:07:51.900 align:start position:0%
the transaction so whenever you
encounter<00:07:46.630><c> a</c><00:07:49.170><c> yeah</c><00:07:50.700><c> troublesome</c><00:07:51.700><c> situation</c>

00:07:51.900 --> 00:07:51.910 align:start position:0%
encounter a yeah troublesome situation
 

00:07:51.910 --> 00:07:54.840 align:start position:0%
encounter a yeah troublesome situation
or<00:07:52.630><c> some</c><00:07:52.960><c> situation</c><00:07:53.500><c> where</c><00:07:54.160><c> it's</c><00:07:54.280><c> not</c><00:07:54.460><c> really</c>

00:07:54.840 --> 00:07:54.850 align:start position:0%
or some situation where it's not really
 

00:07:54.850 --> 00:07:58.560 align:start position:0%
or some situation where it's not really
clear<00:07:55.180><c> what</c><00:07:55.360><c> to</c><00:07:55.780><c> do</c><00:07:55.930><c> how</c><00:07:56.320><c> to</c><00:07:56.350><c> deal</c><00:07:56.590><c> with</c><00:07:56.770><c> it</c><00:07:57.570><c> at</c>

00:07:58.560 --> 00:07:58.570 align:start position:0%
clear what to do how to deal with it at
 

00:07:58.570 --> 00:08:02.210 align:start position:0%
clear what to do how to deal with it at
least<00:07:59.140><c> not</c><00:07:59.350><c> for</c><00:07:59.830><c> the</c><00:07:59.950><c> compiler</c><00:08:00.310><c> then</c><00:08:01.210><c> this</c>

00:08:02.210 --> 00:08:02.220 align:start position:0%
least not for the compiler then this
 

00:08:02.220 --> 00:08:05.310 align:start position:0%
least not for the compiler then this
basically<00:08:03.220><c> undo</c><00:08:04.180><c> the</c><00:08:04.660><c> effect</c><00:08:05.020><c> of</c><00:08:05.170><c> the</c>

00:08:05.310 --> 00:08:05.320 align:start position:0%
basically undo the effect of the
 

00:08:05.320 --> 00:08:07.200 align:start position:0%
basically undo the effect of the
transaction<00:08:05.860><c> this</c><00:08:06.370><c> is</c><00:08:06.550><c> this</c><00:08:06.790><c> can</c><00:08:07.180><c> be</c>

00:08:07.200 --> 00:08:07.210 align:start position:0%
transaction this is this can be
 

00:08:07.210 --> 00:08:09.840 align:start position:0%
transaction this is this can be
dangerous<00:08:07.510><c> in</c><00:08:07.900><c> some</c><00:08:08.110><c> situations</c><00:08:08.740><c> it's</c><00:08:09.340><c> so</c>

00:08:09.840 --> 00:08:09.850 align:start position:0%
dangerous in some situations it's so
 

00:08:09.850 --> 00:08:13.470 align:start position:0%
dangerous in some situations it's so
especially<00:08:10.660><c> when</c><00:08:11.110><c> you</c><00:08:11.320><c> for</c><00:08:12.250><c> example</c><00:08:12.450><c> have</c><00:08:13.450><c> a</c>

00:08:13.470 --> 00:08:13.480 align:start position:0%
especially when you for example have a
 

00:08:13.480 --> 00:08:16.980 align:start position:0%
especially when you for example have a
loop<00:08:13.780><c> and</c><00:08:14.080><c> one</c><00:08:15.010><c> of</c><00:08:15.160><c> the</c><00:08:15.460><c> eight</c><00:08:16.210><c> arrests</c><00:08:16.630><c> inside</c>

00:08:16.980 --> 00:08:16.990 align:start position:0%
loop and one of the eight arrests inside
 

00:08:16.990 --> 00:08:18.720 align:start position:0%
loop and one of the eight arrests inside
the<00:08:17.140><c> loop</c><00:08:17.290><c> always</c><00:08:17.890><c> triggers</c><00:08:18.190><c> an</c><00:08:18.310><c> exception</c>

00:08:18.720 --> 00:08:18.730 align:start position:0%
the loop always triggers an exception
 

00:08:18.730 --> 00:08:20.310 align:start position:0%
the loop always triggers an exception
then<00:08:18.880><c> it's</c><00:08:19.000><c> impossible</c><00:08:19.660><c> for</c><00:08:19.690><c> the</c><00:08:19.900><c> loop</c><00:08:20.020><c> to</c><00:08:20.200><c> go</c>

00:08:20.310 --> 00:08:20.320 align:start position:0%
then it's impossible for the loop to go
 

00:08:20.320 --> 00:08:22.350 align:start position:0%
then it's impossible for the loop to go
through<00:08:20.560><c> so</c><00:08:20.740><c> this</c><00:08:21.130><c> is</c><00:08:21.280><c> something</c><00:08:21.460><c> to</c><00:08:21.730><c> be</c><00:08:22.270><c> aware</c>

00:08:22.350 --> 00:08:22.360 align:start position:0%
through so this is something to be aware
 

00:08:22.360 --> 00:08:27.300 align:start position:0%
through so this is something to be aware
of<00:08:22.540><c> but</c><00:08:23.530><c> we</c><00:08:24.100><c> chose</c><00:08:24.400><c> to</c><00:08:24.430><c> rather</c><00:08:26.160><c> revert</c><00:08:27.160><c> the</c>

00:08:27.300 --> 00:08:27.310 align:start position:0%
of but we chose to rather revert the
 

00:08:27.310 --> 00:08:29.780 align:start position:0%
of but we chose to rather revert the
transaction<00:08:27.820><c> than</c><00:08:28.060><c> so</c><00:08:28.810><c> yeah</c><00:08:29.200><c> we</c><00:08:29.320><c> chose</c><00:08:29.530><c> to</c>

00:08:29.780 --> 00:08:29.790 align:start position:0%
transaction than so yeah we chose to
 

00:08:29.790 --> 00:08:33.780 align:start position:0%
transaction than so yeah we chose to
reverting<00:08:30.790><c> a</c><00:08:30.850><c> transaction</c><00:08:31.420><c> is</c><00:08:32.580><c> less</c><00:08:33.580><c> of</c><00:08:33.730><c> a</c>

00:08:33.780 --> 00:08:33.790 align:start position:0%
reverting a transaction is less of a
 

00:08:33.790 --> 00:08:37.940 align:start position:0%
reverting a transaction is less of a
problem<00:08:33.970><c> than</c><00:08:34.210><c> getting</c><00:08:34.780><c> stuck</c><00:08:34.960><c> and</c><00:08:36.090><c> so</c><00:08:37.090><c> yeah</c>

00:08:37.940 --> 00:08:37.950 align:start position:0%
problem than getting stuck and so yeah
 

00:08:37.950 --> 00:08:40.710 align:start position:0%
problem than getting stuck and so yeah
failed<00:08:38.950><c> creations</c><00:08:39.520><c> now</c><00:08:40.180><c> throw</c><00:08:40.510><c> an</c><00:08:40.600><c> exception</c>

00:08:40.710 --> 00:08:40.720 align:start position:0%
failed creations now throw an exception
 

00:08:40.720 --> 00:08:43.940 align:start position:0%
failed creations now throw an exception
division<00:08:41.530><c> by</c><00:08:41.650><c> zero</c><00:08:41.890><c> throws</c><00:08:42.160><c> an</c><00:08:42.280><c> exception</c><00:08:42.370><c> and</c>

00:08:43.940 --> 00:08:43.950 align:start position:0%
division by zero throws an exception and
 

00:08:43.950 --> 00:08:46.830 align:start position:0%
division by zero throws an exception and
yeah<00:08:44.950><c> function</c><00:08:45.520><c> calls</c><00:08:45.760><c> to</c><00:08:46.000><c> a</c><00:08:46.030><c> non-contract</c>

00:08:46.830 --> 00:08:46.840 align:start position:0%
yeah function calls to a non-contract
 

00:08:46.840 --> 00:08:50.600 align:start position:0%
yeah function calls to a non-contract
this<00:08:46.990><c> function</c><00:08:47.440><c> calls</c><00:08:47.650><c> to</c><00:08:47.800><c> a</c><00:08:47.830><c> non-contract</c><00:08:48.370><c> is</c>

00:08:50.600 --> 00:08:50.610 align:start position:0%
 
 

00:08:50.610 --> 00:08:53.520 align:start position:0%
 
especially<00:08:51.610><c> important</c><00:08:52.060><c> because</c><00:08:52.120><c> if</c><00:08:52.600><c> if</c><00:08:53.050><c> you</c>

00:08:53.520 --> 00:08:53.530 align:start position:0%
especially important because if if you
 

00:08:53.530 --> 00:08:59.250 align:start position:0%
especially important because if if you
call<00:08:53.710><c> a</c><00:08:53.740><c> non-contract</c><00:08:54.990><c> it</c><00:08:55.990><c> will</c><00:08:56.350><c> basically</c><00:08:58.260><c> if</c>

00:08:59.250 --> 00:08:59.260 align:start position:0%
call a non-contract it will basically if
 

00:08:59.260 --> 00:09:01.290 align:start position:0%
call a non-contract it will basically if
you<00:08:59.740><c> send</c><00:08:59.950><c> other</c><00:09:00.130><c> together</c><00:09:00.790><c> with</c><00:09:00.970><c> it</c><00:09:01.090><c> it</c><00:09:01.210><c> will</c>

00:09:01.290 --> 00:09:01.300 align:start position:0%
you send other together with it it will
 

00:09:01.300 --> 00:09:03.210 align:start position:0%
you send other together with it it will
just<00:09:01.480><c> accept</c><00:09:01.750><c> it</c><00:09:01.930><c> and</c><00:09:02.050><c> it</c><00:09:02.290><c> might</c><00:09:02.800><c> be</c><00:09:02.830><c> forever</c>

00:09:03.210 --> 00:09:03.220 align:start position:0%
just accept it and it might be forever
 

00:09:03.220 --> 00:09:06.060 align:start position:0%
just accept it and it might be forever
stuck<00:09:03.310><c> there</c><00:09:03.730><c> and</c><00:09:04.200><c> then</c><00:09:05.200><c> we</c><00:09:05.320><c> have</c><00:09:05.590><c> the</c><00:09:05.860><c> the</c>

00:09:06.060 --> 00:09:06.070 align:start position:0%
stuck there and then we have the the
 

00:09:06.070 --> 00:09:07.740 align:start position:0%
stuck there and then we have the the
payable<00:09:06.430><c> modifier</c><00:09:06.820><c> so</c><00:09:07.090><c> you</c><00:09:07.150><c> now</c><00:09:07.450><c> have</c><00:09:07.480><c> to</c>

00:09:07.740 --> 00:09:07.750 align:start position:0%
payable modifier so you now have to
 

00:09:07.750 --> 00:09:09.810 align:start position:0%
payable modifier so you now have to
explicitly<00:09:08.640><c> specify</c>

00:09:09.810 --> 00:09:09.820 align:start position:0%
explicitly specify
 

00:09:09.820 --> 00:09:11.490 align:start position:0%
explicitly specify
for<00:09:09.940><c> every</c><00:09:10.180><c> function</c><00:09:10.600><c> whether</c><00:09:10.840><c> it</c><00:09:11.080><c> is</c><00:09:11.200><c> allowed</c>

00:09:11.490 --> 00:09:11.500 align:start position:0%
for every function whether it is allowed
 

00:09:11.500 --> 00:09:14.370 align:start position:0%
for every function whether it is allowed
to<00:09:11.710><c> receive</c><00:09:11.860><c> other</c><00:09:12.250><c> and</c><00:09:12.580><c> the</c><00:09:13.330><c> default</c><00:09:13.750><c> is</c><00:09:13.990><c> to</c>

00:09:14.370 --> 00:09:14.380 align:start position:0%
to receive other and the default is to
 

00:09:14.380 --> 00:09:18.360 align:start position:0%
to receive other and the default is to
reject<00:09:14.920><c> other</c><00:09:15.370><c> so</c><00:09:16.800><c> it's</c><00:09:17.800><c> harder</c><00:09:18.340><c> to</c>

00:09:18.360 --> 00:09:18.370 align:start position:0%
reject other so it's harder to
 

00:09:18.370 --> 00:09:23.570 align:start position:0%
reject other so it's harder to
accidentally<00:09:19.360><c> send</c><00:09:20.520><c> send</c><00:09:21.520><c> fun</c><00:09:21.730><c> somewhere</c><00:09:21.970><c> and</c>

00:09:23.570 --> 00:09:23.580 align:start position:0%
accidentally send send fun somewhere and
 

00:09:23.580 --> 00:09:26.760 align:start position:0%
accidentally send send fun somewhere and
to<00:09:24.580><c> make</c><00:09:24.730><c> the</c><00:09:24.910><c> the</c><00:09:25.420><c> version</c><00:09:25.840><c> transition</c><00:09:26.230><c> safer</c>

00:09:26.760 --> 00:09:26.770 align:start position:0%
to make the the version transition safer
 

00:09:26.770 --> 00:09:29.790 align:start position:0%
to make the the version transition safer
we<00:09:27.190><c> also</c><00:09:27.340><c> added</c><00:09:27.580><c> the</c><00:09:27.760><c> version</c><00:09:28.060><c> pragma</c><00:09:28.800><c> which</c>

00:09:29.790 --> 00:09:29.800 align:start position:0%
we also added the version pragma which
 

00:09:29.800 --> 00:09:32.040 align:start position:0%
we also added the version pragma which
means<00:09:30.070><c> you</c><00:09:30.190><c> can</c><00:09:30.340><c> now</c><00:09:30.460><c> specify</c><00:09:30.790><c> the</c><00:09:31.660><c> compiler</c>

00:09:32.040 --> 00:09:32.050 align:start position:0%
means you can now specify the compiler
 

00:09:32.050 --> 00:09:35.220 align:start position:0%
means you can now specify the compiler
version<00:09:32.170><c> your</c><00:09:33.040><c> source</c><00:09:33.700><c> code</c><00:09:33.850><c> is</c><00:09:34.240><c> designed</c><00:09:35.020><c> to</c>

00:09:35.220 --> 00:09:35.230 align:start position:0%
version your source code is designed to
 

00:09:35.230 --> 00:09:39.030 align:start position:0%
version your source code is designed to
work<00:09:35.260><c> with</c><00:09:35.620><c> and</c><00:09:35.890><c> if</c><00:09:36.790><c> we</c><00:09:37.390><c> if</c><00:09:38.290><c> we</c><00:09:38.470><c> change</c><00:09:38.830><c> the</c>

00:09:39.030 --> 00:09:39.040 align:start position:0%
work with and if we if we change the
 

00:09:39.040 --> 00:09:40.440 align:start position:0%
work with and if we if we change the
compiler<00:09:39.370><c> if</c><00:09:39.580><c> we</c><00:09:39.670><c> change</c><00:09:39.880><c> the</c><00:09:40.000><c> language</c><00:09:40.150><c> in</c>

00:09:40.440 --> 00:09:40.450 align:start position:0%
compiler if we change the language in
 

00:09:40.450 --> 00:09:43.220 align:start position:0%
compiler if we change the language in
the<00:09:40.540><c> future</c><00:09:40.900><c> then</c><00:09:41.410><c> this</c><00:09:41.650><c> version</c><00:09:42.220><c> pragma</c><00:09:42.640><c> will</c>

00:09:43.220 --> 00:09:43.230 align:start position:0%
the future then this version pragma will
 

00:09:43.230 --> 00:09:45.660 align:start position:0%
the future then this version pragma will
tell<00:09:44.230><c> the</c><00:09:44.380><c> developer</c><00:09:44.860><c> yeah</c><00:09:45.160><c> there</c><00:09:45.490><c> might</c><00:09:45.610><c> be</c>

00:09:45.660 --> 00:09:45.670 align:start position:0%
tell the developer yeah there might be
 

00:09:45.670 --> 00:09:48.150 align:start position:0%
tell the developer yeah there might be
some<00:09:45.940><c> changes</c><00:09:46.330><c> so</c><00:09:46.630><c> you</c><00:09:47.170><c> probably</c><00:09:47.860><c> have</c><00:09:48.100><c> to</c>

00:09:48.150 --> 00:09:48.160 align:start position:0%
some changes so you probably have to
 

00:09:48.160 --> 00:09:49.250 align:start position:0%
some changes so you probably have to
take<00:09:48.370><c> a</c><00:09:48.400><c> look</c><00:09:48.580><c> at</c><00:09:48.670><c> the</c><00:09:48.730><c> source</c><00:09:48.940><c> code</c><00:09:49.030><c> and</c>

00:09:49.250 --> 00:09:49.260 align:start position:0%
take a look at the source code and
 

00:09:49.260 --> 00:09:54.870 align:start position:0%
take a look at the source code and
modified<00:09:50.260><c> accordingly</c><00:09:50.710><c> and</c><00:09:51.960><c> then</c><00:09:52.960><c> some</c><00:09:53.880><c> we</c>

00:09:54.870 --> 00:09:54.880 align:start position:0%
modified accordingly and then some we
 

00:09:54.880 --> 00:09:59.790 align:start position:0%
modified accordingly and then some we
also<00:09:55.000><c> fix</c><00:09:55.510><c> the</c><00:09:55.660><c> problem</c><00:09:56.110><c> with</c><00:09:56.230><c> modifiers</c><00:09:58.800><c> so</c>

00:09:59.790 --> 00:09:59.800 align:start position:0%
also fix the problem with modifiers so
 

00:09:59.800 --> 00:10:02.880 align:start position:0%
also fix the problem with modifiers so
modifiers<00:10:00.370><c> are</c><00:10:00.990><c> kind</c><00:10:01.990><c> of</c><00:10:02.050><c> properties</c><00:10:02.740><c> you</c><00:10:02.860><c> can</c>

00:10:02.880 --> 00:10:02.890 align:start position:0%
modifiers are kind of properties you can
 

00:10:02.890 --> 00:10:04.620 align:start position:0%
modifiers are kind of properties you can
attach<00:10:03.250><c> two</c><00:10:03.490><c> functions</c><00:10:03.910><c> which</c><00:10:04.180><c> insert</c><00:10:04.600><c> a</c>

00:10:04.620 --> 00:10:04.630 align:start position:0%
attach two functions which insert a
 

00:10:04.630 --> 00:10:07.860 align:start position:0%
attach two functions which insert a
prefix<00:10:05.200><c> and</c><00:10:05.470><c> suffix</c><00:10:06.210><c> into</c><00:10:07.210><c> the</c><00:10:07.330><c> function</c><00:10:07.510><c> and</c>

00:10:07.860 --> 00:10:07.870 align:start position:0%
prefix and suffix into the function and
 

00:10:07.870 --> 00:10:11.460 align:start position:0%
prefix and suffix into the function and
this<00:10:08.590><c> underscore</c><00:10:09.430><c> part</c><00:10:09.850><c> there</c><00:10:10.420><c> is</c><00:10:10.720><c> where</c><00:10:11.320><c> the</c>

00:10:11.460 --> 00:10:11.470 align:start position:0%
this underscore part there is where the
 

00:10:11.470 --> 00:10:13.280 align:start position:0%
this underscore part there is where the
actual<00:10:11.770><c> function</c><00:10:12.130><c> is</c><00:10:12.220><c> inserted</c><00:10:12.670><c> and</c>

00:10:13.280 --> 00:10:13.290 align:start position:0%
actual function is inserted and
 

00:10:13.290 --> 00:10:16.350 align:start position:0%
actual function is inserted and
previously<00:10:14.290><c> if</c><00:10:14.620><c> we</c><00:10:14.740><c> hadn't</c><00:10:15.070><c> previously</c><00:10:16.030><c> it</c>

00:10:16.350 --> 00:10:16.360 align:start position:0%
previously if we hadn't previously it
 

00:10:16.360 --> 00:10:19.470 align:start position:0%
previously if we hadn't previously it
was<00:10:16.450><c> more</c><00:10:16.870><c> syntax</c><00:10:17.650><c> based</c><00:10:17.920><c> which</c><00:10:18.670><c> means</c><00:10:18.940><c> if</c><00:10:19.180><c> the</c>

00:10:19.470 --> 00:10:19.480 align:start position:0%
was more syntax based which means if the
 

00:10:19.480 --> 00:10:22.760 align:start position:0%
was more syntax based which means if the
function<00:10:19.780><c> had</c><00:10:20.050><c> a</c><00:10:20.080><c> return</c><00:10:20.530><c> it</c><00:10:20.890><c> actually</c>

00:10:22.760 --> 00:10:22.770 align:start position:0%
function had a return it actually
 

00:10:22.770 --> 00:10:25.680 align:start position:0%
function had a return it actually
returned<00:10:23.770><c> and</c><00:10:24.130><c> in</c><00:10:24.580><c> the</c><00:10:24.940><c> sense</c><00:10:25.180><c> that</c><00:10:25.300><c> it</c><00:10:25.540><c> also</c>

00:10:25.680 --> 00:10:25.690 align:start position:0%
returned and in the sense that it also
 

00:10:25.690 --> 00:10:28.080 align:start position:0%
returned and in the sense that it also
skipped<00:10:26.170><c> the</c><00:10:26.710><c> trailing</c><00:10:27.370><c> partea</c><00:10:27.760><c> so</c><00:10:27.940><c> this</c>

00:10:28.080 --> 00:10:28.090 align:start position:0%
skipped the trailing partea so this
 

00:10:28.090 --> 00:10:30.630 align:start position:0%
skipped the trailing partea so this
locked<00:10:28.420><c> equals</c><00:10:28.870><c> false</c><00:10:29.370><c> would</c><00:10:30.370><c> have</c><00:10:30.460><c> been</c>

00:10:30.630 --> 00:10:30.640 align:start position:0%
locked equals false would have been
 

00:10:30.640 --> 00:10:32.460 align:start position:0%
locked equals false would have been
skipped<00:10:30.940><c> before</c><00:10:31.120><c> with</c><00:10:31.720><c> a</c><00:10:31.750><c> return</c><00:10:32.110><c> but</c><00:10:32.380><c> it</c>

00:10:32.460 --> 00:10:32.470 align:start position:0%
skipped before with a return but it
 

00:10:32.470 --> 00:10:34.430 align:start position:0%
skipped before with a return but it
would<00:10:32.590><c> not</c><00:10:32.740><c> have</c><00:10:32.920><c> been</c><00:10:32.950><c> skipped</c><00:10:33.400><c> if</c><00:10:33.520><c> you</c><00:10:33.610><c> just</c>

00:10:34.430 --> 00:10:34.440 align:start position:0%
would not have been skipped if you just
 

00:10:34.440 --> 00:10:37.880 align:start position:0%
would not have been skipped if you just
completed<00:10:35.440><c> the</c><00:10:35.590><c> function</c><00:10:36.040><c> and</c><00:10:36.390><c> this</c><00:10:37.390><c> now</c>

00:10:37.880 --> 00:10:37.890 align:start position:0%
completed the function and this now
 

00:10:37.890 --> 00:10:41.120 align:start position:0%
completed the function and this now
hopefully<00:10:38.890><c> makes</c><00:10:39.100><c> it</c><00:10:39.280><c> possible</c><00:10:39.460><c> to</c><00:10:39.810><c> create</c>

00:10:41.120 --> 00:10:41.130 align:start position:0%
hopefully makes it possible to create
 

00:10:41.130 --> 00:10:46.530 align:start position:0%
hopefully makes it possible to create
mutexes<00:10:42.810><c> which</c><00:10:44.190><c> allow</c><00:10:45.190><c> a</c><00:10:45.220><c> function</c><00:10:45.790><c> to</c><00:10:46.510><c> be</c>

00:10:46.530 --> 00:10:46.540 align:start position:0%
mutexes which allow a function to be
 

00:10:46.540 --> 00:10:50.810 align:start position:0%
mutexes which allow a function to be
active<00:10:46.990><c> only</c><00:10:47.380><c> once</c><00:10:47.620><c> in</c><00:10:47.890><c> that</c><00:10:48.850><c> there</c><00:10:49.210><c> is</c><00:10:49.240><c> a</c>

00:10:50.810 --> 00:10:50.820 align:start position:0%
active only once in that there is a
 

00:10:50.820 --> 00:10:53.580 align:start position:0%
active only once in that there is a
variable<00:10:51.820><c> and</c><00:10:52.000><c> storage</c><00:10:52.420><c> called</c><00:10:53.110><c> locked</c><00:10:53.410><c> in</c>

00:10:53.580 --> 00:10:53.590 align:start position:0%
variable and storage called locked in
 

00:10:53.590 --> 00:10:55.680 align:start position:0%
variable and storage called locked in
this<00:10:53.710><c> example</c><00:10:54.100><c> and</c><00:10:54.430><c> if</c><00:10:55.090><c> the</c><00:10:55.240><c> function</c><00:10:55.390><c> is</c>

00:10:55.680 --> 00:10:55.690 align:start position:0%
this example and if the function is
 

00:10:55.690 --> 00:10:57.690 align:start position:0%
this example and if the function is
active<00:10:56.410><c> its</c><00:10:56.620><c> set</c><00:10:56.800><c> it</c><00:10:56.920><c> true</c><00:10:57.130><c> and</c><00:10:57.370><c> it's</c>

00:10:57.690 --> 00:10:57.700 align:start position:0%
active its set it true and it's
 

00:10:57.700 --> 00:10:59.880 align:start position:0%
active its set it true and it's
automatically<00:10:58.450><c> set</c><00:10:58.870><c> to</c><00:10:58.900><c> falls</c><00:10:59.290><c> again</c><00:10:59.650><c> if</c><00:10:59.800><c> the</c>

00:10:59.880 --> 00:10:59.890 align:start position:0%
automatically set to falls again if the
 

00:10:59.890 --> 00:11:05.460 align:start position:0%
automatically set to falls again if the
function<00:11:00.070><c> exits</c><00:11:00.550><c> and</c><00:11:00.780><c> if</c><00:11:02.550><c> if</c><00:11:03.810><c> the</c><00:11:04.810><c> function</c><00:11:05.260><c> is</c>

00:11:05.460 --> 00:11:05.470 align:start position:0%
function exits and if if the function is
 

00:11:05.470 --> 00:11:07.410 align:start position:0%
function exits and if if the function is
locked<00:11:05.740><c> then</c><00:11:06.040><c> you</c><00:11:06.460><c> cannot</c><00:11:06.730><c> call</c><00:11:06.910><c> it</c><00:11:07.090><c> so</c><00:11:07.240><c> this</c>

00:11:07.410 --> 00:11:07.420 align:start position:0%
locked then you cannot call it so this
 

00:11:07.420 --> 00:11:13.100 align:start position:0%
locked then you cannot call it so this
yeah<00:11:10.860><c> right</c>

00:11:13.100 --> 00:11:13.110 align:start position:0%
yeah right
 

00:11:13.110 --> 00:11:15.920 align:start position:0%
yeah right
okay<00:11:14.040><c> how</c><00:11:14.160><c> does</c><00:11:14.220><c> the</c><00:11:14.370><c> future</c><00:11:14.490><c> look</c><00:11:14.930><c> again</c>

00:11:15.920 --> 00:11:15.930 align:start position:0%
okay how does the future look again
 

00:11:15.930 --> 00:11:20.449 align:start position:0%
okay how does the future look again
formal<00:11:16.260><c> verification</c><00:11:17.810><c> then</c><00:11:18.810><c> one</c><00:11:19.410><c> important</c><00:11:20.339><c> a</c>

00:11:20.449 --> 00:11:20.459 align:start position:0%
formal verification then one important a
 

00:11:20.459 --> 00:11:24.319 align:start position:0%
formal verification then one important a
large<00:11:20.670><c> feature</c><00:11:20.940><c> we</c><00:11:21.420><c> will</c><00:11:21.570><c> add</c><00:11:21.720><c> is</c><00:11:23.269><c> something</c><00:11:24.269><c> i</c>

00:11:24.319 --> 00:11:24.329 align:start position:0%
large feature we will add is something i
 

00:11:24.329 --> 00:11:26.569 align:start position:0%
large feature we will add is something i
call<00:11:24.510><c> authenticated</c><00:11:25.350><c> sources</c><00:11:25.890><c> and</c><00:11:26.040><c> binaries</c>

00:11:26.569 --> 00:11:26.579 align:start position:0%
call authenticated sources and binaries
 

00:11:26.579 --> 00:11:29.900 align:start position:0%
call authenticated sources and binaries
this<00:11:27.480><c> means</c><00:11:27.779><c> that</c><00:11:27.950><c> we</c><00:11:28.950><c> that</c><00:11:29.399><c> the</c><00:11:29.550><c> compiler</c>

00:11:29.900 --> 00:11:29.910 align:start position:0%
this means that we that the compiler
 

00:11:29.910 --> 00:11:33.410 align:start position:0%
this means that we that the compiler
will<00:11:30.149><c> automatically</c><00:11:30.899><c> insert</c><00:11:31.470><c> a</c><00:11:31.709><c> hash</c><00:11:32.579><c> of</c><00:11:32.880><c> the</c>

00:11:33.410 --> 00:11:33.420 align:start position:0%
will automatically insert a hash of the
 

00:11:33.420 --> 00:11:38.870 align:start position:0%
will automatically insert a hash of the
metadata<00:11:33.990><c> into</c><00:11:34.380><c> the</c><00:11:34.709><c> bytecode</c><00:11:35.810><c> and</c><00:11:37.880><c> using</c>

00:11:38.870 --> 00:11:38.880 align:start position:0%
metadata into the bytecode and using
 

00:11:38.880 --> 00:11:40.819 align:start position:0%
metadata into the bytecode and using
this<00:11:39.000><c> hash</c><00:11:39.269><c> you</c><00:11:39.510><c> can</c><00:11:39.690><c> retrieve</c><00:11:40.140><c> the</c><00:11:40.440><c> metadata</c>

00:11:40.819 --> 00:11:40.829 align:start position:0%
this hash you can retrieve the metadata
 

00:11:40.829 --> 00:11:47.389 align:start position:0%
this hash you can retrieve the metadata
from<00:11:41.070><c> swarm</c><00:11:43.250><c> that</c><00:11:44.250><c> means</c><00:11:44.610><c> that</c><00:11:46.190><c> so</c><00:11:47.190><c> the</c>

00:11:47.389 --> 00:11:47.399 align:start position:0%
from swarm that means that so the
 

00:11:47.399 --> 00:11:49.100 align:start position:0%
from swarm that means that so the
metadata<00:11:47.730><c> will</c><00:11:48.060><c> contain</c><00:11:48.480><c> a</c><00:11:48.720><c> lot</c><00:11:48.930><c> of</c>

00:11:49.100 --> 00:11:49.110 align:start position:0%
metadata will contain a lot of
 

00:11:49.110 --> 00:11:52.130 align:start position:0%
metadata will contain a lot of
information<00:11:49.680><c> about</c><00:11:49.769><c> the</c><00:11:50.070><c> contract</c><00:11:51.140><c> this</c>

00:11:52.130 --> 00:11:52.140 align:start position:0%
information about the contract this
 

00:11:52.140 --> 00:11:54.980 align:start position:0%
information about the contract this
includes<00:11:52.529><c> the</c><00:11:52.680><c> ABI</c><00:11:52.950><c> interface</c><00:11:53.519><c> and</c><00:11:53.990><c> the</c>

00:11:54.980 --> 00:11:54.990 align:start position:0%
includes the ABI interface and the
 

00:11:54.990 --> 00:11:58.550 align:start position:0%
includes the ABI interface and the
effect<00:11:55.829><c> of</c><00:11:55.950><c> that</c><00:11:56.010><c> is</c><00:11:56.160><c> if</c><00:11:56.760><c> you</c><00:11:57.180><c> load</c><00:11:57.750><c> up</c><00:11:57.959><c> a</c><00:11:58.140><c> smart</c>

00:11:58.550 --> 00:11:58.560 align:start position:0%
effect of that is if you load up a smart
 

00:11:58.560 --> 00:12:00.290 align:start position:0%
effect of that is if you load up a smart
contract<00:11:58.950><c> inside</c><00:11:59.279><c> mist</c><00:11:59.550><c> and</c><00:11:59.790><c> want</c><00:12:00.209><c> to</c>

00:12:00.290 --> 00:12:00.300 align:start position:0%
contract inside mist and want to
 

00:12:00.300 --> 00:12:02.660 align:start position:0%
contract inside mist and want to
interact<00:12:00.510><c> with</c><00:12:00.839><c> it</c><00:12:00.959><c> you</c><00:12:01.440><c> do</c><00:12:01.589><c> not</c><00:12:01.620><c> have</c><00:12:01.980><c> to</c><00:12:02.250><c> copy</c>

00:12:02.660 --> 00:12:02.670 align:start position:0%
interact with it you do not have to copy
 

00:12:02.670 --> 00:12:04.370 align:start position:0%
interact with it you do not have to copy
and<00:12:02.910><c> paste</c><00:12:03.120><c> the</c><00:12:03.329><c> ABI</c><00:12:03.600><c> anymore</c><00:12:04.110><c> it</c><00:12:04.260><c> will</c>

00:12:04.370 --> 00:12:04.380 align:start position:0%
and paste the ABI anymore it will
 

00:12:04.380 --> 00:12:05.930 align:start position:0%
and paste the ABI anymore it will
automatically<00:12:04.829><c> retrieve</c><00:12:05.190><c> it</c><00:12:05.310><c> from</c><00:12:05.430><c> swarm</c><00:12:05.760><c> and</c>

00:12:05.930 --> 00:12:05.940 align:start position:0%
automatically retrieve it from swarm and
 

00:12:05.940 --> 00:12:08.199 align:start position:0%
automatically retrieve it from swarm and
it's<00:12:06.540><c> also</c><00:12:06.720><c> authenticated</c><00:12:07.620><c> in</c><00:12:07.680><c> the</c><00:12:07.740><c> way</c><00:12:07.890><c> that</c>

00:12:08.199 --> 00:12:08.209 align:start position:0%
it's also authenticated in the way that
 

00:12:08.209 --> 00:12:11.660 align:start position:0%
it's also authenticated in the way that
that<00:12:09.209><c> is</c><00:12:09.360><c> the</c><00:12:09.510><c> ABI</c><00:12:09.810><c> the</c><00:12:10.649><c> programmer</c><00:12:11.190><c> intended</c>

00:12:11.660 --> 00:12:11.670 align:start position:0%
that is the ABI the programmer intended
 

00:12:11.670 --> 00:12:13.220 align:start position:0%
that is the ABI the programmer intended
to<00:12:11.760><c> prove</c><00:12:11.940><c> the</c><00:12:12.269><c> smart</c><00:12:12.540><c> contract</c><00:12:12.839><c> you</c><00:12:12.930><c> have</c><00:12:12.959><c> so</c>

00:12:13.220 --> 00:12:13.230 align:start position:0%
to prove the smart contract you have so
 

00:12:13.230 --> 00:12:16.030 align:start position:0%
to prove the smart contract you have so
you<00:12:13.320><c> can't</c><00:12:13.589><c> make</c><00:12:13.769><c> any</c><00:12:13.950><c> copy</c><00:12:14.490><c> paste</c><00:12:14.760><c> arrows</c><00:12:15.600><c> and</c>

00:12:16.030 --> 00:12:16.040 align:start position:0%
you can't make any copy paste arrows and
 

00:12:16.040 --> 00:12:19.220 align:start position:0%
you can't make any copy paste arrows and
it<00:12:17.040><c> will</c><00:12:17.190><c> also</c><00:12:17.550><c> have</c><00:12:17.730><c> a</c><00:12:17.970><c> link</c><00:12:18.540><c> to</c><00:12:18.870><c> the</c><00:12:18.990><c> source</c>

00:12:19.220 --> 00:12:19.230 align:start position:0%
it will also have a link to the source
 

00:12:19.230 --> 00:12:21.650 align:start position:0%
it will also have a link to the source
code<00:12:19.560><c> and</c><00:12:19.800><c> link</c><00:12:20.550><c> in</c><00:12:20.699><c> the</c><00:12:20.790><c> sense</c><00:12:21.000><c> of</c><00:12:21.180><c> link</c><00:12:21.480><c> to</c>

00:12:21.650 --> 00:12:21.660 align:start position:0%
code and link in the sense of link to
 

00:12:21.660 --> 00:12:23.480 align:start position:0%
code and link in the sense of link to
swarm<00:12:22.050><c> of</c><00:12:22.230><c> course</c><00:12:22.589><c> which</c><00:12:22.890><c> means</c><00:12:23.130><c> that</c><00:12:23.220><c> it's</c>

00:12:23.480 --> 00:12:23.490 align:start position:0%
swarm of course which means that it's
 

00:12:23.490 --> 00:12:25.100 align:start position:0%
swarm of course which means that it's
it's<00:12:23.790><c> the</c><00:12:24.510><c> source</c><00:12:24.690><c> code</c><00:12:24.839><c> is</c><00:12:24.959><c> hash</c>

00:12:25.100 --> 00:12:25.110 align:start position:0%
it's the source code is hash
 

00:12:25.110 --> 00:12:28.310 align:start position:0%
it's the source code is hash
authenticated<00:12:25.890><c> and</c><00:12:26.040><c> this</c><00:12:26.630><c> hash</c><00:12:27.630><c> is</c><00:12:27.899><c> part</c><00:12:28.199><c> of</c>

00:12:28.310 --> 00:12:28.320 align:start position:0%
authenticated and this hash is part of
 

00:12:28.320 --> 00:12:30.889 align:start position:0%
authenticated and this hash is part of
the<00:12:28.470><c> bytecode</c><00:12:28.649><c> so</c><00:12:29.610><c> it's</c><00:12:30.000><c> the</c><00:12:30.269><c> exact</c><00:12:30.630><c> source</c>

00:12:30.889 --> 00:12:30.899 align:start position:0%
the bytecode so it's the exact source
 

00:12:30.899 --> 00:12:33.350 align:start position:0%
the bytecode so it's the exact source
code<00:12:31.170><c> of</c><00:12:31.410><c> the</c><00:12:31.470><c> the</c><00:12:32.010><c> programmer</c><00:12:32.399><c> used</c><00:12:33.060><c> when</c>

00:12:33.350 --> 00:12:33.360 align:start position:0%
code of the the programmer used when
 

00:12:33.360 --> 00:12:36.079 align:start position:0%
code of the the programmer used when
compiling<00:12:33.690><c> a</c><00:12:33.839><c> smart</c><00:12:34.079><c> contract</c><00:12:34.500><c> and</c><00:12:34.910><c> it</c><00:12:35.910><c> will</c>

00:12:36.079 --> 00:12:36.089 align:start position:0%
compiling a smart contract and it will
 

00:12:36.089 --> 00:12:39.079 align:start position:0%
compiling a smart contract and it will
also<00:12:36.810><c> have</c><00:12:37.019><c> the</c><00:12:37.380><c> the</c><00:12:37.740><c> compiler</c><00:12:38.070><c> version</c><00:12:38.160><c> which</c>

00:12:39.079 --> 00:12:39.089 align:start position:0%
also have the the compiler version which
 

00:12:39.089 --> 00:12:41.120 align:start position:0%
also have the the compiler version which
means<00:12:39.329><c> mist</c><00:12:39.839><c> can</c><00:12:40.110><c> automatically</c><00:12:40.769><c> achieve</c>

00:12:41.120 --> 00:12:41.130 align:start position:0%
means mist can automatically achieve
 

00:12:41.130 --> 00:12:43.340 align:start position:0%
means mist can automatically achieve
both<00:12:41.550><c> the</c><00:12:41.820><c> ABI</c><00:12:42.149><c> interface</c><00:12:42.690><c> and</c><00:12:42.899><c> the</c><00:12:43.140><c> source</c>

00:12:43.340 --> 00:12:43.350 align:start position:0%
both the ABI interface and the source
 

00:12:43.350 --> 00:12:46.639 align:start position:0%
both the ABI interface and the source
code<00:12:43.620><c> and</c><00:12:44.240><c> the</c><00:12:45.240><c> compiler</c><00:12:45.959><c> with</c><00:12:46.260><c> the</c><00:12:46.380><c> correct</c>

00:12:46.639 --> 00:12:46.649 align:start position:0%
code and the compiler with the correct
 

00:12:46.649 --> 00:12:48.829 align:start position:0%
code and the compiler with the correct
version<00:12:47.149><c> compile</c><00:12:48.149><c> the</c><00:12:48.329><c> source</c><00:12:48.360><c> code</c><00:12:48.810><c> and</c>

00:12:48.829 --> 00:12:48.839 align:start position:0%
version compile the source code and
 

00:12:48.839 --> 00:12:50.840 align:start position:0%
version compile the source code and
verify<00:12:49.470><c> that</c><00:12:49.829><c> this</c><00:12:49.949><c> is</c><00:12:50.100><c> actually</c><00:12:50.519><c> the</c><00:12:50.640><c> source</c>

00:12:50.840 --> 00:12:50.850 align:start position:0%
verify that this is actually the source
 

00:12:50.850 --> 00:12:52.970 align:start position:0%
verify that this is actually the source
code<00:12:51.060><c> and</c><00:12:51.209><c> then</c><00:12:51.779><c> show</c><00:12:52.320><c> the</c><00:12:52.589><c> source</c><00:12:52.800><c> code</c>

00:12:52.970 --> 00:12:52.980 align:start position:0%
code and then show the source code
 

00:12:52.980 --> 00:12:58.460 align:start position:0%
code and then show the source code
documentation<00:12:53.160><c> to</c><00:12:53.910><c> the</c><00:12:54.000><c> user</c><00:12:56.390><c> yeah</c><00:12:57.390><c> and</c><00:12:57.570><c> since</c>

00:12:58.460 --> 00:12:58.470 align:start position:0%
documentation to the user yeah and since
 

00:12:58.470 --> 00:13:01.220 align:start position:0%
documentation to the user yeah and since
the<00:12:58.829><c> the</c><00:12:59.190><c> form</c><00:13:00.089><c> of</c><00:13:00.209><c> verification</c><00:13:00.269><c> conditions</c>

00:13:01.220 --> 00:13:01.230 align:start position:0%
the the form of verification conditions
 

00:13:01.230 --> 00:13:03.130 align:start position:0%
the the form of verification conditions
are<00:13:01.410><c> part</c><00:13:01.649><c> of</c><00:13:01.709><c> the</c><00:13:01.829><c> source</c><00:13:02.070><c> code</c><00:13:02.250><c> it</c><00:13:02.399><c> can</c><00:13:02.550><c> even</c>

00:13:03.130 --> 00:13:03.140 align:start position:0%
are part of the source code it can even
 

00:13:03.140 --> 00:13:06.530 align:start position:0%
are part of the source code it can even
automatically<00:13:04.140><c> do</c><00:13:04.610><c> just</c><00:13:05.610><c> in</c><00:13:05.760><c> time</c><00:13:05.970><c> former</c>

00:13:06.530 --> 00:13:06.540 align:start position:0%
automatically do just in time former
 

00:13:06.540 --> 00:13:10.519 align:start position:0%
automatically do just in time former
verification<00:13:07.079><c> of</c><00:13:07.140><c> the</c><00:13:07.230><c> small</c><00:13:07.470><c> contract</c><00:13:09.529><c> ok</c>

00:13:10.519 --> 00:13:10.529 align:start position:0%
verification of the small contract ok
 

00:13:10.529 --> 00:13:12.829 align:start position:0%
verification of the small contract ok
then<00:13:11.180><c> templates</c><00:13:12.180><c> is</c><00:13:12.329><c> something</c><00:13:12.630><c> we</c><00:13:12.720><c> would</c>

00:13:12.829 --> 00:13:12.839 align:start position:0%
then templates is something we would
 

00:13:12.839 --> 00:13:15.530 align:start position:0%
then templates is something we would
like<00:13:12.959><c> to</c><00:13:13.079><c> add</c><00:13:13.199><c> so</c><00:13:13.970><c> this</c><00:13:14.970><c> is</c><00:13:15.000><c> sometimes</c><00:13:15.360><c> called</c>

00:13:15.530 --> 00:13:15.540 align:start position:0%
like to add so this is sometimes called
 

00:13:15.540 --> 00:13:18.370 align:start position:0%
like to add so this is sometimes called
generic<00:13:16.320><c> data</c><00:13:16.680><c> structures</c><00:13:17.310><c> or</c><00:13:17.519><c> generics</c><00:13:18.029><c> and</c>

00:13:18.370 --> 00:13:18.380 align:start position:0%
generic data structures or generics and
 

00:13:18.380 --> 00:13:21.410 align:start position:0%
generic data structures or generics and
I<00:13:19.380><c> hope</c><00:13:19.949><c> that</c><00:13:20.190><c> it</c><00:13:20.399><c> will</c><00:13:20.640><c> also</c><00:13:21.180><c> increase</c>

00:13:21.410 --> 00:13:21.420 align:start position:0%
I hope that it will also increase
 

00:13:21.420 --> 00:13:24.380 align:start position:0%
I hope that it will also increase
flexibility<00:13:22.170><c> because</c><00:13:22.500><c> you</c><00:13:22.920><c> can</c><00:13:23.390><c> implement</c>

00:13:24.380 --> 00:13:24.390 align:start position:0%
flexibility because you can implement
 

00:13:24.390 --> 00:13:26.450 align:start position:0%
flexibility because you can implement
one<00:13:24.750><c> tree</c><00:13:25.020><c> one</c><00:13:25.440><c> routine</c>

00:13:26.450 --> 00:13:26.460 align:start position:0%
one tree one routine
 

00:13:26.460 --> 00:13:28.160 align:start position:0%
one tree one routine
one<00:13:26.550><c> algorithm</c><00:13:26.820><c> once</c><00:13:27.270><c> and</c><00:13:27.570><c> then</c><00:13:27.660><c> reuse</c><00:13:27.990><c> it</c><00:13:28.140><c> for</c>

00:13:28.160 --> 00:13:28.170 align:start position:0%
one algorithm once and then reuse it for
 

00:13:28.170 --> 00:13:31.310 align:start position:0%
one algorithm once and then reuse it for
multiple<00:13:28.650><c> data</c><00:13:28.800><c> types</c><00:13:29.870><c> we</c><00:13:30.870><c> will</c><00:13:30.990><c> also</c><00:13:31.110><c> add</c>

00:13:31.310 --> 00:13:31.320 align:start position:0%
multiple data types we will also add
 

00:13:31.320 --> 00:13:33.080 align:start position:0%
multiple data types we will also add
functions<00:13:31.860><c> as</c><00:13:31.980><c> first-class</c><00:13:32.310><c> citizens</c><00:13:32.910><c> this</c>

00:13:33.080 --> 00:13:33.090 align:start position:0%
functions as first-class citizens this
 

00:13:33.090 --> 00:13:36.680 align:start position:0%
functions as first-class citizens this
means<00:13:33.390><c> you</c><00:13:33.900><c> can</c><00:13:33.930><c> have</c><00:13:34.320><c> things</c><00:13:34.980><c> like</c><00:13:35.690><c> anonymous</c>

00:13:36.680 --> 00:13:36.690 align:start position:0%
means you can have things like anonymous
 

00:13:36.690 --> 00:13:39.710 align:start position:0%
means you can have things like anonymous
functions<00:13:37.110><c> lambda</c><00:13:37.530><c> functions</c><00:13:37.920><c> and</c><00:13:38.420><c> use</c><00:13:39.420><c> them</c>

00:13:39.710 --> 00:13:39.720 align:start position:0%
functions lambda functions and use them
 

00:13:39.720 --> 00:13:43.490 align:start position:0%
functions lambda functions and use them
as<00:13:40.020><c> for</c><00:13:40.860><c> example</c><00:13:41.220><c> as</c><00:13:41.310><c> callbacks</c><00:13:41.820><c> in</c><00:13:42.500><c> Oracle</c>

00:13:43.490 --> 00:13:43.500 align:start position:0%
as for example as callbacks in Oracle
 

00:13:43.500 --> 00:13:47.060 align:start position:0%
as for example as callbacks in Oracle
queries<00:13:43.860><c> so</c><00:13:44.130><c> currently</c><00:13:45.120><c> oracle</c><00:13:46.080><c> eyes</c><00:13:46.170><c> uses</c>

00:13:47.060 --> 00:13:47.070 align:start position:0%
queries so currently oracle eyes uses
 

00:13:47.070 --> 00:13:54.770 align:start position:0%
queries so currently oracle eyes uses
some<00:13:47.310><c> kind</c><00:13:47.550><c> of</c><00:13:47.990><c> yeah</c><00:13:53.120><c> manual</c><00:13:54.120><c> solution</c><00:13:54.660><c> to</c>

00:13:54.770 --> 00:13:54.780 align:start position:0%
some kind of yeah manual solution to
 

00:13:54.780 --> 00:13:57.470 align:start position:0%
some kind of yeah manual solution to
that<00:13:54.870><c> problem</c><00:13:54.930><c> because</c><00:13:55.730><c> if</c><00:13:56.730><c> you</c><00:13:56.970><c> if</c><00:13:57.270><c> you</c><00:13:57.450><c> make</c>

00:13:57.470 --> 00:13:57.480 align:start position:0%
that problem because if you if you make
 

00:13:57.480 --> 00:14:00.020 align:start position:0%
that problem because if you if you make
a<00:13:57.630><c> request</c><00:13:57.900><c> to</c><00:13:58.080><c> oracle</c><00:13:58.470><c> eyes</c><00:13:58.560><c> then</c><00:13:58.950><c> the</c><00:13:59.370><c> oracle</c>

00:14:00.020 --> 00:14:00.030 align:start position:0%
a request to oracle eyes then the oracle
 

00:14:00.030 --> 00:14:03.680 align:start position:0%
a request to oracle eyes then the oracle
i<00:14:00.090><c> smart</c><00:14:00.480><c> contract</c><00:14:02.120><c> invokes</c><00:14:03.120><c> the</c><00:14:03.300><c> arclight</c>

00:14:03.680 --> 00:14:03.690 align:start position:0%
i smart contract invokes the arclight
 

00:14:03.690 --> 00:14:06.260 align:start position:0%
i smart contract invokes the arclight
system<00:14:04.110><c> and</c><00:14:04.380><c> retrieves</c><00:14:04.800><c> the</c><00:14:05.010><c> data</c><00:14:05.040><c> and</c><00:14:05.550><c> then</c>

00:14:06.260 --> 00:14:06.270 align:start position:0%
system and retrieves the data and then
 

00:14:06.270 --> 00:14:10.490 align:start position:0%
system and retrieves the data and then
calls<00:14:07.430><c> calls</c><00:14:08.430><c> back</c><00:14:08.730><c> the</c><00:14:09.570><c> original</c><00:14:09.810><c> contract</c>

00:14:10.490 --> 00:14:10.500 align:start position:0%
calls calls back the original contract
 

00:14:10.500 --> 00:14:14.270 align:start position:0%
calls calls back the original contract
in<00:14:10.680><c> a</c><00:14:11.130><c> later</c><00:14:12.000><c> transaction</c><00:14:12.720><c> and</c><00:14:13.280><c> currently</c>

00:14:14.270 --> 00:14:14.280 align:start position:0%
in a later transaction and currently
 

00:14:14.280 --> 00:14:16.070 align:start position:0%
in a later transaction and currently
this<00:14:14.730><c> call</c><00:14:14.970><c> that</c><00:14:15.150><c> goes</c><00:14:15.330><c> to</c><00:14:15.570><c> a</c><00:14:15.600><c> fixed</c><00:14:15.930><c> function</c>

00:14:16.070 --> 00:14:16.080 align:start position:0%
this call that goes to a fixed function
 

00:14:16.080 --> 00:14:18.770 align:start position:0%
this call that goes to a fixed function
with<00:14:16.350><c> a</c><00:14:16.380><c> fixed</c><00:14:16.560><c> name</c><00:14:16.890><c> but</c><00:14:17.760><c> in</c><00:14:18.150><c> the</c><00:14:18.360><c> future</c><00:14:18.540><c> will</c>

00:14:18.770 --> 00:14:18.780 align:start position:0%
with a fixed name but in the future will
 

00:14:18.780 --> 00:14:21.080 align:start position:0%
with a fixed name but in the future will
be<00:14:18.870><c> possible</c><00:14:19.230><c> to</c><00:14:19.320><c> just</c><00:14:19.470><c> supply</c><00:14:19.980><c> a</c><00:14:20.430><c> callback</c>

00:14:21.080 --> 00:14:21.090 align:start position:0%
be possible to just supply a callback
 

00:14:21.090 --> 00:14:22.910 align:start position:0%
be possible to just supply a callback
function<00:14:21.540><c> as</c><00:14:21.690><c> is</c><00:14:22.170><c> usual</c><00:14:22.560><c> in</c><00:14:22.590><c> asynchronous</c>

00:14:22.910 --> 00:14:22.920 align:start position:0%
function as is usual in asynchronous
 

00:14:22.920 --> 00:14:26.450 align:start position:0%
function as is usual in asynchronous
programming<00:14:23.190><c> and</c><00:14:24.950><c> yeah</c><00:14:25.950><c> speaking</c><00:14:26.250><c> of</c>

00:14:26.450 --> 00:14:26.460 align:start position:0%
programming and yeah speaking of
 

00:14:26.460 --> 00:14:29.840 align:start position:0%
programming and yeah speaking of
asynchronous<00:14:26.820><c> programming</c><00:14:28.610><c> not</c><00:14:29.610><c> sure</c><00:14:29.730><c> if</c>

00:14:29.840 --> 00:14:29.850 align:start position:0%
asynchronous programming not sure if
 

00:14:29.850 --> 00:14:33.680 align:start position:0%
asynchronous programming not sure if
you've<00:14:29.970><c> seen</c><00:14:30.210><c> this</c><00:14:31.970><c> proof-of-concept</c><00:14:32.970><c> hack</c>

00:14:33.680 --> 00:14:33.690 align:start position:0%
you've seen this proof-of-concept hack
 

00:14:33.690 --> 00:14:36.200 align:start position:0%
you've seen this proof-of-concept hack
two<00:14:34.440><c> weeks</c><00:14:34.620><c> ago</c><00:14:34.800><c> about</c><00:14:35.190><c> the</c><00:14:35.400><c> air</c><00:14:35.520><c> with</c><00:14:35.700><c> about</c>

00:14:36.200 --> 00:14:36.210 align:start position:0%
two weeks ago about the air with about
 

00:14:36.210 --> 00:14:45.860 align:start position:0%
two weeks ago about the air with about
the<00:14:36.330><c> await</c><00:14:39.080><c> way</c><00:14:40.080><c> to</c><00:14:40.140><c> program</c><00:14:40.830><c> so</c><00:14:44.270><c> yeah</c><00:14:45.270><c> we</c><00:14:45.510><c> in</c>

00:14:45.860 --> 00:14:45.870 align:start position:0%
the await way to program so yeah we in
 

00:14:45.870 --> 00:14:47.660 align:start position:0%
the await way to program so yeah we in
the<00:14:45.960><c> future</c><00:14:46.170><c> we</c><00:14:46.320><c> will</c><00:14:46.410><c> explore</c><00:14:46.950><c> no</c><00:14:47.160><c> new</c>

00:14:47.660 --> 00:14:47.670 align:start position:0%
the future we will explore no new
 

00:14:47.670 --> 00:14:49.610 align:start position:0%
the future we will explore no new
notations<00:14:48.300><c> for</c><00:14:48.390><c> how</c><00:14:48.780><c> to</c><00:14:48.840><c> you</c><00:14:49.050><c> how</c><00:14:49.350><c> to</c><00:14:49.410><c> do</c>

00:14:49.610 --> 00:14:49.620 align:start position:0%
notations for how to you how to do
 

00:14:49.620 --> 00:14:51.740 align:start position:0%
notations for how to you how to do
asynchronous<00:14:49.860><c> programming</c><00:14:50.250><c> because</c><00:14:50.750><c> often</c>

00:14:51.740 --> 00:14:51.750 align:start position:0%
asynchronous programming because often
 

00:14:51.750 --> 00:14:54.290 align:start position:0%
asynchronous programming because often
smart<00:14:52.380><c> contracts</c><00:14:52.860><c> are</c><00:14:53.040><c> a</c><00:14:53.070><c> sequence</c><00:14:53.700><c> consists</c>

00:14:54.290 --> 00:14:54.300 align:start position:0%
smart contracts are a sequence consists
 

00:14:54.300 --> 00:14:55.940 align:start position:0%
smart contracts are a sequence consists
of<00:14:54.390><c> a</c><00:14:54.510><c> sequence</c><00:14:54.720><c> of</c><00:14:54.990><c> things</c><00:14:55.230><c> to</c><00:14:55.410><c> be</c><00:14:55.530><c> done</c><00:14:55.680><c> in</c>

00:14:55.940 --> 00:14:55.950 align:start position:0%
of a sequence of things to be done in
 

00:14:55.950 --> 00:14:58.670 align:start position:0%
of a sequence of things to be done in
exactly<00:14:56.580><c> this</c><00:14:56.760><c> sequence</c><00:14:57.240><c> and</c><00:14:57.450><c> it</c><00:14:58.410><c> kind</c><00:14:58.620><c> of</c>

00:14:58.670 --> 00:14:58.680 align:start position:0%
exactly this sequence and it kind of
 

00:14:58.680 --> 00:15:01.690 align:start position:0%
exactly this sequence and it kind of
doesn't<00:14:59.130><c> really</c><00:14:59.490><c> make</c><00:14:59.640><c> sense</c><00:14:59.700><c> to</c><00:15:00.240><c> put</c><00:15:00.750><c> these</c>

00:15:01.690 --> 00:15:01.700 align:start position:0%
doesn't really make sense to put these
 

00:15:01.700 --> 00:15:03.890 align:start position:0%
doesn't really make sense to put these
different<00:15:02.700><c> steps</c><00:15:02.940><c> in</c><00:15:03.180><c> different</c><00:15:03.510><c> functions</c>

00:15:03.890 --> 00:15:03.900 align:start position:0%
different steps in different functions
 

00:15:03.900 --> 00:15:06.590 align:start position:0%
different steps in different functions
and<00:15:04.110><c> it's</c><00:15:04.260><c> much</c><00:15:04.590><c> easier</c><00:15:04.650><c> to</c><00:15:05.100><c> actually</c><00:15:05.600><c> program</c>

00:15:06.590 --> 00:15:06.600 align:start position:0%
and it's much easier to actually program
 

00:15:06.600 --> 00:15:09.080 align:start position:0%
and it's much easier to actually program
that<00:15:06.780><c> sequentially</c><00:15:07.580><c> that's</c><00:15:08.580><c> probably</c><00:15:08.850><c> hard</c>

00:15:09.080 --> 00:15:09.090 align:start position:0%
that sequentially that's probably hard
 

00:15:09.090 --> 00:15:10.760 align:start position:0%
that sequentially that's probably hard
to<00:15:09.120><c> explain</c><00:15:09.330><c> without</c><00:15:09.510><c> example</c><00:15:09.990><c> that's</c><00:15:10.140><c> okay</c>

00:15:10.760 --> 00:15:10.770 align:start position:0%
to explain without example that's okay
 

00:15:10.770 --> 00:15:16.940 align:start position:0%
to explain without example that's okay
he<00:15:11.280><c> will</c><00:15:11.430><c> see</c><00:15:12.590><c> so</c><00:15:13.590><c> what</c><00:15:13.770><c> else</c><00:15:13.920><c> do</c><00:15:14.010><c> we</c><00:15:14.040><c> have</c><00:15:15.950><c> yeah</c>

00:15:16.940 --> 00:15:16.950 align:start position:0%
he will see so what else do we have yeah
 

00:15:16.950 --> 00:15:23.180 align:start position:0%
he will see so what else do we have yeah
so<00:15:20.720><c> we</c><00:15:21.720><c> plan</c><00:15:21.930><c> to</c><00:15:22.080><c> add</c><00:15:22.230><c> algebraic</c><00:15:22.770><c> data</c><00:15:22.890><c> types</c>

00:15:23.180 --> 00:15:23.190 align:start position:0%
so we plan to add algebraic data types
 

00:15:23.190 --> 00:15:26.090 align:start position:0%
so we plan to add algebraic data types
and<00:15:23.520><c> as</c><00:15:23.850><c> I</c><00:15:23.880><c> said</c><00:15:24.030><c> templates</c><00:15:24.600><c> but</c><00:15:25.440><c> it's</c>

00:15:26.090 --> 00:15:26.100 align:start position:0%
and as I said templates but it's
 

00:15:26.100 --> 00:15:29.450 align:start position:0%
and as I said templates but it's
probably<00:15:27.260><c> too</c><00:15:28.260><c> hard</c><00:15:28.500><c> to</c><00:15:28.650><c> explain</c><00:15:28.950><c> the</c><00:15:29.220><c> source</c>

00:15:29.450 --> 00:15:29.460 align:start position:0%
probably too hard to explain the source
 

00:15:29.460 --> 00:15:31.430 align:start position:0%
probably too hard to explain the source
code<00:15:29.640><c> in</c><00:15:29.820><c> this</c><00:15:29.940><c> talk</c><00:15:30.240><c> and</c><00:15:30.960><c> there's</c><00:15:31.260><c> another</c>

00:15:31.430 --> 00:15:31.440 align:start position:0%
code in this talk and there's another
 

00:15:31.440 --> 00:15:34.310 align:start position:0%
code in this talk and there's another
slide<00:15:32.190><c> with</c><00:15:32.520><c> even</c><00:15:32.880><c> more</c><00:15:33.150><c> complicated</c><00:15:33.810><c> future</c>

00:15:34.310 --> 00:15:34.320 align:start position:0%
slide with even more complicated future
 

00:15:34.320 --> 00:15:35.900 align:start position:0%
slide with even more complicated future
solidity<00:15:34.680><c> code</c>

00:15:35.900 --> 00:15:35.910 align:start position:0%
solidity code
 

00:15:35.910 --> 00:15:38.450 align:start position:0%
solidity code
and<00:15:36.030><c> I</c><00:15:36.300><c> would</c><00:15:36.570><c> just</c><00:15:36.690><c> encourage</c><00:15:36.900><c> you</c><00:15:37.470><c> to</c><00:15:37.680><c> take</c><00:15:38.400><c> a</c>

00:15:38.450 --> 00:15:38.460 align:start position:0%
and I would just encourage you to take a
 

00:15:38.460 --> 00:15:41.150 align:start position:0%
and I would just encourage you to take a
look<00:15:38.670><c> at</c><00:15:38.820><c> the</c><00:15:39.030><c> slides</c><00:15:39.690><c> later</c><00:15:40.020><c> and</c><00:15:40.410><c> read</c><00:15:41.010><c> the</c>

00:15:41.150 --> 00:15:41.160 align:start position:0%
look at the slides later and read the
 

00:15:41.160 --> 00:15:44.810 align:start position:0%
look at the slides later and read the
comments<00:15:42.050><c> yeah</c><00:15:43.050><c> this</c><00:15:43.260><c> is</c><00:15:43.380><c> just</c><00:15:43.620><c> a</c><00:15:43.770><c> rough</c><00:15:44.670><c> idea</c>

00:15:44.810 --> 00:15:44.820 align:start position:0%
comments yeah this is just a rough idea
 

00:15:44.820 --> 00:15:48.500 align:start position:0%
comments yeah this is just a rough idea
of<00:15:45.030><c> how</c><00:15:45.390><c> it</c><00:15:45.660><c> could</c><00:15:45.930><c> look</c><00:15:45.960><c> like</c><00:15:46.110><c> so</c><00:15:46.530><c> i</c><00:15:47.300><c> hope</c><00:15:48.300><c> that</c>

00:15:48.500 --> 00:15:48.510 align:start position:0%
of how it could look like so i hope that
 

00:15:48.510 --> 00:15:50.870 align:start position:0%
of how it could look like so i hope that
the<00:15:48.720><c> urls</c><00:15:49.530><c> of</c><00:15:49.830><c> the</c><00:15:49.950><c> slides</c><00:15:50.190><c> are</c><00:15:50.430><c> published</c>

00:15:50.870 --> 00:15:50.880 align:start position:0%
the urls of the slides are published
 

00:15:50.880 --> 00:15:53.270 align:start position:0%
the urls of the slides are published
sooner<00:15:51.240><c> for</c><00:15:51.420><c> the</c><00:15:51.480><c> conference</c><00:15:51.900><c> and</c><00:15:52.140><c> yeah</c><00:15:53.100><c> i</c>

00:15:53.270 --> 00:15:53.280 align:start position:0%
sooner for the conference and yeah i
 

00:15:53.280 --> 00:15:55.460 align:start position:0%
sooner for the conference and yeah i
think<00:15:53.400><c> there</c><00:15:53.760><c> we</c><00:15:54.360><c> also</c><00:15:54.510><c> have</c><00:15:54.750><c> relevant</c><00:15:55.290><c> reddit</c>

00:15:55.460 --> 00:15:55.470 align:start position:0%
think there we also have relevant reddit
 

00:15:55.470 --> 00:15:59.270 align:start position:0%
think there we also have relevant reddit
post<00:15:55.500><c> them</c><00:15:56.540><c> okay</c><00:15:57.540><c> thank</c><00:15:58.260><c> you</c><00:15:58.320><c> thanks</c>

00:15:59.270 --> 00:15:59.280 align:start position:0%
post them okay thank you thanks
 

00:15:59.280 --> 00:16:06.120 align:start position:0%
post them okay thank you thanks
Christian

00:16:06.120 --> 00:16:06.130 align:start position:0%
 
 

00:16:06.130 --> 00:16:08.190 align:start position:0%
 
you

