Waiting for the end mp4 170mb download






















October 19, October 15, October 13, October 11, Features and Interviews. Features And Interviews. November 11, November 10, November 9, November 8, Nigerian stocks extend slide in depressed trading led by large-cap banks November 11, OPEC revises world oil demand downward to 5.

Why Nigeria is best investment destination in Africa — Emefiele November 11, Financial Inclusion. Ecobank announces fintech challenge finalists November 11, Here are 10 key things to know October 28, Statista partners Nigerian firm Dataphyte on socioeconomic data November 6, Despite low revenue, Buhari proposes highest amount for Presidential Villa since assuming office October 18, Nigerian stocks near eight-month high on improving investor sentiment October 8, Nigerian stocks gain N billion on renewed interest in bank shares October 5, South West.

Ogun community to crown new king amidst protests November 11, Police arrest suspected kidnappers while collecting ransom November 11, South South. Akwa Ibom lawmaker narrates how he escaped from suspected kidnappers November 9, Akwa Ibom govt accused of failing to disclose N billion refund from federal govt November 6, Family of man allegedly killed by police begs for release of his corpse November 6, South East.

Man arrested for allegedly killing own son for money rituals November 11, North West. Kano lawyer sent to prison for abusing commissioner over blasphemy case November 11, Katsina monarch, student regain freedom 26 days after kidnap November 10, Magistrate remands journalist accused of inciting publication by Kaduna commissioner November 10, North East. Gov Yahaya of Gombe presents N Taraba govt accuses FG of re-awarding contract for completed road, demands reimbursement November 10, North Central.

Kwara Poly expels 29 students for exam fraud November 11, Reps summon FCT minister over worsening insecurity November 9, The leading characters in the series are Chandan, and Chitwan who have separate stories in life and set out on a completely unplanned trip. Released: Each Maximum weather instrument is built by hand at our New Bedford, Massachusetts facility and is backed by our long-standing commitment to quality, accuracy and 2.

Series Y Pelis Flash s4 all episodes download p,p free hdtv online. The young wizard Merlin must keep his talent hidden in a kingdom where magic is banned as he and the future King Arthur face their destinies. U need 2 gt u torrent download manager.

On this website, you can be able to download all kinds of MP4 videos and TV shows free of charge. Oct 28, — S3, Ep3. This video is unavailable. Feb 22, -- Here you can download V tv series season 1, 2 TV show free in.

Schedule a lesson time. Youtube Musiikki Ilmaiseksi. Season: 2. The Family Man 2 has 9 episodes to watch and free download. It is yet another great comedy series available in Hindi. TMDb: 7. Crash Landing On You. Abkar Jr Added on: 29, October, September 26, Original network: Fox. Baixe Musicas Gratis. It has a total number of 9 episodes. Paradies: Glaube. Download animes and anime songs for free. Sins celebrate to their reunion but Elizabeth seems to be worried when Diane tells her about goddess Elizabeth.

Discussing the Index of Game of Thrones Season 3, this season grips audience with betrayal, Revenge, and Victory, and characters have a passion for taking over the kingdom. Become a killer. Subaru's EJ was a turbocharged, 2. Big Hero 6 Streaming Altadefinizione. Go to Amazon. Stream on Netflix Team Kaylie. Forgotten password? Please sign up in order to transfer files. It ran for one season of thirteen episodes. Due to a political conspiracy, an innocent man is sent to death row and his only hope is his brother, who makes it his mission to deliberately get himself sent to the same prison in order Marvels The Defenders S01 p p p WEBRip Season 1 x DD 5.

Even if they have a completely disjoint set of transactions, it doesn't matter because they're still pointing to the same parent block. So you still, now, have two blocks of the same height. You might win. If this happens, hey, maybe this one gets built upon.

Generally, miners pick the first seen block to build off of. But you could change that. And you can't really verify that that's the case. So yeah, it is possible that you're mining transactions that have already been included in the block that you're not aware.

AUDIENCE: Because blocks are changing all the time based on the transactions you want to put in it, are you kind of mining different blocks at the same time? So the first one, you try-- have started mining, do you keep mining that one or no?

So in practice, probably yes, but on a very small timescale. So what you'll have is we'll get block template, you'll have-- it's like network latency. So you'll have, let's say, a bunch of different warehouses that all have thousands and thousands of these mining chips.

And they will connect in, and they'll pull every second or so, and get the current transaction list to mine. And that'll get updated every second. And so there may be sort of lags between different warehouses, between different machines, that are mining slightly different sets of transactions. But generally, they're going to be synchronized.

Over the same time scale of a few seconds, they're all going to be synchronized. They're going to be updated pretty quickly. Because every time a new transaction comes in, that's potentially more fees that you can get. So you want to push that out and update it. So you want to minimize your latency so that you get things as quickly as possible.

But there will be some skew. OK, wait. Stale transactions? A transaction that's already been in a block? If you have if you have a transaction here that was already confirmed here, this block is invalid, and no one will-- they'll just drop it.

So stale transaction isn't really a term. It's a stale block. This is a stale block because, well, someone made it, but it got orphaned out, and no one's using it. You lose all your-- you lose everything. So if there's transaction A in here, and you try to include transaction A in here, the block itself is invalid, even if it has valid proof of work. So you lose everything. The thing is, in practice, it's not a problem.

Because you're pointing to this block, so you must have already seen it. So it's really easy to just say, well, don't include any of the transactions in here. OK, wait, sometimes it's a little complicated. Sometimes you see this block, and then you immediately want to start mining the block on top of it.

But it's a fraction of a second, and you haven't actually validated it. And you don't even know what's in it. Maybe you only have the byte header. So one optimization which is sort of bad in a way but optimal for the miners is build a block that's empty on top of it.

You haven't even seen what transactions are in this block. You don't even know if it's valid. But it's probably valid, because most blocks are.

And so what you do is you build on top of it, you point to it, but since you don't know what transactions are in it, the safest thing is just to include no transactions in your so there's no overlap. And you only do this for a fraction of a second until you've figured out the Transaction List here and subtracted all the-- removed all those from your set. You don't you want your chips to not be doing anything productive for those fractions of a second.

So that does happen. That is not software that's in the normal Bitcoin D, but miners have written their own software to do that.

And so you will occasionally see completely empty blocks with just a Coinbase transaction. And they're almost always very soon after the previous block, where you see one that comes out at and 27 seconds, and 29 seconds, and it's empty. So that does happen, and that can work. Although what was it, two years ago that happened, where a miner mined a blocked that was invalid.

Another miner mined a block here, very quickly, that was empty. And then a bunch of miners started building off of it because they're like, well, this one looks valid, there's no transactions in it.

And they mined like six or seven blocks in a row, and the whole thing was just invalid. Because they figured, the stuff I'm building off of must be OK. So they lost some money there. This makes sense, right? Sort the mempool by fee rate, choose the top megabyte, compute a merkle route, mine.

Why is it not this simple? And I mean on an algorithmic way. If you're just like, yeah, sort, choose fee rate, sort, quick-sort or whatever, that's super quick, and then mine. Why is it actually, complexity-wise, not-- what is it, n log n for quick-sort? It's definitely not n log n for the optimal. No, it's way worse than n-squared. Anyway, any guesses onto why the algorithmic complexity is actually quite a bit worse? But at any one state, let's say, here's a mempool, find the optimal transaction set to put into your block.

Yeah, just because the look-up is slower, that doesn't change the O. So the thing is, there may be a transaction-- you can't just take all these transactions independently and sort them. There may be a transaction with a very high fee rate which depends on a transaction with a very low fee rate.

And so you know it's spending an output that hasn't yet been created. So now it becomes-- it's NP-hard. In practice, the heuristics are fine. But it is pretty ugly in that you're like, well, this transaction has a very low fee, I'm not going to include it. This transaction that depends on it has a high fee rate. Now I have to take the sort of mean of the two fee rates, and keep computing those things. So it can get quite complex.

In practice, it's usually OK. You have some heuristics in the code that sort of don't deal with that. Also, I think you have max-- there's no hard rule, but the algorithms that mine usually have a max depth of like three or four transactions, where they say, look, if there's a chain of like four dependent transactions, I'm not going to keep going down that path.

Because you could potentially have enormous chains, where you have transactions, each depending on another. And then the one at the very end has a very high fee rate, and you're going to have to go through all this. So they limit their search to like four or something like that. Oh, sorry. Yeah, so the TX dependencies make it kind of hard. Cheap transaction which allows an expensive transaction to be confirmed, we call this Child Pays for Parent, in that you've got this-- in a graph, you've a child transaction, and it's essentially paying for the parent transaction by having a higher fee.

There is no Parent Pays for Child, in that if you've got a transaction with a high fee rate, and then a descendant transaction with a low fee rate, you just take the parent and you ignore the child and someone else in a later block can grab that child transaction. However, the dependency graph is, no, if you want in on this child, the parent has to be confirmed first.

It actually has to be confirmed earlier in the list of TXIDs in the block. So it's not-- so like in this, when you look at a block, the transactions are sequenced. And this transaction can spend that transaction. But you need to be able to go in through linearly. Update your UTXO set at every row here, and it should be consistent.

You mentioned a threshold earlier. How is that threshold determined? It's just at any point, you're looking, and you're like, well, my minimum fee here is 30 Satoshis per byte. Given the block I'm trying to mine, what's my lowest fee? OK, 30 Satoshis per byte. So if I see one with less than that, I know right away I can ignore it. But yeah, it keeps changing every time a new transaction comes in that displaces an old one, now your minimum fee changes.

So that's just sort of an easy way to look. There is also a relay threshold which I believe most nodes now have at one Satoshi per byte, where if you're not mining and someone gives you a transaction which is less than one-Satoshi-per-byte fee rate, you will ignore it and not pass it on to your peers. That's sort of an anti-spam kind of thing. And it may be too high. It's also not a consensus rule, and you can set it to whatever you want in your config file. And nodes won't get mad at you. They won't ban you if you send something low.

So that's sort of from the miner's side. From the miner's point of view, you keep seeing all these transactions, you sort them, you have to deal with the sort of descendent transactions. But you try to get a good block, try to mine it. And you don't really care what people are doing, you just want to make a lot of money.

You just want to maximize for fees. From the person transacting, on their side, you want to minimize fees. You don't want to pay these miners.

They already make gazillions of dollars anyway from all the new bitcoins they're generating-- bunch of jerks. So you set your fee to one Satoshi per byte. So you know it'll be relayed, you sign it, and you broadcast.

Easy, right? So what's the problem here? This is actually a huge-- well, OK, no, probably the biggest sort of UI problem in Bitcoin is that people have, for years and years, lost all of their coins due to theft, or loss, or whatever.

That's the big one. But other than that, this is the biggest UI problem. This is the biggest problem in Bitcoin for users.

I made a transaction, it hasn't confirmed, what the heck? Like, why are BTC fees so high? There's constant people complaining, what the heck, why-- are you kidding me? Am I missing something? People get mad.

And then there's also, I made a transaction last week, it hasn't confirmed. Bitcoin doesn't work. Bitcoin sucks. I hate this thing. So huge UI problem, really poor user experience. A lot of it is, also, the software is bad. Wallets-- OK, a couple of years ago, wallets would always just set a zero fee. There weren't fees in You just didn't pay any-- , right?

I never paid fees. It was awesome. Because there was this block-size limit of one megabyte. But no one was ever running up against that limit. The miners would just say, look, I'm not even going to sort anything because there's kilobytes worth of transactions in the mempool. I just mine all of them, whether the fees are zero, whether the fees are one Satoshi, whatever-- whatever I can get, just mine it all. Now you've got this constrained space, and so you're optimizing-- the miner is.

But years ago, you weren't. And so the wallets, a lot of times, they would either have zero fee, completely, a fixed fee per transaction, which is also really suboptimal-- they just say, OK, I'll pay hundreds Satoshi per transaction.

Some transactions have a lot of inputs, are much bigger, so that's a highly variable fee rate which the user can't control. Or they'd have a fixed fee rate, where they just say, I'm going to set five Satoshis per byte, and that's the fee rate in this wallet, and you don't allow the user to change it at all.

That's also really suboptimal. Once the fee market starts changing and people start paying more, this wallet software will not work. Or you can have the user choose a fee rate, which seems great, but users are like, I don't know.

You're using Bitcoin, what fee rate do you want, 10 Satoshis per byte, 20, 40, 70? What's a Satoshi? What's a byte? This is not a great problem to hand off to the user. How do I even determine this?

There are sites, and the sites aren't very good, either. Where was it-- yeah, here is what used to be And then this is their fee rate thing, which is a really hard-to-understand chart. What does this mean, unconfirmed transactions, transactions today? What are these numbers? I still don't really understand this site. And at the bottom it says, fastest and cheapest transaction fee is 50 Satoshis per byte, shown in green at the top.

So I guess this, or this. Thing is, huge overestimate. I think one Satoshi per byte is probably OK today-- maybe five. This is a better site-- also complex-- where you can say, OK, well, here's the mempool size in megabytes, sorted by fee rate.

And you can see that, well, at 8 o'clock, mempool was basically empty. At 8 o'clock, you could have paid zero and it would have gotten through, but people are paying more now. And it's also kind of crazy to see that some people are paying Satoshis per byte, even though, generally, over the course of a few hours, zero Satoshis per byte will also confirm.

Are they really time-sensitive? Probably not. Probably, their software is crummy, and their software just estimates So it's easy to make fun of people and be like, these guys are idiots. It's actually not that easy to estimate what fee you should issue a transaction with. It's also sort of asymmetric in that a lot of exchanges, someone says, I want to withdraw my 10 bitcoins. I traded, this is a lot of money, withdraw, click.

It doesn't confirm for six hours. The customer gets super mad and starts calling customer support. Whereas if the exchange is like, look, we're just going to issue all of our transactions with Satoshis per byte, they always go through the next block. Yeah, we lose money. But maybe we get the customer to pay for it. I don't think so. I've seen some software that does really dumb stuff with regard to fees. I haven't seen that.

That would be a new thing. So I don't think so, but maybe. AUDIENCE: I presume that it's the exchanges or wallet, companies just feel like their customers are happy are happier and they're charging their customers. It's just passing through the cost to customers. But a quick question-- why not just do an algorithm that takes the last six to 10 blocks, maybe time-weights it, and do an algorithm base, so an actual experience in the marketplace?

Even that can be off sometimes. And it allows sort of a estimate-- OK, how quickly do you need this? Do you need this in the next hour, do you need it in the next six hours, the next half hour? So yeah, the one in Bitcoin D is better. But it's not-- it's easy to say, oh, this should be easy. The thing is, it's a weird market. You're bidding for something that you don't quite know-- and you don't know what other participants are going to pile in. Sometimes-- so something like this, oh, a block didn't come out for half an hour, and a bunch of other people came and submitted higher bids after you.

And so now you got out-- in practice, well, yeah, someone who submitted a bid here, a transaction here, a block came out there, and-- let's zoom in for an example.

Well, that's too low. But I submitted something here. I think it will get in. But then all these other people came after me, and then the block didn't confirm mine. It did later, another few minutes later. But it's hard-- there's never any determinism in how it's going to work. They do tend to be lower on the weekends. People don't make as many transactions on the weekends.

And so, yes, sometimes people will say, hey, I've got these transactions. In practice, if you say, I don't care how long it takes, just set a low fee and wait.

And it will stay in the mempool for weeks. So there have been people who said, I made a transaction, I put a super-low fee, it confirmed a month later. The thing is, if you-- I should go, yeah, this is something of a tangent. But if you look over six months, it's really highly variable.

It used to be sort of nothing, and then-- part of it is the-- it looks most dramatic here, because you're sorting by-- this shows the fee rate. It's like nothing. You don't have to deal with it. And then like, whoa, OK. And people were complaining, hey, it's days where nothing confirmed. Here it was weeks, months, like all of December and January.

And it was correlated with everyone in the media, everyone wanting to buy bitcoins, the price skyrocketed. So it's very sort of peaky. And then I think interest has died down a bit, and the fees have gone down with it. So this is a hard problem to deal with. And it wasn't something people were dealing with until a few months ago.

Most of the time, you could get by with just setting a low fixed fee or something, and it would work. But now we're really seeing the fee market develop. Also, people disagreed that this should even be a thing. So there's Bitcoin Cash, there's all these forks, the idea of, if you start hitting the block-size limit, increase the limit. Why should we have to pay fees? The miners are already getting plenty of money to mine with, we should just have as much transactions that we want.

So there's people that say that. So not always. So one, your software might not do that. Most software in the last few years just said, look, once the transaction is sent, it's stuck. It's just like, yeah, I sent it, waiting for it to confirm. And you have to actually code something to deal with changing the transaction ID, invalidating the old one. That's some software. This is actually a little bit easier, software-wise, because you don't have to invalidate anything. You could just say, I'm going to send a transaction, spending one of those new outputs that's not confirmed, with a very high fee.

Now, the average of the two will be high enough, maybe it will get in. You can also do this when you're on the receiving end. So if someone sent you a coin, but they sent that transaction with a low fee. And maybe you can't contact them anymore, maybe they're unresponsive or they don't care.

And you're like, well, I really need this money, I want it confirmed, I can then respend that output with a high fee to confirm both of them. It's kind of annoying, but possible. Downsides of this-- Child Pays for Parent is very inefficient.

You're making an extra transaction. And it's exacerbating the problem you're trying to solve. The whole problem is, there's too many transactions, there's not enough space. And you're increasing your priority in the queue by wasting even more space. So if everyone does Child Pays for Parent, it's really bad. Now every transaction is going to take two or three transactions. And the dependency graphs are kind of complex. You can have-- I don't remember exactly how.

There are certain cases where Child Pays for Parent lowers the priority of a transaction. I didn't understand how. But someone explained it to me, and I'm like, oh, shoot, that's bad. Where someone else spending an output can-- if there's a whole branch of tons of different outputs and tons of different Child Pay for Parent, there are certain parts where, OK, if someone makes a low fee transaction, that can actually lower the priority of the parents.

I don't remember. Anyway, so it's kind of a mess, it's complex, and it's also just very inefficient. OK, so another way which seems obvious, why don't I just double-spend it? I made a transaction with a low fee, why doesn't my wallet just say, look, I'm going to replace that transaction with one with a higher fee? And I just decrease the change output amount. That's simple, right?

Another problem-- the default relay behavior is to ignore double-spends. And this is not just a default that's for fun. This is actually-- there's good reasons for it. So if you see a transaction spending output A, output B, and then you see another transaction over the wire, spending one of those outputs that you've already seen, you will ignore it.

You won't ban-- won't get mad at the person who sent it to you, but you'll just ignore it. Because you're like, no, I already saw a conflicting transaction. So the default is, first thing you see is the thing you go with.

This is not a consensus rule, right, because we're not dealing with anything that's in the blocks yet. But any ideas of why this is an important rule to have?

What are some attacks that you could perform? If you just said, yeah, anything-- I'm not going to stick with the first-seen transaction. I will update anytime I see a new one. I'll just go with the-- I'll go with the last-seen transaction instead of first-seen transaction.

What would be an attack that would be enabled by that? Any ideas? You got to think adversarially. I'm trying to bring down Bitcoin.

If you change your code to last seen instead of first seen, how do I bring down the network? And they all have the same fee rate. I can just keep doing that indefinitely, and I just keep flooding the network. And everyone's like, oh, here's this new one, oh, here's this-- total mess. However, there is a way to prevent that kind of flooding attack, or at least significantly mitigate it, which is, OK, we'll relay conflicting transactions, but we require an increase in the fee.

And the required increase is equal to our minimum relay fee of one Satoshi per byte. So every time I could say, OK, I'm going to replace it because it has a higher fee. So now it's sort of constantly incrementing.

You can't keep doing that indefinitely. Every time you want to send a transaction out to the network and use everyone's network resources, you are sort of potentially paying something for it. Yeah, you will continue to ignore transactions with same or lower fee. Oh, I did the why. Yeah, the why happened there. Anyway, yeah, the DDoS attack is make lots of transactions with the same fee, clog the network. OK, so this seems simple, right? We have replace by fee. If you have a higher transaction fee, you replace the transactions, wallets implement it, no problem.

Well, people don't like it. People said, no, we don't like replace by fee. This was a controversy around , when a bunch of the developers were like, yeah, this seems reasonable, let's put it in. People said, no, this hurts the security of unconfirmed transactions.

And to some extent, they do have a point, right? If every node on the network says I'm going with my first-seen transaction, if there's a conflicting transaction later, I ignore it.



0コメント

  • 1000 / 1000