WEBVTT
Kind: captions
Language: en

00:00:09.190 --> 00:00:22.590 align:start position:0%
 
[Music]

00:00:22.590 --> 00:00:22.600 align:start position:0%
 
 

00:00:22.600 --> 00:00:25.120 align:start position:0%
 
hello<00:00:23.600><c> okay</c><00:00:24.170><c> great</c>

00:00:25.120 --> 00:00:25.130 align:start position:0%
hello okay great
 

00:00:25.130 --> 00:00:27.910 align:start position:0%
hello okay great
hello<00:00:25.850><c> everyone</c><00:00:26.690><c> my</c><00:00:26.870><c> name</c><00:00:27.020><c> is</c><00:00:27.200><c> Robert</c><00:00:27.680><c> Hobart</c>

00:00:27.910 --> 00:00:27.920 align:start position:0%
hello everyone my name is Robert Hobart
 

00:00:27.920 --> 00:00:30.670 align:start position:0%
hello everyone my name is Robert Hobart
Mayer<00:00:28.070><c> I</c><00:00:28.310><c> work</c><00:00:28.700><c> at</c><00:00:28.880><c> Paradis</c><00:00:29.360><c> technologies</c><00:00:29.930><c> and</c>

00:00:30.670 --> 00:00:30.680 align:start position:0%
Mayer I work at Paradis technologies and
 

00:00:30.680 --> 00:00:32.889 align:start position:0%
Mayer I work at Paradis technologies and
one<00:00:31.610><c> of</c><00:00:31.670><c> the</c><00:00:31.730><c> projects</c><00:00:32.149><c> that</c><00:00:32.210><c> I</c><00:00:32.329><c> worked</c><00:00:32.539><c> on</c><00:00:32.689><c> was</c>

00:00:32.889 --> 00:00:32.899 align:start position:0%
one of the projects that I worked on was
 

00:00:32.899 --> 00:00:35.650 align:start position:0%
one of the projects that I worked on was
a<00:00:33.200><c> light</c><00:00:33.530><c> client</c><00:00:33.980><c> for</c><00:00:34.190><c> aetherium</c><00:00:34.670><c> if</c><00:00:35.510><c> you're</c>

00:00:35.650 --> 00:00:35.660 align:start position:0%
a light client for aetherium if you're
 

00:00:35.660 --> 00:00:38.470 align:start position:0%
a light client for aetherium if you're
not<00:00:35.780><c> familiar</c><00:00:35.930><c> with</c><00:00:36.200><c> Paradis</c><00:00:37.360><c> basically</c><00:00:38.360><c> will</c>

00:00:38.470 --> 00:00:38.480 align:start position:0%
not familiar with Paradis basically will
 

00:00:38.480 --> 00:00:40.450 align:start position:0%
not familiar with Paradis basically will
be<00:00:38.510><c> billed</c><00:00:38.750><c> an</c><00:00:38.990><c> aetherium</c><00:00:39.680><c> node</c><00:00:39.890><c> so</c><00:00:40.220><c> i'm</c><00:00:40.280><c> gonna</c>

00:00:40.450 --> 00:00:40.460 align:start position:0%
be billed an aetherium node so i'm gonna
 

00:00:40.460 --> 00:00:42.310 align:start position:0%
be billed an aetherium node so i'm gonna
talk<00:00:40.610><c> about</c><00:00:40.670><c> one</c><00:00:41.180><c> mode</c><00:00:41.480><c> of</c><00:00:41.510><c> operation</c><00:00:42.110><c> of</c><00:00:42.200><c> that</c>

00:00:42.310 --> 00:00:42.320 align:start position:0%
talk about one mode of operation of that
 

00:00:42.320 --> 00:00:46.300 align:start position:0%
talk about one mode of operation of that
node<00:00:42.610><c> so</c><00:00:43.610><c> first</c><00:00:43.910><c> I'd</c><00:00:44.390><c> like</c><00:00:44.450><c> to</c><00:00:44.600><c> split</c><00:00:45.410><c> up</c><00:00:45.590><c> the</c>

00:00:46.300 --> 00:00:46.310 align:start position:0%
node so first I'd like to split up the
 

00:00:46.310 --> 00:00:49.170 align:start position:0%
node so first I'd like to split up the
classifications<00:00:47.300><c> of</c><00:00:47.510><c> aetherium</c><00:00:48.230><c> clients</c><00:00:48.680><c> so</c>

00:00:49.170 --> 00:00:49.180 align:start position:0%
classifications of aetherium clients so
 

00:00:49.180 --> 00:00:51.069 align:start position:0%
classifications of aetherium clients so
actually<00:00:50.180><c> we</c><00:00:50.300><c> can</c><00:00:50.450><c> split</c><00:00:50.690><c> these</c><00:00:50.780><c> pretty</c>

00:00:51.069 --> 00:00:51.079 align:start position:0%
actually we can split these pretty
 

00:00:51.079 --> 00:00:52.960 align:start position:0%
actually we can split these pretty
easily<00:00:51.440><c> into</c><00:00:51.680><c> three</c><00:00:51.860><c> categories</c><00:00:52.370><c> the</c><00:00:52.550><c> first</c>

00:00:52.960 --> 00:00:52.970 align:start position:0%
easily into three categories the first
 

00:00:52.970 --> 00:00:54.639 align:start position:0%
easily into three categories the first
would<00:00:53.329><c> be</c><00:00:53.420><c> a</c><00:00:53.450><c> full</c><00:00:53.720><c> node</c><00:00:53.960><c> so</c><00:00:54.230><c> when</c><00:00:54.380><c> you</c><00:00:54.470><c> run</c><00:00:54.590><c> a</c>

00:00:54.639 --> 00:00:54.649 align:start position:0%
would be a full node so when you run a
 

00:00:54.649 --> 00:00:56.560 align:start position:0%
would be a full node so when you run a
node<00:00:54.860><c> today</c><00:00:55.160><c> you're</c><00:00:55.760><c> mostly</c><00:00:56.030><c> just</c><00:00:56.239><c> running</c><00:00:56.510><c> a</c>

00:00:56.560 --> 00:00:56.570 align:start position:0%
node today you're mostly just running a
 

00:00:56.570 --> 00:00:58.240 align:start position:0%
node today you're mostly just running a
full<00:00:56.780><c> node</c><00:00:56.989><c> and</c><00:00:57.230><c> that</c><00:00:57.680><c> means</c><00:00:57.890><c> that</c><00:00:58.100><c> you</c>

00:00:58.240 --> 00:00:58.250 align:start position:0%
full node and that means that you
 

00:00:58.250 --> 00:01:00.459 align:start position:0%
full node and that means that you
download<00:00:59.030><c> all</c><00:00:59.210><c> the</c><00:00:59.390><c> block</c><00:00:59.570><c> headers</c><00:00:59.960><c> and</c><00:01:00.140><c> you</c>

00:01:00.459 --> 00:01:00.469 align:start position:0%
download all the block headers and you
 

00:01:00.469 --> 00:01:02.590 align:start position:0%
download all the block headers and you
check<00:01:00.649><c> the</c><00:01:00.770><c> consensus</c><00:01:01.280><c> process</c><00:01:01.460><c> and</c><00:01:01.940><c> then</c><00:01:02.480><c> you</c>

00:01:02.590 --> 00:01:02.600 align:start position:0%
check the consensus process and then you
 

00:01:02.600 --> 00:01:03.999 align:start position:0%
check the consensus process and then you
download<00:01:02.719><c> the</c><00:01:03.020><c> block</c><00:01:03.200><c> bodies</c><00:01:03.590><c> as</c><00:01:03.739><c> well</c><00:01:03.890><c> and</c>

00:01:03.999 --> 00:01:04.009 align:start position:0%
download the block bodies as well and
 

00:01:04.009 --> 00:01:05.830 align:start position:0%
download the block bodies as well and
you<00:01:04.100><c> check</c><00:01:04.280><c> that</c><00:01:04.460><c> all</c><00:01:04.549><c> the</c><00:01:04.720><c> transactions</c><00:01:05.720><c> have</c>

00:01:05.830 --> 00:01:05.840 align:start position:0%
you check that all the transactions have
 

00:01:05.840 --> 00:01:07.390 align:start position:0%
you check that all the transactions have
been<00:01:06.049><c> executed</c><00:01:06.470><c> correctly</c><00:01:06.799><c> and</c><00:01:07.190><c> that</c><00:01:07.280><c> they're</c>

00:01:07.390 --> 00:01:07.400 align:start position:0%
been executed correctly and that they're
 

00:01:07.400 --> 00:01:09.820 align:start position:0%
been executed correctly and that they're
actually<00:01:07.520><c> valid</c><00:01:08.350><c> and</c><00:01:09.350><c> this</c><00:01:09.500><c> gives</c><00:01:09.740><c> you</c>

00:01:09.820 --> 00:01:09.830 align:start position:0%
actually valid and this gives you
 

00:01:09.830 --> 00:01:11.380 align:start position:0%
actually valid and this gives you
basically<00:01:10.220><c> full</c><00:01:10.490><c> security</c><00:01:11.060><c> you've</c><00:01:11.180><c> checked</c>

00:01:11.380 --> 00:01:11.390 align:start position:0%
basically full security you've checked
 

00:01:11.390 --> 00:01:14.440 align:start position:0%
basically full security you've checked
absolutely<00:01:11.990><c> everything</c><00:01:12.440><c> you</c><00:01:12.530><c> can</c><00:01:13.120><c> but</c><00:01:14.120><c> what</c>

00:01:14.440 --> 00:01:14.450 align:start position:0%
absolutely everything you can but what
 

00:01:14.450 --> 00:01:16.510 align:start position:0%
absolutely everything you can but what
we've<00:01:14.570><c> seen</c><00:01:14.600><c> is</c><00:01:14.870><c> that</c><00:01:15.140><c> as</c><00:01:15.530><c> the</c><00:01:16.280><c> blockchain</c>

00:01:16.510 --> 00:01:16.520 align:start position:0%
we've seen is that as the blockchain
 

00:01:16.520 --> 00:01:19.600 align:start position:0%
we've seen is that as the blockchain
grows<00:01:16.909><c> heavier</c><00:01:17.299><c> and</c><00:01:17.479><c> longer</c><00:01:17.869><c> it</c><00:01:18.229><c> takes</c><00:01:18.860><c> a</c><00:01:19.100><c> very</c>

00:01:19.600 --> 00:01:19.610 align:start position:0%
grows heavier and longer it takes a very
 

00:01:19.610 --> 00:01:22.630 align:start position:0%
grows heavier and longer it takes a very
large<00:01:20.270><c> amount</c><00:01:20.479><c> of</c><00:01:20.690><c> time</c><00:01:20.900><c> resources</c><00:01:21.830><c> both</c><00:01:22.400><c> for</c>

00:01:22.630 --> 00:01:22.640 align:start position:0%
large amount of time resources both for
 

00:01:22.640 --> 00:01:24.940 align:start position:0%
large amount of time resources both for
storage<00:01:23.090><c> and</c><00:01:23.270><c> computation</c><00:01:23.540><c> and</c><00:01:24.049><c> memory</c><00:01:24.320><c> to</c>

00:01:24.940 --> 00:01:24.950 align:start position:0%
storage and computation and memory to
 

00:01:24.950 --> 00:01:28.060 align:start position:0%
storage and computation and memory to
actually<00:01:26.049><c> synchronize</c><00:01:27.049><c> a</c><00:01:27.080><c> full</c><00:01:27.530><c> client</c><00:01:27.770><c> and</c>

00:01:28.060 --> 00:01:28.070 align:start position:0%
actually synchronize a full client and
 

00:01:28.070 --> 00:01:33.580 align:start position:0%
actually synchronize a full client and
use<00:01:28.220><c> it</c><00:01:28.430><c> so</c><00:01:29.560><c> it's</c><00:01:30.560><c> not</c><00:01:30.799><c> exactly</c><00:01:31.990><c> user</c><00:01:32.990><c> friendly</c>

00:01:33.580 --> 00:01:33.590 align:start position:0%
use it so it's not exactly user friendly
 

00:01:33.590 --> 00:01:35.109 align:start position:0%
use it so it's not exactly user friendly
in<00:01:33.740><c> this</c><00:01:33.950><c> sense</c><00:01:34.189><c> so</c><00:01:34.430><c> if</c><00:01:34.549><c> you</c><00:01:34.670><c> wanted</c><00:01:34.850><c> to</c><00:01:34.970><c> run</c><00:01:35.060><c> a</c>

00:01:35.109 --> 00:01:35.119 align:start position:0%
in this sense so if you wanted to run a
 

00:01:35.119 --> 00:01:37.030 align:start position:0%
in this sense so if you wanted to run a
client<00:01:35.510><c> on</c><00:01:35.570><c> your</c><00:01:35.630><c> laptop</c><00:01:36.170><c> you</c><00:01:36.710><c> couldn't</c>

00:01:37.030 --> 00:01:37.040 align:start position:0%
client on your laptop you couldn't
 

00:01:37.040 --> 00:01:39.820 align:start position:0%
client on your laptop you couldn't
necessarily<00:01:37.189><c> run</c><00:01:37.850><c> a</c><00:01:38.090><c> full</c><00:01:38.659><c> node</c><00:01:38.869><c> so</c><00:01:39.439><c> the</c><00:01:39.680><c> other</c>

00:01:39.820 --> 00:01:39.830 align:start position:0%
necessarily run a full node so the other
 

00:01:39.830 --> 00:01:41.649 align:start position:0%
necessarily run a full node so the other
kind<00:01:40.070><c> of</c><00:01:40.130><c> client</c><00:01:40.490><c> that</c><00:01:40.610><c> we</c><00:01:40.729><c> talked</c><00:01:40.909><c> about</c><00:01:41.030><c> is</c><00:01:41.390><c> a</c>

00:01:41.649 --> 00:01:41.659 align:start position:0%
kind of client that we talked about is a
 

00:01:41.659 --> 00:01:43.630 align:start position:0%
kind of client that we talked about is a
light<00:01:42.110><c> client</c><00:01:42.590><c> so</c><00:01:42.740><c> in</c><00:01:42.830><c> a</c><00:01:42.890><c> light</c><00:01:43.070><c> client</c><00:01:43.490><c> what</c>

00:01:43.630 --> 00:01:43.640 align:start position:0%
light client so in a light client what
 

00:01:43.640 --> 00:01:46.270 align:start position:0%
light client so in a light client what
you<00:01:43.729><c> do</c><00:01:43.909><c> is</c><00:01:44.119><c> you</c><00:01:44.600><c> verify</c><00:01:45.110><c> the</c><00:01:45.650><c> block</c><00:01:45.860><c> headers</c>

00:01:46.270 --> 00:01:46.280 align:start position:0%
you do is you verify the block headers
 

00:01:46.280 --> 00:01:48.460 align:start position:0%
you do is you verify the block headers
but<00:01:46.790><c> you're</c><00:01:46.939><c> not</c><00:01:47.090><c> checking</c><00:01:47.509><c> the</c><00:01:47.780><c> transactions</c>

00:01:48.460 --> 00:01:48.470 align:start position:0%
but you're not checking the transactions
 

00:01:48.470 --> 00:01:50.830 align:start position:0%
but you're not checking the transactions
and<00:01:48.759><c> that</c><00:01:49.759><c> means</c><00:01:50.210><c> that</c><00:01:50.330><c> you're</c><00:01:50.420><c> checking</c><00:01:50.659><c> that</c>

00:01:50.830 --> 00:01:50.840 align:start position:0%
and that means that you're checking that
 

00:01:50.840 --> 00:01:52.420 align:start position:0%
and that means that you're checking that
mining<00:01:51.380><c> or</c><00:01:51.590><c> staking</c><00:01:52.009><c> has</c><00:01:52.130><c> been</c><00:01:52.310><c> done</c>

00:01:52.420 --> 00:01:52.430 align:start position:0%
mining or staking has been done
 

00:01:52.430 --> 00:01:54.429 align:start position:0%
mining or staking has been done
correctly<00:01:52.960><c> but</c><00:01:53.960><c> you're</c><00:01:54.080><c> not</c><00:01:54.229><c> actually</c>

00:01:54.429 --> 00:01:54.439 align:start position:0%
correctly but you're not actually
 

00:01:54.439 --> 00:01:56.620 align:start position:0%
correctly but you're not actually
executing<00:01:55.159><c> those</c><00:01:55.220><c> transactions</c><00:01:55.850><c> to</c><00:01:56.030><c> see</c><00:01:56.299><c> if</c>

00:01:56.620 --> 00:01:56.630 align:start position:0%
executing those transactions to see if
 

00:01:56.630 --> 00:02:00.219 align:start position:0%
executing those transactions to see if
the<00:01:56.900><c> output</c><00:01:57.439><c> state</c><00:01:57.680><c> is</c><00:01:58.509><c> correct</c><00:01:59.509><c> from</c><00:02:00.049><c> the</c>

00:02:00.219 --> 00:02:00.229 align:start position:0%
the output state is correct from the
 

00:02:00.229 --> 00:02:01.719 align:start position:0%
the output state is correct from the
previous<00:02:00.619><c> state</c><00:02:00.799><c> and</c><00:02:01.040><c> the</c><00:02:01.130><c> new</c><00:02:01.250><c> transactions</c>

00:02:01.719 --> 00:02:01.729 align:start position:0%
previous state and the new transactions
 

00:02:01.729 --> 00:02:03.219 align:start position:0%
previous state and the new transactions
that<00:02:01.850><c> have</c><00:02:01.939><c> been</c><00:02:02.060><c> added</c><00:02:02.210><c> and</c><00:02:02.570><c> the</c><00:02:02.780><c> last</c><00:02:02.960><c> kind</c>

00:02:03.219 --> 00:02:03.229 align:start position:0%
that have been added and the last kind
 

00:02:03.229 --> 00:02:05.140 align:start position:0%
that have been added and the last kind
of<00:02:03.320><c> client</c><00:02:03.619><c> that</c><00:02:03.710><c> we</c><00:02:03.829><c> have</c><00:02:04.040><c> which</c><00:02:04.939><c> I'm</c><00:02:05.060><c> not</c>

00:02:05.140 --> 00:02:05.150 align:start position:0%
of client that we have which I'm not
 

00:02:05.150 --> 00:02:07.030 align:start position:0%
of client that we have which I'm not
going<00:02:05.270><c> to</c><00:02:05.329><c> talk</c><00:02:05.509><c> about</c><00:02:05.630><c> too</c><00:02:05.930><c> much</c><00:02:06.110><c> today</c><00:02:06.380><c> but</c>

00:02:07.030 --> 00:02:07.040 align:start position:0%
going to talk about too much today but
 

00:02:07.040 --> 00:02:09.219 align:start position:0%
going to talk about too much today but
is<00:02:07.189><c> relevant</c><00:02:07.790><c> to</c><00:02:08.090><c> the</c><00:02:08.479><c> protocol</c><00:02:08.989><c> that</c><00:02:09.019><c> I'm</c>

00:02:09.219 --> 00:02:09.229 align:start position:0%
is relevant to the protocol that I'm
 

00:02:09.229 --> 00:02:12.309 align:start position:0%
is relevant to the protocol that I'm
going<00:02:09.439><c> to</c><00:02:09.560><c> discuss</c><00:02:09.890><c> now</c><00:02:10.069><c> is</c><00:02:10.310><c> a</c><00:02:11.120><c> thin</c><00:02:11.690><c> client</c><00:02:11.989><c> so</c>

00:02:12.309 --> 00:02:12.319 align:start position:0%
going to discuss now is a thin client so
 

00:02:12.319 --> 00:02:14.559 align:start position:0%
going to discuss now is a thin client so
a<00:02:12.349><c> thin</c><00:02:12.650><c> client</c><00:02:12.950><c> isn't</c><00:02:13.700><c> checking</c><00:02:14.360><c> the</c>

00:02:14.559 --> 00:02:14.569 align:start position:0%
a thin client isn't checking the
 

00:02:14.569 --> 00:02:17.199 align:start position:0%
a thin client isn't checking the
census<00:02:14.989><c> process</c><00:02:15.379><c> itself</c><00:02:15.709><c> but</c><00:02:15.950><c> rather</c><00:02:16.209><c> has</c>

00:02:17.199 --> 00:02:17.209 align:start position:0%
census process itself but rather has
 

00:02:17.209 --> 00:02:18.879 align:start position:0%
census process itself but rather has
somebody<00:02:17.599><c> else</c><00:02:17.840><c> do</c><00:02:18.109><c> that</c><00:02:18.140><c> checking</c><00:02:18.590><c> for</c><00:02:18.739><c> them</c>

00:02:18.879 --> 00:02:18.889 align:start position:0%
somebody else do that checking for them
 

00:02:18.889 --> 00:02:21.550 align:start position:0%
somebody else do that checking for them
and<00:02:19.159><c> checks</c><00:02:19.459><c> it</c><00:02:19.639><c> and</c><00:02:20.420><c> and</c><00:02:20.719><c> trusts</c><00:02:21.109><c> that</c><00:02:21.290><c> and</c>

00:02:21.550 --> 00:02:21.560 align:start position:0%
and checks it and and trusts that and
 

00:02:21.560 --> 00:02:23.920 align:start position:0%
and checks it and and trusts that and
then<00:02:21.739><c> can</c><00:02:22.010><c> fetch</c><00:02:22.219><c> data</c><00:02:22.489><c> about</c><00:02:22.730><c> the</c><00:02:22.879><c> chain</c><00:02:23.090><c> in</c>

00:02:23.920 --> 00:02:23.930 align:start position:0%
then can fetch data about the chain in
 

00:02:23.930 --> 00:02:25.209 align:start position:0%
then can fetch data about the chain in
the<00:02:24.079><c> same</c><00:02:24.260><c> way</c><00:02:24.409><c> that</c><00:02:24.530><c> a</c><00:02:24.590><c> light</c><00:02:24.769><c> climber</c><00:02:25.040><c> would</c>

00:02:25.209 --> 00:02:25.219 align:start position:0%
the same way that a light climber would
 

00:02:25.219 --> 00:02:29.410 align:start position:0%
the same way that a light climber would
so<00:02:25.819><c> a</c><00:02:27.099><c> light</c><00:02:28.099><c> client</c><00:02:28.459><c> has</c><00:02:28.609><c> these</c><00:02:28.790><c> security</c>

00:02:29.410 --> 00:02:29.420 align:start position:0%
so a light client has these security
 

00:02:29.420 --> 00:02:31.179 align:start position:0%
so a light client has these security
guarantees<00:02:29.870><c> so</c><00:02:30.200><c> it's</c><00:02:30.379><c> checking</c><00:02:30.920><c> the</c><00:02:31.010><c> validity</c>

00:02:31.179 --> 00:02:31.189 align:start position:0%
guarantees so it's checking the validity
 

00:02:31.189 --> 00:02:33.069 align:start position:0%
guarantees so it's checking the validity
of<00:02:31.370><c> headers</c><00:02:31.700><c> it</c><00:02:32.239><c> doesn't</c><00:02:32.629><c> check</c><00:02:32.780><c> the</c><00:02:32.959><c> validity</c>

00:02:33.069 --> 00:02:33.079 align:start position:0%
of headers it doesn't check the validity
 

00:02:33.079 --> 00:02:35.309 align:start position:0%
of headers it doesn't check the validity
of<00:02:33.319><c> state</c><00:02:33.650><c> transitions</c><00:02:34.219><c> necessarily</c><00:02:35.090><c> and</c>

00:02:35.309 --> 00:02:35.319 align:start position:0%
of state transitions necessarily and
 

00:02:35.319 --> 00:02:37.959 align:start position:0%
of state transitions necessarily and
this<00:02:36.319><c> might</c><00:02:36.530><c> leave</c><00:02:36.739><c> us</c><00:02:36.920><c> open</c><00:02:37.310><c> to</c><00:02:37.459><c> some</c><00:02:37.639><c> kind</c><00:02:37.879><c> of</c>

00:02:37.959 --> 00:02:37.969 align:start position:0%
this might leave us open to some kind of
 

00:02:37.969 --> 00:02:40.899 align:start position:0%
this might leave us open to some kind of
attacks<00:02:38.239><c> so</c><00:02:38.620><c> perhaps</c><00:02:39.620><c> a</c><00:02:39.799><c> minor</c><00:02:40.129><c> would</c>

00:02:40.899 --> 00:02:40.909 align:start position:0%
attacks so perhaps a minor would
 

00:02:40.909 --> 00:02:42.879 align:start position:0%
attacks so perhaps a minor would
introduce<00:02:41.359><c> an</c><00:02:41.510><c> invalid</c><00:02:42.109><c> state</c><00:02:42.319><c> transition</c>

00:02:42.879 --> 00:02:42.889 align:start position:0%
introduce an invalid state transition
 

00:02:42.889 --> 00:02:46.899 align:start position:0%
introduce an invalid state transition
and<00:02:44.409><c> the</c><00:02:45.409><c> thing</c><00:02:45.650><c> is</c><00:02:45.889><c> these</c><00:02:46.219><c> kinds</c><00:02:46.549><c> of</c><00:02:46.579><c> attacks</c>

00:02:46.899 --> 00:02:46.909 align:start position:0%
and the thing is these kinds of attacks
 

00:02:46.909 --> 00:02:48.789 align:start position:0%
and the thing is these kinds of attacks
are<00:02:47.120><c> not</c><00:02:47.239><c> particularly</c><00:02:47.840><c> likely</c><00:02:48.409><c> because</c><00:02:48.680><c> they</c>

00:02:48.789 --> 00:02:48.799 align:start position:0%
are not particularly likely because they
 

00:02:48.799 --> 00:02:50.979 align:start position:0%
are not particularly likely because they
have<00:02:48.919><c> to</c><00:02:49.069><c> be</c><00:02:49.189><c> first</c><00:02:49.730><c> of</c><00:02:49.849><c> all</c><00:02:49.939><c> targeted</c><00:02:50.450><c> so</c><00:02:50.900><c> you</c>

00:02:50.979 --> 00:02:50.989 align:start position:0%
have to be first of all targeted so you
 

00:02:50.989 --> 00:02:52.479 align:start position:0%
have to be first of all targeted so you
have<00:02:51.139><c> to</c><00:02:51.260><c> target</c><00:02:51.469><c> a</c><00:02:51.680><c> specific</c><00:02:52.099><c> person</c><00:02:52.459><c> and</c>

00:02:52.479 --> 00:02:52.489 align:start position:0%
have to target a specific person and
 

00:02:52.489 --> 00:02:54.550 align:start position:0%
have to target a specific person and
that's<00:02:52.669><c> because</c><00:02:53.030><c> of</c><00:02:53.209><c> the</c><00:02:53.689><c> assumption</c><00:02:54.290><c> that</c><00:02:54.319><c> we</c>

00:02:54.550 --> 00:02:54.560 align:start position:0%
that's because of the assumption that we
 

00:02:54.560 --> 00:02:58.479 align:start position:0%
that's because of the assumption that we
have<00:02:54.799><c> that</c><00:02:55.959><c> minors</c><00:02:56.959><c> will</c><00:02:57.260><c> only</c><00:02:57.469><c> build</c><00:02:57.859><c> on</c><00:02:58.280><c> top</c>

00:02:58.479 --> 00:02:58.489 align:start position:0%
have that minors will only build on top
 

00:02:58.489 --> 00:03:00.099 align:start position:0%
have that minors will only build on top
of<00:02:58.549><c> valid</c><00:02:59.180><c> blocks</c><00:02:59.389><c> or</c><00:02:59.569><c> at</c><00:02:59.659><c> least</c><00:02:59.780><c> a</c><00:02:59.930><c> majority</c>

00:03:00.099 --> 00:03:00.109 align:start position:0%
of valid blocks or at least a majority
 

00:03:00.109 --> 00:03:01.780 align:start position:0%
of valid blocks or at least a majority
of<00:03:00.590><c> minors</c><00:03:00.889><c> when</c><00:03:01.010><c> we</c><00:03:01.099><c> talk</c><00:03:01.250><c> about</c><00:03:01.370><c> the</c><00:03:01.609><c> group</c>

00:03:01.780 --> 00:03:01.790 align:start position:0%
of minors when we talk about the group
 

00:03:01.790 --> 00:03:03.250 align:start position:0%
of minors when we talk about the group
of<00:03:01.939><c> minors</c><00:03:02.269><c> as</c><00:03:02.419><c> a</c><00:03:02.449><c> whole</c><00:03:02.689><c> we</c><00:03:02.870><c> say</c><00:03:03.049><c> they're</c>

00:03:03.250 --> 00:03:03.260 align:start position:0%
of minors as a whole we say they're
 

00:03:03.260 --> 00:03:06.250 align:start position:0%
of minors as a whole we say they're
acting<00:03:03.949><c> honestly</c><00:03:04.489><c> so</c><00:03:04.969><c> they</c><00:03:05.959><c> couldn't</c>

00:03:06.250 --> 00:03:06.260 align:start position:0%
acting honestly so they couldn't
 

00:03:06.260 --> 00:03:07.899 align:start position:0%
acting honestly so they couldn't
necessarily<00:03:06.469><c> perform</c><00:03:07.250><c> this</c><00:03:07.370><c> kind</c><00:03:07.549><c> of</c><00:03:07.639><c> attack</c>

00:03:07.899 --> 00:03:07.909 align:start position:0%
necessarily perform this kind of attack
 

00:03:07.909 --> 00:03:10.390 align:start position:0%
necessarily perform this kind of attack
on<00:03:08.120><c> the</c><00:03:08.359><c> whole</c><00:03:08.629><c> network</c><00:03:09.319><c> but</c><00:03:09.769><c> on</c><00:03:09.859><c> a</c><00:03:09.889><c> specific</c>

00:03:10.390 --> 00:03:10.400 align:start position:0%
on the whole network but on a specific
 

00:03:10.400 --> 00:03:12.429 align:start position:0%
on the whole network but on a specific
targeted<00:03:10.939><c> person</c><00:03:11.150><c> they</c><00:03:11.480><c> could</c><00:03:11.719><c> if</c><00:03:12.109><c> they</c><00:03:12.290><c> took</c>

00:03:12.429 --> 00:03:12.439 align:start position:0%
targeted person they could if they took
 

00:03:12.439 --> 00:03:13.839 align:start position:0%
targeted person they could if they took
up<00:03:12.620><c> all</c><00:03:12.739><c> their</c><00:03:12.889><c> peer</c><00:03:13.099><c> slots</c><00:03:13.370><c> and</c><00:03:13.519><c> started</c>

00:03:13.839 --> 00:03:13.849 align:start position:0%
up all their peer slots and started
 

00:03:13.849 --> 00:03:16.629 align:start position:0%
up all their peer slots and started
sending<00:03:14.030><c> them</c><00:03:14.269><c> fake</c><00:03:14.480><c> headers</c><00:03:15.370><c> but</c><00:03:16.370><c> we</c><00:03:16.459><c> also</c>

00:03:16.629 --> 00:03:16.639 align:start position:0%
sending them fake headers but we also
 

00:03:16.639 --> 00:03:20.710 align:start position:0%
sending them fake headers but we also
have<00:03:17.030><c> some</c><00:03:17.540><c> kinds</c><00:03:17.959><c> of</c><00:03:19.000><c> routing</c><00:03:20.000><c> mechanisms</c>

00:03:20.710 --> 00:03:20.720 align:start position:0%
have some kinds of routing mechanisms
 

00:03:20.720 --> 00:03:22.839 align:start position:0%
have some kinds of routing mechanisms
for<00:03:21.379><c> example</c><00:03:21.680><c> something</c><00:03:21.859><c> called</c><00:03:22.159><c> K</c><00:03:22.430><c> buckets</c>

00:03:22.839 --> 00:03:22.849 align:start position:0%
for example something called K buckets
 

00:03:22.849 --> 00:03:24.550 align:start position:0%
for example something called K buckets
which<00:03:23.000><c> are</c><00:03:23.150><c> Cybil</c><00:03:23.540><c> attack</c><00:03:23.840><c> resistant</c><00:03:24.409><c> which</c>

00:03:24.550 --> 00:03:24.560 align:start position:0%
which are Cybil attack resistant which
 

00:03:24.560 --> 00:03:26.379 align:start position:0%
which are Cybil attack resistant which
means<00:03:24.769><c> that</c><00:03:24.889><c> it's</c><00:03:25.009><c> actually</c><00:03:25.400><c> if</c><00:03:25.639><c> you</c><00:03:25.939><c> have</c><00:03:25.970><c> an</c>

00:03:26.379 --> 00:03:26.389 align:start position:0%
means that it's actually if you have an
 

00:03:26.389 --> 00:03:27.819 align:start position:0%
means that it's actually if you have an
established<00:03:26.629><c> peer</c><00:03:27.139><c> slot</c><00:03:27.409><c> it's</c><00:03:27.620><c> very</c>

00:03:27.819 --> 00:03:27.829 align:start position:0%
established peer slot it's very
 

00:03:27.829 --> 00:03:30.490 align:start position:0%
established peer slot it's very
difficult<00:03:28.280><c> for</c><00:03:28.699><c> an</c><00:03:29.540><c> attacker</c><00:03:29.840><c> to</c><00:03:29.959><c> fill</c><00:03:30.349><c> up</c>

00:03:30.490 --> 00:03:30.500 align:start position:0%
difficult for an attacker to fill up
 

00:03:30.500 --> 00:03:32.649 align:start position:0%
difficult for an attacker to fill up
those<00:03:30.739><c> peer</c><00:03:31.009><c> slots</c><00:03:31.280><c> and</c><00:03:31.459><c> push</c><00:03:31.699><c> your</c><00:03:31.879><c> valid</c>

00:03:32.649 --> 00:03:32.659 align:start position:0%
those peer slots and push your valid
 

00:03:32.659 --> 00:03:36.009 align:start position:0%
those peer slots and push your valid
peers<00:03:32.930><c> out</c><00:03:33.129><c> so</c><00:03:34.129><c> I</c><00:03:34.459><c> would</c><00:03:34.849><c> say</c><00:03:35.150><c> light</c><00:03:35.540><c> clients</c>

00:03:36.009 --> 00:03:36.019 align:start position:0%
peers out so I would say light clients
 

00:03:36.019 --> 00:03:39.039 align:start position:0%
peers out so I would say light clients
are<00:03:36.169><c> very</c><00:03:36.439><c> useful</c><00:03:36.919><c> for</c><00:03:36.949><c> low</c><00:03:37.400><c> value</c><00:03:38.090><c> or</c><00:03:38.449><c> medium</c>

00:03:39.039 --> 00:03:39.049 align:start position:0%
are very useful for low value or medium
 

00:03:39.049 --> 00:03:42.030 align:start position:0%
are very useful for low value or medium
value<00:03:39.319><c> use</c><00:03:40.189><c> cases</c><00:03:40.459><c> but</c><00:03:41.120><c> of</c><00:03:41.239><c> course</c><00:03:41.509><c> if</c><00:03:41.750><c> you're</c>

00:03:42.030 --> 00:03:42.040 align:start position:0%
value use cases but of course if you're
 

00:03:42.040 --> 00:03:43.960 align:start position:0%
value use cases but of course if you're
transacting<00:03:43.040><c> millions</c><00:03:43.459><c> of</c><00:03:43.609><c> dollars</c><00:03:43.939><c> you</c>

00:03:43.960 --> 00:03:43.970 align:start position:0%
transacting millions of dollars you
 

00:03:43.970 --> 00:03:45.819 align:start position:0%
transacting millions of dollars you
would<00:03:44.239><c> probably</c><00:03:44.689><c> want</c><00:03:44.900><c> to</c><00:03:44.959><c> have</c><00:03:45.169><c> the</c><00:03:45.409><c> security</c>

00:03:45.819 --> 00:03:45.829 align:start position:0%
would probably want to have the security
 

00:03:45.829 --> 00:03:49.270 align:start position:0%
would probably want to have the security
of<00:03:46.159><c> a</c><00:03:46.579><c> full</c><00:03:46.790><c> node</c><00:03:46.970><c> because</c><00:03:47.299><c> that</c><00:03:47.479><c> would</c><00:03:48.280><c> that</c>

00:03:49.270 --> 00:03:49.280 align:start position:0%
of a full node because that would that
 

00:03:49.280 --> 00:03:51.039 align:start position:0%
of a full node because that would that
kind<00:03:49.400><c> of</c><00:03:49.579><c> activity</c><00:03:49.849><c> would</c><00:03:50.180><c> leave</c><00:03:50.659><c> you</c><00:03:50.840><c> maybe</c>

00:03:51.039 --> 00:03:51.049 align:start position:0%
kind of activity would leave you maybe
 

00:03:51.049 --> 00:03:54.159 align:start position:0%
kind of activity would leave you maybe
open<00:03:51.409><c> to</c><00:03:51.530><c> attack</c><00:03:52.269><c> and</c><00:03:53.269><c> those</c><00:03:53.810><c> kinds</c><00:03:54.079><c> of</c>

00:03:54.159 --> 00:03:54.169 align:start position:0%
open to attack and those kinds of
 

00:03:54.169 --> 00:03:56.170 align:start position:0%
open to attack and those kinds of
attacks<00:03:54.409><c> just</c><00:03:54.680><c> to</c><00:03:54.859><c> clarify</c><00:03:55.099><c> are</c><00:03:55.669><c> really</c><00:03:55.970><c> just</c>

00:03:56.170 --> 00:03:56.180 align:start position:0%
attacks just to clarify are really just
 

00:03:56.180 --> 00:04:00.520 align:start position:0%
attacks just to clarify are really just
about<00:03:58.569><c> tricking</c><00:03:59.569><c> a</c><00:03:59.659><c> user</c><00:03:59.900><c> into</c><00:04:00.199><c> taking</c>

00:04:00.520 --> 00:04:00.530 align:start position:0%
about tricking a user into taking
 

00:04:00.530 --> 00:04:02.110 align:start position:0%
about tricking a user into taking
different<00:04:00.709><c> kinds</c><00:04:01.159><c> of</c><00:04:01.250><c> actions</c><00:04:01.669><c> based</c><00:04:01.879><c> on</c>

00:04:02.110 --> 00:04:02.120 align:start position:0%
different kinds of actions based on
 

00:04:02.120 --> 00:04:05.170 align:start position:0%
different kinds of actions based on
showing<00:04:02.419><c> them</c><00:04:02.689><c> a</c><00:04:02.900><c> wrong</c><00:04:03.290><c> state</c><00:04:03.709><c> so</c><00:04:04.370><c> they</c><00:04:04.939><c> can't</c>

00:04:05.170 --> 00:04:05.180 align:start position:0%
showing them a wrong state so they can't
 

00:04:05.180 --> 00:04:07.209 align:start position:0%
showing them a wrong state so they can't
actually<00:04:05.419><c> steal</c><00:04:06.259><c> money</c><00:04:06.500><c> from</c><00:04:06.829><c> them</c><00:04:06.979><c> without</c>

00:04:07.209 --> 00:04:07.219 align:start position:0%
actually steal money from them without
 

00:04:07.219 --> 00:04:10.449 align:start position:0%
actually steal money from them without
the<00:04:07.310><c> user</c><00:04:07.489><c> taking</c><00:04:07.849><c> action</c><00:04:08.209><c> themselves</c><00:04:09.219><c> so</c><00:04:10.219><c> we</c>

00:04:10.449 --> 00:04:10.459 align:start position:0%
the user taking action themselves so we
 

00:04:10.459 --> 00:04:13.270 align:start position:0%
the user taking action themselves so we
have<00:04:10.579><c> some</c><00:04:10.759><c> network</c><00:04:11.030><c> protocol</c><00:04:11.539><c> goals</c><00:04:12.189><c> so</c><00:04:13.189><c> the</c>

00:04:13.270 --> 00:04:13.280 align:start position:0%
have some network protocol goals so the
 

00:04:13.280 --> 00:04:15.610 align:start position:0%
have some network protocol goals so the
first<00:04:13.519><c> would</c><00:04:13.849><c> be</c><00:04:13.879><c> to</c><00:04:14.269><c> minimize</c><00:04:14.780><c> round</c><00:04:15.319><c> trips</c>

00:04:15.610 --> 00:04:15.620 align:start position:0%
first would be to minimize round trips
 

00:04:15.620 --> 00:04:17.110 align:start position:0%
first would be to minimize round trips
in<00:04:15.769><c> bandwidth</c><00:04:16.130><c> because</c><00:04:16.400><c> in</c><00:04:16.519><c> a</c><00:04:16.579><c> light</c><00:04:16.729><c> client</c>

00:04:17.110 --> 00:04:17.120 align:start position:0%
in bandwidth because in a light client
 

00:04:17.120 --> 00:04:20.140 align:start position:0%
in bandwidth because in a light client
you<00:04:17.509><c> are</c><00:04:17.799><c> requesting</c><00:04:18.799><c> data</c><00:04:19.039><c> from</c><00:04:19.219><c> your</c><00:04:19.820><c> peers</c>

00:04:20.140 --> 00:04:20.150 align:start position:0%
you are requesting data from your peers
 

00:04:20.150 --> 00:04:21.759 align:start position:0%
you are requesting data from your peers
and<00:04:20.299><c> if</c><00:04:20.780><c> you</c><00:04:20.870><c> want</c><00:04:21.049><c> to</c><00:04:21.109><c> run</c><00:04:21.199><c> this</c><00:04:21.289><c> on</c><00:04:21.440><c> a</c><00:04:21.500><c> mobile</c>

00:04:21.759 --> 00:04:21.769 align:start position:0%
and if you want to run this on a mobile
 

00:04:21.769 --> 00:04:23.850 align:start position:0%
and if you want to run this on a mobile
device<00:04:22.310><c> or</c><00:04:22.610><c> on</c><00:04:22.639><c> low</c><00:04:22.880><c> bandwidth</c>

00:04:23.850 --> 00:04:23.860 align:start position:0%
device or on low bandwidth
 

00:04:23.860 --> 00:04:25.530 align:start position:0%
device or on low bandwidth
you<00:04:24.040><c> need</c><00:04:24.190><c> to</c><00:04:24.310><c> minimize</c><00:04:24.790><c> those</c><00:04:25.030><c> round</c><00:04:25.270><c> trips</c>

00:04:25.530 --> 00:04:25.540 align:start position:0%
you need to minimize those round trips
 

00:04:25.540 --> 00:04:27.990 align:start position:0%
you need to minimize those round trips
you<00:04:25.660><c> want</c><00:04:25.810><c> to</c><00:04:25.870><c> reduce</c><00:04:26.169><c> that</c><00:04:26.410><c> latency</c><00:04:26.830><c> we</c><00:04:27.790><c> also</c>

00:04:27.990 --> 00:04:28.000 align:start position:0%
you want to reduce that latency we also
 

00:04:28.000 --> 00:04:30.060 align:start position:0%
you want to reduce that latency we also
want<00:04:28.360><c> provable</c><00:04:29.080><c> data</c><00:04:29.320><c> which</c><00:04:29.590><c> means</c><00:04:29.800><c> that</c><00:04:29.979><c> you</c>

00:04:30.060 --> 00:04:30.070 align:start position:0%
want provable data which means that you
 

00:04:30.070 --> 00:04:32.670 align:start position:0%
want provable data which means that you
don't<00:04:30.340><c> rely</c><00:04:31.030><c> on</c><00:04:31.090><c> any</c><00:04:31.449><c> more</c><00:04:31.870><c> trust</c><00:04:32.139><c> assumption</c>

00:04:32.670 --> 00:04:32.680 align:start position:0%
don't rely on any more trust assumption
 

00:04:32.680 --> 00:04:35.340 align:start position:0%
don't rely on any more trust assumption
then<00:04:33.310><c> the</c><00:04:33.520><c> fact</c><00:04:33.729><c> that</c><00:04:33.820><c> miners</c><00:04:34.360><c> are</c><00:04:34.570><c> updating</c>

00:04:35.340 --> 00:04:35.350 align:start position:0%
then the fact that miners are updating
 

00:04:35.350 --> 00:04:37.830 align:start position:0%
then the fact that miners are updating
state<00:04:35.560><c> transitions</c><00:04:36.070><c> correctly</c><00:04:36.639><c> and</c><00:04:36.880><c> of</c>

00:04:37.830 --> 00:04:37.840 align:start position:0%
state transitions correctly and of
 

00:04:37.840 --> 00:04:40.350 align:start position:0%
state transitions correctly and of
course<00:04:38.139><c> we</c><00:04:38.740><c> have</c><00:04:38.919><c> full</c><00:04:39.310><c> clients</c><00:04:39.970><c> who</c><00:04:40.330><c> are</c>

00:04:40.350 --> 00:04:40.360 align:start position:0%
course we have full clients who are
 

00:04:40.360 --> 00:04:42.120 align:start position:0%
course we have full clients who are
serving<00:04:41.050><c> the</c><00:04:41.169><c> light</c><00:04:41.350><c> nodes</c><00:04:41.620><c> over</c><00:04:41.830><c> the</c><00:04:41.979><c> network</c>

00:04:42.120 --> 00:04:42.130 align:start position:0%
serving the light nodes over the network
 

00:04:42.130 --> 00:04:44.670 align:start position:0%
serving the light nodes over the network
and<00:04:42.370><c> we</c><00:04:42.820><c> don't</c><00:04:43.030><c> want</c><00:04:43.210><c> these</c><00:04:43.360><c> guys</c><00:04:43.600><c> to</c><00:04:43.660><c> get</c><00:04:44.169><c> dust</c>

00:04:44.670 --> 00:04:44.680 align:start position:0%
and we don't want these guys to get dust
 

00:04:44.680 --> 00:04:46.230 align:start position:0%
and we don't want these guys to get dust
we<00:04:44.949><c> don't</c><00:04:45.100><c> want</c><00:04:45.220><c> them</c><00:04:45.340><c> to</c><00:04:45.460><c> get</c><00:04:45.550><c> overloaded</c><00:04:45.970><c> we</c>

00:04:46.230 --> 00:04:46.240 align:start position:0%
we don't want them to get overloaded we
 

00:04:46.240 --> 00:04:48.450 align:start position:0%
we don't want them to get overloaded we
need<00:04:46.360><c> a</c><00:04:46.419><c> sensible</c><00:04:47.050><c> way</c><00:04:47.229><c> to</c><00:04:47.500><c> meter</c><00:04:48.190><c> the</c>

00:04:48.450 --> 00:04:48.460 align:start position:0%
need a sensible way to meter the
 

00:04:48.460 --> 00:04:50.550 align:start position:0%
need a sensible way to meter the
requests<00:04:48.880><c> that</c><00:04:48.970><c> are</c><00:04:49.030><c> being</c><00:04:49.240><c> made</c><00:04:49.449><c> to</c><00:04:49.660><c> them</c><00:04:49.780><c> so</c>

00:04:50.550 --> 00:04:50.560 align:start position:0%
requests that are being made to them so
 

00:04:50.560 --> 00:04:51.960 align:start position:0%
requests that are being made to them so
in<00:04:50.949><c> the</c><00:04:51.100><c> next</c><00:04:51.250><c> section</c><00:04:51.460><c> I'm</c><00:04:51.699><c> going</c><00:04:51.910><c> to</c>

00:04:51.960 --> 00:04:51.970 align:start position:0%
in the next section I'm going to
 

00:04:51.970 --> 00:04:53.670 align:start position:0%
in the next section I'm going to
basically<00:04:52.120><c> discuss</c><00:04:52.750><c> a</c><00:04:52.960><c> few</c><00:04:53.259><c> of</c><00:04:53.380><c> the</c><00:04:53.500><c> tools</c>

00:04:53.670 --> 00:04:53.680 align:start position:0%
basically discuss a few of the tools
 

00:04:53.680 --> 00:04:57.629 align:start position:0%
basically discuss a few of the tools
that<00:04:53.889><c> we</c><00:04:54.100><c> use</c><00:04:54.300><c> to</c><00:04:55.300><c> achieve</c><00:04:55.449><c> this</c><00:04:56.280><c> so</c><00:04:57.280><c> the</c><00:04:57.490><c> first</c>

00:04:57.629 --> 00:04:57.639 align:start position:0%
that we use to achieve this so the first
 

00:04:57.639 --> 00:05:01.230 align:start position:0%
that we use to achieve this so the first
is<00:04:57.820><c> back</c><00:04:58.000><c> referencing</c><00:04:59.610><c> when</c><00:05:00.610><c> you</c><00:05:00.760><c> make</c><00:05:00.970><c> a</c>

00:05:01.230 --> 00:05:01.240 align:start position:0%
is back referencing when you make a
 

00:05:01.240 --> 00:05:06.290 align:start position:0%
is back referencing when you make a
network<00:05:02.080><c> request</c><00:05:02.880><c> what</c><00:05:03.880><c> you</c><00:05:04.000><c> can</c><00:05:04.180><c> do</c><00:05:04.360><c> is</c><00:05:05.100><c> put</c>

00:05:06.290 --> 00:05:06.300 align:start position:0%
network request what you can do is put
 

00:05:06.300 --> 00:05:09.620 align:start position:0%
network request what you can do is put
multiple<00:05:07.300><c> requests</c><00:05:07.810><c> in</c><00:05:07.960><c> the</c><00:05:08.020><c> same</c><00:05:08.320><c> packet</c><00:05:08.770><c> but</c>

00:05:09.620 --> 00:05:09.630 align:start position:0%
multiple requests in the same packet but
 

00:05:09.630 --> 00:05:12.360 align:start position:0%
multiple requests in the same packet but
further<00:05:10.630><c> requests</c><00:05:11.289><c> in</c><00:05:11.380><c> the</c><00:05:11.410><c> packet</c><00:05:11.830><c> can</c><00:05:12.039><c> rely</c>

00:05:12.360 --> 00:05:12.370 align:start position:0%
further requests in the packet can rely
 

00:05:12.370 --> 00:05:14.580 align:start position:0%
further requests in the packet can rely
on<00:05:12.400><c> unresolved</c><00:05:13.240><c> outputs</c><00:05:13.930><c> of</c><00:05:14.139><c> the</c><00:05:14.320><c> prior</c>

00:05:14.580 --> 00:05:14.590 align:start position:0%
on unresolved outputs of the prior
 

00:05:14.590 --> 00:05:16.650 align:start position:0%
on unresolved outputs of the prior
requests<00:05:15.039><c> so</c><00:05:15.550><c> for</c><00:05:15.699><c> example</c><00:05:16.030><c> you</c><00:05:16.120><c> can</c><00:05:16.240><c> say</c><00:05:16.419><c> I</c>

00:05:16.650 --> 00:05:16.660 align:start position:0%
requests so for example you can say I
 

00:05:16.660 --> 00:05:18.930 align:start position:0%
requests so for example you can say I
have<00:05:17.320><c> a</c><00:05:17.349><c> block</c><00:05:17.620><c> number</c><00:05:18.039><c> and</c><00:05:18.190><c> I</c><00:05:18.340><c> want</c><00:05:18.610><c> to</c><00:05:18.729><c> get</c>

00:05:18.930 --> 00:05:18.940 align:start position:0%
have a block number and I want to get
 

00:05:18.940 --> 00:05:21.180 align:start position:0%
have a block number and I want to get
the<00:05:19.360><c> header</c><00:05:19.599><c> for</c><00:05:19.870><c> that</c><00:05:20.020><c> block</c><00:05:20.260><c> but</c><00:05:20.530><c> once</c><00:05:21.039><c> I</c>

00:05:21.180 --> 00:05:21.190 align:start position:0%
the header for that block but once I
 

00:05:21.190 --> 00:05:23.129 align:start position:0%
the header for that block but once I
have<00:05:21.400><c> the</c><00:05:21.610><c> header</c><00:05:21.789><c> for</c><00:05:21.970><c> that</c><00:05:22.120><c> block</c><00:05:22.389><c> I</c><00:05:22.630><c> want</c>

00:05:23.129 --> 00:05:23.139 align:start position:0%
have the header for that block I want
 

00:05:23.139 --> 00:05:25.230 align:start position:0%
have the header for that block I want
the<00:05:23.320><c> state</c><00:05:23.919><c> of</c><00:05:24.099><c> this</c><00:05:24.250><c> account</c><00:05:24.550><c> at</c><00:05:24.849><c> that</c><00:05:25.030><c> block</c>

00:05:25.230 --> 00:05:25.240 align:start position:0%
the state of this account at that block
 

00:05:25.240 --> 00:05:27.270 align:start position:0%
the state of this account at that block
and<00:05:25.570><c> once</c><00:05:25.870><c> I</c><00:05:25.990><c> have</c><00:05:26.199><c> that</c><00:05:26.440><c> account</c><00:05:26.710><c> I'd</c><00:05:26.949><c> like</c><00:05:27.130><c> to</c>

00:05:27.270 --> 00:05:27.280 align:start position:0%
and once I have that account I'd like to
 

00:05:27.280 --> 00:05:29.790 align:start position:0%
and once I have that account I'd like to
inspect<00:05:27.400><c> some</c><00:05:27.820><c> of</c><00:05:27.940><c> its</c><00:05:28.060><c> storage</c><00:05:28.360><c> and</c><00:05:28.650><c> this</c><00:05:29.650><c> is</c>

00:05:29.790 --> 00:05:29.800 align:start position:0%
inspect some of its storage and this is
 

00:05:29.800 --> 00:05:31.140 align:start position:0%
inspect some of its storage and this is
actually<00:05:30.070><c> very</c><00:05:30.099><c> powerful</c><00:05:30.610><c> tool</c><00:05:30.760><c> because</c><00:05:31.030><c> we</c>

00:05:31.140 --> 00:05:31.150 align:start position:0%
actually very powerful tool because we
 

00:05:31.150 --> 00:05:34.050 align:start position:0%
actually very powerful tool because we
can<00:05:31.300><c> express</c><00:05:31.840><c> very</c><00:05:32.169><c> fluid</c><00:05:32.800><c> kinds</c><00:05:33.490><c> of</c><00:05:33.580><c> requests</c>

00:05:34.050 --> 00:05:34.060 align:start position:0%
can express very fluid kinds of requests
 

00:05:34.060 --> 00:05:36.480 align:start position:0%
can express very fluid kinds of requests
in<00:05:34.210><c> a</c><00:05:34.599><c> single</c><00:05:35.139><c> round-trip</c><00:05:35.979><c> to</c><00:05:36.099><c> the</c><00:05:36.130><c> network</c>

00:05:36.480 --> 00:05:36.490 align:start position:0%
in a single round-trip to the network
 

00:05:36.490 --> 00:05:38.760 align:start position:0%
in a single round-trip to the network
which<00:05:36.639><c> means</c><00:05:36.880><c> that</c><00:05:37.449><c> the</c><00:05:37.990><c> response</c><00:05:38.410><c> time</c><00:05:38.650><c> of</c>

00:05:38.760 --> 00:05:38.770 align:start position:0%
which means that the response time of
 

00:05:38.770 --> 00:05:39.810 align:start position:0%
which means that the response time of
the<00:05:38.860><c> light</c><00:05:39.010><c> client</c><00:05:39.280><c> is</c><00:05:39.370><c> going</c><00:05:39.520><c> to</c><00:05:39.610><c> be</c><00:05:39.669><c> much</c>

00:05:39.810 --> 00:05:39.820 align:start position:0%
the light client is going to be much
 

00:05:39.820 --> 00:05:45.050 align:start position:0%
the light client is going to be much
lower<00:05:41.760><c> another</c><00:05:42.760><c> tool</c><00:05:43.360><c> that</c><00:05:43.389><c> we</c><00:05:43.599><c> have</c><00:05:43.690><c> is</c>

00:05:45.050 --> 00:05:45.060 align:start position:0%
lower another tool that we have is
 

00:05:45.060 --> 00:05:47.430 align:start position:0%
lower another tool that we have is
mostly<00:05:46.060><c> useful</c><00:05:46.300><c> for</c><00:05:46.840><c> doing</c><00:05:46.930><c> things</c><00:05:47.289><c> like</c>

00:05:47.430 --> 00:05:47.440 align:start position:0%
mostly useful for doing things like
 

00:05:47.440 --> 00:05:50.550 align:start position:0%
mostly useful for doing things like
checking<00:05:48.370><c> the</c><00:05:48.940><c> result</c><00:05:49.810><c> of</c><00:05:50.080><c> a</c><00:05:50.139><c> transaction</c>

00:05:50.550 --> 00:05:50.560 align:start position:0%
checking the result of a transaction
 

00:05:50.560 --> 00:05:53.700 align:start position:0%
checking the result of a transaction
execution<00:05:50.979><c> on</c><00:05:51.639><c> the</c><00:05:51.970><c> light</c><00:05:52.120><c> client</c><00:05:52.680><c> which</c><00:05:53.680><c> is</c>

00:05:53.700 --> 00:05:53.710 align:start position:0%
execution on the light client which is
 

00:05:53.710 --> 00:05:55.740 align:start position:0%
execution on the light client which is
that<00:05:54.010><c> what</c><00:05:54.639><c> you</c><00:05:54.760><c> could</c><00:05:54.970><c> do</c><00:05:55.120><c> is</c><00:05:55.300><c> start</c><00:05:55.570><c> to</c>

00:05:55.740 --> 00:05:55.750 align:start position:0%
that what you could do is start to
 

00:05:55.750 --> 00:05:57.899 align:start position:0%
that what you could do is start to
execute<00:05:56.110><c> the</c><00:05:56.800><c> code</c><00:05:56.979><c> so</c><00:05:57.250><c> you</c><00:05:57.310><c> fetch</c><00:05:57.639><c> the</c><00:05:57.699><c> code</c>

00:05:57.899 --> 00:05:57.909 align:start position:0%
execute the code so you fetch the code
 

00:05:57.909 --> 00:05:59.700 align:start position:0%
execute the code so you fetch the code
from<00:05:58.120><c> the</c><00:05:58.240><c> network</c><00:05:58.539><c> and</c><00:05:58.750><c> then</c><00:05:59.260><c> you</c><00:05:59.470><c> see</c><00:05:59.680><c> that</c>

00:05:59.700 --> 00:05:59.710 align:start position:0%
from the network and then you see that
 

00:05:59.710 --> 00:06:01.529 align:start position:0%
from the network and then you see that
the<00:05:59.979><c> code</c><00:06:00.190><c> execution</c><00:06:00.669><c> needs</c><00:06:00.970><c> to</c><00:06:01.150><c> get</c><00:06:01.300><c> some</c>

00:06:01.529 --> 00:06:01.539 align:start position:0%
the code execution needs to get some
 

00:06:01.539 --> 00:06:03.480 align:start position:0%
the code execution needs to get some
account<00:06:01.840><c> so</c><00:06:02.199><c> we</c><00:06:02.320><c> go</c><00:06:02.440><c> one</c><00:06:02.710><c> round-trip</c><00:06:02.979><c> to</c><00:06:03.340><c> get</c>

00:06:03.480 --> 00:06:03.490 align:start position:0%
account so we go one round-trip to get
 

00:06:03.490 --> 00:06:05.520 align:start position:0%
account so we go one round-trip to get
that<00:06:03.639><c> account</c><00:06:03.880><c> and</c><00:06:04.150><c> then</c><00:06:04.599><c> back</c><00:06:04.780><c> executable</c>

00:06:05.520 --> 00:06:05.530 align:start position:0%
that account and then back executable
 

00:06:05.530 --> 00:06:07.379 align:start position:0%
that account and then back executable
further<00:06:05.800><c> and</c><00:06:06.099><c> we</c><00:06:06.460><c> get</c><00:06:06.610><c> some</c><00:06:06.820><c> more</c><00:06:06.940><c> data</c><00:06:07.180><c> from</c>

00:06:07.379 --> 00:06:07.389 align:start position:0%
further and we get some more data from
 

00:06:07.389 --> 00:06:10.080 align:start position:0%
further and we get some more data from
the<00:06:07.479><c> state</c><00:06:07.750><c> and</c><00:06:07.990><c> you</c><00:06:08.500><c> see</c><00:06:08.710><c> that</c><00:06:08.919><c> over</c><00:06:09.190><c> time</c>

00:06:10.080 --> 00:06:10.090 align:start position:0%
the state and you see that over time
 

00:06:10.090 --> 00:06:11.909 align:start position:0%
the state and you see that over time
we're<00:06:10.330><c> jumping</c><00:06:10.750><c> back</c><00:06:10.960><c> and</c><00:06:10.990><c> forth</c><00:06:11.260><c> into</c><00:06:11.830><c> the</c>

00:06:11.909 --> 00:06:11.919 align:start position:0%
we're jumping back and forth into the
 

00:06:11.919 --> 00:06:13.830 align:start position:0%
we're jumping back and forth into the
network<00:06:12.220><c> just</c><00:06:12.430><c> to</c><00:06:12.610><c> execute</c><00:06:13.090><c> that</c><00:06:13.120><c> transaction</c>

00:06:13.830 --> 00:06:13.840 align:start position:0%
network just to execute that transaction
 

00:06:13.840 --> 00:06:15.779 align:start position:0%
network just to execute that transaction
and<00:06:13.930><c> see</c><00:06:14.110><c> what</c><00:06:14.260><c> the</c><00:06:14.409><c> result</c><00:06:15.010><c> would</c><00:06:15.099><c> be</c><00:06:15.250><c> but</c>

00:06:15.779 --> 00:06:15.789 align:start position:0%
and see what the result would be but
 

00:06:15.789 --> 00:06:18.810 align:start position:0%
and see what the result would be but
rather<00:06:16.110><c> what</c><00:06:17.110><c> we</c><00:06:17.139><c> can</c><00:06:17.409><c> do</c><00:06:17.590><c> is</c><00:06:17.889><c> get</c><00:06:18.159><c> a</c><00:06:18.340><c> full</c>

00:06:18.810 --> 00:06:18.820 align:start position:0%
rather what we can do is get a full
 

00:06:18.820 --> 00:06:22.740 align:start position:0%
rather what we can do is get a full
subset<00:06:19.570><c> the</c><00:06:20.560><c> subset</c><00:06:21.070><c> of</c><00:06:21.220><c> the</c><00:06:21.639><c> state</c><00:06:21.940><c> tree</c><00:06:22.360><c> so</c>

00:06:22.740 --> 00:06:22.750 align:start position:0%
subset the subset of the state tree so
 

00:06:22.750 --> 00:06:25.560 align:start position:0%
subset the subset of the state tree so
the<00:06:22.840><c> state</c><00:06:23.050><c> is</c><00:06:23.199><c> stored</c><00:06:23.409><c> in</c><00:06:23.500><c> a</c><00:06:23.560><c> tree</c><00:06:24.389><c> which</c><00:06:25.389><c> is</c>

00:06:25.560 --> 00:06:25.570 align:start position:0%
the state is stored in a tree which is
 

00:06:25.570 --> 00:06:27.689 align:start position:0%
the state is stored in a tree which is
necessary<00:06:26.199><c> to</c><00:06:26.380><c> execute</c><00:06:26.680><c> that</c><00:06:26.889><c> transaction</c>

00:06:27.689 --> 00:06:27.699 align:start position:0%
necessary to execute that transaction
 

00:06:27.699 --> 00:06:31.890 align:start position:0%
necessary to execute that transaction
fully<00:06:27.960><c> so</c><00:06:28.960><c> if</c><00:06:29.289><c> you</c><00:06:29.590><c> are</c><00:06:30.010><c> a</c><00:06:30.280><c> client</c><00:06:31.270><c> writer</c><00:06:31.659><c> on</c><00:06:31.870><c> a</c>

00:06:31.890 --> 00:06:31.900 align:start position:0%
fully so if you are a client writer on a
 

00:06:31.900 --> 00:06:34.600 align:start position:0%
fully so if you are a client writer on a
on<00:06:32.260><c> a</c><00:06:32.289><c> if</c><00:06:32.560><c> you're</c><00:06:32.800><c> a</c><00:06:32.860><c> adapt</c><00:06:33.520><c> writer</c>

00:06:34.600 --> 00:06:34.610 align:start position:0%
on a if you're a adapt writer
 

00:06:34.610 --> 00:06:35.800 align:start position:0%
on a if you're a adapt writer
for<00:06:34.789><c> the</c><00:06:34.849><c> light</c><00:06:35.000><c> clan</c><00:06:35.240><c> and</c><00:06:35.479><c> you're</c><00:06:35.569><c> calling</c>

00:06:35.800 --> 00:06:35.810 align:start position:0%
for the light clan and you're calling
 

00:06:35.810 --> 00:06:38.200 align:start position:0%
for the light clan and you're calling
this<00:06:36.020><c> eath</c><00:06:36.289><c> underscore</c><00:06:36.830><c> call</c><00:06:37.129><c> RPC</c><00:06:37.759><c> to</c><00:06:37.939><c> see</c>

00:06:38.200 --> 00:06:38.210 align:start position:0%
this eath underscore call RPC to see
 

00:06:38.210 --> 00:06:39.879 align:start position:0%
this eath underscore call RPC to see
what<00:06:38.419><c> the</c><00:06:38.509><c> output</c><00:06:38.659><c> of</c><00:06:39.020><c> some</c><00:06:39.349><c> transaction</c>

00:06:39.879 --> 00:06:39.889 align:start position:0%
what the output of some transaction
 

00:06:39.889 --> 00:06:42.700 align:start position:0%
what the output of some transaction
would<00:06:40.039><c> be</c><00:06:40.569><c> this</c><00:06:41.569><c> can</c><00:06:41.870><c> be</c><00:06:42.169><c> resolved</c><00:06:42.530><c> in</c><00:06:42.620><c> a</c>

00:06:42.700 --> 00:06:42.710 align:start position:0%
would be this can be resolved in a
 

00:06:42.710 --> 00:06:44.679 align:start position:0%
would be this can be resolved in a
single<00:06:43.219><c> round</c><00:06:43.400><c> trip</c><00:06:43.669><c> on</c><00:06:43.879><c> the</c><00:06:44.030><c> light</c><00:06:44.180><c> plant</c><00:06:44.509><c> as</c>

00:06:44.679 --> 00:06:44.689 align:start position:0%
single round trip on the light plant as
 

00:06:44.689 --> 00:06:47.140 align:start position:0%
single round trip on the light plant as
opposed<00:06:45.379><c> to</c><00:06:45.620><c> many</c><00:06:45.919><c> and</c><00:06:46.219><c> it's</c><00:06:46.699><c> unpredictable</c>

00:06:47.140 --> 00:06:47.150 align:start position:0%
opposed to many and it's unpredictable
 

00:06:47.150 --> 00:06:49.209 align:start position:0%
opposed to many and it's unpredictable
actually<00:06:47.870><c> what</c><00:06:48.110><c> kinds</c><00:06:48.500><c> of</c><00:06:48.590><c> data</c><00:06:48.740><c> are</c><00:06:48.979><c> going</c><00:06:49.129><c> to</c>

00:06:49.209 --> 00:06:49.219 align:start position:0%
actually what kinds of data are going to
 

00:06:49.219 --> 00:06:51.939 align:start position:0%
actually what kinds of data are going to
be<00:06:49.280><c> requested</c><00:06:49.849><c> even</c><00:06:50.030><c> if</c><00:06:50.870><c> the</c><00:06:51.080><c> contract</c><00:06:51.439><c> state</c>

00:06:51.939 --> 00:06:51.949 align:start position:0%
be requested even if the contract state
 

00:06:51.949 --> 00:06:55.029 align:start position:0%
be requested even if the contract state
itself<00:06:52.610><c> has</c><00:06:52.909><c> not</c><00:06:53.090><c> changed</c><00:06:53.590><c> so</c><00:06:54.590><c> another</c><00:06:54.830><c> thing</c>

00:06:55.029 --> 00:06:55.039 align:start position:0%
itself has not changed so another thing
 

00:06:55.039 --> 00:06:56.920 align:start position:0%
itself has not changed so another thing
we're<00:06:55.189><c> looking</c><00:06:55.430><c> into</c><00:06:55.759><c> is</c><00:06:55.939><c> ways</c><00:06:56.180><c> of</c><00:06:56.419><c> expressing</c>

00:06:56.920 --> 00:06:56.930 align:start position:0%
we're looking into is ways of expressing
 

00:06:56.930 --> 00:06:59.379 align:start position:0%
we're looking into is ways of expressing
that<00:06:57.620><c> a</c><00:06:57.650><c> contract</c><00:06:58.189><c> in</c><00:06:58.370><c> fact</c><00:06:58.639><c> doesn't</c><00:06:59.060><c> do</c>

00:06:59.379 --> 00:06:59.389 align:start position:0%
that a contract in fact doesn't do
 

00:06:59.389 --> 00:07:01.390 align:start position:0%
that a contract in fact doesn't do
things<00:06:59.629><c> like</c><00:06:59.810><c> branch</c><00:07:00.439><c> on</c><00:07:00.710><c> the</c><00:07:00.800><c> amount</c><00:07:01.039><c> of</c><00:07:01.189><c> gas</c>

00:07:01.390 --> 00:07:01.400 align:start position:0%
things like branch on the amount of gas
 

00:07:01.400 --> 00:07:03.939 align:start position:0%
things like branch on the amount of gas
provided<00:07:01.909><c> to</c><00:07:02.090><c> the</c><00:07:02.180><c> transaction</c><00:07:02.900><c> and</c><00:07:03.319><c> that</c><00:07:03.860><c> we</c>

00:07:03.939 --> 00:07:03.949 align:start position:0%
provided to the transaction and that we
 

00:07:03.949 --> 00:07:06.010 align:start position:0%
provided to the transaction and that we
can<00:07:04.129><c> prove</c><00:07:04.460><c> that</c><00:07:04.699><c> if</c><00:07:04.939><c> this</c><00:07:05.120><c> contract</c><00:07:05.419><c> state</c>

00:07:06.010 --> 00:07:06.020 align:start position:0%
can prove that if this contract state
 

00:07:06.020 --> 00:07:08.080 align:start position:0%
can prove that if this contract state
itself<00:07:06.319><c> has</c><00:07:06.530><c> not</c><00:07:06.680><c> changed</c><00:07:07.099><c> that</c><00:07:07.520><c> the</c><00:07:07.639><c> output</c>

00:07:08.080 --> 00:07:08.090 align:start position:0%
itself has not changed that the output
 

00:07:08.090 --> 00:07:09.399 align:start position:0%
itself has not changed that the output
will<00:07:08.120><c> always</c><00:07:08.389><c> be</c><00:07:08.690><c> the</c><00:07:08.810><c> same</c><00:07:08.960><c> and</c><00:07:09.169><c> that</c><00:07:09.259><c> will</c>

00:07:09.399 --> 00:07:09.409 align:start position:0%
will always be the same and that will
 

00:07:09.409 --> 00:07:11.830 align:start position:0%
will always be the same and that will
let<00:07:09.500><c> us</c><00:07:09.560><c> re</c><00:07:09.860><c> execute</c><00:07:10.430><c> from</c><00:07:10.639><c> this</c><00:07:10.849><c> cached</c><00:07:11.120><c> state</c>

00:07:11.830 --> 00:07:11.840 align:start position:0%
let us re execute from this cached state
 

00:07:11.840 --> 00:07:14.379 align:start position:0%
let us re execute from this cached state
proof<00:07:12.110><c> over</c><00:07:12.379><c> and</c><00:07:12.800><c> over</c><00:07:13.069><c> and</c><00:07:13.250><c> over</c><00:07:13.490><c> again</c><00:07:13.580><c> until</c>

00:07:14.379 --> 00:07:14.389 align:start position:0%
proof over and over and over again until
 

00:07:14.389 --> 00:07:16.959 align:start position:0%
proof over and over and over again until
finally<00:07:14.419><c> it</c><00:07:14.870><c> does</c><00:07:15.020><c> change</c><00:07:15.669><c> that's</c><00:07:16.669><c> very</c>

00:07:16.959 --> 00:07:16.969 align:start position:0%
finally it does change that's very
 

00:07:16.969 --> 00:07:20.350 align:start position:0%
finally it does change that's very
useful<00:07:17.150><c> for</c><00:07:17.360><c> reducing</c><00:07:17.840><c> bandwidth</c><00:07:18.199><c> as</c><00:07:18.379><c> well</c><00:07:19.360><c> so</c>

00:07:20.350 --> 00:07:20.360 align:start position:0%
useful for reducing bandwidth as well so
 

00:07:20.360 --> 00:07:22.629 align:start position:0%
useful for reducing bandwidth as well so
the<00:07:20.870><c> metering</c><00:07:21.650><c> system</c><00:07:22.009><c> we</c><00:07:22.099><c> use</c><00:07:22.340><c> is</c><00:07:22.580><c> something</c>

00:07:22.629 --> 00:07:22.639 align:start position:0%
the metering system we use is something
 

00:07:22.639 --> 00:07:26.640 align:start position:0%
the metering system we use is something
that<00:07:23.270><c> we</c><00:07:23.389><c> would</c><00:07:23.449><c> call</c><00:07:23.659><c> request</c><00:07:24.620><c> credits</c><00:07:25.039><c> so</c>

00:07:26.640 --> 00:07:26.650 align:start position:0%
that we would call request credits so
 

00:07:26.650 --> 00:07:29.680 align:start position:0%
that we would call request credits so
serving<00:07:27.650><c> nodes</c><00:07:27.860><c> are</c><00:07:28.159><c> giving</c><00:07:28.460><c> peers</c><00:07:28.789><c> credits</c>

00:07:29.680 --> 00:07:29.690 align:start position:0%
serving nodes are giving peers credits
 

00:07:29.690 --> 00:07:32.439 align:start position:0%
serving nodes are giving peers credits
so<00:07:30.069><c> these</c><00:07:31.069><c> credits</c><00:07:31.550><c> are</c><00:07:31.669><c> pretty</c><00:07:31.849><c> arbitrary</c>

00:07:32.439 --> 00:07:32.449 align:start position:0%
so these credits are pretty arbitrary
 

00:07:32.449 --> 00:07:34.240 align:start position:0%
so these credits are pretty arbitrary
each<00:07:32.599><c> node</c><00:07:32.840><c> comes</c><00:07:33.110><c> up</c><00:07:33.259><c> with</c><00:07:33.409><c> its</c><00:07:33.560><c> own</c><00:07:33.710><c> pricing</c>

00:07:34.240 --> 00:07:34.250 align:start position:0%
each node comes up with its own pricing
 

00:07:34.250 --> 00:07:36.519 align:start position:0%
each node comes up with its own pricing
scheme<00:07:34.490><c> which</c><00:07:34.699><c> is</c><00:07:34.729><c> based</c><00:07:35.060><c> on</c><00:07:35.300><c> data</c><00:07:35.930><c> it</c><00:07:36.110><c> gathers</c>

00:07:36.519 --> 00:07:36.529 align:start position:0%
scheme which is based on data it gathers
 

00:07:36.529 --> 00:07:39.430 align:start position:0%
scheme which is based on data it gathers
over<00:07:36.830><c> time</c><00:07:37.039><c> on</c><00:07:37.539><c> how</c><00:07:38.539><c> long</c><00:07:38.750><c> these</c><00:07:38.930><c> requests</c><00:07:39.409><c> are</c>

00:07:39.430 --> 00:07:39.440 align:start position:0%
over time on how long these requests are
 

00:07:39.440 --> 00:07:41.830 align:start position:0%
over time on how long these requests are
taking<00:07:39.740><c> to</c><00:07:39.830><c> serve</c><00:07:40.009><c> and</c><00:07:40.250><c> then</c><00:07:40.819><c> the</c><00:07:41.569><c> light</c>

00:07:41.830 --> 00:07:41.840 align:start position:0%
taking to serve and then the light
 

00:07:41.840 --> 00:07:43.390 align:start position:0%
taking to serve and then the light
client<00:07:42.199><c> peers</c><00:07:42.409><c> which</c><00:07:42.590><c> want</c><00:07:42.770><c> to</c><00:07:42.889><c> request</c><00:07:43.190><c> data</c>

00:07:43.390 --> 00:07:43.400 align:start position:0%
client peers which want to request data
 

00:07:43.400 --> 00:07:46.420 align:start position:0%
client peers which want to request data
are<00:07:44.240><c> sort</c><00:07:44.539><c> of</c><00:07:44.569><c> spending</c><00:07:45.199><c> these</c><00:07:45.319><c> credits</c><00:07:45.800><c> to</c>

00:07:46.420 --> 00:07:46.430 align:start position:0%
are sort of spending these credits to
 

00:07:46.430 --> 00:07:48.490 align:start position:0%
are sort of spending these credits to
get<00:07:46.669><c> things</c><00:07:46.969><c> like</c><00:07:47.210><c> block</c><00:07:47.479><c> bodies</c><00:07:47.930><c> or</c><00:07:48.259><c> to</c><00:07:48.349><c> see</c>

00:07:48.490 --> 00:07:48.500 align:start position:0%
get things like block bodies or to see
 

00:07:48.500 --> 00:07:49.749 align:start position:0%
get things like block bodies or to see
what<00:07:48.680><c> the</c><00:07:48.740><c> outputs</c><00:07:49.099><c> of</c><00:07:49.190><c> transaction</c>

00:07:49.749 --> 00:07:49.759 align:start position:0%
what the outputs of transaction
 

00:07:49.759 --> 00:07:51.610 align:start position:0%
what the outputs of transaction
execution<00:07:49.879><c> would</c><00:07:50.419><c> be</c><00:07:50.539><c> and</c><00:07:50.779><c> we</c><00:07:51.289><c> could</c><00:07:51.469><c> make</c>

00:07:51.610 --> 00:07:51.620 align:start position:0%
execution would be and we could make
 

00:07:51.620 --> 00:07:53.409 align:start position:0%
execution would be and we could make
this<00:07:51.800><c> micro</c><00:07:52.219><c> payment</c><00:07:52.610><c> based</c><00:07:52.759><c> in</c><00:07:53.000><c> the</c><00:07:53.089><c> future</c>

00:07:53.409 --> 00:07:53.419 align:start position:0%
this micro payment based in the future
 

00:07:53.419 --> 00:07:55.450 align:start position:0%
this micro payment based in the future
that's<00:07:53.960><c> another</c><00:07:54.199><c> active</c><00:07:55.159><c> area</c><00:07:55.370><c> of</c><00:07:55.400><c> research</c>

00:07:55.450 --> 00:07:55.460 align:start position:0%
that's another active area of research
 

00:07:55.460 --> 00:07:59.230 align:start position:0%
that's another active area of research
because<00:07:56.029><c> in</c><00:07:56.300><c> fact</c><00:07:57.339><c> in</c><00:07:58.339><c> the</c><00:07:58.639><c> future</c><00:07:59.029><c> I</c><00:07:59.060><c> think</c>

00:07:59.230 --> 00:07:59.240 align:start position:0%
because in fact in the future I think
 

00:07:59.240 --> 00:08:02.740 align:start position:0%
because in fact in the future I think
it's<00:07:59.539><c> very</c><00:07:59.839><c> unlikely</c><00:08:00.169><c> that</c><00:08:01.300><c> your</c><00:08:02.300><c> average</c>

00:08:02.740 --> 00:08:02.750 align:start position:0%
it's very unlikely that your average
 

00:08:02.750 --> 00:08:04.749 align:start position:0%
it's very unlikely that your average
person<00:08:02.960><c> will</c><00:08:03.349><c> be</c><00:08:03.469><c> running</c><00:08:03.680><c> a</c><00:08:03.830><c> full</c><00:08:04.099><c> node</c><00:08:04.310><c> yet</c>

00:08:04.749 --> 00:08:04.759 align:start position:0%
person will be running a full node yet
 

00:08:04.759 --> 00:08:07.450 align:start position:0%
person will be running a full node yet
we<00:08:05.150><c> need</c><00:08:05.479><c> full</c><00:08:05.930><c> nodes</c><00:08:06.289><c> on</c><00:08:06.620><c> the</c><00:08:06.860><c> network</c><00:08:06.889><c> to</c><00:08:07.339><c> be</c>

00:08:07.450 --> 00:08:07.460 align:start position:0%
we need full nodes on the network to be
 

00:08:07.460 --> 00:08:09.040 align:start position:0%
we need full nodes on the network to be
able<00:08:07.550><c> to</c><00:08:07.789><c> serve</c><00:08:08.089><c> the</c><00:08:08.120><c> requests</c><00:08:08.779><c> to</c><00:08:08.870><c> light</c>

00:08:09.040 --> 00:08:09.050 align:start position:0%
able to serve the requests to light
 

00:08:09.050 --> 00:08:11.019 align:start position:0%
able to serve the requests to light
clients<00:08:09.379><c> so</c><00:08:09.830><c> you</c><00:08:09.919><c> need</c><00:08:10.039><c> an</c><00:08:10.129><c> incentivization</c>

00:08:11.019 --> 00:08:11.029 align:start position:0%
clients so you need an incentivization
 

00:08:11.029 --> 00:08:13.029 align:start position:0%
clients so you need an incentivization
layer<00:08:11.240><c> and</c><00:08:11.509><c> request</c><00:08:12.139><c> credits</c><00:08:12.560><c> although</c><00:08:12.889><c> right</c>

00:08:13.029 --> 00:08:13.039 align:start position:0%
layer and request credits although right
 

00:08:13.039 --> 00:08:17.290 align:start position:0%
layer and request credits although right
now<00:08:13.219><c> they're</c><00:08:13.460><c> simply</c><00:08:13.849><c> just</c><00:08:14.139><c> time-based</c><00:08:16.300><c> just</c>

00:08:17.290 --> 00:08:17.300 align:start position:0%
now they're simply just time-based just
 

00:08:17.300 --> 00:08:19.360 align:start position:0%
now they're simply just time-based just
provide<00:08:17.659><c> a</c><00:08:17.690><c> sort</c><00:08:18.469><c> of</c><00:08:18.560><c> foundation</c><00:08:19.099><c> that</c><00:08:19.129><c> we</c><00:08:19.339><c> can</c>

00:08:19.360 --> 00:08:19.370 align:start position:0%
provide a sort of foundation that we can
 

00:08:19.370 --> 00:08:21.879 align:start position:0%
provide a sort of foundation that we can
build<00:08:19.520><c> micro</c><00:08:20.029><c> payments</c><00:08:20.389><c> on</c><00:08:20.509><c> to</c><00:08:20.750><c> in</c><00:08:21.440><c> the</c><00:08:21.589><c> future</c>

00:08:21.879 --> 00:08:21.889 align:start position:0%
build micro payments on to in the future
 

00:08:21.889 --> 00:08:23.860 align:start position:0%
build micro payments on to in the future
and<00:08:22.039><c> it's</c><00:08:22.339><c> a</c><00:08:22.400><c> very</c><00:08:22.580><c> generic</c><00:08:22.669><c> mechanism</c><00:08:23.360><c> that</c>

00:08:23.860 --> 00:08:23.870 align:start position:0%
and it's a very generic mechanism that
 

00:08:23.870 --> 00:08:25.659 align:start position:0%
and it's a very generic mechanism that
we<00:08:23.960><c> could</c><00:08:24.169><c> plug</c><00:08:24.860><c> a</c><00:08:24.919><c> whole</c><00:08:25.159><c> lot</c><00:08:25.310><c> of</c><00:08:25.430><c> different</c>

00:08:25.659 --> 00:08:25.669 align:start position:0%
we could plug a whole lot of different
 

00:08:25.669 --> 00:08:28.510 align:start position:0%
we could plug a whole lot of different
schemes<00:08:25.940><c> into</c><00:08:27.039><c> and</c><00:08:28.039><c> of</c><00:08:28.190><c> course</c><00:08:28.400><c> these</c>

00:08:28.510 --> 00:08:28.520 align:start position:0%
schemes into and of course these
 

00:08:28.520 --> 00:08:30.029 align:start position:0%
schemes into and of course these
different<00:08:28.849><c> requests</c><00:08:29.150><c> have</c><00:08:29.270><c> different</c><00:08:29.569><c> costs</c>

00:08:30.029 --> 00:08:30.039 align:start position:0%
different requests have different costs
 

00:08:30.039 --> 00:08:33.159 align:start position:0%
different requests have different costs
so<00:08:31.039><c> in</c><00:08:31.520><c> the</c><00:08:31.699><c> case</c><00:08:31.879><c> of</c><00:08:31.909><c> getting</c><00:08:32.419><c> a</c><00:08:32.599><c> transaction</c>

00:08:33.159 --> 00:08:33.169 align:start position:0%
so in the case of getting a transaction
 

00:08:33.169 --> 00:08:34.959 align:start position:0%
so in the case of getting a transaction
execution<00:08:33.260><c> you're</c><00:08:33.829><c> actually</c><00:08:34.099><c> paying</c><00:08:34.310><c> per</c>

00:08:34.959 --> 00:08:34.969 align:start position:0%
execution you're actually paying per
 

00:08:34.969 --> 00:08:37.300 align:start position:0%
execution you're actually paying per
unit<00:08:35.810><c> of</c><00:08:35.899><c> gas</c><00:08:36.110><c> per</c><00:08:36.500><c> unit</c><00:08:36.890><c> of</c><00:08:36.949><c> computation</c>

00:08:37.300 --> 00:08:37.310 align:start position:0%
unit of gas per unit of computation
 

00:08:37.310 --> 00:08:39.339 align:start position:0%
unit of gas per unit of computation
whereas<00:08:38.060><c> if</c><00:08:38.449><c> you're</c><00:08:38.690><c> fetching</c><00:08:38.899><c> a</c><00:08:39.110><c> bunch</c><00:08:39.260><c> of</c>

00:08:39.339 --> 00:08:39.349 align:start position:0%
whereas if you're fetching a bunch of
 

00:08:39.349 --> 00:08:42.009 align:start position:0%
whereas if you're fetching a bunch of
headers<00:08:39.649><c> you're</c><00:08:39.860><c> paying</c><00:08:40.070><c> per</c><00:08:40.310><c> header</c><00:08:41.019><c> so</c>

00:08:42.009 --> 00:08:42.019 align:start position:0%
headers you're paying per header so
 

00:08:42.019 --> 00:08:43.460 align:start position:0%
headers you're paying per header so
another<00:08:42.680><c> cool</c>

00:08:43.460 --> 00:08:43.470 align:start position:0%
another cool
 

00:08:43.470 --> 00:08:46.880 align:start position:0%
another cool
is<00:08:44.360><c> publish/subscribe</c><00:08:45.360><c> so</c><00:08:45.720><c> that's</c><00:08:46.530><c> kind</c><00:08:46.770><c> of</c>

00:08:46.880 --> 00:08:46.890 align:start position:0%
is publish/subscribe so that's kind of
 

00:08:46.890 --> 00:08:49.640 align:start position:0%
is publish/subscribe so that's kind of
fun<00:08:47.130><c> to</c><00:08:47.400><c> bake</c><00:08:48.150><c> into</c><00:08:48.480><c> the</c><00:08:48.570><c> protocol</c><00:08:49.050><c> because</c>

00:08:49.640 --> 00:08:49.650 align:start position:0%
fun to bake into the protocol because
 

00:08:49.650 --> 00:08:51.830 align:start position:0%
fun to bake into the protocol because
when<00:08:50.220><c> you're</c><00:08:50.370><c> polling</c><00:08:50.940><c> for</c><00:08:51.150><c> things</c><00:08:51.360><c> like</c><00:08:51.600><c> log</c>

00:08:51.830 --> 00:08:51.840 align:start position:0%
when you're polling for things like log
 

00:08:51.840 --> 00:08:55.910 align:start position:0%
when you're polling for things like log
events<00:08:52.260><c> changing</c><00:08:52.740><c> and</c><00:08:54.410><c> you</c><00:08:55.410><c> that</c><00:08:55.620><c> means</c><00:08:55.800><c> that</c>

00:08:55.910 --> 00:08:55.920 align:start position:0%
events changing and you that means that
 

00:08:55.920 --> 00:08:57.740 align:start position:0%
events changing and you that means that
on<00:08:56.040><c> the</c><00:08:56.160><c> light</c><00:08:56.310><c> client</c><00:08:56.760><c> you</c><00:08:56.880><c> may</c><00:08:56.910><c> be</c><00:08:57.120><c> checking</c>

00:08:57.740 --> 00:08:57.750 align:start position:0%
on the light client you may be checking
 

00:08:57.750 --> 00:08:59.920 align:start position:0%
on the light client you may be checking
bloom<00:08:58.080><c> filters</c><00:08:58.530><c> and</c><00:08:58.710><c> things</c><00:08:58.860><c> like</c><00:08:59.010><c> that</c><00:08:59.070><c> and</c>

00:08:59.920 --> 00:08:59.930 align:start position:0%
bloom filters and things like that and
 

00:08:59.930 --> 00:09:02.150 align:start position:0%
bloom filters and things like that and
fetching<00:09:00.930><c> a</c><00:09:01.020><c> bunch</c><00:09:01.230><c> of</c><00:09:01.410><c> headers</c><00:09:01.620><c> from</c><00:09:02.010><c> the</c>

00:09:02.150 --> 00:09:02.160 align:start position:0%
fetching a bunch of headers from the
 

00:09:02.160 --> 00:09:03.890 align:start position:0%
fetching a bunch of headers from the
network<00:09:02.430><c> which</c><00:09:02.700><c> may</c><00:09:02.880><c> be</c><00:09:02.940><c> false</c><00:09:03.270><c> positive</c><00:09:03.720><c> so</c>

00:09:03.890 --> 00:09:03.900 align:start position:0%
network which may be false positive so
 

00:09:03.900 --> 00:09:06.590 align:start position:0%
network which may be false positive so
in<00:09:04.050><c> fact</c><00:09:04.260><c> the</c><00:09:04.740><c> full</c><00:09:05.040><c> node</c><00:09:05.280><c> peers</c><00:09:05.730><c> know</c><00:09:06.330><c> better</c>

00:09:06.590 --> 00:09:06.600 align:start position:0%
in fact the full node peers know better
 

00:09:06.600 --> 00:09:09.050 align:start position:0%
in fact the full node peers know better
than<00:09:06.840><c> we</c><00:09:07.020><c> do</c><00:09:07.260><c> when</c><00:09:07.590><c> something</c><00:09:08.040><c> has</c><00:09:08.190><c> changed</c><00:09:08.220><c> so</c>

00:09:09.050 --> 00:09:09.060 align:start position:0%
than we do when something has changed so
 

00:09:09.060 --> 00:09:11.060 align:start position:0%
than we do when something has changed so
allowing<00:09:09.540><c> subscriptions</c><00:09:10.440><c> at</c><00:09:10.590><c> the</c><00:09:10.680><c> protocol</c>

00:09:11.060 --> 00:09:11.070 align:start position:0%
allowing subscriptions at the protocol
 

00:09:11.070 --> 00:09:12.410 align:start position:0%
allowing subscriptions at the protocol
level<00:09:11.130><c> means</c><00:09:11.520><c> that</c><00:09:11.670><c> we</c><00:09:11.730><c> can</c><00:09:11.850><c> have</c><00:09:11.880><c> a</c><00:09:12.000><c> much</c><00:09:12.210><c> more</c>

00:09:12.410 --> 00:09:12.420 align:start position:0%
level means that we can have a much more
 

00:09:12.420 --> 00:09:16.100 align:start position:0%
level means that we can have a much more
efficient<00:09:12.900><c> light</c><00:09:13.080><c> client</c><00:09:13.910><c> the</c><00:09:14.910><c> caveat</c><00:09:15.900><c> is</c>

00:09:16.100 --> 00:09:16.110 align:start position:0%
efficient light client the caveat is
 

00:09:16.110 --> 00:09:18.590 align:start position:0%
efficient light client the caveat is
that<00:09:16.170><c> it's</c><00:09:16.740><c> semi</c><00:09:17.490><c> difficult</c><00:09:17.970><c> to</c><00:09:18.120><c> catch</c><00:09:18.300><c> out</c>

00:09:18.590 --> 00:09:18.600 align:start position:0%
that it's semi difficult to catch out
 

00:09:18.600 --> 00:09:20.120 align:start position:0%
that it's semi difficult to catch out
peers<00:09:18.900><c> who</c><00:09:19.170><c> don't</c><00:09:19.410><c> publish</c><00:09:19.800><c> when</c><00:09:20.010><c> they're</c>

00:09:20.120 --> 00:09:20.130 align:start position:0%
peers who don't publish when they're
 

00:09:20.130 --> 00:09:21.710 align:start position:0%
peers who don't publish when they're
supposed<00:09:20.280><c> to</c><00:09:20.520><c> so</c><00:09:20.790><c> for</c><00:09:21.000><c> example</c><00:09:21.390><c> if</c><00:09:21.510><c> we're</c>

00:09:21.710 --> 00:09:21.720 align:start position:0%
supposed to so for example if we're
 

00:09:21.720 --> 00:09:26.860 align:start position:0%
supposed to so for example if we're
tracking<00:09:22.500><c> log</c><00:09:23.370><c> events</c><00:09:23.850><c> in</c><00:09:24.060><c> some</c><00:09:24.420><c> contract</c><00:09:25.220><c> and</c>

00:09:26.860 --> 00:09:26.870 align:start position:0%
tracking log events in some contract and
 

00:09:26.870 --> 00:09:29.570 align:start position:0%
tracking log events in some contract and
this<00:09:27.870><c> peer</c><00:09:28.170><c> is</c><00:09:28.290><c> supposed</c><00:09:28.620><c> to</c><00:09:28.740><c> send</c><00:09:29.100><c> us</c><00:09:29.310><c> a</c>

00:09:29.570 --> 00:09:29.580 align:start position:0%
this peer is supposed to send us a
 

00:09:29.580 --> 00:09:31.940 align:start position:0%
this peer is supposed to send us a
message<00:09:30.030><c> when</c><00:09:30.660><c> log</c><00:09:30.840><c> events</c><00:09:31.110><c> change</c><00:09:31.380><c> or</c><00:09:31.620><c> log</c>

00:09:31.940 --> 00:09:31.950 align:start position:0%
message when log events change or log
 

00:09:31.950 --> 00:09:34.280 align:start position:0%
message when log events change or log
event<00:09:32.190><c> is</c><00:09:32.280><c> issued</c><00:09:32.640><c> but</c><00:09:33.210><c> doesn't</c><00:09:33.630><c> it's</c><00:09:34.020><c> fairly</c>

00:09:34.280 --> 00:09:34.290 align:start position:0%
event is issued but doesn't it's fairly
 

00:09:34.290 --> 00:09:35.390 align:start position:0%
event is issued but doesn't it's fairly
difficult<00:09:34.590><c> to</c><00:09:34.890><c> catch</c><00:09:35.040><c> them</c><00:09:35.220><c> out</c><00:09:35.280><c> without</c>

00:09:35.390 --> 00:09:35.400 align:start position:0%
difficult to catch them out without
 

00:09:35.400 --> 00:09:38.000 align:start position:0%
difficult to catch them out without
doing<00:09:35.790><c> some</c><00:09:35.970><c> kind</c><00:09:36.150><c> of</c><00:09:36.330><c> periodic</c><00:09:37.290><c> checking</c><00:09:37.830><c> of</c>

00:09:38.000 --> 00:09:38.010 align:start position:0%
doing some kind of periodic checking of
 

00:09:38.010 --> 00:09:42.410 align:start position:0%
doing some kind of periodic checking of
the<00:09:38.130><c> validity</c><00:09:38.490><c> of</c><00:09:38.670><c> data</c><00:09:38.990><c> but</c><00:09:39.990><c> if</c><00:09:41.180><c> the</c><00:09:42.180><c> network</c>

00:09:42.410 --> 00:09:42.420 align:start position:0%
the validity of data but if the network
 

00:09:42.420 --> 00:09:45.320 align:start position:0%
the validity of data but if the network
is<00:09:42.750><c> mostly</c><00:09:43.080><c> honest</c><00:09:43.560><c> and</c><00:09:43.920><c> the</c><00:09:44.300><c> damage</c><00:09:45.300><c> that</c>

00:09:45.320 --> 00:09:45.330 align:start position:0%
is mostly honest and the damage that
 

00:09:45.330 --> 00:09:48.020 align:start position:0%
is mostly honest and the damage that
they<00:09:45.540><c> can</c><00:09:45.690><c> do</c><00:09:45.780><c> by</c><00:09:45.930><c> omitting</c><00:09:46.520><c> log</c><00:09:47.520><c> events</c><00:09:47.910><c> or</c>

00:09:48.020 --> 00:09:48.030 align:start position:0%
they can do by omitting log events or
 

00:09:48.030 --> 00:09:49.580 align:start position:0%
they can do by omitting log events or
such<00:09:48.240><c> isn't</c><00:09:48.570><c> that</c><00:09:48.660><c> high</c><00:09:48.840><c> it's</c><00:09:49.080><c> very</c><00:09:49.290><c> unlikely</c>

00:09:49.580 --> 00:09:49.590 align:start position:0%
such isn't that high it's very unlikely
 

00:09:49.590 --> 00:09:51.530 align:start position:0%
such isn't that high it's very unlikely
that<00:09:49.740><c> they</c><00:09:49.950><c> would</c><00:09:50.070><c> do</c><00:09:50.190><c> it</c>

00:09:51.530 --> 00:09:51.540 align:start position:0%
that they would do it
 

00:09:51.540 --> 00:09:53.810 align:start position:0%
that they would do it
so<00:09:52.020><c> I</c><00:09:52.290><c> would</c><00:09:52.560><c> like</c><00:09:52.710><c> to</c><00:09:52.920><c> now</c><00:09:53.190><c> that</c><00:09:53.250><c> I</c><00:09:53.400><c> have</c><00:09:53.640><c> you</c>

00:09:53.810 --> 00:09:53.820 align:start position:0%
so I would like to now that I have you
 

00:09:53.820 --> 00:09:56.150 align:start position:0%
so I would like to now that I have you
all<00:09:54.000><c> here</c><00:09:54.480><c> make</c><00:09:55.380><c> a</c><00:09:55.410><c> little</c><00:09:55.590><c> bit</c><00:09:55.770><c> of</c><00:09:55.890><c> a</c><00:09:55.950><c> block</c>

00:09:56.150 --> 00:09:56.160 align:start position:0%
all here make a little bit of a block
 

00:09:56.160 --> 00:10:00.410 align:start position:0%
all here make a little bit of a block
pruning<00:09:56.670><c> proposal</c><00:09:57.300><c> so</c><00:09:57.840><c> for</c><00:09:58.290><c> example</c><00:09:59.420><c> right</c>

00:10:00.410 --> 00:10:00.420 align:start position:0%
pruning proposal so for example right
 

00:10:00.420 --> 00:10:02.840 align:start position:0%
pruning proposal so for example right
now<00:10:00.630><c> we</c><00:10:01.050><c> have</c><00:10:01.200><c> all</c><00:10:01.470><c> nodes</c><00:10:01.800><c> storing</c><00:10:02.370><c> all</c><00:10:02.640><c> the</c>

00:10:02.840 --> 00:10:02.850 align:start position:0%
now we have all nodes storing all the
 

00:10:02.850 --> 00:10:06.440 align:start position:0%
now we have all nodes storing all the
blockchain<00:10:03.420><c> and</c><00:10:03.660><c> that's</c><00:10:04.520><c> a</c><00:10:05.520><c> pretty</c><00:10:06.210><c> high</c>

00:10:06.440 --> 00:10:06.450 align:start position:0%
blockchain and that's a pretty high
 

00:10:06.450 --> 00:10:09.170 align:start position:0%
blockchain and that's a pretty high
storage<00:10:06.900><c> requirement</c><00:10:07.500><c> and</c><00:10:07.590><c> in</c><00:10:07.710><c> fact</c><00:10:07.970><c> we</c><00:10:08.970><c> can</c>

00:10:09.170 --> 00:10:09.180 align:start position:0%
storage requirement and in fact we can
 

00:10:09.180 --> 00:10:12.410 align:start position:0%
storage requirement and in fact we can
we<00:10:09.510><c> can</c><00:10:09.630><c> do</c><00:10:09.750><c> much</c><00:10:09.930><c> better</c><00:10:10.070><c> so</c><00:10:11.090><c> one</c><00:10:12.090><c> thing</c><00:10:12.300><c> we</c>

00:10:12.410 --> 00:10:12.420 align:start position:0%
we can do much better so one thing we
 

00:10:12.420 --> 00:10:13.820 align:start position:0%
we can do much better so one thing we
can<00:10:12.570><c> do</c><00:10:12.750><c> on</c><00:10:12.780><c> a</c><00:10:12.990><c> light</c><00:10:13.230><c> client</c><00:10:13.620><c> is</c><00:10:13.710><c> actually</c>

00:10:13.820 --> 00:10:13.830 align:start position:0%
can do on a light client is actually
 

00:10:13.830 --> 00:10:17.270 align:start position:0%
can do on a light client is actually
store<00:10:14.310><c> almost</c><00:10:14.610><c> none</c><00:10:15.510><c> of</c><00:10:15.930><c> the</c><00:10:16.560><c> history</c><00:10:16.920><c> and</c><00:10:17.100><c> we</c>

00:10:17.270 --> 00:10:17.280 align:start position:0%
store almost none of the history and we
 

00:10:17.280 --> 00:10:18.860 align:start position:0%
store almost none of the history and we
can<00:10:17.430><c> do</c><00:10:17.520><c> this</c><00:10:17.670><c> through</c><00:10:17.850><c> a</c><00:10:17.910><c> cool</c><00:10:18.090><c> tool</c><00:10:18.600><c> called</c>

00:10:18.860 --> 00:10:18.870 align:start position:0%
can do this through a cool tool called
 

00:10:18.870 --> 00:10:20.810 align:start position:0%
can do this through a cool tool called
canonical<00:10:19.500><c> hash</c><00:10:19.950><c> trees</c><00:10:20.340><c> which</c><00:10:20.610><c> will</c>

00:10:20.810 --> 00:10:20.820 align:start position:0%
canonical hash trees which will
 

00:10:20.820 --> 00:10:24.920 align:start position:0%
canonical hash trees which will
abbreviate<00:10:21.030><c> to</c><00:10:21.510><c> CHT</c><00:10:22.490><c> and</c><00:10:23.490><c> the</c><00:10:23.940><c> basic</c><00:10:24.300><c> idea</c><00:10:24.690><c> is</c>

00:10:24.920 --> 00:10:24.930 align:start position:0%
abbreviate to CHT and the basic idea is
 

00:10:24.930 --> 00:10:28.520 align:start position:0%
abbreviate to CHT and the basic idea is
that<00:10:25.340><c> for</c><00:10:26.340><c> every</c><00:10:26.640><c> and</c><00:10:27.240><c> these</c><00:10:27.540><c> so</c><00:10:27.930><c> so</c><00:10:28.290><c> death</c>

00:10:28.520 --> 00:10:28.530 align:start position:0%
that for every and these so so death
 

00:10:28.530 --> 00:10:30.710 align:start position:0%
that for every and these so so death
actually<00:10:28.740><c> has</c><00:10:29.040><c> a</c><00:10:29.430><c> canonical</c><00:10:29.910><c> hash</c><00:10:30.270><c> trees</c><00:10:30.540><c> but</c>

00:10:30.710 --> 00:10:30.720 align:start position:0%
actually has a canonical hash trees but
 

00:10:30.720 --> 00:10:32.570 align:start position:0%
actually has a canonical hash trees but
they<00:10:30.810><c> work</c><00:10:30.930><c> slightly</c><00:10:31.170><c> differently</c><00:10:31.320><c> and</c><00:10:32.220><c> I</c><00:10:32.430><c> can</c>

00:10:32.570 --> 00:10:32.580 align:start position:0%
they work slightly differently and I can
 

00:10:32.580 --> 00:10:35.090 align:start position:0%
they work slightly differently and I can
explain<00:10:32.910><c> the</c><00:10:33.060><c> difference</c><00:10:33.530><c> but</c><00:10:34.530><c> in</c><00:10:34.710><c> parody</c>

00:10:35.090 --> 00:10:35.100 align:start position:0%
explain the difference but in parody
 

00:10:35.100 --> 00:10:38.720 align:start position:0%
explain the difference but in parody
what<00:10:35.250><c> they</c><00:10:35.400><c> do</c><00:10:35.460><c> is</c><00:10:35.960><c> every</c><00:10:36.960><c> batch</c><00:10:37.200><c> of</c><00:10:37.530><c> say</c><00:10:37.740><c> 2048</c>

00:10:38.720 --> 00:10:38.730 align:start position:0%
what they do is every batch of say 2048
 

00:10:38.730 --> 00:10:42.290 align:start position:0%
what they do is every batch of say 2048
or<00:10:38.910><c> 4096</c><00:10:39.630><c> blocks</c><00:10:40.160><c> you</c><00:10:41.160><c> basically</c><00:10:41.610><c> make</c><00:10:41.760><c> a</c><00:10:41.790><c> tree</c>

00:10:42.290 --> 00:10:42.300 align:start position:0%
or 4096 blocks you basically make a tree
 

00:10:42.300 --> 00:10:44.990 align:start position:0%
or 4096 blocks you basically make a tree
like<00:10:42.840><c> a</c><00:10:42.870><c> Merkel</c><00:10:43.290><c> tree</c><00:10:43.560><c> mapping</c><00:10:44.310><c> block</c><00:10:44.580><c> number</c>

00:10:44.990 --> 00:10:45.000 align:start position:0%
like a Merkel tree mapping block number
 

00:10:45.000 --> 00:10:47.930 align:start position:0%
like a Merkel tree mapping block number
to<00:10:45.480><c> the</c><00:10:45.990><c> canonical</c><00:10:46.440><c> block</c><00:10:46.920><c> hash</c><00:10:47.160><c> as</c><00:10:47.370><c> the</c><00:10:47.790><c> light</c>

00:10:47.930 --> 00:10:47.940 align:start position:0%
to the canonical block hash as the light
 

00:10:47.940 --> 00:10:49.880 align:start position:0%
to the canonical block hash as the light
client<00:10:48.330><c> has</c><00:10:48.450><c> seen</c><00:10:48.750><c> so</c><00:10:49.020><c> the</c><00:10:49.140><c> my</c><00:10:49.320><c> client</c><00:10:49.650><c> sinks</c>

00:10:49.880 --> 00:10:49.890 align:start position:0%
client has seen so the my client sinks
 

00:10:49.890 --> 00:10:52.130 align:start position:0%
client has seen so the my client sinks
the<00:10:49.980><c> network</c><00:10:50.280><c> and</c><00:10:50.490><c> it</c><00:10:50.790><c> sees</c><00:10:51.030><c> that</c><00:10:51.330><c> in</c><00:10:51.840><c> ancient</c>

00:10:52.130 --> 00:10:52.140 align:start position:0%
the network and it sees that in ancient
 

00:10:52.140 --> 00:10:54.950 align:start position:0%
the network and it sees that in ancient
history<00:10:52.880><c> block</c><00:10:53.880><c> one</c><00:10:54.180><c> had</c>

00:10:54.950 --> 00:10:54.960 align:start position:0%
history block one had
 

00:10:54.960 --> 00:10:56.240 align:start position:0%
history block one had
and<00:10:55.050><c> hash</c><00:10:55.260><c> so</c><00:10:55.560><c> we</c><00:10:55.680><c> have</c><00:10:55.800><c> a</c><00:10:55.830><c> little</c><00:10:56.070><c> diagram</c>

00:10:56.240 --> 00:10:56.250 align:start position:0%
and hash so we have a little diagram
 

00:10:56.250 --> 00:10:59.180 align:start position:0%
and hash so we have a little diagram
here<00:10:56.730><c> and</c><00:10:56.820><c> they</c><00:10:57.390><c> can</c><00:10:57.600><c> make</c><00:10:58.380><c> this</c><00:10:58.560><c> table</c><00:10:58.860><c> and</c>

00:10:59.180 --> 00:10:59.190 align:start position:0%
here and they can make this table and
 

00:10:59.190 --> 00:11:02.360 align:start position:0%
here and they can make this table and
essentially<00:10:59.880><c> condense</c><00:11:00.420><c> this</c><00:11:00.750><c> tree</c><00:11:01.220><c> made</c><00:11:02.220><c> of</c>

00:11:02.360 --> 00:11:02.370 align:start position:0%
essentially condense this tree made of
 

00:11:02.370 --> 00:11:04.400 align:start position:0%
essentially condense this tree made of
this<00:11:02.460><c> table</c><00:11:02.640><c> down</c><00:11:02.910><c> into</c><00:11:03.210><c> a</c><00:11:03.240><c> single</c><00:11:03.570><c> 32</c><00:11:04.200><c> byte</c>

00:11:04.400 --> 00:11:04.410 align:start position:0%
this table down into a single 32 byte
 

00:11:04.410 --> 00:11:07.070 align:start position:0%
this table down into a single 32 byte
hash<00:11:04.620><c> so</c><00:11:05.280><c> instead</c><00:11:06.270><c> of</c><00:11:06.390><c> a</c><00:11:06.450><c> light</c><00:11:06.630><c> client</c>

00:11:07.070 --> 00:11:07.080 align:start position:0%
hash so instead of a light client
 

00:11:07.080 --> 00:11:09.680 align:start position:0%
hash so instead of a light client
storing<00:11:07.680><c> all</c><00:11:08.010><c> those</c><00:11:08.190><c> 2048</c><00:11:08.910><c> block</c><00:11:09.180><c> headers</c>

00:11:09.680 --> 00:11:09.690 align:start position:0%
storing all those 2048 block headers
 

00:11:09.690 --> 00:11:12.260 align:start position:0%
storing all those 2048 block headers
it's<00:11:10.170><c> just</c><00:11:10.470><c> storing</c><00:11:10.740><c> a</c><00:11:10.890><c> single</c><00:11:11.340><c> 32</c><00:11:11.760><c> byte</c><00:11:12.030><c> hash</c>

00:11:12.260 --> 00:11:12.270 align:start position:0%
it's just storing a single 32 byte hash
 

00:11:12.270 --> 00:11:17.330 align:start position:0%
it's just storing a single 32 byte hash
and<00:11:13.730><c> if</c><00:11:14.730><c> we</c><00:11:15.090><c> have</c><00:11:15.210><c> a</c><00:11:15.270><c> full</c><00:11:15.600><c> client</c><00:11:15.900><c> peer</c><00:11:16.470><c> who</c>

00:11:17.330 --> 00:11:17.340 align:start position:0%
and if we have a full client peer who
 

00:11:17.340 --> 00:11:19.640 align:start position:0%
and if we have a full client peer who
has<00:11:17.970><c> the</c><00:11:18.180><c> same</c><00:11:18.420><c> history</c><00:11:18.840><c> they</c><00:11:19.110><c> can</c><00:11:19.290><c> give</c><00:11:19.410><c> us</c><00:11:19.560><c> a</c>

00:11:19.640 --> 00:11:19.650 align:start position:0%
has the same history they can give us a
 

00:11:19.650 --> 00:11:22.460 align:start position:0%
has the same history they can give us a
merkel<00:11:20.010><c> proof</c><00:11:20.250><c> of</c><00:11:20.460><c> that</c><00:11:20.820><c> 32</c><00:11:21.300><c> byte</c><00:11:21.540><c> hash</c><00:11:21.750><c> of</c><00:11:21.990><c> the</c>

00:11:22.460 --> 00:11:22.470 align:start position:0%
merkel proof of that 32 byte hash of the
 

00:11:22.470 --> 00:11:25.570 align:start position:0%
merkel proof of that 32 byte hash of the
tree<00:11:22.740><c> starting</c><00:11:23.280><c> at</c><00:11:23.400><c> that</c><00:11:23.550><c> 32</c><00:11:23.970><c> byte</c><00:11:24.120><c> hash</c><00:11:24.300><c> to</c>

00:11:25.570 --> 00:11:25.580 align:start position:0%
tree starting at that 32 byte hash to
 

00:11:25.580 --> 00:11:28.400 align:start position:0%
tree starting at that 32 byte hash to
give<00:11:26.580><c> us</c><00:11:26.790><c> that</c><00:11:27.210><c> block</c><00:11:27.540><c> header</c><00:11:27.810><c> even</c><00:11:28.260><c> though</c>

00:11:28.400 --> 00:11:28.410 align:start position:0%
give us that block header even though
 

00:11:28.410 --> 00:11:31.420 align:start position:0%
give us that block header even though
the<00:11:28.530><c> light</c><00:11:28.680><c> client</c><00:11:29.010><c> itself</c><00:11:29.310><c> has</c><00:11:29.460><c> discarded</c><00:11:29.970><c> it</c>

00:11:31.420 --> 00:11:31.430 align:start position:0%
the light client itself has discarded it
 

00:11:31.430 --> 00:11:33.950 align:start position:0%
the light client itself has discarded it
which<00:11:32.430><c> is</c><00:11:32.580><c> a</c><00:11:32.610><c> pretty</c><00:11:32.880><c> powerful</c><00:11:33.030><c> tool</c><00:11:33.600><c> it</c><00:11:33.780><c> means</c>

00:11:33.950 --> 00:11:33.960 align:start position:0%
which is a pretty powerful tool it means
 

00:11:33.960 --> 00:11:35.600 align:start position:0%
which is a pretty powerful tool it means
that<00:11:34.200><c> instead</c><00:11:34.500><c> of</c><00:11:34.650><c> storing</c><00:11:34.890><c> megabytes</c><00:11:35.460><c> and</c>

00:11:35.600 --> 00:11:35.610 align:start position:0%
that instead of storing megabytes and
 

00:11:35.610 --> 00:11:37.280 align:start position:0%
that instead of storing megabytes and
megabytes<00:11:36.000><c> or</c><00:11:36.180><c> possibly</c><00:11:36.720><c> gigabytes</c><00:11:37.200><c> of</c>

00:11:37.280 --> 00:11:37.290 align:start position:0%
megabytes or possibly gigabytes of
 

00:11:37.290 --> 00:11:38.480 align:start position:0%
megabytes or possibly gigabytes of
headers<00:11:37.560><c> we're</c><00:11:37.740><c> just</c><00:11:37.920><c> storing</c><00:11:38.220><c> a</c><00:11:38.310><c> few</c>

00:11:38.480 --> 00:11:38.490 align:start position:0%
headers we're just storing a few
 

00:11:38.490 --> 00:11:40.430 align:start position:0%
headers we're just storing a few
kilobytes<00:11:38.820><c> no</c><00:11:39.180><c> matter</c><00:11:39.360><c> how</c><00:11:39.780><c> long</c><00:11:40.050><c> the</c><00:11:40.260><c> chain</c>

00:11:40.430 --> 00:11:40.440 align:start position:0%
kilobytes no matter how long the chain
 

00:11:40.440 --> 00:11:42.380 align:start position:0%
kilobytes no matter how long the chain
gets<00:11:40.680><c> even</c><00:11:40.980><c> to</c><00:11:41.160><c> the</c><00:11:41.250><c> hundred</c><00:11:41.610><c> hundreds</c><00:11:42.300><c> of</c>

00:11:42.380 --> 00:11:42.390 align:start position:0%
gets even to the hundred hundreds of
 

00:11:42.390 --> 00:11:46.790 align:start position:0%
gets even to the hundred hundreds of
millions<00:11:42.690><c> of</c><00:11:42.840><c> blocks</c><00:11:44.090><c> and</c><00:11:45.260><c> the</c><00:11:46.260><c> reason</c><00:11:46.680><c> we</c>

00:11:46.790 --> 00:11:46.800 align:start position:0%
millions of blocks and the reason we
 

00:11:46.800 --> 00:11:51.890 align:start position:0%
millions of blocks and the reason we
choose<00:11:47.100><c> to</c><00:11:47.730><c> have</c><00:11:49.610><c> separate</c><00:11:50.610><c> trees</c><00:11:50.940><c> is</c><00:11:51.210><c> so</c><00:11:51.780><c> that</c>

00:11:51.890 --> 00:11:51.900 align:start position:0%
choose to have separate trees is so that
 

00:11:51.900 --> 00:11:53.630 align:start position:0%
choose to have separate trees is so that
the<00:11:51.990><c> light</c><00:11:52.170><c> client</c><00:11:52.560><c> can</c><00:11:52.710><c> calculate</c><00:11:53.250><c> them</c><00:11:53.490><c> as</c>

00:11:53.630 --> 00:11:53.640 align:start position:0%
the light client can calculate them as
 

00:11:53.640 --> 00:11:56.900 align:start position:0%
the light client can calculate them as
it<00:11:54.210><c> goes</c><00:11:54.420><c> and</c><00:11:54.800><c> furthermore</c><00:11:55.800><c> that</c><00:11:56.100><c> full</c><00:11:56.610><c> nodes</c>

00:11:56.900 --> 00:11:56.910 align:start position:0%
it goes and furthermore that full nodes
 

00:11:56.910 --> 00:11:59.480 align:start position:0%
it goes and furthermore that full nodes
can<00:11:57.900><c> recalculate</c><00:11:58.350><c> them</c><00:11:58.740><c> on</c><00:11:58.830><c> the</c><00:11:58.980><c> fly</c><00:11:59.160><c> so</c><00:11:59.370><c> the</c>

00:11:59.480 --> 00:11:59.490 align:start position:0%
can recalculate them on the fly so the
 

00:11:59.490 --> 00:12:01.010 align:start position:0%
can recalculate them on the fly so the
full<00:11:59.640><c> nodes</c><00:11:59.850><c> don't</c><00:12:00.090><c> necessarily</c><00:12:00.660><c> need</c><00:12:00.810><c> to</c>

00:12:01.010 --> 00:12:01.020 align:start position:0%
full nodes don't necessarily need to
 

00:12:01.020 --> 00:12:02.930 align:start position:0%
full nodes don't necessarily need to
store<00:12:01.260><c> these</c><00:12:01.380><c> roots</c><00:12:01.650><c> but</c><00:12:02.100><c> when</c><00:12:02.280><c> it</c><00:12:02.400><c> receives</c><00:12:02.730><c> a</c>

00:12:02.930 --> 00:12:02.940 align:start position:0%
store these roots but when it receives a
 

00:12:02.940 --> 00:12:06.530 align:start position:0%
store these roots but when it receives a
request<00:12:03.090><c> for</c><00:12:03.980><c> the</c><00:12:04.980><c> canonical</c><00:12:05.490><c> block</c><00:12:06.000><c> hash</c><00:12:06.270><c> of</c>

00:12:06.530 --> 00:12:06.540 align:start position:0%
request for the canonical block hash of
 

00:12:06.540 --> 00:12:08.810 align:start position:0%
request for the canonical block hash of
a<00:12:06.810><c> certain</c><00:12:07.140><c> block</c><00:12:07.350><c> number</c><00:12:07.740><c> then</c><00:12:08.550><c> it</c><00:12:08.640><c> can</c>

00:12:08.810 --> 00:12:08.820 align:start position:0%
a certain block number then it can
 

00:12:08.820 --> 00:12:10.820 align:start position:0%
a certain block number then it can
rebuild<00:12:09.240><c> reconstruct</c><00:12:09.930><c> that</c><00:12:10.080><c> tree</c><00:12:10.290><c> on</c><00:12:10.470><c> the</c><00:12:10.650><c> fly</c>

00:12:10.820 --> 00:12:10.830 align:start position:0%
rebuild reconstruct that tree on the fly
 

00:12:10.830 --> 00:12:13.910 align:start position:0%
rebuild reconstruct that tree on the fly
when<00:12:11.040><c> it's</c><00:12:11.070><c> going</c><00:12:11.340><c> to</c><00:12:11.430><c> serve</c><00:12:11.580><c> that</c><00:12:11.760><c> request</c><00:12:12.920><c> so</c>

00:12:13.910 --> 00:12:13.920 align:start position:0%
when it's going to serve that request so
 

00:12:13.920 --> 00:12:16.670 align:start position:0%
when it's going to serve that request so
we<00:12:14.340><c> can</c><00:12:14.610><c> do</c><00:12:14.880><c> something</c><00:12:15.150><c> similar</c><00:12:15.330><c> on</c><00:12:15.930><c> full</c>

00:12:16.670 --> 00:12:16.680 align:start position:0%
we can do something similar on full
 

00:12:16.680 --> 00:12:19.850 align:start position:0%
we can do something similar on full
nodes<00:12:16.920><c> so</c><00:12:17.580><c> we</c><00:12:18.000><c> already</c><00:12:18.360><c> use</c><00:12:18.810><c> this</c><00:12:19.050><c> distributed</c>

00:12:19.850 --> 00:12:19.860 align:start position:0%
nodes so we already use this distributed
 

00:12:19.860 --> 00:12:21.920 align:start position:0%
nodes so we already use this distributed
hash<00:12:20.010><c> table</c><00:12:20.460><c> style</c><00:12:20.760><c> routing</c><00:12:21.270><c> in</c><00:12:21.450><c> the</c><00:12:21.630><c> network</c>

00:12:21.920 --> 00:12:21.930 align:start position:0%
hash table style routing in the network
 

00:12:21.930 --> 00:12:24.080 align:start position:0%
hash table style routing in the network
protocol<00:12:22.320><c> although</c><00:12:22.860><c> it's</c><00:12:23.010><c> not</c><00:12:23.220><c> really</c><00:12:23.580><c> used</c>

00:12:24.080 --> 00:12:24.090 align:start position:0%
protocol although it's not really used
 

00:12:24.090 --> 00:12:25.730 align:start position:0%
protocol although it's not really used
for<00:12:24.360><c> anything</c><00:12:24.720><c> right</c><00:12:24.840><c> now</c><00:12:24.900><c> we</c><00:12:25.050><c> expect</c><00:12:25.560><c> that</c>

00:12:25.730 --> 00:12:25.740 align:start position:0%
for anything right now we expect that
 

00:12:25.740 --> 00:12:28.760 align:start position:0%
for anything right now we expect that
all<00:12:25.890><c> nodes</c><00:12:26.340><c> are</c><00:12:26.670><c> storing</c><00:12:27.000><c> all</c><00:12:27.180><c> data</c><00:12:27.690><c> which</c><00:12:28.560><c> is</c>

00:12:28.760 --> 00:12:28.770 align:start position:0%
all nodes are storing all data which is
 

00:12:28.770 --> 00:12:31.780 align:start position:0%
all nodes are storing all data which is
an<00:12:29.610><c> assumption</c><00:12:30.060><c> that</c><00:12:30.300><c> we'd</c><00:12:30.420><c> like</c><00:12:30.510><c> to</c><00:12:30.570><c> relax</c><00:12:30.930><c> so</c>

00:12:31.780 --> 00:12:31.790 align:start position:0%
an assumption that we'd like to relax so
 

00:12:31.790 --> 00:12:35.240 align:start position:0%
an assumption that we'd like to relax so
we<00:12:32.790><c> have</c><00:12:33.000><c> this</c><00:12:33.510><c> idea</c><00:12:33.810><c> of</c><00:12:34.170><c> splitting</c><00:12:34.710><c> up</c><00:12:34.980><c> nodes</c>

00:12:35.240 --> 00:12:35.250 align:start position:0%
we have this idea of splitting up nodes
 

00:12:35.250 --> 00:12:39.290 align:start position:0%
we have this idea of splitting up nodes
by<00:12:35.550><c> node</c><00:12:35.760><c> ID</c><00:12:36.000><c> so</c><00:12:36.360><c> every</c><00:12:36.600><c> node</c><00:12:36.780><c> has</c><00:12:36.810><c> a</c><00:12:38.300><c> 160-bit</c>

00:12:39.290 --> 00:12:39.300 align:start position:0%
by node ID so every node has a 160-bit
 

00:12:39.300 --> 00:12:43.820 align:start position:0%
by node ID so every node has a 160-bit
ID<00:12:41.810><c> or</c><00:12:42.810><c> it</c><00:12:43.020><c> may</c><00:12:43.140><c> be</c><00:12:43.170><c> a</c><00:12:43.320><c> slightly</c><00:12:43.650><c> different</c>

00:12:43.820 --> 00:12:43.830 align:start position:0%
ID or it may be a slightly different
 

00:12:43.830 --> 00:12:45.200 align:start position:0%
ID or it may be a slightly different
number<00:12:44.100><c> but</c><00:12:44.400><c> it's</c><00:12:44.760><c> not</c><00:12:44.910><c> particularly</c>

00:12:45.200 --> 00:12:45.210 align:start position:0%
number but it's not particularly
 

00:12:45.210 --> 00:12:48.110 align:start position:0%
number but it's not particularly
important<00:12:45.720><c> exactly</c><00:12:46.140><c> how</c><00:12:46.200><c> long</c><00:12:46.350><c> the</c><00:12:46.470><c> ideas</c><00:12:47.120><c> but</c>

00:12:48.110 --> 00:12:48.120 align:start position:0%
important exactly how long the ideas but
 

00:12:48.120 --> 00:12:50.420 align:start position:0%
important exactly how long the ideas but
we<00:12:48.240><c> split</c><00:12:48.630><c> up</c><00:12:48.750><c> in</c><00:12:49.230><c> the</c><00:12:49.470><c> routing</c><00:12:49.650><c> mechanism</c><00:12:50.310><c> of</c>

00:12:50.420 --> 00:12:50.430 align:start position:0%
we split up in the routing mechanism of
 

00:12:50.430 --> 00:12:52.340 align:start position:0%
we split up in the routing mechanism of
each<00:12:50.550><c> of</c><00:12:50.820><c> each</c><00:12:51.000><c> node</c><00:12:51.270><c> we</c><00:12:51.450><c> split</c><00:12:51.780><c> up</c><00:12:51.810><c> all</c><00:12:52.110><c> the</c>

00:12:52.340 --> 00:12:52.350 align:start position:0%
each of each node we split up all the
 

00:12:52.350 --> 00:12:55.700 align:start position:0%
each of each node we split up all the
peers<00:12:52.680><c> that</c><00:12:52.740><c> it</c><00:12:52.980><c> has</c><00:12:53.160><c> into</c><00:12:54.120><c> buckets</c><00:12:54.930><c> prefixed</c>

00:12:55.700 --> 00:12:55.710 align:start position:0%
peers that it has into buckets prefixed
 

00:12:55.710 --> 00:13:00.260 align:start position:0%
peers that it has into buckets prefixed
by<00:12:55.770><c> certain</c><00:12:56.220><c> IDs</c><00:12:56.580><c> so</c><00:12:58.490><c> that</c><00:12:59.490><c> means</c><00:12:59.760><c> that</c><00:13:00.060><c> each</c>

00:13:00.260 --> 00:13:00.270 align:start position:0%
by certain IDs so that means that each
 

00:13:00.270 --> 00:13:01.940 align:start position:0%
by certain IDs so that means that each
peer<00:13:00.600><c> is</c><00:13:00.720><c> trying</c><00:13:01.080><c> to</c><00:13:01.260><c> have</c><00:13:01.410><c> a</c><00:13:01.440><c> certain</c><00:13:01.920><c> number</c>

00:13:01.940 --> 00:13:01.950 align:start position:0%
peer is trying to have a certain number
 

00:13:01.950 --> 00:13:04.790 align:start position:0%
peer is trying to have a certain number
of<00:13:02.370><c> other</c><00:13:02.550><c> peers</c><00:13:02.970><c> whose</c><00:13:03.510><c> IDs</c><00:13:03.780><c> are</c><00:13:04.110><c> distributed</c>

00:13:04.790 --> 00:13:04.800 align:start position:0%
of other peers whose IDs are distributed
 

00:13:04.800 --> 00:13:06.889 align:start position:0%
of other peers whose IDs are distributed
fairly<00:13:05.750><c> you</c>

00:13:06.889 --> 00:13:06.899 align:start position:0%
fairly you
 

00:13:06.899 --> 00:13:10.759 align:start position:0%
fairly you
formerly<00:13:07.259><c> across</c><00:13:07.709><c> that</c><00:13:08.009><c> ID</c><00:13:08.249><c> space</c><00:13:08.699><c> so</c><00:13:09.389><c> in</c><00:13:09.899><c> the</c>

00:13:10.759 --> 00:13:10.769 align:start position:0%
formerly across that ID space so in the
 

00:13:10.769 --> 00:13:14.150 align:start position:0%
formerly across that ID space so in the
DHT<00:13:11.430><c> or</c><00:13:11.939><c> distributed</c><00:13:12.509><c> hash</c><00:13:12.749><c> table</c><00:13:13.319><c> world</c><00:13:13.559><c> what</c>

00:13:14.150 --> 00:13:14.160 align:start position:0%
DHT or distributed hash table world what
 

00:13:14.160 --> 00:13:16.910 align:start position:0%
DHT or distributed hash table world what
we're<00:13:14.309><c> doing</c><00:13:14.579><c> is</c><00:13:14.819><c> saying</c><00:13:15.569><c> nodes</c><00:13:16.230><c> with</c><00:13:16.529><c> an</c><00:13:16.649><c> ID</c>

00:13:16.910 --> 00:13:16.920 align:start position:0%
we're doing is saying nodes with an ID
 

00:13:16.920 --> 00:13:19.519 align:start position:0%
we're doing is saying nodes with an ID
close<00:13:17.699><c> to</c><00:13:18.059><c> the</c><00:13:18.360><c> hash</c><00:13:18.629><c> of</c><00:13:18.990><c> the</c><00:13:19.110><c> file</c><00:13:19.319><c> we're</c>

00:13:19.519 --> 00:13:19.529 align:start position:0%
close to the hash of the file we're
 

00:13:19.529 --> 00:13:21.499 align:start position:0%
close to the hash of the file we're
trying<00:13:19.740><c> to</c><00:13:19.829><c> store</c><00:13:20.040><c> are</c><00:13:20.300><c> responsible</c><00:13:21.300><c> for</c>

00:13:21.499 --> 00:13:21.509 align:start position:0%
trying to store are responsible for
 

00:13:21.509 --> 00:13:23.030 align:start position:0%
trying to store are responsible for
storing<00:13:21.629><c> this</c><00:13:21.809><c> hot</c><00:13:21.990><c> file</c><00:13:22.259><c> we</c><00:13:22.800><c> can</c><00:13:22.920><c> do</c>

00:13:23.030 --> 00:13:23.040 align:start position:0%
storing this hot file we can do
 

00:13:23.040 --> 00:13:24.559 align:start position:0%
storing this hot file we can do
something<00:13:23.459><c> fairly</c><00:13:23.790><c> similar</c><00:13:24.179><c> for</c><00:13:24.389><c> block</c>

00:13:24.559 --> 00:13:24.569 align:start position:0%
something fairly similar for block
 

00:13:24.569 --> 00:13:28.669 align:start position:0%
something fairly similar for block
pruning<00:13:25.050><c> and</c><00:13:25.230><c> say</c><00:13:26.040><c> nodes</c><00:13:26.790><c> whose</c><00:13:27.449><c> ID</c><00:13:28.019><c> starts</c>

00:13:28.669 --> 00:13:28.679 align:start position:0%
pruning and say nodes whose ID starts
 

00:13:28.679 --> 00:13:32.329 align:start position:0%
pruning and say nodes whose ID starts
with<00:13:29.100><c> zero</c><00:13:30.029><c> zero</c><00:13:30.360><c> zero</c><00:13:30.449><c> one</c><00:13:30.990><c> are</c><00:13:31.740><c> going</c><00:13:32.100><c> to</c>

00:13:32.329 --> 00:13:32.339 align:start position:0%
with zero zero zero one are going to
 

00:13:32.339 --> 00:13:36.230 align:start position:0%
with zero zero zero one are going to
serve<00:13:32.699><c> the</c><00:13:33.300><c> first</c><00:13:34.259><c> out</c><00:13:34.589><c> of</c><00:13:34.889><c> every</c><00:13:35.339><c> batch</c><00:13:35.970><c> of</c>

00:13:36.230 --> 00:13:36.240 align:start position:0%
serve the first out of every batch of
 

00:13:36.240 --> 00:13:37.669 align:start position:0%
serve the first out of every batch of
blocks<00:13:36.449><c> so</c><00:13:36.689><c> we</c><00:13:36.869><c> can</c><00:13:37.019><c> split</c><00:13:37.230><c> up</c><00:13:37.379><c> the</c><00:13:37.529><c> whole</c>

00:13:37.669 --> 00:13:37.679 align:start position:0%
blocks so we can split up the whole
 

00:13:37.679 --> 00:13:41.059 align:start position:0%
blocks so we can split up the whole
block<00:13:37.920><c> chain</c><00:13:38.249><c> and</c><00:13:38.459><c> to</c><00:13:38.879><c> say</c><00:13:39.059><c> batches</c><00:13:39.660><c> of</c><00:13:40.069><c> 2048</c>

00:13:41.059 --> 00:13:41.069 align:start position:0%
block chain and to say batches of 2048
 

00:13:41.069 --> 00:13:43.759 align:start position:0%
block chain and to say batches of 2048
or<00:13:41.249><c> 4096</c><00:13:41.970><c> and</c><00:13:42.300><c> we</c><00:13:42.660><c> can</c><00:13:42.809><c> say</c><00:13:42.990><c> okay</c><00:13:43.439><c> these</c>

00:13:43.759 --> 00:13:43.769 align:start position:0%
or 4096 and we can say okay these
 

00:13:43.769 --> 00:13:45.859 align:start position:0%
or 4096 and we can say okay these
batches<00:13:44.189><c> are</c><00:13:44.279><c> gonna</c><00:13:44.429><c> proceed</c><00:13:44.879><c> in</c><00:13:45.119><c> cycles</c><00:13:45.660><c> of</c>

00:13:45.859 --> 00:13:45.869 align:start position:0%
batches are gonna proceed in cycles of
 

00:13:45.869 --> 00:13:50.269 align:start position:0%
batches are gonna proceed in cycles of
16<00:13:46.679><c> or</c><00:13:46.709><c> 32</c><00:13:47.339><c> or</c><00:13:47.579><c> 256</c><00:13:48.389><c> and</c><00:13:48.689><c> a</c><00:13:49.319><c> node</c><00:13:49.679><c> whose</c><00:13:49.980><c> ID</c>

00:13:50.269 --> 00:13:50.279 align:start position:0%
16 or 32 or 256 and a node whose ID
 

00:13:50.279 --> 00:13:52.790 align:start position:0%
16 or 32 or 256 and a node whose ID
starts<00:13:50.819><c> with</c><00:13:50.970><c> 0</c><00:13:51.209><c> 0</c><00:13:51.449><c> 0</c><00:13:51.660><c> 1</c><00:13:51.869><c> is</c><00:13:52.110><c> going</c><00:13:52.529><c> to</c><00:13:52.589><c> serve</c>

00:13:52.790 --> 00:13:52.800 align:start position:0%
starts with 0 0 0 1 is going to serve
 

00:13:52.800 --> 00:13:58.759 align:start position:0%
starts with 0 0 0 1 is going to serve
every<00:13:53.420><c> one</c><00:13:54.420><c> out</c><00:13:54.720><c> of</c><00:13:54.869><c> 256</c><00:13:56.990><c> batches</c><00:13:57.990><c> or</c><00:13:58.139><c> the</c>

00:13:58.759 --> 00:13:58.769 align:start position:0%
every one out of 256 batches or the
 

00:13:58.769 --> 00:14:02.179 align:start position:0%
every one out of 256 batches or the
person<00:13:59.100><c> whose</c><00:13:59.249><c> ID</c><00:13:59.429><c> starts</c><00:13:59.970><c> with</c><00:14:00.350><c> 0</c><00:14:01.350><c> 0</c><00:14:01.410><c> 0</c><00:14:01.800><c> 4</c><00:14:02.069><c> is</c>

00:14:02.179 --> 00:14:02.189 align:start position:0%
person whose ID starts with 0 0 0 4 is
 

00:14:02.189 --> 00:14:04.249 align:start position:0%
person whose ID starts with 0 0 0 4 is
going<00:14:02.309><c> to</c><00:14:02.399><c> serve</c><00:14:02.579><c> every</c><00:14:02.850><c> 4th</c><00:14:03.300><c> batch</c><00:14:03.809><c> out</c><00:14:04.079><c> of</c>

00:14:04.249 --> 00:14:04.259 align:start position:0%
going to serve every 4th batch out of
 

00:14:04.259 --> 00:14:09.049 align:start position:0%
going to serve every 4th batch out of
every<00:14:04.499><c> group</c><00:14:05.069><c> of</c><00:14:05.279><c> 256</c><00:14:05.939><c> batches</c><00:14:06.509><c> so</c><00:14:07.670><c> the</c><00:14:08.670><c> amount</c>

00:14:09.049 --> 00:14:09.059 align:start position:0%
every group of 256 batches so the amount
 

00:14:09.059 --> 00:14:11.530 align:start position:0%
every group of 256 batches so the amount
of<00:14:09.269><c> space</c><00:14:09.569><c> we</c><00:14:09.809><c> can</c><00:14:09.959><c> cut</c><00:14:10.139><c> down</c><00:14:10.379><c> is</c><00:14:10.619><c> really</c>

00:14:11.530 --> 00:14:11.540 align:start position:0%
of space we can cut down is really
 

00:14:11.540 --> 00:14:15.019 align:start position:0%
of space we can cut down is really
determined<00:14:12.540><c> by</c><00:14:12.660><c> how</c><00:14:13.019><c> many</c><00:14:13.249><c> peers</c><00:14:14.249><c> the</c><00:14:14.550><c> average</c>

00:14:15.019 --> 00:14:15.029 align:start position:0%
determined by how many peers the average
 

00:14:15.029 --> 00:14:16.780 align:start position:0%
determined by how many peers the average
node<00:14:15.209><c> is</c><00:14:15.360><c> likely</c><00:14:15.540><c> to</c><00:14:15.749><c> have</c><00:14:15.899><c> so</c><00:14:16.199><c> if</c><00:14:16.319><c> we</c><00:14:16.470><c> have</c>

00:14:16.780 --> 00:14:16.790 align:start position:0%
node is likely to have so if we have
 

00:14:16.790 --> 00:14:19.189 align:start position:0%
node is likely to have so if we have
right<00:14:17.790><c> now</c><00:14:17.939><c> it's</c><00:14:18.209><c> not</c><00:14:18.329><c> really</c><00:14:18.389><c> reasonable</c><00:14:19.079><c> to</c>

00:14:19.189 --> 00:14:19.199 align:start position:0%
right now it's not really reasonable to
 

00:14:19.199 --> 00:14:20.900 align:start position:0%
right now it's not really reasonable to
assume<00:14:19.319><c> that</c><00:14:19.499><c> every</c><00:14:19.980><c> node</c><00:14:20.160><c> is</c><00:14:20.370><c> going</c><00:14:20.670><c> to</c><00:14:20.790><c> be</c>

00:14:20.900 --> 00:14:20.910 align:start position:0%
assume that every node is going to be
 

00:14:20.910 --> 00:14:25.160 align:start position:0%
assume that every node is going to be
able<00:14:21.089><c> to</c><00:14:21.449><c> connect</c><00:14:21.809><c> to</c><00:14:22.079><c> 256</c><00:14:22.980><c> nodes</c><00:14:23.399><c> but</c><00:14:24.120><c> 16</c><00:14:25.019><c> or</c>

00:14:25.160 --> 00:14:25.170 align:start position:0%
able to connect to 256 nodes but 16 or
 

00:14:25.170 --> 00:14:27.470 align:start position:0%
able to connect to 256 nodes but 16 or
32<00:14:25.620><c> is</c><00:14:25.800><c> fairly</c><00:14:26.160><c> reasonable</c><00:14:26.670><c> and</c><00:14:26.850><c> that</c><00:14:27.269><c> means</c>

00:14:27.470 --> 00:14:27.480 align:start position:0%
32 is fairly reasonable and that means
 

00:14:27.480 --> 00:14:30.259 align:start position:0%
32 is fairly reasonable and that means
that<00:14:27.660><c> you</c><00:14:27.749><c> can</c><00:14:27.990><c> always</c><00:14:28.889><c> find</c><00:14:29.490><c> a</c><00:14:29.699><c> peer</c><00:14:29.999><c> who's</c>

00:14:30.259 --> 00:14:30.269 align:start position:0%
that you can always find a peer who's
 

00:14:30.269 --> 00:14:31.970 align:start position:0%
that you can always find a peer who's
going<00:14:30.540><c> to</c><00:14:30.749><c> be</c><00:14:30.870><c> able</c><00:14:30.990><c> to</c><00:14:31.230><c> serve</c><00:14:31.470><c> you</c><00:14:31.499><c> the</c><00:14:31.800><c> next</c>

00:14:31.970 --> 00:14:31.980 align:start position:0%
going to be able to serve you the next
 

00:14:31.980 --> 00:14:35.840 align:start position:0%
going to be able to serve you the next
2048<00:14:32.910><c> or</c><00:14:33.410><c> 4096</c><00:14:34.410><c> blocks</c><00:14:34.860><c> but</c><00:14:35.279><c> those</c><00:14:35.459><c> peers</c>

00:14:35.840 --> 00:14:35.850 align:start position:0%
2048 or 4096 blocks but those peers
 

00:14:35.850 --> 00:14:38.720 align:start position:0%
2048 or 4096 blocks but those peers
themselves<00:14:36.480><c> have</c><00:14:36.779><c> cut</c><00:14:36.990><c> down</c><00:14:37.019><c> their</c><00:14:37.730><c> storage</c>

00:14:38.720 --> 00:14:38.730 align:start position:0%
themselves have cut down their storage
 

00:14:38.730 --> 00:14:40.639 align:start position:0%
themselves have cut down their storage
requirement<00:14:39.420><c> by</c><00:14:39.540><c> quite</c><00:14:39.959><c> a</c><00:14:39.990><c> large</c><00:14:40.170><c> amount</c><00:14:40.319><c> so</c>

00:14:40.639 --> 00:14:40.649 align:start position:0%
requirement by quite a large amount so
 

00:14:40.649 --> 00:14:41.840 align:start position:0%
requirement by quite a large amount so
I'm<00:14:40.829><c> actually</c><00:14:41.040><c> really</c><00:14:41.309><c> interested</c><00:14:41.730><c> to</c><00:14:41.759><c> hear</c>

00:14:41.840 --> 00:14:41.850 align:start position:0%
I'm actually really interested to hear
 

00:14:41.850 --> 00:14:43.249 align:start position:0%
I'm actually really interested to hear
what<00:14:42.089><c> you</c><00:14:42.149><c> guys</c><00:14:42.209><c> think</c><00:14:42.480><c> about</c><00:14:42.629><c> this</c><00:14:42.870><c> proposal</c>

00:14:43.249 --> 00:14:43.259 align:start position:0%
what you guys think about this proposal
 

00:14:43.259 --> 00:14:45.739 align:start position:0%
what you guys think about this proposal
please<00:14:43.620><c> find</c><00:14:44.399><c> me</c><00:14:44.519><c> after</c><00:14:44.850><c> I</c><00:14:45.089><c> think</c><00:14:45.240><c> it's</c><00:14:45.569><c> a</c>

00:14:45.739 --> 00:14:45.749 align:start position:0%
please find me after I think it's a
 

00:14:45.749 --> 00:14:48.889 align:start position:0%
please find me after I think it's a
pretty<00:14:45.959><c> good</c><00:14:46.050><c> idea</c><00:14:47.059><c> so</c><00:14:48.059><c> another</c><00:14:48.600><c> thing</c><00:14:48.660><c> that</c>

00:14:48.889 --> 00:14:48.899 align:start position:0%
pretty good idea so another thing that
 

00:14:48.899 --> 00:14:52.910 align:start position:0%
pretty good idea so another thing that
we<00:14:49.050><c> can</c><00:14:49.290><c> do</c><00:14:49.439><c> on</c><00:14:50.749><c> light</c><00:14:51.749><c> nodes</c><00:14:52.049><c> to</c><00:14:52.350><c> get</c><00:14:52.589><c> up</c><00:14:52.740><c> to</c>

00:14:52.910 --> 00:14:52.920 align:start position:0%
we can do on light nodes to get up to
 

00:14:52.920 --> 00:14:55.819 align:start position:0%
we can do on light nodes to get up to
speed<00:14:53.040><c> really</c><00:14:53.399><c> quickly</c><00:14:53.790><c> is</c><00:14:53.939><c> warp</c><00:14:54.329><c> sync</c><00:14:54.629><c> so</c><00:14:55.170><c> the</c>

00:14:55.819 --> 00:14:55.829 align:start position:0%
speed really quickly is warp sync so the
 

00:14:55.829 --> 00:14:57.410 align:start position:0%
speed really quickly is warp sync so the
way<00:14:55.980><c> it</c><00:14:56.100><c> works</c><00:14:56.279><c> right</c><00:14:56.399><c> now</c><00:14:56.519><c> is</c><00:14:56.910><c> that</c><00:14:57.089><c> you</c><00:14:57.209><c> have</c>

00:14:57.410 --> 00:14:57.420 align:start position:0%
way it works right now is that you have
 

00:14:57.420 --> 00:14:59.720 align:start position:0%
way it works right now is that you have
to<00:14:57.689><c> synchronize</c><00:14:58.529><c> the</c><00:14:58.829><c> whole</c><00:14:59.069><c> blockchain</c>

00:14:59.720 --> 00:14:59.730 align:start position:0%
to synchronize the whole blockchain
 

00:14:59.730 --> 00:15:02.449 align:start position:0%
to synchronize the whole blockchain
essentially<00:15:00.449><c> you</c><00:15:00.839><c> have</c><00:15:00.959><c> to</c><00:15:01.110><c> go</c><00:15:01.259><c> from</c><00:15:01.860><c> header</c><00:15:02.069><c> 0</c>

00:15:02.449 --> 00:15:02.459 align:start position:0%
essentially you have to go from header 0
 

00:15:02.459 --> 00:15:04.129 align:start position:0%
essentially you have to go from header 0
from<00:15:02.879><c> the</c><00:15:02.999><c> Genesis</c><00:15:03.480><c> and</c><00:15:03.509><c> walk</c><00:15:03.839><c> the</c><00:15:03.990><c> whole</c>

00:15:04.129 --> 00:15:04.139 align:start position:0%
from the Genesis and walk the whole
 

00:15:04.139 --> 00:15:05.720 align:start position:0%
from the Genesis and walk the whole
chain<00:15:04.439><c> all</c><00:15:04.799><c> the</c><00:15:05.069><c> way</c><00:15:05.160><c> to</c><00:15:05.220><c> the</c><00:15:05.429><c> head</c><00:15:05.519><c> of</c><00:15:05.670><c> the</c>

00:15:05.720 --> 00:15:05.730 align:start position:0%
chain all the way to the head of the
 

00:15:05.730 --> 00:15:11.269 align:start position:0%
chain all the way to the head of the
chain<00:15:05.939><c> but</c><00:15:06.899><c> in</c><00:15:07.139><c> fact</c><00:15:09.379><c> most</c><00:15:10.379><c> of</c><00:15:10.619><c> the</c><00:15:10.709><c> time</c><00:15:10.860><c> users</c>

00:15:11.269 --> 00:15:11.279 align:start position:0%
chain but in fact most of the time users
 

00:15:11.279 --> 00:15:13.039 align:start position:0%
chain but in fact most of the time users
don't<00:15:11.429><c> care</c><00:15:11.699><c> about</c><00:15:11.850><c> that</c><00:15:12.149><c> very</c><00:15:12.299><c> ancient</c><00:15:12.600><c> data</c>

00:15:13.039 --> 00:15:13.049 align:start position:0%
don't care about that very ancient data
 

00:15:13.049 --> 00:15:14.629 align:start position:0%
don't care about that very ancient data
so<00:15:13.319><c> we</c><00:15:13.410><c> can</c><00:15:13.529><c> introduce</c><00:15:13.949><c> something</c><00:15:14.160><c> like</c><00:15:14.399><c> warp</c>

00:15:14.629 --> 00:15:14.639 align:start position:0%
so we can introduce something like warp
 

00:15:14.639 --> 00:15:18.110 align:start position:0%
so we can introduce something like warp
sync<00:15:14.939><c> to</c><00:15:15.360><c> try</c><00:15:15.629><c> and</c><00:15:15.990><c> get</c><00:15:16.709><c> users</c><00:15:17.429><c> caught</c><00:15:17.730><c> up</c><00:15:17.939><c> to</c>

00:15:18.110 --> 00:15:18.120 align:start position:0%
sync to try and get users caught up to
 

00:15:18.120 --> 00:15:20.340 align:start position:0%
sync to try and get users caught up to
the<00:15:18.209><c> head</c><00:15:18.389><c> of</c><00:15:18.540><c> the</c><00:15:18.629><c> chain</c><00:15:18.839><c> quickly</c>

00:15:20.340 --> 00:15:20.350 align:start position:0%
the head of the chain quickly
 

00:15:20.350 --> 00:15:23.509 align:start position:0%
the head of the chain quickly
and<00:15:20.499><c> in</c><00:15:21.429><c> the</c><00:15:21.879><c> current</c><00:15:22.299><c> formulation</c><00:15:22.749><c> of</c>

00:15:23.509 --> 00:15:23.519 align:start position:0%
and in the current formulation of
 

00:15:23.519 --> 00:15:25.979 align:start position:0%
and in the current formulation of
aetherium<00:15:24.519><c> you</c><00:15:25.359><c> have</c><00:15:25.509><c> this</c><00:15:25.720><c> sort</c><00:15:25.959><c> of</c>

00:15:25.979 --> 00:15:25.989 align:start position:0%
aetherium you have this sort of
 

00:15:25.989 --> 00:15:28.289 align:start position:0%
aetherium you have this sort of
thin-client<00:15:26.589><c> security</c><00:15:27.369><c> level</c><00:15:27.669><c> as</c><00:15:27.819><c> soon</c><00:15:28.149><c> as</c>

00:15:28.289 --> 00:15:28.299 align:start position:0%
thin-client security level as soon as
 

00:15:28.299 --> 00:15:29.639 align:start position:0%
thin-client security level as soon as
you've<00:15:28.449><c> warp</c><00:15:28.629><c> synched</c><00:15:28.929><c> but</c><00:15:29.199><c> then</c><00:15:29.350><c> when</c><00:15:29.529><c> you</c>

00:15:29.639 --> 00:15:29.649 align:start position:0%
you've warp synched but then when you
 

00:15:29.649 --> 00:15:31.470 align:start position:0%
you've warp synched but then when you
download<00:15:30.129><c> the</c><00:15:30.279><c> ancient</c><00:15:30.639><c> block</c><00:15:30.850><c> headers</c><00:15:31.179><c> later</c>

00:15:31.470 --> 00:15:31.480 align:start position:0%
download the ancient block headers later
 

00:15:31.480 --> 00:15:34.859 align:start position:0%
download the ancient block headers later
you<00:15:32.470><c> can</c><00:15:32.739><c> jump</c><00:15:33.730><c> up</c><00:15:33.850><c> to</c><00:15:34.089><c> like</c><00:15:34.209><c> a</c><00:15:34.239><c> regular</c><00:15:34.720><c> light</c>

00:15:34.859 --> 00:15:34.869 align:start position:0%
you can jump up to like a regular light
 

00:15:34.869 --> 00:15:36.179 align:start position:0%
you can jump up to like a regular light
client<00:15:35.230><c> level</c><00:15:35.439><c> of</c><00:15:35.529><c> security</c><00:15:35.769><c> so</c><00:15:36.009><c> you</c><00:15:36.069><c> have</c>

00:15:36.179 --> 00:15:36.189 align:start position:0%
client level of security so you have
 

00:15:36.189 --> 00:15:37.979 align:start position:0%
client level of security so you have
exactly<00:15:36.519><c> the</c><00:15:36.669><c> same</c><00:15:36.699><c> security</c><00:15:37.179><c> proposition</c><00:15:37.839><c> as</c>

00:15:37.979 --> 00:15:37.989 align:start position:0%
exactly the same security proposition as
 

00:15:37.989 --> 00:15:41.849 align:start position:0%
exactly the same security proposition as
if<00:15:38.529><c> you</c><00:15:38.799><c> had</c><00:15:40.230><c> synced</c><00:15:41.230><c> directly</c><00:15:41.619><c> from</c><00:15:41.709><c> the</c>

00:15:41.849 --> 00:15:41.859 align:start position:0%
if you had synced directly from the
 

00:15:41.859 --> 00:15:43.889 align:start position:0%
if you had synced directly from the
Genesis<00:15:42.249><c> but</c><00:15:42.519><c> in</c><00:15:42.970><c> future</c><00:15:43.419><c> versions</c><00:15:43.569><c> of</c>

00:15:43.889 --> 00:15:43.899 align:start position:0%
Genesis but in future versions of
 

00:15:43.899 --> 00:15:47.309 align:start position:0%
Genesis but in future versions of
aetherium<00:15:44.319><c> most</c><00:15:44.799><c> specifically</c><00:15:45.249><c> IP</c><00:15:45.669><c> 96</c><00:15:46.389><c> or</c><00:15:46.629><c> in</c>

00:15:47.309 --> 00:15:47.319 align:start position:0%
aetherium most specifically IP 96 or in
 

00:15:47.319 --> 00:15:49.829 align:start position:0%
aetherium most specifically IP 96 or in
proof<00:15:48.069><c> of</c><00:15:48.189><c> steak</c><00:15:48.489><c> that</c><00:15:48.790><c> finalizes</c><00:15:49.569><c> blocks</c>

00:15:49.829 --> 00:15:49.839 align:start position:0%
proof of steak that finalizes blocks
 

00:15:49.839 --> 00:15:52.710 align:start position:0%
proof of steak that finalizes blocks
economically<00:15:50.739><c> you</c><00:15:51.399><c> can</c><00:15:51.639><c> jump</c><00:15:52.059><c> directly</c><00:15:52.269><c> to</c>

00:15:52.710 --> 00:15:52.720 align:start position:0%
economically you can jump directly to
 

00:15:52.720 --> 00:15:54.599 align:start position:0%
economically you can jump directly to
the<00:15:52.899><c> head</c><00:15:53.019><c> of</c><00:15:53.049><c> the</c><00:15:53.169><c> chain</c><00:15:53.470><c> basically</c><00:15:53.739><c> without</c>

00:15:54.599 --> 00:15:54.609 align:start position:0%
the head of the chain basically without
 

00:15:54.609 --> 00:15:59.249 align:start position:0%
the head of the chain basically without
sacrificing<00:15:55.389><c> security</c><00:15:55.959><c> and</c><00:15:58.079><c> ancient</c><00:15:59.079><c> block</c>

00:15:59.249 --> 00:15:59.259 align:start position:0%
sacrificing security and ancient block
 

00:15:59.259 --> 00:16:01.019 align:start position:0%
sacrificing security and ancient block
download<00:15:59.709><c> might</c><00:15:59.889><c> still</c><00:16:00.189><c> be</c><00:16:00.339><c> useful</c><00:16:00.549><c> in</c><00:16:00.910><c> that</c>

00:16:01.019 --> 00:16:01.029 align:start position:0%
download might still be useful in that
 

00:16:01.029 --> 00:16:03.509 align:start position:0%
download might still be useful in that
case<00:16:01.299><c> if</c><00:16:01.540><c> you</c><00:16:01.569><c> want</c><00:16:01.779><c> to</c><00:16:01.869><c> see</c><00:16:02.109><c> what</c><00:16:02.799><c> the</c><00:16:03.220><c> state</c>

00:16:03.509 --> 00:16:03.519 align:start position:0%
case if you want to see what the state
 

00:16:03.519 --> 00:16:06.179 align:start position:0%
case if you want to see what the state
of<00:16:03.549><c> a</c><00:16:03.759><c> contract</c><00:16:04.209><c> was</c><00:16:04.419><c> months</c><00:16:04.839><c> ago</c><00:16:05.049><c> but</c><00:16:06.040><c> that</c>

00:16:06.179 --> 00:16:06.189 align:start position:0%
of a contract was months ago but that
 

00:16:06.189 --> 00:16:08.009 align:start position:0%
of a contract was months ago but that
can<00:16:06.339><c> be</c><00:16:06.369><c> done</c><00:16:06.609><c> say</c><00:16:06.879><c> on</c><00:16:07.059><c> Wi-Fi</c><00:16:07.540><c> on</c><00:16:07.779><c> a</c><00:16:07.809><c> mobile</c>

00:16:08.009 --> 00:16:08.019 align:start position:0%
can be done say on Wi-Fi on a mobile
 

00:16:08.019 --> 00:16:10.739 align:start position:0%
can be done say on Wi-Fi on a mobile
device<00:16:08.429><c> where</c><00:16:09.429><c> you</c><00:16:09.519><c> warp</c><00:16:09.790><c> sync</c><00:16:10.089><c> when</c><00:16:10.299><c> you</c>

00:16:10.739 --> 00:16:10.749 align:start position:0%
device where you warp sync when you
 

00:16:10.749 --> 00:16:12.179 align:start position:0%
device where you warp sync when you
first<00:16:10.989><c> start</c><00:16:11.199><c> the</c><00:16:11.290><c> app</c><00:16:11.410><c> regardless</c><00:16:11.949><c> of</c><00:16:12.069><c> your</c>

00:16:12.179 --> 00:16:12.189 align:start position:0%
first start the app regardless of your
 

00:16:12.189 --> 00:16:13.379 align:start position:0%
first start the app regardless of your
connection<00:16:12.579><c> but</c><00:16:12.790><c> you</c><00:16:12.879><c> don't</c><00:16:13.029><c> want</c><00:16:13.179><c> to</c><00:16:13.239><c> waste</c>

00:16:13.379 --> 00:16:13.389 align:start position:0%
connection but you don't want to waste
 

00:16:13.389 --> 00:16:15.869 align:start position:0%
connection but you don't want to waste
the<00:16:13.480><c> bandwidth</c><00:16:13.989><c> over</c><00:16:14.230><c> data</c><00:16:14.889><c> to</c><00:16:15.339><c> download</c><00:16:15.489><c> all</c>

00:16:15.869 --> 00:16:15.879 align:start position:0%
the bandwidth over data to download all
 

00:16:15.879 --> 00:16:18.749 align:start position:0%
the bandwidth over data to download all
those<00:16:16.059><c> blocks</c><00:16:16.589><c> all</c><00:16:17.589><c> those</c><00:16:17.769><c> ancient</c><00:16:17.980><c> blocks</c><00:16:18.399><c> so</c>

00:16:18.749 --> 00:16:18.759 align:start position:0%
those blocks all those ancient blocks so
 

00:16:18.759 --> 00:16:20.609 align:start position:0%
those blocks all those ancient blocks so
you<00:16:18.819><c> wait</c><00:16:19.029><c> until</c><00:16:19.179><c> you're</c><00:16:19.389><c> on</c><00:16:19.419><c> Wi-Fi</c><00:16:19.869><c> to</c><00:16:19.929><c> finish</c>

00:16:20.609 --> 00:16:20.619 align:start position:0%
you wait until you're on Wi-Fi to finish
 

00:16:20.619 --> 00:16:23.159 align:start position:0%
you wait until you're on Wi-Fi to finish
that<00:16:20.799><c> process</c><00:16:21.040><c> and</c><00:16:21.399><c> that's</c><00:16:21.489><c> pretty</c><00:16:21.759><c> a</c><00:16:22.449><c> pretty</c>

00:16:23.159 --> 00:16:23.169 align:start position:0%
that process and that's pretty a pretty
 

00:16:23.169 --> 00:16:25.859 align:start position:0%
that process and that's pretty a pretty
useful<00:16:23.350><c> way</c><00:16:23.619><c> to</c><00:16:23.679><c> do</c><00:16:23.859><c> things</c><00:16:24.329><c> so</c><00:16:25.329><c> I'd</c><00:16:25.660><c> like</c><00:16:25.809><c> to</c>

00:16:25.859 --> 00:16:25.869 align:start position:0%
useful way to do things so I'd like to
 

00:16:25.869 --> 00:16:29.609 align:start position:0%
useful way to do things so I'd like to
talk<00:16:26.109><c> a</c><00:16:26.169><c> bit</c><00:16:26.589><c> about</c><00:16:26.709><c> some</c><00:16:27.089><c> RPC</c><00:16:28.089><c> pitfalls</c><00:16:28.720><c> so</c><00:16:29.109><c> if</c>

00:16:29.609 --> 00:16:29.619 align:start position:0%
talk a bit about some RPC pitfalls so if
 

00:16:29.619 --> 00:16:31.679 align:start position:0%
talk a bit about some RPC pitfalls so if
you're<00:16:29.889><c> developing</c><00:16:30.039><c> on</c><00:16:30.669><c> a</c><00:16:30.699><c> light</c><00:16:30.939><c> client</c><00:16:31.389><c> what</c>

00:16:31.679 --> 00:16:31.689 align:start position:0%
you're developing on a light client what
 

00:16:31.689 --> 00:16:33.689 align:start position:0%
you're developing on a light client what
works<00:16:32.139><c> and</c><00:16:32.410><c> what</c><00:16:32.589><c> doesn't</c><00:16:32.829><c> because</c><00:16:33.429><c> we</c><00:16:33.549><c> have</c>

00:16:33.689 --> 00:16:33.699 align:start position:0%
works and what doesn't because we have
 

00:16:33.699 --> 00:16:36.479 align:start position:0%
works and what doesn't because we have
all<00:16:33.910><c> these</c><00:16:34.169><c> RPC</c><00:16:35.169><c> requests</c><00:16:35.649><c> that</c><00:16:35.769><c> seem</c><00:16:35.980><c> fairly</c>

00:16:36.479 --> 00:16:36.489 align:start position:0%
all these RPC requests that seem fairly
 

00:16:36.489 --> 00:16:38.309 align:start position:0%
all these RPC requests that seem fairly
simple<00:16:36.819><c> ways</c><00:16:37.149><c> to</c><00:16:37.179><c> gather</c><00:16:37.600><c> data</c><00:16:37.929><c> about</c><00:16:38.199><c> the</c>

00:16:38.309 --> 00:16:38.319 align:start position:0%
simple ways to gather data about the
 

00:16:38.319 --> 00:16:41.429 align:start position:0%
simple ways to gather data about the
blockchain<00:16:38.529><c> from</c><00:16:39.009><c> the</c><00:16:39.129><c> node</c><00:16:39.629><c> but</c><00:16:40.629><c> some</c><00:16:41.319><c> of</c>

00:16:41.429 --> 00:16:41.439 align:start position:0%
blockchain from the node but some of
 

00:16:41.439 --> 00:16:42.869 align:start position:0%
blockchain from the node but some of
them<00:16:41.589><c> under</c><00:16:41.709><c> the</c><00:16:41.919><c> hood</c><00:16:42.039><c> might</c><00:16:42.249><c> be</c><00:16:42.369><c> doing</c><00:16:42.549><c> a</c><00:16:42.639><c> lot</c>

00:16:42.869 --> 00:16:42.879 align:start position:0%
them under the hood might be doing a lot
 

00:16:42.879 --> 00:16:45.119 align:start position:0%
them under the hood might be doing a lot
of<00:16:42.939><c> work</c><00:16:43.269><c> even</c><00:16:43.509><c> on</c><00:16:43.809><c> full</c><00:16:44.109><c> nodes</c><00:16:44.319><c> and</c><00:16:44.619><c> on</c><00:16:44.889><c> light</c>

00:16:45.119 --> 00:16:45.129 align:start position:0%
of work even on full nodes and on light
 

00:16:45.129 --> 00:16:46.559 align:start position:0%
of work even on full nodes and on light
nodes<00:16:45.429><c> it's</c><00:16:45.730><c> important</c><00:16:46.119><c> to</c><00:16:46.209><c> know</c><00:16:46.329><c> actually</c>

00:16:46.559 --> 00:16:46.569 align:start position:0%
nodes it's important to know actually
 

00:16:46.569 --> 00:16:47.970 align:start position:0%
nodes it's important to know actually
which<00:16:46.959><c> requests</c><00:16:47.379><c> are</c><00:16:47.439><c> going</c><00:16:47.499><c> to</c><00:16:47.619><c> be</c><00:16:47.709><c> the</c><00:16:47.799><c> most</c>

00:16:47.970 --> 00:16:47.980 align:start position:0%
which requests are going to be the most
 

00:16:47.980 --> 00:16:51.929 align:start position:0%
which requests are going to be the most
expensive<00:16:48.189><c> so</c><00:16:49.079><c> first</c><00:16:50.079><c> of</c><00:16:50.259><c> all</c><00:16:50.730><c> getting</c><00:16:51.730><c> logs</c>

00:16:51.929 --> 00:16:51.939 align:start position:0%
expensive so first of all getting logs
 

00:16:51.939 --> 00:16:54.840 align:start position:0%
expensive so first of all getting logs
can<00:16:52.359><c> be</c><00:16:52.480><c> very</c><00:16:52.809><c> expensive</c><00:16:53.109><c> especially</c><00:16:54.100><c> if</c>

00:16:54.840 --> 00:16:54.850 align:start position:0%
can be very expensive especially if
 

00:16:54.850 --> 00:16:56.879 align:start position:0%
can be very expensive especially if
you're<00:16:55.089><c> trying</c><00:16:55.359><c> to</c><00:16:55.449><c> get</c><00:16:55.689><c> all</c><00:16:55.839><c> the</c><00:16:56.199><c> logs</c><00:16:56.439><c> in</c><00:16:56.799><c> the</c>

00:16:56.879 --> 00:16:56.889 align:start position:0%
you're trying to get all the logs in the
 

00:16:56.889 --> 00:16:59.340 align:start position:0%
you're trying to get all the logs in the
history<00:16:57.220><c> of</c><00:16:57.279><c> everything</c><00:16:57.609><c> that</c><00:16:58.509><c> means</c><00:16:58.779><c> that</c><00:16:59.109><c> if</c>

00:16:59.340 --> 00:16:59.350 align:start position:0%
history of everything that means that if
 

00:16:59.350 --> 00:17:00.720 align:start position:0%
history of everything that means that if
you're<00:16:59.589><c> on</c><00:16:59.739><c> a</c><00:16:59.769><c> light</c><00:16:59.980><c> client</c><00:17:00.369><c> which</c><00:17:00.489><c> isn't</c>

00:17:00.720 --> 00:17:00.730 align:start position:0%
you're on a light client which isn't
 

00:17:00.730 --> 00:17:03.389 align:start position:0%
you're on a light client which isn't
storing<00:17:01.239><c> all</c><00:17:01.389><c> the</c><00:17:01.539><c> headers</c><00:17:01.919><c> you</c><00:17:02.919><c> need</c><00:17:03.100><c> to</c><00:17:03.249><c> then</c>

00:17:03.389 --> 00:17:03.399 align:start position:0%
storing all the headers you need to then
 

00:17:03.399 --> 00:17:05.399 align:start position:0%
storing all the headers you need to then
download<00:17:03.999><c> all</c><00:17:04.179><c> these</c><00:17:04.329><c> headers</c><00:17:04.689><c> then</c><00:17:05.139><c> check</c>

00:17:05.399 --> 00:17:05.409 align:start position:0%
download all these headers then check
 

00:17:05.409 --> 00:17:06.899 align:start position:0%
download all these headers then check
bloom<00:17:05.709><c> filters</c><00:17:06.159><c> which</c><00:17:06.370><c> may</c><00:17:06.519><c> have</c><00:17:06.669><c> false</c>

00:17:06.899 --> 00:17:06.909 align:start position:0%
bloom filters which may have false
 

00:17:06.909 --> 00:17:11.909 align:start position:0%
bloom filters which may have false
positives<00:17:07.449><c> and</c><00:17:07.659><c> then</c><00:17:09.839><c> finally</c><00:17:10.839><c> get</c><00:17:11.500><c> receipts</c>

00:17:11.909 --> 00:17:11.919 align:start position:0%
positives and then finally get receipts
 

00:17:11.919 --> 00:17:14.909 align:start position:0%
positives and then finally get receipts
and<00:17:12.730><c> and</c><00:17:13.360><c> scan</c><00:17:13.809><c> for</c><00:17:13.839><c> logs</c><00:17:14.169><c> so</c><00:17:14.319><c> that's</c><00:17:14.470><c> a</c><00:17:14.529><c> lot</c><00:17:14.740><c> of</c>

00:17:14.909 --> 00:17:14.919 align:start position:0%
and and scan for logs so that's a lot of
 

00:17:14.919 --> 00:17:16.350 align:start position:0%
and and scan for logs so that's a lot of
bandwidth<00:17:15.309><c> whereas</c><00:17:15.970><c> if</c><00:17:16.089><c> you're</c><00:17:16.240><c> just</c>

00:17:16.350 --> 00:17:16.360 align:start position:0%
bandwidth whereas if you're just
 

00:17:16.360 --> 00:17:17.789 align:start position:0%
bandwidth whereas if you're just
watching<00:17:16.600><c> the</c><00:17:16.929><c> head</c><00:17:17.079><c> of</c><00:17:17.199><c> the</c><00:17:17.289><c> chain</c><00:17:17.470><c> for</c><00:17:17.679><c> log</c>

00:17:17.789 --> 00:17:17.799 align:start position:0%
watching the head of the chain for log
 

00:17:17.799 --> 00:17:20.220 align:start position:0%
watching the head of the chain for log
events<00:17:18.130><c> it's</c><00:17:18.279><c> actually</c><00:17:18.669><c> fairly</c><00:17:19.230><c> fairly</c>

00:17:20.220 --> 00:17:20.230 align:start position:0%
events it's actually fairly fairly
 

00:17:20.230 --> 00:17:22.590 align:start position:0%
events it's actually fairly fairly
performant<00:17:21.159><c> but</c><00:17:21.880><c> if</c><00:17:22.089><c> you're</c><00:17:22.209><c> trying</c><00:17:22.449><c> to</c><00:17:22.480><c> get</c>

00:17:22.590 --> 00:17:22.600 align:start position:0%
performant but if you're trying to get
 

00:17:22.600 --> 00:17:24.600 align:start position:0%
performant but if you're trying to get
historical<00:17:23.380><c> logs</c><00:17:23.589><c> it</c><00:17:23.919><c> can</c><00:17:24.069><c> be</c><00:17:24.189><c> very</c><00:17:24.370><c> difficult</c>

00:17:24.600 --> 00:17:24.610 align:start position:0%
historical logs it can be very difficult
 

00:17:24.610 --> 00:17:26.850 align:start position:0%
historical logs it can be very difficult
the<00:17:25.029><c> reason</c><00:17:25.299><c> is</c><00:17:25.419><c> they</c><00:17:25.569><c> aren't</c><00:17:25.839><c> embedded</c><00:17:26.500><c> into</c>

00:17:26.850 --> 00:17:26.860 align:start position:0%
the reason is they aren't embedded into
 

00:17:26.860 --> 00:17:28.710 align:start position:0%
the reason is they aren't embedded into
that<00:17:27.010><c> Merkle</c><00:17:27.429><c> tree</c><00:17:27.639><c> of</c><00:17:27.760><c> the</c><00:17:27.909><c> state</c><00:17:28.149><c> it's</c><00:17:28.539><c> why</c>

00:17:28.710 --> 00:17:28.720 align:start position:0%
that Merkle tree of the state it's why
 

00:17:28.720 --> 00:17:30.299 align:start position:0%
that Merkle tree of the state it's why
they're<00:17:28.899><c> cheaper</c><00:17:29.379><c> but</c><00:17:29.799><c> it's</c><00:17:29.950><c> also</c><00:17:30.070><c> why</c>

00:17:30.299 --> 00:17:30.309 align:start position:0%
they're cheaper but it's also why
 

00:17:30.309 --> 00:17:31.640 align:start position:0%
they're cheaper but it's also why
they're<00:17:30.490><c> more</c><00:17:30.669><c> expensive</c><00:17:31.000><c> to</c>

00:17:31.640 --> 00:17:31.650 align:start position:0%
they're more expensive to
 

00:17:31.650 --> 00:17:35.450 align:start position:0%
they're more expensive to
for<00:17:32.130><c> more</c><00:17:32.250><c> ancient</c><00:17:32.460><c> data</c><00:17:33.059><c> so</c><00:17:33.830><c> there</c><00:17:34.830><c> are</c><00:17:35.010><c> a</c><00:17:35.039><c> few</c>

00:17:35.450 --> 00:17:35.460 align:start position:0%
for more ancient data so there are a few
 

00:17:35.460 --> 00:17:36.830 align:start position:0%
for more ancient data so there are a few
approaches<00:17:36.000><c> that</c><00:17:36.120><c> you</c><00:17:36.210><c> can</c><00:17:36.240><c> have</c><00:17:36.570><c> so</c><00:17:36.779><c> you</c>

00:17:36.830 --> 00:17:36.840 align:start position:0%
approaches that you can have so you
 

00:17:36.840 --> 00:17:38.180 align:start position:0%
approaches that you can have so you
could<00:17:36.990><c> have</c><00:17:37.200><c> you</c><00:17:37.529><c> could</c><00:17:37.650><c> have</c><00:17:37.710><c> your</c><00:17:37.860><c> peers</c>

00:17:38.180 --> 00:17:38.190 align:start position:0%
could have you could have your peers
 

00:17:38.190 --> 00:17:41.600 align:start position:0%
could have you could have your peers
search<00:17:38.520><c> for</c><00:17:38.850><c> you</c><00:17:39.029><c> but</c><00:17:39.799><c> again</c><00:17:40.799><c> you</c><00:17:41.429><c> don't</c>

00:17:41.600 --> 00:17:41.610 align:start position:0%
search for you but again you don't
 

00:17:41.610 --> 00:17:43.399 align:start position:0%
search for you but again you don't
necessarily<00:17:41.880><c> know</c><00:17:42.570><c> that</c><00:17:42.600><c> they've</c><00:17:42.990><c> given</c><00:17:43.320><c> you</c>

00:17:43.399 --> 00:17:43.409 align:start position:0%
necessarily know that they've given you
 

00:17:43.409 --> 00:17:45.740 align:start position:0%
necessarily know that they've given you
all<00:17:43.650><c> the</c><00:17:43.950><c> data</c><00:17:44.070><c> they</c><00:17:44.340><c> were</c><00:17:44.400><c> supposed</c><00:17:44.760><c> to</c>

00:17:45.740 --> 00:17:45.750 align:start position:0%
all the data they were supposed to
 

00:17:45.750 --> 00:17:48.590 align:start position:0%
all the data they were supposed to
you<00:17:46.020><c> can</c><00:17:46.230><c> search</c><00:17:46.640><c> locally</c><00:17:47.640><c> which</c><00:17:48.299><c> is</c><00:17:48.450><c> what</c><00:17:48.570><c> I</c>

00:17:48.590 --> 00:17:48.600 align:start position:0%
you can search locally which is what I
 

00:17:48.600 --> 00:17:50.480 align:start position:0%
you can search locally which is what I
just<00:17:48.690><c> described</c><00:17:49.289><c> which</c><00:17:49.500><c> is</c><00:17:49.650><c> to</c><00:17:49.860><c> actually</c><00:17:50.190><c> go</c>

00:17:50.480 --> 00:17:50.490 align:start position:0%
just described which is to actually go
 

00:17:50.490 --> 00:17:51.860 align:start position:0%
just described which is to actually go
through<00:17:50.669><c> this</c><00:17:50.820><c> long</c><00:17:51.059><c> and</c><00:17:51.240><c> involved</c><00:17:51.480><c> process</c>

00:17:51.860 --> 00:17:51.870 align:start position:0%
through this long and involved process
 

00:17:51.870 --> 00:17:54.289 align:start position:0%
through this long and involved process
of<00:17:52.200><c> downloading</c><00:17:52.380><c> everything</c><00:17:53.070><c> or</c><00:17:53.909><c> you</c><00:17:54.090><c> can</c>

00:17:54.289 --> 00:17:54.299 align:start position:0%
of downloading everything or you can
 

00:17:54.299 --> 00:17:56.000 align:start position:0%
of downloading everything or you can
keep<00:17:54.539><c> some</c><00:17:54.809><c> metadata</c><00:17:55.200><c> so</c><00:17:55.559><c> that's</c><00:17:55.710><c> also</c>

00:17:56.000 --> 00:17:56.010 align:start position:0%
keep some metadata so that's also
 

00:17:56.010 --> 00:17:57.680 align:start position:0%
keep some metadata so that's also
another<00:17:56.429><c> approach</c><00:17:56.610><c> where</c><00:17:57.120><c> the</c><00:17:57.240><c> light</c><00:17:57.360><c> clients</c>

00:17:57.680 --> 00:17:57.690 align:start position:0%
another approach where the light clients
 

00:17:57.690 --> 00:17:59.600 align:start position:0%
another approach where the light clients
keep<00:17:57.840><c> some</c><00:17:58.080><c> metadata</c><00:17:58.950><c> that</c><00:17:59.190><c> helps</c><00:17:59.460><c> them</c>

00:17:59.600 --> 00:17:59.610 align:start position:0%
keep some metadata that helps them
 

00:17:59.610 --> 00:18:01.580 align:start position:0%
keep some metadata that helps them
search<00:17:59.820><c> but</c><00:18:00.090><c> again</c><00:18:00.299><c> it</c><00:18:00.480><c> raises</c><00:18:01.140><c> that</c><00:18:01.289><c> storage</c>

00:18:01.580 --> 00:18:01.590 align:start position:0%
search but again it raises that storage
 

00:18:01.590 --> 00:18:03.110 align:start position:0%
search but again it raises that storage
requirement<00:18:02.159><c> significantly</c><00:18:02.789><c> and</c><00:18:02.970><c> there's</c>

00:18:03.110 --> 00:18:03.120 align:start position:0%
requirement significantly and there's
 

00:18:03.120 --> 00:18:05.720 align:start position:0%
requirement significantly and there's
not<00:18:03.299><c> really</c><00:18:03.870><c> a</c><00:18:04.080><c> good</c><00:18:04.590><c> way</c><00:18:04.830><c> to</c><00:18:04.890><c> bring</c><00:18:05.250><c> that</c><00:18:05.460><c> down</c>

00:18:05.720 --> 00:18:05.730 align:start position:0%
not really a good way to bring that down
 

00:18:05.730 --> 00:18:07.549 align:start position:0%
not really a good way to bring that down
and<00:18:05.970><c> if</c><00:18:06.419><c> we're</c><00:18:06.539><c> trying</c><00:18:06.690><c> to</c><00:18:06.840><c> target</c><00:18:07.049><c> say</c><00:18:07.380><c> the</c>

00:18:07.549 --> 00:18:07.559 align:start position:0%
and if we're trying to target say the
 

00:18:07.559 --> 00:18:09.500 align:start position:0%
and if we're trying to target say the
mobile<00:18:07.950><c> space</c><00:18:08.220><c> where</c><00:18:08.520><c> users</c><00:18:08.820><c> don't</c><00:18:09.000><c> have</c><00:18:09.120><c> that</c>

00:18:09.500 --> 00:18:09.510 align:start position:0%
mobile space where users don't have that
 

00:18:09.510 --> 00:18:11.630 align:start position:0%
mobile space where users don't have that
much<00:18:09.779><c> storage</c><00:18:10.200><c> it</c><00:18:10.860><c> may</c><00:18:11.070><c> not</c><00:18:11.309><c> really</c><00:18:11.520><c> be</c>

00:18:11.630 --> 00:18:11.640 align:start position:0%
much storage it may not really be
 

00:18:11.640 --> 00:18:14.930 align:start position:0%
much storage it may not really be
feasible<00:18:12.480><c> whereas</c><00:18:12.840><c> on</c><00:18:13.110><c> the</c><00:18:13.260><c> laptop</c><00:18:14.039><c> case</c><00:18:14.309><c> you</c>

00:18:14.930 --> 00:18:14.940 align:start position:0%
feasible whereas on the laptop case you
 

00:18:14.940 --> 00:18:16.180 align:start position:0%
feasible whereas on the laptop case you
do<00:18:15.120><c> have</c><00:18:15.270><c> that</c><00:18:15.390><c> storage</c><00:18:15.750><c> and</c><00:18:15.990><c> may</c><00:18:16.080><c> be</c>

00:18:16.180 --> 00:18:16.190 align:start position:0%
do have that storage and may be
 

00:18:16.190 --> 00:18:18.980 align:start position:0%
do have that storage and may be
searching<00:18:17.190><c> logs</c><00:18:17.399><c> can</c><00:18:17.880><c> be</c><00:18:17.909><c> effective</c><00:18:18.750><c> in</c><00:18:18.840><c> that</c>

00:18:18.980 --> 00:18:18.990 align:start position:0%
searching logs can be effective in that
 

00:18:18.990 --> 00:18:23.360 align:start position:0%
searching logs can be effective in that
case<00:18:19.429><c> another</c><00:18:20.429><c> problem</c><00:18:20.970><c> is</c><00:18:21.120><c> getting</c><00:18:22.070><c> stuff</c><00:18:23.070><c> by</c>

00:18:23.360 --> 00:18:23.370 align:start position:0%
case another problem is getting stuff by
 

00:18:23.370 --> 00:18:26.330 align:start position:0%
case another problem is getting stuff by
hash<00:18:23.640><c> so</c><00:18:24.000><c> for</c><00:18:24.539><c> recent</c><00:18:25.020><c> data</c><00:18:25.260><c> transactions</c><00:18:26.159><c> and</c>

00:18:26.330 --> 00:18:26.340 align:start position:0%
hash so for recent data transactions and
 

00:18:26.340 --> 00:18:28.220 align:start position:0%
hash so for recent data transactions and
receipts<00:18:26.700><c> you</c><00:18:27.149><c> don't</c><00:18:27.390><c> know</c><00:18:27.539><c> anything</c><00:18:27.899><c> but</c><00:18:28.049><c> the</c>

00:18:28.220 --> 00:18:28.230 align:start position:0%
receipts you don't know anything but the
 

00:18:28.230 --> 00:18:30.440 align:start position:0%
receipts you don't know anything but the
hash<00:18:28.409><c> if</c><00:18:28.890><c> you</c><00:18:29.070><c> just</c><00:18:29.309><c> broadcast</c><00:18:29.490><c> a</c><00:18:29.880><c> transaction</c>

00:18:30.440 --> 00:18:30.450 align:start position:0%
hash if you just broadcast a transaction
 

00:18:30.450 --> 00:18:32.240 align:start position:0%
hash if you just broadcast a transaction
because<00:18:30.809><c> that</c><00:18:31.110><c> transaction</c><00:18:31.679><c> may</c><00:18:31.860><c> have</c><00:18:32.100><c> not</c>

00:18:32.240 --> 00:18:32.250 align:start position:0%
because that transaction may have not
 

00:18:32.250 --> 00:18:36.049 align:start position:0%
because that transaction may have not
even<00:18:32.279><c> been</c><00:18:32.640><c> mined</c><00:18:32.909><c> yet</c><00:18:33.179><c> but</c><00:18:34.610><c> the</c><00:18:35.610><c> problem</c><00:18:35.970><c> is</c>

00:18:36.049 --> 00:18:36.059 align:start position:0%
even been mined yet but the problem is
 

00:18:36.059 --> 00:18:38.600 align:start position:0%
even been mined yet but the problem is
hashes<00:18:36.570><c> by</c><00:18:36.779><c> design</c><00:18:37.230><c> leak</c><00:18:37.590><c> no</c><00:18:37.890><c> information</c>

00:18:38.600 --> 00:18:38.610 align:start position:0%
hashes by design leak no information
 

00:18:38.610 --> 00:18:40.430 align:start position:0%
hashes by design leak no information
about<00:18:38.820><c> the</c><00:18:39.450><c> block</c><00:18:39.659><c> number</c><00:18:40.020><c> so</c><00:18:40.169><c> if</c><00:18:40.260><c> it's</c><00:18:40.380><c> a</c>

00:18:40.430 --> 00:18:40.440 align:start position:0%
about the block number so if it's a
 

00:18:40.440 --> 00:18:42.769 align:start position:0%
about the block number so if it's a
block<00:18:40.620><c> hash</c><00:18:40.860><c> you</c><00:18:41.070><c> don't</c><00:18:41.250><c> know</c><00:18:41.399><c> which</c><00:18:42.179><c> pier</c><00:18:42.630><c> to</c>

00:18:42.769 --> 00:18:42.779 align:start position:0%
block hash you don't know which pier to
 

00:18:42.779 --> 00:18:46.669 align:start position:0%
block hash you don't know which pier to
ask<00:18:42.960><c> for</c><00:18:43.799><c> the</c><00:18:44.190><c> the</c><00:18:44.220><c> block</c><00:18:44.880><c> whose</c><00:18:45.870><c> hash</c><00:18:46.140><c> is</c><00:18:46.380><c> that</c>

00:18:46.669 --> 00:18:46.679 align:start position:0%
ask for the the block whose hash is that
 

00:18:46.679 --> 00:18:48.680 align:start position:0%
ask for the the block whose hash is that
transaction<00:18:47.580><c> hashes</c><00:18:47.940><c> are</c><00:18:48.090><c> even</c><00:18:48.330><c> a</c><00:18:48.390><c> little</c><00:18:48.480><c> bit</c>

00:18:48.680 --> 00:18:48.690 align:start position:0%
transaction hashes are even a little bit
 

00:18:48.690 --> 00:18:51.409 align:start position:0%
transaction hashes are even a little bit
worse<00:18:48.929><c> because</c><00:18:49.309><c> you</c><00:18:50.309><c> have</c><00:18:50.490><c> to</c><00:18:50.669><c> find</c><00:18:50.909><c> out</c><00:18:51.090><c> where</c>

00:18:51.409 --> 00:18:51.419 align:start position:0%
worse because you have to find out where
 

00:18:51.419 --> 00:18:53.120 align:start position:0%
worse because you have to find out where
in<00:18:51.659><c> the</c><00:18:51.750><c> blockchain</c><00:18:51.990><c> that</c><00:18:52.409><c> transaction</c><00:18:52.980><c> hash</c>

00:18:53.120 --> 00:18:53.130 align:start position:0%
in the blockchain that transaction hash
 

00:18:53.130 --> 00:18:54.620 align:start position:0%
in the blockchain that transaction hash
occurred<00:18:53.520><c> and</c><00:18:53.789><c> there</c><00:18:54.179><c> are</c><00:18:54.270><c> multiple</c>

00:18:54.620 --> 00:18:54.630 align:start position:0%
occurred and there are multiple
 

00:18:54.630 --> 00:18:56.950 align:start position:0%
occurred and there are multiple
different<00:18:54.750><c> Forks</c><00:18:55.260><c> where</c><00:18:55.440><c> that</c><00:18:55.620><c> could</c><00:18:56.460><c> occur</c>

00:18:56.950 --> 00:18:56.960 align:start position:0%
different Forks where that could occur
 

00:18:56.960 --> 00:19:00.769 align:start position:0%
different Forks where that could occur
and<00:18:57.960><c> actually</c><00:18:58.500><c> with</c><00:18:58.770><c> one</c><00:18:58.799><c> of</c><00:18:59.010><c> the</c><00:18:59.100><c> new</c><00:18:59.250><c> IPs</c><00:18:59.909><c> we</c>

00:19:00.769 --> 00:19:00.779 align:start position:0%
and actually with one of the new IPs we
 

00:19:00.779 --> 00:19:02.930 align:start position:0%
and actually with one of the new IPs we
can<00:19:00.960><c> have</c><00:19:01.140><c> the</c><00:19:01.470><c> same</c><00:19:01.740><c> transaction</c><00:19:02.279><c> exact</c>

00:19:02.930 --> 00:19:02.940 align:start position:0%
can have the same transaction exact
 

00:19:02.940 --> 00:19:04.220 align:start position:0%
can have the same transaction exact
transaction<00:19:03.510><c> included</c><00:19:03.929><c> in</c><00:19:03.990><c> the</c><00:19:04.049><c> chain</c>

00:19:04.220 --> 00:19:04.230 align:start position:0%
transaction included in the chain
 

00:19:04.230 --> 00:19:06.529 align:start position:0%
transaction included in the chain
multiple<00:19:04.440><c> times</c><00:19:04.950><c> which</c><00:19:05.850><c> just</c><00:19:06.059><c> means</c><00:19:06.240><c> even</c>

00:19:06.529 --> 00:19:06.539 align:start position:0%
multiple times which just means even
 

00:19:06.539 --> 00:19:07.960 align:start position:0%
multiple times which just means even
more<00:19:06.720><c> work</c><00:19:06.870><c> for</c><00:19:07.049><c> the</c><00:19:07.140><c> light</c><00:19:07.289><c> client</c><00:19:07.620><c> to</c><00:19:07.740><c> check</c>

00:19:07.960 --> 00:19:07.970 align:start position:0%
more work for the light client to check
 

00:19:07.970 --> 00:19:11.210 align:start position:0%
more work for the light client to check
and<00:19:09.020><c> for</c><00:19:10.020><c> checking</c><00:19:10.350><c> these</c><00:19:10.500><c> transactions</c><00:19:11.070><c> and</c>

00:19:11.210 --> 00:19:11.220 align:start position:0%
and for checking these transactions and
 

00:19:11.220 --> 00:19:12.649 align:start position:0%
and for checking these transactions and
receipts<00:19:11.520><c> it</c><00:19:11.700><c> means</c><00:19:11.880><c> that</c><00:19:12.059><c> the</c><00:19:12.149><c> full</c><00:19:12.390><c> nodes</c>

00:19:12.649 --> 00:19:12.659 align:start position:0%
receipts it means that the full nodes
 

00:19:12.659 --> 00:19:14.330 align:start position:0%
receipts it means that the full nodes
have<00:19:13.049><c> to</c><00:19:13.230><c> maintain</c><00:19:13.590><c> this</c><00:19:13.710><c> fairly</c><00:19:14.039><c> expensive</c>

00:19:14.330 --> 00:19:14.340 align:start position:0%
have to maintain this fairly expensive
 

00:19:14.340 --> 00:19:16.760 align:start position:0%
have to maintain this fairly expensive
index<00:19:14.940><c> mapping</c><00:19:15.510><c> transaction</c><00:19:16.140><c> hashes</c><00:19:16.559><c> to</c>

00:19:16.760 --> 00:19:16.770 align:start position:0%
index mapping transaction hashes to
 

00:19:16.770 --> 00:19:20.090 align:start position:0%
index mapping transaction hashes to
their<00:19:17.490><c> location</c><00:19:18.000><c> in</c><00:19:18.149><c> the</c><00:19:18.299><c> blockchain</c><00:19:19.100><c> and</c>

00:19:20.090 --> 00:19:20.100 align:start position:0%
their location in the blockchain and
 

00:19:20.100 --> 00:19:23.299 align:start position:0%
their location in the blockchain and
lastly<00:19:20.669><c> estimating</c><00:19:21.419><c> gas</c><00:19:21.630><c> so</c><00:19:22.320><c> these</c><00:19:22.950><c> state</c>

00:19:23.299 --> 00:19:23.309 align:start position:0%
lastly estimating gas so these state
 

00:19:23.309 --> 00:19:25.940 align:start position:0%
lastly estimating gas so these state
proofs<00:19:23.549><c> that</c><00:19:23.640><c> I</c><00:19:23.760><c> talked</c><00:19:24.000><c> about</c><00:19:24.120><c> before</c><00:19:24.830><c> can</c><00:19:25.830><c> be</c>

00:19:25.940 --> 00:19:25.950 align:start position:0%
proofs that I talked about before can be
 

00:19:25.950 --> 00:19:27.590 align:start position:0%
proofs that I talked about before can be
used<00:19:26.220><c> for</c><00:19:26.429><c> estimate</c><00:19:26.850><c> gas</c><00:19:27.029><c> and</c><00:19:27.419><c> eath</c>

00:19:27.590 --> 00:19:27.600 align:start position:0%
used for estimate gas and eath
 

00:19:27.600 --> 00:19:29.360 align:start position:0%
used for estimate gas and eath
underscore<00:19:28.049><c> call</c><00:19:28.289><c> but</c><00:19:28.860><c> the</c><00:19:28.980><c> thing</c><00:19:29.130><c> is</c><00:19:29.250><c> with</c>

00:19:29.360 --> 00:19:29.370 align:start position:0%
underscore call but the thing is with
 

00:19:29.370 --> 00:19:31.610 align:start position:0%
underscore call but the thing is with
estimate<00:19:29.820><c> gas</c><00:19:30.029><c> the</c><00:19:30.510><c> typical</c><00:19:30.929><c> approach</c><00:19:31.140><c> is</c><00:19:31.440><c> to</c>

00:19:31.610 --> 00:19:31.620 align:start position:0%
estimate gas the typical approach is to
 

00:19:31.620 --> 00:19:33.649 align:start position:0%
estimate gas the typical approach is to
binary<00:19:31.860><c> search</c><00:19:32.340><c> to</c><00:19:32.610><c> find</c><00:19:32.820><c> out</c><00:19:32.940><c> exactly</c><00:19:33.390><c> how</c>

00:19:33.649 --> 00:19:33.659 align:start position:0%
binary search to find out exactly how
 

00:19:33.659 --> 00:19:35.570 align:start position:0%
binary search to find out exactly how
much<00:19:33.870><c> gas</c><00:19:34.169><c> a</c><00:19:34.200><c> transaction</c><00:19:34.860><c> will</c><00:19:34.950><c> take</c><00:19:34.980><c> so</c><00:19:35.520><c> you</c>

00:19:35.570 --> 00:19:35.580 align:start position:0%
much gas a transaction will take so you
 

00:19:35.580 --> 00:19:37.700 align:start position:0%
much gas a transaction will take so you
start<00:19:35.820><c> at</c><00:19:35.909><c> some</c><00:19:36.059><c> very</c><00:19:36.270><c> high</c><00:19:36.750><c> upper</c><00:19:37.169><c> bound</c><00:19:37.380><c> and</c>

00:19:37.700 --> 00:19:37.710 align:start position:0%
start at some very high upper bound and
 

00:19:37.710 --> 00:19:40.549 align:start position:0%
start at some very high upper bound and
then<00:19:38.190><c> you</c><00:19:38.490><c> try</c><00:19:38.970><c> at</c><00:19:39.179><c> a</c><00:19:39.240><c> lower</c><00:19:39.450><c> bound</c><00:19:39.720><c> and</c><00:19:39.990><c> then</c>

00:19:40.549 --> 00:19:40.559 align:start position:0%
then you try at a lower bound and then
 

00:19:40.559 --> 00:19:42.200 align:start position:0%
then you try at a lower bound and then
you<00:19:40.649><c> sort</c><00:19:40.830><c> of</c><00:19:40.919><c> narrow</c><00:19:41.130><c> and</c><00:19:41.460><c> you</c><00:19:41.520><c> zoom</c><00:19:41.850><c> in</c><00:19:42.090><c> on</c>

00:19:42.200 --> 00:19:42.210 align:start position:0%
you sort of narrow and you zoom in on
 

00:19:42.210 --> 00:19:44.200 align:start position:0%
you sort of narrow and you zoom in on
exactly<00:19:42.809><c> where</c><00:19:43.049><c> that</c><00:19:43.169><c> transaction</c>

00:19:44.200 --> 00:19:44.210 align:start position:0%
exactly where that transaction
 

00:19:44.210 --> 00:19:48.740 align:start position:0%
exactly where that transaction
begins<00:19:45.210><c> to</c><00:19:45.450><c> succeed</c><00:19:46.460><c> the</c><00:19:47.460><c> problem</c><00:19:47.940><c> is</c><00:19:48.210><c> that</c><00:19:48.540><c> in</c>

00:19:48.740 --> 00:19:48.750 align:start position:0%
begins to succeed the problem is that in
 

00:19:48.750 --> 00:19:51.230 align:start position:0%
begins to succeed the problem is that in
the<00:19:48.960><c> general</c><00:19:49.410><c> case</c><00:19:49.620><c> contracts</c><00:19:50.400><c> can</c><00:19:50.580><c> branch</c><00:19:50.940><c> on</c>

00:19:51.230 --> 00:19:51.240 align:start position:0%
the general case contracts can branch on
 

00:19:51.240 --> 00:19:54.470 align:start position:0%
the general case contracts can branch on
the<00:19:51.270><c> amount</c><00:19:51.570><c> of</c><00:19:51.720><c> gas</c><00:19:51.930><c> provided</c><00:19:52.410><c> so</c><00:19:53.270><c> that</c><00:19:54.270><c> means</c>

00:19:54.470 --> 00:19:54.480 align:start position:0%
the amount of gas provided so that means
 

00:19:54.480 --> 00:19:55.940 align:start position:0%
the amount of gas provided so that means
that<00:19:54.690><c> the</c><00:19:54.780><c> same</c><00:19:54.990><c> state</c><00:19:55.410><c> proof</c><00:19:55.620><c> that</c><00:19:55.800><c> you</c>

00:19:55.940 --> 00:19:55.950 align:start position:0%
that the same state proof that you
 

00:19:55.950 --> 00:19:59.090 align:start position:0%
that the same state proof that you
fetched<00:19:56.280><c> for</c><00:19:56.580><c> the</c><00:19:57.260><c> upper</c><00:19:58.260><c> bound</c><00:19:58.440><c> case</c><00:19:58.710><c> may</c><00:19:59.070><c> not</c>

00:19:59.090 --> 00:19:59.100 align:start position:0%
fetched for the upper bound case may not
 

00:19:59.100 --> 00:20:01.970 align:start position:0%
fetched for the upper bound case may not
be<00:19:59.430><c> enough</c><00:19:59.760><c> to</c><00:20:00.030><c> re-execute</c><00:20:00.510><c> on</c><00:20:01.470><c> the</c><00:20:01.800><c> lower</c>

00:20:01.970 --> 00:20:01.980 align:start position:0%
be enough to re-execute on the lower
 

00:20:01.980 --> 00:20:03.320 align:start position:0%
be enough to re-execute on the lower
bound<00:20:02.280><c> case</c><00:20:02.520><c> and</c><00:20:02.730><c> that</c><00:20:02.820><c> means</c><00:20:03.000><c> you</c><00:20:03.180><c> might</c><00:20:03.270><c> have</c>

00:20:03.320 --> 00:20:03.330 align:start position:0%
bound case and that means you might have
 

00:20:03.330 --> 00:20:05.420 align:start position:0%
bound case and that means you might have
to<00:20:03.510><c> take</c><00:20:03.630><c> more</c><00:20:03.930><c> round</c><00:20:04.620><c> trips</c><00:20:04.860><c> in</c><00:20:05.040><c> general</c><00:20:05.280><c> so</c>

00:20:05.420 --> 00:20:05.430 align:start position:0%
to take more round trips in general so
 

00:20:05.430 --> 00:20:08.750 align:start position:0%
to take more round trips in general so
this<00:20:05.910><c> is</c><00:20:06.770><c> something</c><00:20:07.770><c> to</c><00:20:07.980><c> be</c><00:20:08.100><c> used</c><00:20:08.130><c> fairly</c>

00:20:08.750 --> 00:20:08.760 align:start position:0%
this is something to be used fairly
 

00:20:08.760 --> 00:20:12.140 align:start position:0%
this is something to be used fairly
sparingly<00:20:09.480><c> only</c><00:20:09.950><c> when</c><00:20:10.950><c> really</c><00:20:11.220><c> necessary</c><00:20:11.850><c> and</c>

00:20:12.140 --> 00:20:12.150 align:start position:0%
sparingly only when really necessary and
 

00:20:12.150 --> 00:20:14.810 align:start position:0%
sparingly only when really necessary and
also<00:20:12.720><c> think</c><00:20:13.650><c> about</c><00:20:13.770><c> the</c><00:20:14.040><c> contracts</c><00:20:14.520><c> you</c><00:20:14.550><c> write</c>

00:20:14.810 --> 00:20:14.820 align:start position:0%
also think about the contracts you write
 

00:20:14.820 --> 00:20:17.450 align:start position:0%
also think about the contracts you write
so<00:20:15.150><c> that</c><00:20:15.360><c> they</c><00:20:15.570><c> don't</c><00:20:15.890><c> play</c><00:20:16.890><c> poorly</c><00:20:17.190><c> with</c>

00:20:17.450 --> 00:20:17.460 align:start position:0%
so that they don't play poorly with
 

00:20:17.460 --> 00:20:21.590 align:start position:0%
so that they don't play poorly with
light<00:20:17.640><c> clients</c><00:20:19.220><c> and</c><00:20:20.220><c> lastly</c><00:20:21.120><c> I'd</c><00:20:21.420><c> like</c><00:20:21.450><c> to</c>

00:20:21.590 --> 00:20:21.600 align:start position:0%
light clients and lastly I'd like to
 

00:20:21.600 --> 00:20:24.730 align:start position:0%
light clients and lastly I'd like to
take<00:20:21.960><c> a</c><00:20:22.350><c> little</c><00:20:22.920><c> bit</c><00:20:23.040><c> of</c><00:20:23.160><c> time</c><00:20:23.370><c> to</c><00:20:23.640><c> talk</c><00:20:23.820><c> about</c>

00:20:24.730 --> 00:20:24.740 align:start position:0%
take a little bit of time to talk about
 

00:20:24.740 --> 00:20:27.980 align:start position:0%
take a little bit of time to talk about
the<00:20:25.740><c> light</c><00:20:25.950><c> client</c><00:20:26.430><c> plus</c><00:20:26.670><c> whisper</c><00:20:27.180><c> ecosystem</c>

00:20:27.980 --> 00:20:27.990 align:start position:0%
the light client plus whisper ecosystem
 

00:20:27.990 --> 00:20:30.020 align:start position:0%
the light client plus whisper ecosystem
so<00:20:28.290><c> we've</c><00:20:28.980><c> seen</c><00:20:29.160><c> that</c><00:20:29.310><c> light</c><00:20:29.490><c> clients</c><00:20:29.820><c> can</c><00:20:29.940><c> be</c>

00:20:30.020 --> 00:20:30.030 align:start position:0%
so we've seen that light clients can be
 

00:20:30.030 --> 00:20:31.790 align:start position:0%
so we've seen that light clients can be
very<00:20:30.210><c> useful</c><00:20:30.270><c> in</c><00:20:30.660><c> mobile</c><00:20:30.990><c> devices</c><00:20:31.470><c> but</c><00:20:31.650><c> then</c>

00:20:31.790 --> 00:20:31.800 align:start position:0%
very useful in mobile devices but then
 

00:20:31.800 --> 00:20:33.920 align:start position:0%
very useful in mobile devices but then
there's<00:20:31.950><c> also</c><00:20:32.130><c> things</c><00:20:33.000><c> like</c><00:20:33.150><c> whisper</c><00:20:33.750><c> which</c>

00:20:33.920 --> 00:20:33.930 align:start position:0%
there's also things like whisper which
 

00:20:33.930 --> 00:20:35.300 align:start position:0%
there's also things like whisper which
people<00:20:34.230><c> are</c><00:20:34.320><c> going</c><00:20:34.440><c> to</c><00:20:34.500><c> talk</c><00:20:34.680><c> about</c><00:20:34.920><c> a</c><00:20:35.040><c> bit</c>

00:20:35.300 --> 00:20:35.310 align:start position:0%
people are going to talk about a bit
 

00:20:35.310 --> 00:20:37.930 align:start position:0%
people are going to talk about a bit
more<00:20:35.520><c> which</c><00:20:36.270><c> is</c><00:20:36.420><c> for</c><00:20:36.830><c> decentralized</c>

00:20:37.930 --> 00:20:37.940 align:start position:0%
more which is for decentralized
 

00:20:37.940 --> 00:20:40.010 align:start position:0%
more which is for decentralized
encrypted<00:20:38.940><c> messaging</c><00:20:39.450><c> essentially</c><00:20:39.870><c> with</c>

00:20:40.010 --> 00:20:40.020 align:start position:0%
encrypted messaging essentially with
 

00:20:40.020 --> 00:20:42.160 align:start position:0%
encrypted messaging essentially with
darkness<00:20:40.350><c> as</c><00:20:40.710><c> well</c><00:20:40.860><c> so</c><00:20:41.070><c> it's</c><00:20:41.220><c> like</c><00:20:41.280><c> a</c><00:20:41.370><c> global</c>

00:20:42.160 --> 00:20:42.170 align:start position:0%
darkness as well so it's like a global
 

00:20:42.170 --> 00:20:45.710 align:start position:0%
darkness as well so it's like a global
publish/subscribe<00:20:43.170><c> system</c><00:20:43.800><c> where</c><00:20:44.720><c> people</c>

00:20:45.710 --> 00:20:45.720 align:start position:0%
publish/subscribe system where people
 

00:20:45.720 --> 00:20:47.720 align:start position:0%
publish/subscribe system where people
can't<00:20:45.960><c> actually</c><00:20:46.140><c> see</c><00:20:46.620><c> what</c><00:20:47.040><c> topics</c><00:20:47.310><c> you're</c>

00:20:47.720 --> 00:20:47.730 align:start position:0%
can't actually see what topics you're
 

00:20:47.730 --> 00:20:51.580 align:start position:0%
can't actually see what topics you're
listening<00:20:48.120><c> for</c><00:20:48.330><c> so</c><00:20:48.840><c> that</c><00:20:49.140><c> actually</c><00:20:49.500><c> makes</c><00:20:50.390><c> for</c>

00:20:51.580 --> 00:20:51.590 align:start position:0%
listening for so that actually makes for
 

00:20:51.590 --> 00:20:54.170 align:start position:0%
listening for so that actually makes for
some<00:20:52.590><c> pretty</c><00:20:52.770><c> interesting</c><00:20:53.130><c> platforms</c><00:20:54.030><c> like</c>

00:20:54.170 --> 00:20:54.180 align:start position:0%
some pretty interesting platforms like
 

00:20:54.180 --> 00:20:56.780 align:start position:0%
some pretty interesting platforms like
status<00:20:54.720><c> to</c><00:20:54.960><c> emerge</c><00:20:55.260><c> where</c><00:20:55.800><c> you</c><00:20:55.890><c> can</c><00:20:56.100><c> have</c><00:20:56.490><c> gaps</c>

00:20:56.780 --> 00:20:56.790 align:start position:0%
status to emerge where you can have gaps
 

00:20:56.790 --> 00:21:00.200 align:start position:0%
status to emerge where you can have gaps
running<00:20:57.330><c> on</c><00:20:57.600><c> your</c><00:20:57.750><c> phone</c><00:20:58.160><c> that</c><00:20:59.160><c> are</c><00:20:59.210><c> messaging</c>

00:21:00.200 --> 00:21:00.210 align:start position:0%
running on your phone that are messaging
 

00:21:00.210 --> 00:21:02.120 align:start position:0%
running on your phone that are messaging
with<00:21:00.330><c> people</c><00:21:00.690><c> doing</c><00:21:00.900><c> medium</c><00:21:01.380><c> latency</c><00:21:01.860><c> state</c>

00:21:02.120 --> 00:21:02.130 align:start position:0%
with people doing medium latency state
 

00:21:02.130 --> 00:21:03.650 align:start position:0%
with people doing medium latency state
channels<00:21:02.520><c> it</c><00:21:02.700><c> could</c><00:21:02.850><c> even</c><00:21:02.970><c> be</c><00:21:03.180><c> used</c><00:21:03.360><c> for</c>

00:21:03.650 --> 00:21:03.660 align:start position:0%
channels it could even be used for
 

00:21:03.660 --> 00:21:06.200 align:start position:0%
channels it could even be used for
example<00:21:03.930><c> as</c><00:21:04.230><c> the</c><00:21:04.860><c> micro</c><00:21:05.640><c> payment</c><00:21:05.970><c> for</c><00:21:06.120><c> the</c>

00:21:06.200 --> 00:21:06.210 align:start position:0%
example as the micro payment for the
 

00:21:06.210 --> 00:21:07.820 align:start position:0%
example as the micro payment for the
state<00:21:06.390><c> channels</c><00:21:06.720><c> micro</c><00:21:07.050><c> payments</c><00:21:07.410><c> layer</c><00:21:07.560><c> of</c>

00:21:07.820 --> 00:21:07.830 align:start position:0%
state channels micro payments layer of
 

00:21:07.830 --> 00:21:11.300 align:start position:0%
state channels micro payments layer of
the<00:21:08.070><c> light</c><00:21:08.190><c> client</c><00:21:08.580><c> request</c><00:21:09.450><c> credits</c><00:21:09.840><c> and</c><00:21:10.800><c> of</c>

00:21:11.300 --> 00:21:11.310 align:start position:0%
the light client request credits and of
 

00:21:11.310 --> 00:21:14.120 align:start position:0%
the light client request credits and of
course<00:21:11.640><c> we</c><00:21:12.030><c> have</c><00:21:12.240><c> a</c><00:21:12.630><c> roadmap</c><00:21:13.200><c> so</c><00:21:13.680><c> this</c><00:21:14.010><c> is</c>

00:21:14.120 --> 00:21:14.130 align:start position:0%
course we have a roadmap so this is
 

00:21:14.130 --> 00:21:15.830 align:start position:0%
course we have a roadmap so this is
actually<00:21:14.460><c> something</c><00:21:14.700><c> you</c><00:21:14.880><c> can</c><00:21:15.030><c> mostly</c><00:21:15.570><c> use</c>

00:21:15.830 --> 00:21:15.840 align:start position:0%
actually something you can mostly use
 

00:21:15.840 --> 00:21:18.380 align:start position:0%
actually something you can mostly use
today<00:21:16.170><c> so</c><00:21:16.770><c> it's</c><00:21:16.980><c> in</c><00:21:17.070><c> our</c><00:21:17.160><c> beta</c><00:21:17.400><c> releases</c><00:21:17.790><c> you</c>

00:21:18.380 --> 00:21:18.390 align:start position:0%
today so it's in our beta releases you
 

00:21:18.390 --> 00:21:20.060 align:start position:0%
today so it's in our beta releases you
can<00:21:18.420><c> just</c><00:21:18.720><c> run</c><00:21:18.900><c> parity</c><00:21:19.320><c> with</c><00:21:19.470><c> the</c><00:21:19.620><c> dash</c><00:21:19.800><c> dash</c>

00:21:20.060 --> 00:21:20.070 align:start position:0%
can just run parity with the dash dash
 

00:21:20.070 --> 00:21:23.480 align:start position:0%
can just run parity with the dash dash
light<00:21:20.370><c> flag</c><00:21:20.750><c> the</c><00:21:21.750><c> UI</c><00:21:21.990><c> is</c><00:21:22.380><c> still</c><00:21:22.740><c> being</c><00:21:22.980><c> rebuilt</c>

00:21:23.480 --> 00:21:23.490 align:start position:0%
light flag the UI is still being rebuilt
 

00:21:23.490 --> 00:21:25.580 align:start position:0%
light flag the UI is still being rebuilt
around<00:21:24.090><c> light</c><00:21:24.420><c> client</c><00:21:24.810><c> best</c><00:21:24.990><c> practices</c>

00:21:25.580 --> 00:21:25.590 align:start position:0%
around light client best practices
 

00:21:25.590 --> 00:21:27.230 align:start position:0%
around light client best practices
because<00:21:25.740><c> it</c><00:21:26.040><c> was</c><00:21:26.160><c> written</c><00:21:26.730><c> mostly</c><00:21:26.880><c> with</c><00:21:27.210><c> a</c>

00:21:27.230 --> 00:21:27.240 align:start position:0%
because it was written mostly with a
 

00:21:27.240 --> 00:21:28.910 align:start position:0%
because it was written mostly with a
full<00:21:27.450><c> client</c><00:21:27.690><c> in</c><00:21:27.990><c> mind</c><00:21:28.170><c> but</c><00:21:28.350><c> actually</c><00:21:28.680><c> we're</c>

00:21:28.910 --> 00:21:28.920 align:start position:0%
full client in mind but actually we're
 

00:21:28.920 --> 00:21:32.170 align:start position:0%
full client in mind but actually we're
undergoing<00:21:29.730><c> this</c><00:21:29.970><c> rewrite</c><00:21:30.360><c> basically</c><00:21:31.350><c> now</c>

00:21:32.170 --> 00:21:32.180 align:start position:0%
undergoing this rewrite basically now
 

00:21:32.180 --> 00:21:35.210 align:start position:0%
undergoing this rewrite basically now
but<00:21:33.180><c> if</c><00:21:33.270><c> you</c><00:21:33.390><c> access</c><00:21:33.990><c> the</c><00:21:34.050><c> our</c><00:21:34.260><c> pcs</c><00:21:34.590><c> directly</c>

00:21:35.210 --> 00:21:35.220 align:start position:0%
but if you access the our pcs directly
 

00:21:35.220 --> 00:21:36.430 align:start position:0%
but if you access the our pcs directly
or<00:21:35.460><c> if</c><00:21:35.580><c> you're</c><00:21:35.730><c> using</c><00:21:35.760><c> the</c><00:21:36.090><c> Chrome</c><00:21:36.330><c> extension</c>

00:21:36.430 --> 00:21:36.440 align:start position:0%
or if you're using the Chrome extension
 

00:21:36.440 --> 00:21:38.840 align:start position:0%
or if you're using the Chrome extension
and<00:21:37.440><c> you</c><00:21:37.860><c> just</c><00:21:38.040><c> have</c><00:21:38.190><c> some</c><00:21:38.370><c> DAP</c><00:21:38.580><c> that's</c>

00:21:38.840 --> 00:21:38.850 align:start position:0%
and you just have some DAP that's
 

00:21:38.850 --> 00:21:40.070 align:start position:0%
and you just have some DAP that's
running<00:21:39.030><c> independently</c><00:21:39.660><c> if</c><00:21:39.810><c> the</c><00:21:39.930><c> UI</c>

00:21:40.070 --> 00:21:40.080 align:start position:0%
running independently if the UI
 

00:21:40.080 --> 00:21:42.440 align:start position:0%
running independently if the UI
completely<00:21:40.650><c> it</c><00:21:40.800><c> basically</c><00:21:41.490><c> will</c><00:21:41.790><c> work</c><00:21:41.970><c> I</c><00:21:42.180><c> even</c>

00:21:42.440 --> 00:21:42.450 align:start position:0%
completely it basically will work I even
 

00:21:42.450 --> 00:21:44.960 align:start position:0%
completely it basically will work I even
registered<00:21:43.440><c> a</c><00:21:43.530><c> few</c><00:21:43.710><c> names</c><00:21:43.920><c> on</c><00:21:44.100><c> the</c><00:21:44.160><c> ENS</c><00:21:44.580><c> using</c>

00:21:44.960 --> 00:21:44.970 align:start position:0%
registered a few names on the ENS using
 

00:21:44.970 --> 00:21:48.590 align:start position:0%
registered a few names on the ENS using
it<00:21:45.890><c> it</c><00:21:46.890><c> does</c><00:21:47.580><c> work</c><00:21:47.760><c> in</c><00:21:47.940><c> that</c><00:21:48.030><c> case</c><00:21:48.210><c> if</c><00:21:48.390><c> you</c><00:21:48.420><c> have</c>

00:21:48.590 --> 00:21:48.600 align:start position:0%
it it does work in that case if you have
 

00:21:48.600 --> 00:21:51.410 align:start position:0%
it it does work in that case if you have
peers<00:21:48.900><c> and</c><00:21:49.740><c> another</c><00:21:50.370><c> really</c><00:21:50.880><c> interesting</c>

00:21:51.410 --> 00:21:51.420 align:start position:0%
peers and another really interesting
 

00:21:51.420 --> 00:21:53.390 align:start position:0%
peers and another really interesting
project<00:21:51.870><c> that</c><00:21:52.050><c> we're</c><00:21:52.170><c> thinking</c><00:21:52.350><c> of</c><00:21:52.770><c> that</c>

00:21:53.390 --> 00:21:53.400 align:start position:0%
project that we're thinking of that
 

00:21:53.400 --> 00:21:54.810 align:start position:0%
project that we're thinking of that
we're<00:21:53.550><c> starting</c><00:21:53.700><c> to</c><00:21:53.820><c> do</c>

00:21:54.810 --> 00:21:54.820 align:start position:0%
we're starting to do
 

00:21:54.820 --> 00:21:56.879 align:start position:0%
we're starting to do
is<00:21:54.880><c> compiling</c><00:21:55.659><c> the</c><00:21:55.929><c> light</c><00:21:56.080><c> client</c><00:21:56.409><c> down</c><00:21:56.620><c> to</c>

00:21:56.879 --> 00:21:56.889 align:start position:0%
is compiling the light client down to
 

00:21:56.889 --> 00:21:58.499 align:start position:0%
is compiling the light client down to
webassembly<00:21:57.370><c> so</c><00:21:57.730><c> we're</c><00:21:57.880><c> writing</c><00:21:58.059><c> everything</c>

00:21:58.499 --> 00:21:58.509 align:start position:0%
webassembly so we're writing everything
 

00:21:58.509 --> 00:22:00.299 align:start position:0%
webassembly so we're writing everything
in<00:21:58.690><c> this</c><00:21:58.809><c> language</c><00:21:59.169><c> called</c><00:21:59.440><c> rust</c><00:21:59.860><c> which</c><00:22:00.159><c> is</c>

00:22:00.299 --> 00:22:00.309 align:start position:0%
in this language called rust which is
 

00:22:00.309 --> 00:22:03.029 align:start position:0%
in this language called rust which is
very<00:22:00.639><c> low</c><00:22:00.940><c> level</c><00:22:01.330><c> it's</c><00:22:01.659><c> it's</c><00:22:02.080><c> that</c><00:22:02.230><c> roughly</c>

00:22:03.029 --> 00:22:03.039 align:start position:0%
very low level it's it's that roughly
 

00:22:03.039 --> 00:22:05.249 align:start position:0%
very low level it's it's that roughly
the<00:22:03.159><c> same</c><00:22:03.340><c> level</c><00:22:03.730><c> as</c><00:22:03.850><c> C</c><00:22:04.029><c> or</c><00:22:04.179><c> C++</c><00:22:04.389><c> which</c><00:22:05.080><c> means</c>

00:22:05.249 --> 00:22:05.259 align:start position:0%
the same level as C or C++ which means
 

00:22:05.259 --> 00:22:08.100 align:start position:0%
the same level as C or C++ which means
it<00:22:05.409><c> has</c><00:22:05.529><c> no</c><00:22:06.179><c> garbage</c><00:22:07.179><c> collection</c><00:22:07.600><c> or</c><00:22:07.690><c> runtime</c>

00:22:08.100 --> 00:22:08.110 align:start position:0%
it has no garbage collection or runtime
 

00:22:08.110 --> 00:22:10.529 align:start position:0%
it has no garbage collection or runtime
and<00:22:08.350><c> that</c><00:22:08.980><c> makes</c><00:22:09.190><c> it</c><00:22:09.340><c> very</c><00:22:09.580><c> amenable</c><00:22:10.059><c> to</c><00:22:10.299><c> being</c>

00:22:10.529 --> 00:22:10.539 align:start position:0%
and that makes it very amenable to being
 

00:22:10.539 --> 00:22:14.310 align:start position:0%
and that makes it very amenable to being
compiled<00:22:11.019><c> down</c><00:22:11.350><c> to</c><00:22:11.679><c> web</c><00:22:11.950><c> assembly</c><00:22:12.659><c> and</c><00:22:13.659><c> that</c>

00:22:14.310 --> 00:22:14.320 align:start position:0%
compiled down to web assembly and that
 

00:22:14.320 --> 00:22:17.009 align:start position:0%
compiled down to web assembly and that
means<00:22:14.529><c> that</c><00:22:14.710><c> we</c><00:22:14.799><c> could</c><00:22:15.039><c> have</c><00:22:15.419><c> this</c><00:22:16.419><c> same</c><00:22:16.750><c> light</c>

00:22:17.009 --> 00:22:17.019 align:start position:0%
means that we could have this same light
 

00:22:17.019 --> 00:22:19.200 align:start position:0%
means that we could have this same light
client<00:22:17.350><c> protocol</c><00:22:17.799><c> implementation</c><00:22:18.700><c> storage</c>

00:22:19.200 --> 00:22:19.210 align:start position:0%
client protocol implementation storage
 

00:22:19.210 --> 00:22:21.560 align:start position:0%
client protocol implementation storage
embedded<00:22:20.019><c> directly</c><00:22:20.320><c> into</c><00:22:20.769><c> a</c><00:22:20.919><c> browser</c><00:22:21.220><c> window</c>

00:22:21.560 --> 00:22:21.570 align:start position:0%
embedded directly into a browser window
 

00:22:21.570 --> 00:22:25.110 align:start position:0%
embedded directly into a browser window
and<00:22:22.570><c> I</c><00:22:23.230><c> think</c><00:22:23.440><c> that'll</c><00:22:23.710><c> be</c><00:22:23.740><c> very</c><00:22:24.130><c> interesting</c>

00:22:25.110 --> 00:22:25.120 align:start position:0%
and I think that'll be very interesting
 

00:22:25.120 --> 00:22:28.379 align:start position:0%
and I think that'll be very interesting
for<00:22:25.149><c> to</c><00:22:25.990><c> see</c><00:22:26.139><c> how</c><00:22:26.590><c> the</c><00:22:27.519><c> app</c><00:22:27.580><c> developers</c><00:22:28.179><c> use</c>

00:22:28.379 --> 00:22:28.389 align:start position:0%
for to see how the app developers use
 

00:22:28.389 --> 00:22:30.360 align:start position:0%
for to see how the app developers use
that<00:22:28.600><c> and</c><00:22:29.559><c> if</c><00:22:29.649><c> you'd</c><00:22:29.769><c> like</c><00:22:29.799><c> to</c><00:22:29.919><c> follow</c><00:22:30.250><c> the</c>

00:22:30.360 --> 00:22:30.370 align:start position:0%
that and if you'd like to follow the
 

00:22:30.370 --> 00:22:32.759 align:start position:0%
that and if you'd like to follow the
progress<00:22:30.580><c> I</c><00:22:31.090><c> would</c><00:22:31.720><c> recommend</c><00:22:32.110><c> you</c><00:22:32.169><c> do</c><00:22:32.320><c> so</c><00:22:32.500><c> at</c>

00:22:32.759 --> 00:22:32.769 align:start position:0%
progress I would recommend you do so at
 

00:22:32.769 --> 00:22:35.789 align:start position:0%
progress I would recommend you do so at
the<00:22:33.070><c> parody</c><00:22:33.610><c> tech</c><00:22:33.789><c> slash</c><00:22:34.059><c> parody</c><00:22:34.799><c> repository</c>

00:22:35.789 --> 00:22:35.799 align:start position:0%
the parody tech slash parody repository
 

00:22:35.799 --> 00:22:37.139 align:start position:0%
the parody tech slash parody repository
it's<00:22:36.009><c> all</c><00:22:36.250><c> open</c><00:22:36.759><c> source</c>

00:22:37.139 --> 00:22:37.149 align:start position:0%
it's all open source
 

00:22:37.149 --> 00:22:39.389 align:start position:0%
it's all open source
we<00:22:37.899><c> accept</c><00:22:38.259><c> contributions</c><00:22:38.950><c> I</c><00:22:39.070><c> know</c><00:22:39.129><c> you</c><00:22:39.279><c> guys</c>

00:22:39.389 --> 00:22:39.399 align:start position:0%
we accept contributions I know you guys
 

00:22:39.399 --> 00:22:41.419 align:start position:0%
we accept contributions I know you guys
are<00:22:39.580><c> developers</c><00:22:40.059><c> and</c><00:22:40.330><c> you</c><00:22:40.389><c> love</c><00:22:40.539><c> open</c><00:22:40.870><c> source</c>

00:22:41.419 --> 00:22:41.429 align:start position:0%
are developers and you love open source
 

00:22:41.429 --> 00:22:44.610 align:start position:0%
are developers and you love open source
better<00:22:42.429><c> we</c><00:22:42.519><c> get</c><00:22:42.639><c> writing</c><00:22:43.259><c> well</c><00:22:44.259><c> thank</c><00:22:44.529><c> you</c>

00:22:44.610 --> 00:22:44.620 align:start position:0%
better we get writing well thank you
 

00:22:44.620 --> 00:22:46.520 align:start position:0%
better we get writing well thank you
very<00:22:44.769><c> much</c>

00:22:46.520 --> 00:22:46.530 align:start position:0%
very much
 

00:22:46.530 --> 00:22:53.890 align:start position:0%
very much
[Music]

