Good morning everyone. I think I'll get started and if other people walk in we'll hopefully they'll be able to catch up. So today's first talk is going to be on sidechains and proofs of proofs. You've heard about some of this by Agalos yesterday, discussing sidechains sort of all those fellows, proofs of proofs of work, proofs of proofs of stake. So I'm going to go into a little bit more depth about what these are. So this is a collaborative work. The side chains paper we are preparing now is with Peter Gasly and Agalos and the previous paper on proofs of proofs of work is something we have with Agalos and Andrew Miller. So what you're going to see here is collaborative work taking from both of these works. So this is the outline of what I'm going to talk about. It's basically two parts in the talk. The first is going to be about side chains in general and then the second part is going to be about proofs of proofs and specifically proofs of proofs of work. The first part of the talk, the side chains, I want everybody to be able to understand it. So you don't need any special knowledge, any technical knowledge. It's not going to be technical. So everybody should be able to follow. So if you have any questions during that part, feel free to ask. And then the second part, I wanted to also give some details for the technical people that have some knowledge of cryptography. So it's going to be a shorter part. I'm going to go into some technical details. Hopefully everybody will get a gist of what this looks like in general, but maybe not every technical detail. So don't worry if you don't follow everything. All right. So let's get started. So for side chains, that's the history of it. So in 2014, it was proposed by some people who are now mostly on Blockstream. So it's Adam back, Mark Friedenback and Andrew Miller and so on. They brought this paper called Enabling Blockchain Innovations with Peg Side Chains. And that was a high-level overview of what they wanted to achieve with side chains, the idea of what it is, which I'm going to go to immediately, but they didn't have any technical details of how to do it, and especially not for Bitcoin. Okay. So what is a side chain? We have here two blockchains. One is Bitcoin. One is Ethereum Classic. And they have two Genesis blocks that I have there with green. They're separate blocks. And these blockchains are, both of them are independent. They are standalone. And they are separate systems that work on their own. Now, the idea is that sometimes you want them to communicate. So I'm going to be using the Bitcoin example throughout these slides. Unfortunately, Bitcoin is unlikely to be able to work with these schemes. So take it with a grain of salt, because maybe it needs certain updates that Bitcoin is not willing to do. So let's see what a side chain is. Now, the blockchain is growing. So blocks are produced. Of course, maybe not at the same rate. It doesn't matter. And at some point, a certain event happens within the Bitcoin blockchain. Now, blocks keep getting produced, and that event is eventually confirmed after enough blocks are put upon that event. And then we want the Ethereum Classic to be aware of that. So the Ethereum Classic will learns about that event, and that event that happened on the Bitcoin blockchain becomes available to the Ethereum Classic blockchain as a piece of information that this thing took place. And then this, of course, also this gets confirmed. And the Bitcoin Classic blockchain here can react to that event. So it can have an action that is the result of an event in the Bitcoin blockchain. And if you're familiar with these systems, you'll notice that usually smart contracts are closed systems. They can't really interact with the network.  They can only look at blockchain data. So this is something new, right? And the question is, how do we really do that? So there's two blockchains in the scheme, the source blockchain and the destination blockchain. The source blockchain is where the event happened here. And the destination is where we want to react to this event. And depending on the use cases, the same blockchain could be both a source and destination blockchain. So you could have also an event in the Ethereum Classic happening and Bitcoin reacting, for instance, right? So these roles can switch. And also another thing is that here I have just one event noted. But it's not impossible that you'll have multiple events going on in parallel. So multiple things happen on the Bitcoin blockchain. These events are propagated to the Ethereum Classic blockchain. And there's multiple reactions occurring at the bottom and vice versa. So this is just, I'm just giving you one event, a snapshot of one event to see, to study what's going on. But of course, there's going to be parallel events happening. All right. So for supporting these block chains, these side chains, we need certain features that we don't yet have in all blockchains. So one of them is about the source blockchain. We need, depending on its type, whether it's a stake blockchain or a work blockchain, we need something called proof of proof of work or proof of proof of stake. And we can likely build these. So this is going to be the second part of the talk. We know how to make proofs of proofs of work. And I guess I was working also on a proof of proof of stake scheme with Peter, right? So this is also something that's being worked on. And then the destination blockchain, it has to be smart. So it has to be able to run some code that can do a certain amount of verification. So we're a bit limited on what blockchains we can use for this. If we look into the situation right now, there is no serious support for side chains. There is no implementation that really works. There's maybe a few things. There's a drive chain, BTC relay, maybe a couple others, but they don't really work or they have security issues that are very serious. And in order to make it work, it's not sufficient to know how to build these proofs of proofs or to have smart contracts. We also need to start including certain pieces of metadata into the source blockchain. And this can be done with a series of different forks, so either hard fork or soft fork, or a new concept that we call a velvet fork. And the bottom one, the velvet fork is the least disruptive of these, and it can be user initiated. So the nice part about velvet forks is that users can do them. We don't need minor approval to do them. And hopefully, we will start in actually next week, we will start injecting this metadata into the Litecoin or the Bitcoin Cash blockchain just to experiment. So this is something we have planned. And then the destination blockchain, if it has smart contract support, it should work in principle. But the difficult part is that these algorithms to run within the smart contract, they can get quite complicated and gas heavy. So sometimes it may require some of the primitives of the smart contract to be implemented in the virtual machine itself. All right, so let's look at what kind of events can be supported and reacted to. So some of the events are here, I have some examples, but really you can react to anything that you would be able to react if it was your own blockchain. So if you're writing a smart contract for Ethereum Classic, and you can react to some event that happens in Ethereum Classic, a similar event that happens to Bitcoin, the source blockchain you can react to. For example, I was paid, a particular block was created. A certain account has a certain amount of money, or some money was moved out of an account, or a certain smart contract was executed. So these are kinds of things that we can react to on the destination blockchain. When things happen on the source blockchain. So that's, yeah, those are some things. In general, there's no, there's no particular limit. Like if it's part of your application layer, in a local blockchain, you can you can do it in a cross chain as well. So the challenge is, as I said, that miners don't really monitor block both blockchains, right? So if you have a miner that's running on Ethereum Classic, it doesn't really know about about Bitcoin, it can't go to the Bitcoin blockchain to learn what's happening. It only knows its local state. So the question is, how do we isolate these two networks, but still be able to verify that everything's okay here? And the way to do that is we do proofs of proofs. So what is a proof of proof? A proof of proof is takes this thing, which is the source blockchain, it looks at some event that has happened here, it has been confirmed. And then any full note that has this state locally, can take the local ledger state and compress it into a single piece of text, a small piece of text that we call a proof of proof. So what is this? This is a proof that this event happened, doesn't matter what it is, within the Bitcoin blockchain. And this thing, if I show it to anyone, they can look at it and be sure be certain that this event took place in the Bitcoin blockchain without interacting with the Bitcoin blockchain. So that's the key component that allows us to do this kind of isolation. Okay, so here is the protocol. So initially, Alice sees that this event has happened on the Bitcoin blockchain. So for example, Alice could make a payment, could initiate a payment herself on the Bitcoin blockchain and waits for it to be confirmed. Now, once it has been confirmed, Alice will generate this proof of proof. So for Bitcoin's case, it's a proof of proof of work, and then includes it in the destination blockchain. So it's put within that block. And then that's also waited to be confirmed. And then that can cause an event to happen on the target blockchain, depending on your smart contracts rules, right? So the smart contract within the Ethereum Classic blockchain here would be able to take that string, that proof as input, look at it, validate that it looks okay, validate that it's actually a true proof of what happened, an account of events, and then react to it in the way that the smart contract developer wishes. Okay. So some applications. The the obvious one, I guess, is atomic swaps. So this is perhaps already possible with other means, but this is one more way to do it. So the idea here is that Bob holds some Bitcoin, Alice holds some Ethereum, and then they want to exchange it, but nobody wants to transfer first, right? So how can we do that with with side chains? Well, one way is just to create a smart contract within the Ethereum blockchain, that waits for a Bitcoin transfer to happen on the Bitcoin blockchain. And once that happens, react by paying on the Ethereum blockchain. Okay, so the way that will work is if if Bob has Bitcoin, Alice has a theorem, Alice creates this Bitcoin address that she wants to receive the Bitcoin into. And then she also creates a smart contract paying her a theorem into that smart contract with a time lock, let's say, of two days, right? And then that smart contract has a rule that if Alice's account is paid on the Bitcoin blockchain, a certain amount of Bitcoin, it will release the amount of ether that Alice has locked into the Ethereum smart contract to Bob's address. So now Bob seeing this, seeing that the smart contract has been created and is confirmed and contains his address, pays into Alice's Bitcoin account with his Bitcoin on the Bitcoin blockchain. And then the the smart contract on the Ethereum blockchain releases Alice's Ethereum to Bob's address. So this is nice because it's atomic and they can exchange these coins at the same time, right? So this one application. Now, another application we're working on, and this is an implementation we are actively writing code on right now is to enable one way pegs. So I'm going to explain what these are with an example, a remote ICO. So here's the idea. It's possible that investors hold money in certain different blockchains like Litecoin, for example, or or Bitcoin in this slide, right? But they want to buy a certain tokens in the Ethereum blockchain, because it's a smart blockchain that enables the tokens to have all of these features. Interestingly, they don't really want to go to an exchange and pay the spread or pay the pay the volatility and so on. But they would like to be able to just immediately pay in Bitcoin and receive the token, right? So this is something that's possible now. And then the way the protocol works is that the company that's fundraising creates the Bitcoin account in which it will receive the funds. And it creates also a smart contract on the Ethereum blockchain. Doing the ERC 20 token creation. And then whenever somebody pays with Bitcoin into the company's account, then that person paying creates the proof of proof, and then puts it into the Ethereum smart contract to receive their fair share of of company tokens. And so that way it's possible to do ICOs in a smart contract blockchain with a unit of account that lives on a different blockchain. So this I think this will be very interesting to the community once it's possible. Now moving on to two way pegs. This is a natural extension of the one way peg. So in the same way that we moved basically payments from the Bitcoin blockchain into the Ethereum blockchain. Now we can try to move them back. So if both of these blockchains are smart enough, which which Bitcoin isn't, but let's just go with it. And then you can move tokens first from Bitcoin into Ethereum, and then back from Ethereum into Bitcoin. So in the first case, the Bitcoin blockchain functions as a source blockchain and the Ethereum as a destination blockchain. And in the second transfer, the destination blockchain is Bitcoin and the source blockchain is Ethereum. Okay, so let's let's look at what's happening here. So suppose we create a special account we call x within the the Bitcoin blockchain, and a special account called y within the Ethereum blockchain. Now we create within a theorem classic, we create this token that we call BTC 20. Now I will argue that BTC 20 are basically for all practical purposes, the same as Bitcoin. So they have the same value. And and they would be traded at exactly the same rate as Bitcoin itself. Now here's how it can work. First, when every whenever anybody is paying into the account that we call x within the Bitcoin blockchain, we have a smart contract in Ethereum, creating this ERC 20 token called BTC 20, and giving it to them handing it to them. So note that this is just a Bitcoin transfer. It's nobody has a theorem, right? But once you put money, Bitcoin money into the x account, you suddenly have BTC 20 tokens in the theorem blockchain. Now, anything that's within the x account cannot be spent. So it's not like somebody owns the keys to that account and can spend it. It's not owned by by company or an individual. But the the only way to spend a money that has been transferred to account x is to move BTC 20 tokens into the y account. Okay, so once you move BTC 20 into the y account, which is a transfer on the Ethereum classic blockchain, then those BTC 20 are destroyed. And you are given the similar value or the exact same value from the x account on the Bitcoin blockchain. So what we have done here is basically we've taken a Bitcoin, moved it to the Ethereum blockchain, and then moved it back. So let's see this in pictures. We have these two, two chains. You have here a Bitcoin, you put it to some account x that lives on the Bitcoin blockchain, nobody owns it, right? You create a proof of proof. And that gives you a BTC 20 token on the Ethereum blockchain. Now, you can trade this as a regular BTC 20 token, you can have fast, cheap and smart transactions. And then you move it to the y account over here, which just destroys the ERC 20 token when you move it there. But by using a proof of proof on this destruction, you can unlock that Bitcoin from the x account that it was originally placed into. And the person that's doing the original deposit to account x could be different from the person doing the withdrawal from the account x eventually. So it could be different owners, you could split it up and so on. That's all fine. So while in the Ethereum classic blockchain, we were calling it a BTC 20, because you can always turn it into a Bitcoin, it's really worth one Bitcoin. So it retains its asset nature. Okay, so here's the picture, right? At the top, you have BTC that's moved into a special account x and recovered from the special account x. And then at the bottom, you have the BTC 20 token that's exactly equal in value. And it's only created and destroyed based on these events, right? Yeah. No, no, no, it can be split. And you can you can transfer some of it back. So if you say you move 10 Bitcoin from the top to the bottom, right, then you pay your rent, right? So 0.1 Bitcoin. And then that the property owner can move that 0.1 Bitcoin back and receive their proportion from the locked amount. So the locked amount count x is collecting all the amount that has been deposited by all people and can unlock a certain amount, whatever was basically destroyed on this portion. So during the destruction, it records how much was destroyed and who is the rightful owner to receive it on the other side. And then you can receive that portion. Yeah, so it's completely divisible like a regular Bitcoin. Any other questions about this? Alright, so let's go to Cardano. So Cardano, the plan for Cardano is to have two layers, the settlement layer and the computational layer or contract layer. And these have different features, right? The settlement layer is the dump blockchain. It doesn't sound very nice, but it's actually a good property. Because it's, its features are limited. So we can argue about its security properties. The code base is certain amount and we can look at it and hopefully have some provable security on it, some audits on it and so on. But the computation layer has true incompleteness, which the settlement layer doesn't have. And all the nice things of the computation layer come with the cost that the code base is increased and the surface area of attack is potentially increased, which means that it cannot possibly be as secure as a settlement layer because just the code will have to be much more, much bigger, right? And this is similar maybe to Bitcoin versus Ethereum. Bitcoin has this like orthodox approach that we have only these limited features. We are very secure, but we don't add any new features. Ethereum is like innovate quickly, do all these things. Cardano is trying to do something that will preserve both of these. But then you need to separate the two chains. So in Cardano, these are going to be two separate blockchains and they're going to interface with each other using sidechain techniques. So this is how it's going to look. You are going to have EIDA on the settlement layer at the top. That's where EIDA is created. That's where EIDA is stored. That's where EIDA is kept, like today, right? And then when you want to do a computation in a smart contract like have a DAO or have a complex condition or a DAP, right? You can move it to the computation layer and then that asset can live for a few blocks in the computation layer and when you're ready, you can move it back. So the idea is that you can use the settlement layer as your store, your savings account, and the computation layer, you can use it as your current account, which has more features and it's, yeah, it's feature-rich, right? So you can maintain both the safety for your funds that the settlement layer gives you, which is really simple, and then also have the features of the computation layer. Hopefully both of these will be very secure and they're going to work great. So some of the challenges here in the Cardano blockchain, one of the issues is that the computation layer, when it will be created, when the genesis of the computation layer is computed, people will not have taken it. They will have stake in the settlement layer. So the question is then, how can you maintain the security of the computation layer if it doesn't have any stake? If it has very minimal stake? The problem would be an adversary could move some funds to the computation layer and then use that stake to disrupt the execution of that computation layer and breaking its security. So we want somehow to inherit the stake from the settlement layer to the computation layer and say that people, based on their ADA stake on the main chain, somehow we want them to inherit staking rights on the computation layer so that we can bootstrap this system in a safe manner. So this is ongoing research with Peter and Agalos. And then again, like before, ADA is the home asset of the settlement layer, but it can be moved around. The Cardano computation layer doesn't have its own coin. So in a similar way as before, you can think of ADA and ADA20. It's exactly the same token, essentially, because it's two way pegged. But a token living in Cardano computation layer is by nature a different asset than the asset living on the settlement layer in the sense that it has a different lane. It's on a different blockchain. But on the other hand, it's also the same asset because it has the same exact value and you can always turn it back. Right? So the Cardano computation layer is interesting in that it doesn't really have its own coin. It's not a standalone blockchain as before. It's only created as a side chain and it was always just meant to be a side chain. Now, one of the really, really nice properties about side chains that I like is the firewall. So the firewall says that if there is a catastrophic failure in the side chain, we are able to provide still some security properties on the main chain. So what that means, what does catastrophic failure mean? It is to say that perhaps the side chain was completely destroyed. Right? Somebody was able to create an infinite amount of money. Somebody was able to subvert the security features of that chain, take majority stake and do something bad and so on. Right? We don't want that bad event to affect the main chain. So hopefully both of the chains of Cardano will be very secure, but just in case something very bad happens on the side chain, we can still provide security properties on the main chain. And the way that we do that is we limit the amount of money that can be moved back from the side chain to the main chain to the amount that was moved out. So even if the side chain can create an infinite new amount of money, we will not allow it to move it back to the main chain. So the main chain will be secure in the sense that it will do some accounting and it will know how much money has moved out of it and how much money can be moved back from that particular chain. Okay. So one of the other visions is to have distant side chains in Cardano. So to be able to interface with other existing blockchains or new blockchains. So here's an example of Cardano interfacing with Ethereum Classic. Of course, none of this can happen yet, but this is open research, right? The idea here is that in the same way that we did before, you can move Ethereum Classic tokens into the Cardano blockchains and they can retain their nature as a theorem classic tokens, be moved around, use all the nice features of Cardano, and then eventually you can also move them back to a theorem classic or not. You can keep them on the Cardano blockchain. And hopefully also vice versa, you should be able to move Ada from the Cardano blockchains into the Ethereum Classic blockchains. Now, what exactly, which of these exactly we're going to do is business decision, but the technology is there to allow this kind of asset transfer. So what this achieves, if you think about it, is it disassociates the asset from the blockchain. A different blockchain can be used to contain any asset from other blockchains. So that's how it looks like. And then another idea that is very exciting is that these distant sidechains can also be more traditional systems. So it could be maybe a permissioned blockchain. So personally, I'm very against permissioned blockchains.  But the system uses permissions, right? That's the way it works. So you may want to interface with these. If somebody has Ada and it's stored in the Cardano blockchains, that's going to be a decentralized blockchain. So for me, I'm just going to keep my money there. If somebody wants to interface with a traditional legal system, and wants to put their money into a permissioned blockchain, then they can do so by sidechain interface, and then potentially satisfy regulators, or be happy with, make banks happy with satisfying laws and so on. And this could be, this could be opt-in. This will be opt-in if we ever do it for the person moving the money. And then on that traditional blockchain, maybe a private blockchain, you could have gatekeepers, you could have more closed systems that could say, okay, the bank needs to sign off your transaction in order to approve it and so on, right? So you basically take your decentralized money, move it into a more centralized currency, satisfy the auditing authorities, and then potentially you can move it back. So this is very exciting because it provides a smooth way of transitioning out of the old system and into a new system in a way that is gradual. Okay. So there's no reason why all these coins cannot interface with each other, right? So in the future, when we enable sidechains for all of these, all of these can be sidechains of each other. So settlement layer and computational layer can sit in the middle and be the sidechains of each other, but we don't have really a limit as long as the features of the underlying chains are there to make each chain, sidechain of another, right? And what interesting thing is that we don't really need a central layer for this. So hopefully this can be a peer-to-peer system between different blockchains. So in this case, for example, Monero can interface with a theorem classic, but also with the computational layer, but the computational layer can also interface with the theorem classic blockchain without moving through the Monero chain, right? So if you have some Monero on the Monero blockchain, you move it to a theorem classic, then you could potentially move that Monero to the Cardano computational layer without asking the Monero blockchain what's going on. And the question of how we can do this safely and how we can maintain the firewall property and what the firewall property in this case would have to be, what kind of trust assumptions exist between the different blockchains is something left to be defined. But hopefully this is something that we can aim for. Okay, so some of the things that sidechains enable in terms of features. One of the interesting or most interesting things in addition to the basic, like obvious features that I explained at the beginning is upgradeability. So this idea is that we could use a sidechain in the place of a soft fork or a hard fork. And this could have avoided the civil war that was happening the last two or three years. The idea is that instead of soft forking or hard forking, the developer who wants to add some new features simply creates a new blockchain off of the main chain. So it's a sidechain, has all the new features. But it doesn't need its own currency. So it doesn't need to face volatility crisis. There has to be no worry that the token is going to be worthless, right? Because it's always going to be two-way pegged. So if I wanted to create Bitcoin Cash with sidechains, what I would do is I would make Bitcoin Cash a sidechain of Bitcoin. And then I would make the Bitcoin Cash coin just pegged to the Bitcoin coin. It's a two-way peg. And I would be able to move it back and forth without ever going through exchanges, without buying or selling it, just on my own. And then if people eventually wanted to move their Bitcoin into Bitcoin Cash completely because it's faster or cheaper, then eventually all the value of the Bitcoin blockchain would be moved into Bitcoin Cash and the community could sunset the Bitcoin blockchain eventually. So that would be a more smooth upgrade mechanism. And it would be also a mechanism to abandon ship if we know that a blockchain is going to be eventually insecure. So for instance, if we at some point develop a serious vulnerability against the Bitcoin blockchain, but we don't know how to exploit it just yet, for example, a vulnerability against SHA-256, we could create a new sidechain that has a new hash function, move all the coins there, abandoning ship, and then sunset the old blockchain before there is a catastrophic failure. Yeah. Yeah, that's a difficult question, how you do it. So if you have stake, it's kind of easier because you can borrow a stake from the main chain and so on. In this case, usually what we do is we assume that there's honest majority in both for this proof, but it's not trivial to see how miners would behave in the real world. So I think what you're asking, Thomas, is that what happens if a miner moves their mining power from the main chain to the sidechain for a very weak sidechain in order to destroy it, for instance. Yeah, so that's a good question, but if the sidechain is an upgraded version of the system, they believe in it and they have their coins in it, and they could, and the sidechain could provide incentives as well, so the sidechain could allow miners to mine extra coins on it by securing it. Another way that was proposed was to do merge mining, to allow merge mining, but then again the question is what are the incentives, do you want miners to be able to have nothing at stake for attacking the sidechain? So in the Cardano case, for example, where the computational layer and the settlement layer, they play amicably together and they're nicely interoperable and people staking in one will be happy to stake in the other. This works nicely, but if the sidechain is maybe an enemy chain like the Bitcoin cash case, then that would be more complicated. Okay, and then here's another idea with sidechains to enable scalability. So here we have the settlement layer and the computational layer, but then we have created separate chains that are sidechains of the settlement layer and they are responsible for different industries. So here the idea is that you have a sidechain for electronics, for steel, for travel and so on, and each of these sidechains could keep transactions within the industry. So if you work in the electronics industry, you could, as a company, take your money from the settlement layer, move it to the electronics chain, transact with other electronics companies like your supplier and so on, and then when you want to transact with somebody outside your industry, you could move your money back into the settlement layer and then into some other industry, right? So the nice part about this is that most transactions hopefully would be within an industry and that would off offload the main chain off of these transactions because they are done completely separate, right? So that's one way to do it. Of course, this has challenges mostly in deciding what these are going to be or if you're going to have multiple per industry and so on, but one way to solve this is just to allow anybody to create a sidechain and work with it. But this is also an open problem that we're thinking about. Okay, moving on to proofs of proofs. So this is going to be a little bit more technical. So I just want to show you how these work from mathematical point of view, cryptographic point of view, just to have an idea about how the construction looks like. So most of you may be familiar with the proof of work equation where you hash a block and hash has to be below certain target value. Who here has seen this before is familiar with it? Okay, great. So you have the hash function, you have the metadata and the block, and also the proof of work target. Now we know from the work of Nikos and Agalos that we have a common prefix theorem. This is one of the security features of blockchains that you can't really have a situation where some blocks, you have a deviation from a certain block in the blockchain of more than K is equal to six, let's say blocks here and also there, right? So what this says is that if a block is confirmed, an adversary cannot really unconfirm it by creating a longer blockchain. So in the SPV protocol where you have a verifier that wants to receive some money, what you do is you have multiple provers that claim oh, here's the longest blockchain and they send the block headers. So the honest player will say, here's the honest chain and the adversarial player will say here's a fake chain, right? And in the SPV case, because we can look at block headers, let's say in Bitcoin's work case, for example, the verifier can really check the chain for work and then compare their lengths and decide that oh, the honest chain is okay, right? By doing this kind of comparison there. Now, this has problems in terms of size, right? So for Bitcoin, for example, the chain is 500,000 blocks, in Ethereum, it's 5 million now. The communication in general is linear to the size of the blockchain. So for every block, you don't have to communicate the whole block, but still you have to send the header. So the question here is can we can we convince a verifier that this is the right chain without ever sending the right chain? So can we convince them that the last portions, the last K blocks of the chain, of the currently honestly adopted chain, are these six blocks without ever sending the whole blockchain? And the answer is yes, we can do that and these are proof of work. So here's the gist of the idea. So if you look at this equation, all blocks have hashes below a certain target, but some blocks have hashes much below a certain target. So some blocks have a hash that's below T-hubs. Some blocks have hashes that's below T-fourths and so on. And specifically, all blocks are zero super blocks, half of the blocks are one super blocks, a quarter of the blocks are two super blocks and so on. So what's a super block? Well, a super block that we call new super block is a block that is below target T over 2 to the mu. So if you set mu to 2, for example, then the equation would say that the hash of the block is below T-quarters. And so that would be a quarter of the block. Now the inside here is that these super blocks somehow capture within them the fact that a lot of proof of work has happened around them without having to reveal all the blocks around. So here's how the work blockchain looks like. So this is the zero level blocks and some of them are one level blocks and some of them are two level blocks and even fewer of them are three level blocks. So you can see they're distributed very nicely. Of course, this is a probabilistic data structure. So it may be not exactly right, but it's going to look about that, about like that. Right. So here, the nice thing is that if I show you level two, if I just show you those blocks, I can convince you that this work here has happened without ever showing you all the zero level blocks because these blocks capture all the work that was done as super blocks. Right. So this idea with with proofs of proofs of work, instead of sending the whole blockchain, I set some parameter M to 128, for example. And then I take the Ethereum, for example, blockchain, which is four million. And then I say, if I go to level 15 of super blocks, then there I can find 128 blocks. And those are sufficient to to prove that work has happened. Right. So each of these super blocks captures the fact that a lot of work has happened around without showing all the blocks. It's a probabilistic method. Okay. So in the proof of proof of work protocol, the honest prover will provide a short proof, some sample of blocks that are super blocks to convince the verifier that this is the chain, right. And then the adversary will also provide a certain amount of super blocks. And then the verifier will check that each of these proofs, not only satisfies each of each of the blocks in these proofs, not only satisfies the proof of work condition, but it also satisfies the new super block condition, saying that these are only new super blocks. And then after I do that, the idea is that I will compare these two by length and see which of them has the most super blocks. And that's the one that would win. So as I showed it to you, the problem is that these are just in these proofs, they're just bags of blocks. So an adversary could just rearrange these blocks around and convince me that the chain has a different order, which is something I don't want. So it's really necessary to create pointers between the same level of blocks. So each two level block has to point back to the same two level block. So this is something that we call the interlink or the interconnected block chain. And this is exactly the metadata that I mentioned that we need to create sidechains. And this does not exist in current or most current block chains. For example, Bitcoin doesn't have it. And the challenge also here is that when you create this block, you will not know if it's going to be a two super block or one super block or just a zero level block before you mine it. So you don't really know which is the right arrow to include. If it becomes a two super block, you need this arrow. If it becomes a one super block, you need that arrow. Right? So the way we solve this is before mining this block, we create all of these arrows. We put them in here and then we mine it. And then one of them is going to be right. But the number of arrows is going to be just logarithmic in the number of blocks in the whole chain. So it doesn't really add up much space to the blockchain structure. Okay. So this is how proofs of proof of work look like. So the prover will show certain super blocks to show that a certain amount of proof of work has happened. So it will have to go back to Genesis, of course. And then eventually once it shows that the longest chain is here, then they also show the suffix here of the last K blocks that the verifier is interested about. So this is how it will be constructed. We call the prefix pi and we call the suffix he. And these are security parameters that are specified by the verifier. So you need at least a certain amount of blocks on the super block level and a certain amount of blocks at the suffix level. You just ask for one super block to just represent the whole blockchain. You have things like backpack attacks where you don't, you can be vulnerable to variants attacks. So the adversary could get lucky maybe once in creating a super block, but they can't get lucky end times, which could be 128. Okay, so I have here the protocol for anyone who wants to read it. I will upload the slides later. I don't want to go through it. It's a bit more complicated than what I described. And these are the interactive proofs. This is older work from two years ago. And then we also have non-interactive proofs, where the scheme is a bit more complicated. But in the end, these are just pieces of blocks, right? So just sets of blocks. In the non-interactive case, you have to include a few more blocks, but again, they're just logarithmic in the size of the chain. And if you collect all these blocks in the non-interactive case, which we also call NepoPowl, in the non-interactive case, what you do is you create these nice strings that allow you to create sidechains. So there are proofs that don't need any interaction between the verifier and the prover once the prover has constructed this proof. And these proofs are short and they're also succinct. And they allow you to prove anything that has happened from Genesis till now. So one of the interesting parts of this construction is if you have certain superblocks that are very high level, sometimes you want to prove that something happened between them. And this is the way to do it. So I'm just keeping this part of the construction as an interesting portion. So if you're proving something on level four, then normally this will point directly to this four. But if you want to prove that this block was included because a transaction is of interest to you, then you can do this nice trick where this contained the three pointer because of the construction I described before. This contained a two pointer, one pointer and then eventually you can go down in just a logarithmic number of steps. So it's like maybe if you're familiar with the lowest common ancestor problem or a heavy weighted composition in algorithms and such techniques, basically you just use a data structure which can do these jumps. So these jumps, like if this is a four block jump, then it becomes a two block jump and a one block jump. So you get really quickly down to the block that you need. OK, and one more application I want to mention before I close this talk is that we can have light SPV clients with these proofs. So in addition to having sidechains, light SPV clients are also enabled. So a light SPV client could be an embedded device or a mobile phone that doesn't really need to download all the blockchain headers. So we all know that we have SPV and we don't need to download the whole blockchain. But with this construction, we don't even need to download all the block headers. We just bootstrap it very quickly. So we have a mobile phone that has just the Genesis block and then it downloads 128 blocks and that's synced, right? Doesn't need to download all the intermediaries because it has enough of a representative sample of blocks to know what's going on. Yeah, sure. So a super block. So if you have a block, then its hash is below a certain target T. Some of the blocks would have a hash that's much less than T. So some blocks will be below T halves. These are called one super blocks. Some blocks will be below T quarters. These will be two super blocks. Some will be below T eighths. Those will be three super blocks. And in general, mu super blocks will be blocks that hash below T over 2 to the mu. OK? So this is why we have this nice distribution where you have powers of two. Does that make sense? OK. So this is how we do light SPV. And there's a couple blockchains that are being worked on. The most prominent, I think, is by Alex Chepournoy called Ergo, which has these proofs embedded into their system from the beginning and allows clients to prove things very quickly. So this is very interesting. OK, so for sidechains now, things are easy, right? Because we have these proofs of proofs of work. We can use these to say that something happened on the remote blockchain, right? So we just take this one. We keep a certain amount of blocks as a representative. And then we include the infix portion, as I described, to say that an event happened, right? We compress it into this nice string and then we put this into that other blockchain. And then the smart contract in the blockchain below can just check for syntactic correctors and proof of work, the proof of proof of work to say that it has enough superblocks and so on. So that's how it would work. And that's how you can achieve isolation as well. OK, so some future work. There's a lot of open questions in this area. One is proofs of proofs of stake that's being worked on. Another one is how we can do sidechains on all of our using some of these mechanisms, which is a paper we're writing now. Then another question is, how succinct are these really the proofs of proofs of work? Are they really short in every case or are there cases that are adversarial where they could be longer? And this is a problem we're exploring with Nikos and Aguilos in a new paper also. Another question that nobody I don't think is addressing is, can the small work in the variable difficulty setting where targets are adjusted? So our security proofs are just for targets that are constant. I think that this construction will work for every case, but we don't have a proof for that. So that's also an open question. And then, of course, there's also the question of actually implementing it and seeing it in the wild. And this is a project that's being done by Jodros Christoglu and Arthur Gehrweiss in Imperial. So they just started playing with this ICO example that I gave before between Litecoin and Ethereum Classic, hopefully. So this will allow cross-chain transactions to be realized for the first time. So this is very exciting to see. So here's some papers. I will put up the slides here or email them to you. I don't know. I'll talk to Tam, I guess. And then that's it. Thanks.


Hello, my name is Jepreca Rodriguez and I'm the March Student of the Month for Diana C. Lobosco Stem Academy. So I'm in the biomedical and life sciences shop and the reason I chose my shop was I wanted to immerse myself in a challenging collaborative class where my curiosity can flourish learning about several topics such as microscopic organisms to neural synapse and see how all of those relate to human existence. So I plan on majoring in neuroscience and pursuing my MD. I'm a part of the National Honor Society, the World Language Honor Society, a teen summit and HOSA. A fun fact about me is my first name is a rough translation of a flower used in the Middle East in traditional medicine to treat flesh-eating bacteria. I would like to thank my parents for their unwavering support and my teachers for showing me that mistakes are the doorway to success.


We want all students to get actively involved in thinking about the lesson topic. In the Think-Pair-Share method, the teacher uses three steps to get students involved. The first step is think. The teacher asks the students a question and then has them think quietly about their answers for a few moments. The second step is pair. The teacher puts the students in pairs and asks them to discuss their answers with each other. If the class size is large, the teacher can put students into groups of three or four to discuss their answers. In that case, the teacher gives a little more time for this step. The third step is share. The teacher chooses a student from each pair or group to share their group's answers with the whole class. The Think-Pair-Share method helps students to think more deeply and allows them to learn from each other.


Hey guys, it's Nate, AKA The Foot Accountant. Welcome back to the channel. We have a new loading screen with two new cards on the face of FIFA with our first Europa League road to the final cards coming today in FIFA. So I want to talk about that, who those two players could be, and some very, very crazy market movements we saw today, and a nice, as a whole, a nice market rise after squad battle rewards with not much content today on a Monday, which is what we've been seeing for the past couple of weeks. So if you're buying things late Sunday during rewards or early Monday morning, you can honestly hold those things and a nice market rise has been happening into Tuesday. So we'll talk about that stuff. We're watching the market rise right now because the last couple of Mondays have been slightly lackluster content. So let's take a look at this loading screen first off because this is what everybody is looking at right now and pondering who are these two players and what does this mean, right? So of course, on the website, we've looked at it a couple of times for the road to the final promo. EA said that later in the campaign, we were gonna see more information on Europa League cards and here's our info. So it looks like what they're gonna be doing is putting more cards impacts today on Tuesday because they tweeted this out today and if you look at the loading screen, it says the timer is set for 6 p.m. U.K. or the usual content drop time on Tuesday, November 10th, is when we're gonna see road to the final Europa League. So it's almost like a small part of the promo inside the promo. They're releasing like two promo teams in packs. Now these are my thoughts, right? We have two cards that are on the loading screen and the way they've been doing road to the final in years past is like three-fourths or maybe two-thirds of the players are champions in road to the final and the other third or fourth, somewhere in that range, is Europa League. Now if you look at the squad last year from road to the final, it was about, I would say, how many cards are we in? We have a decent amount of cards in here. We have one, two, three, four, five, six and actually only five of those Europa League cards are in packs and I think Wendell and Danovich maybe, last year we're in the Champions League so they started off as Champions League cards and moved to Europa League. So with like one-fourth, let's say, just say one-fourth of the cards last year were Europa League compared to three-fourths being Champions League. With this design coming out, I would expect somewhere between maybe four to six cards coming into packs today. I don't think it's gonna be a full 11 unless EA is going all out and they're gonna have two full promo sides, one for Europa League, one for Champions League. But the reason I don't think they'll do a full side of 11 is because some cards that are in the road to the final team number one, right now, that is in packs right now, some of these cards when they get, you know, third place in the group stages, they'll go down to Europa League and they'll become Europa League cards. So I don't think EA wants more Europa League cards than Champions League cards in this game. So probably that's why I would only expect a couple cards in packs. We can kind of treat this like man of the matches, right? These cards will, I'm guessing, be in packs for either a week or they will stop in packs on Friday with the other Champions League road to the final cards. But that's kind of what I'm expecting for this kind of content drop today. Now, we could also get an SBC, which I would expect that as well today. Since we have this card design released, I would expect some sort of UEL, Europa League, SBC and possibly objective. So it might be a busy day of content today on Tuesday and we'll keep that in mind when we talk about the market a little bit later. So who are these two players, right? There's a lot of panic selling today based off a couple of these players. So here are the two front runners. This is by Simon Design on Twitter. I'll leave a link to this in the description. This is fantastic work. But in Diddy and Renato Sanchez, another Renato Sanchez special card, a live item. Imagine if this card is actually Renato Sanchez. That'd be crazy because Leo possibly going through Europa League, the potential for them to continue to get upgrades and for this card that is already OP is an 82 rated card going even higher. Now, one thing we have already seen is Marcus Rashford, right? Got a road to the final card and he has the exact same stats as his 86 informed. So if Renato Sanchez was going to get a live Europa League item today, I think it would have the exact same stats as his informed and be the same rating. And people are thinking that this other card with the 86 physical on the loading screen is going to be in Diddy. So that's going to be very interesting if that is in Diddy. That's a pretty solid center of offensive mid in the Prem. There'd be a lot of people that would be pretty stoked for that card, I think, depending on the price. And of course it's a live item. Lester are playing fantastic. They got a good squad. So this card could get upgraded a lot and you could see a pretty nasty card by the end of the year. So there's going to be some hype there as well. But that's kind of what I'm expecting for today and in all honesty, I would expect some sort of SBC for a Europa League card. Now, some people when they saw that player today, my mind imagined or like quickly started to imagine a Cisoco Spurs UEL card. We've got to get some Spurs Europa League cards. We have to. But since we already have two champions that you wrote to the final SBCs, I would expect a third one today inside of the game. Maybe not an objective. I'm curious to see how much content they would drop mid week because if they dropped an SBC and an objective, that's almost just as much content as they would drop on a promo Friday. So I'll be curious to see how they drop like a promo Tuesday since they're adding cards into packs is what it seems. Unless those cards that they put on the loading screen are just going to be like one objective and one SBC, then we'll see, then that'll be different as well. But it looks like they're going to be in packs because usually when EA puts cards on the loading screen, it means that there's going to be items in packs. So again, speaking of the content today, all that we had, when I tweeted out today, I totally forgot that on Sunday, the Konmibo SBCs have been released. So I tweeted out and said, hey, these are new, but they actually weren't. We had a back of the net SBC for another untradable pack supply pack. So EA, I guess GGs to you guys, they're not crashing the market every day and it makes investing on a weekly basis. We have this new kind of thing in FIFA on the weekends. Instead of Thursday flipping, it's almost more guaranteed profit. You can do like Sunday flipping and Thursday flipping. It's kind of crazy. So I'm going to talk about that here in a second. But the content today was just the loading screen and that SBC, which was untradable, so it didn't impact the market. But of course, since we had that loading screen and since the content today didn't really affect the market tradable-wise, you saw a lot of things continue to actually push up. Let's take a look at Footbin here for a second. A lot of these cards are on the up and up. Sun, 140, he's up 10,000 coins. Martial, 112, he's up 10K. Werner was in the 160s. Bruno Fernandez was 91K last night. So a lot of these cards at squad battle rewards have risen since then. And that is like a trading method that we can do almost every week. We can take a look at these cards right before rewards are on Sunday. Bruno was 90K yesterday, 93,000 coins. And as you can see, he's risen from the low 90s all the way up to about 100,000 coins. Now, maybe part of that rise is due to the fact that there's a Portuguese player on the front page. I don't think that's really too much to do with it. But there is a lot of things that are rising up very nicely right now on the market. Now, Road to the Final cards are still kind of chilling. We'll talk about when to buy those a little bit later. I wanna see what comes out with the content today with Europa League before talking about buying those champions in Road to the Finals. But a lot of cards have rebounded, right? Mertens is up, Andre is back up. Laporte is just kind of chilling. Some cards are still chilling a little bit, but a lot of the out-of-packs inform some of the rule breakers and a lot of the meta gold cards are up. I remember last night talking about Di Maria in like the 340, 350 range. He was back at 380 today. Lukaku's back at 390. Podens was 90. He's now 99. Pugba was like 970 at one point today. Quadrata 193. So Oparra 58K. Wow, he really went up today. So a lot of the out-of-packs special cards did have a rise today. I know Walker is up 623. Firmino is up a little bit. Ramos is up a little bit. So let me check on team of the week one. Some of these cards are about the same. Ben Yedder's up about 20K. So some of those cards are the same, but some of the newer hyped promo cards or very meta players like St. Maxim was 340 last night. He's now at 360. You just do see a lot of a nice market rise on those Mondays on a lot of these cards. Again, I'll show you some just again for an example. This is like the new Sunday flipping is honestly what it is. Now is it gonna wear off at some point? Yeah, it's probably gonna wear off at some point. But you can tell last night 125, that was actually on Sunday. And then it rewards again, he was in the low 130s and you were able to pick him up there and now you can sell him.  So if you have cards that you bought Sunday night, what I would probably do is with the possible content coming today, like I bought some Griezmann's, right? I bought Griezmann's at 51, 52K. I think Griezmann's about 60K now, is that true? Griezmann is just under 60,000 coins. So what I'm probably gonna do with these cards, even though he's out of packs is, I think a lot of people are gonna end up wanting to cash out on their investments today that they made on Sunday night. So I'm making a nice, like what, 3, 4K card here. That's not terrible. I think I have like five or six of them, GGs, right? Let's say you bought a guy like Hyunmin Son, who we were just looking at, who was 140K. Let's say you bought him in like the mid low 130s, you might be able to see this go up to 143, 144, 145. Yeah, absolutely 145 by tomorrow. I think this guy continues to go up a little bit overnight. But then in the morning, there might be a little bit of a drop off before the content drop comes, and the Europa League content comes because people will have these investments and they'll be looking to dish them out. Now, if nothing big comes tomorrow and stuff starts to drop, but then there's not really a lot of content, you might see the market pick right back up, depending on what SBCs and objectives and players and packs actually come out. But it seems like these people that have invested, the market is rising because people are now learning that buying teams Sunday nights into Mondays, especially with not a lot of content on Mondays happening, does end up making the market get pushed up. And it's honestly a really great, you can be flipping all the time, short term flipping. You can buy like Sunday night, you can sell on Tuesday, you can buy again on Tuesday night, Wednesday night, sell again after rewards. It's like just constant scenarios of flipping if the trends continue like this in foot, which is very, very nice, right? It's casual friendly because we haven't had a lot of market drops every day, like we were having earlier on in the year, that was at the second week of FIFA, the game was out, we were getting those tradable pack supply SBCs and it was tanking the market three to 4% for like an hour or two, and then it was picking it back up, but there was just so much panic selling that a lot of people were just consistently losing coins every day because cards wouldn't rebound to as high as they were before that. So again, just to keep it simple, I would say if you have like a son, if it's an out of packs card like a Rashford or a Griezmann, you technically could maybe hold on to those a little bit longer if you wanted to and wait to sell those because those cards are out of packs until Friday, of course, because they're in road to the final, but you can definitely take a hold on those. And other than that though, if you wanna do a pack, a card that is in packs, you might consider taking the coins today before the content drop happens because we're just not entirely sure what comes out. I don't think there'd be crazy content on Tuesday, but just being safe, people like to panic sell. A lot of people are invested right now, so if content does come out, a lot of people are gonna be panic selling those investments and shipping them off and that could cause for a loss of coins in the market. But since Renato Sanchez was on the front screen, there's two popular players on footpin that a lot of people are looking up right now, and that is Joao Felix and Renato Sanchez. This Renato Sanchez inform was like 250,000 coins this morning. There's been a lot of panic selling on these cards. It doesn't actually show it on the graph here, but there was a lot of panic on Joao Felix today, fluctuating up and down, and then Renato Sanchez as well.  He went panic sold all the way back down to 206. Now he's back up to 225. If you did buy into this card today, G frickin' Gs, and how do you know to buy into a card like this? When a card is this hyped up, even though he's low rated, when he's this hyped up, there's gonna be a point where all the panic selling, it hits a bottom and it's gonna bounce back, and there's gonna be some people that invest in there as well and help that market rise, especially on an out of packs inform that is very, very meta. So this guy, I could see him going back to not quite 230, maybe 225 or so, and you're making a solid, if you bought it like 205 or 200K, you're making a solid like 10 to 15K card on almost all of those. So that's a nice one day flip if you don't wanna risk it. Now if the card that comes out, if this card that's on the loading screen is not actually Renato Sanchez and it's somebody else, all right, then this card's gonna shoot back up in my opinion. So if you're wanting to hold and you don't think it's gonna be Renato Sanchez, then good luck, but this is really looking like Renato Sanchez because those Europa League live cards match the stats of the inform. This inform has 83 pace. The inform again, just so I can show you on the loading screen has 83 pace. So just be careful because this might actually be Renato Sanchez and that's why there was a lot of panic selling today. So that'll be an interesting market movement to watch for sure. Talking about, I should just say it on foot, but in talking about the SBC fodder situation, last night of rewards was a great time to buy. I'm looking at the index 85. And of course today when the loading screen dropped, a lot of people saw that and they said, hey, this is possibility for SBCs and they saw the stuff rising so they went out and bought more SBC fodder. Now another reason why some of the higher tier indexes of fodder are going up right now. 86 is up a lot as of this time right here. That is because of the release. EA Sports tweeted out today that the league one player of the month vote is live. So EA, POTM, let's check this out really fast. The La Liga or Liga and Uber Eats vote is live. And if you click on the link, it takes you to the website and you have these three candidates, Jonathan Bamba, Wissam Ben-Yeder and Kilian Mbappe. So big time player of the month gonna be coming up in the next couple of weeks. I don't expect this SBC to honestly be coming out in foot at least for another two weeks, at least a week and a half because we have the Niana SBC that is in here and I talked about that in my video yesterday a little bit. I don't think we're gonna be getting that player of the month just yet because this still has 12 days left, a lot of time. So I would expect at least a week and a half I think before the league on vote comes out but the account to follow on Twitter, if you wanna follow the correct account that's gonna be announcing the winner of this vote is going to be the at UNFP, it's a Spanish account or sorry, not Spanish, French account. All right, it's a French account. So make sure you follow this up, turn the notifications on possibly because they're gonna be the ones that will tweet out who does win the award. I think if you go back here, you might be able to see, you have to go back pretty far but they're the ones that did tweet out the Niana SBC and him as the winner. So that will be your first knowledge of when they do announce that SBC who is gonna be the person that wins it. So that's gonna be a big SBC. Now obviously like we think back to last year when we had Player of the Month Messi who came out in December and that SBC was very expensive but it's messy. So people had a lot of cards that were stacked up and that's why people are buying into informs and high ratings right now. If you're interested in that, I mean, SBC fodder is decently cheap. 84 is like 2.5K, 85s are still decently cheap. We just don't have a lot of SBC demand yet and that's why you don't see a lot of those cards going up. But if you still wanna do a club stock, maybe wait until like a rewards day until some of the hype dies down from the first day release of the vote. You know, maybe people forget about Mbappe Player of the Month for a couple of days, rewards come out, the new content comes out this Friday or maybe it rewards Thursday because we could have a son or a cane Player of the Month on Friday. So that could be another entry point for some SBC fodder if you're interested there. And it's gonna be a time of a lot of SBC. So having a club stock going might not be a bad shot at all. So that's kind of my thoughts on the content, what we could see today. I'm kind of hyped for a Tuesday content, boys. Europa League cards, especially for my Spurs.  There's a lot of teams in Europa League that can have some really nice cards, live items like that run out of Sanchez would be, that'd be a crazy card for FIFA. He would easily become like the, I don't know, not the rat but like the OP Player of FIFA 21. So far, I think Ronaldo Sanchez takes the cusp, takes the trophy on that one. So it's gonna be an interesting day on foot, a little Tuesday promo inside of a promo. It's gonna be weird, but we'll see what happens. If you enjoyed the video, smash the thumbs up on it, comment down below if you have any questions and subscribe and channel if you're new. It's been Nathan Foot Accountant. Catch you guys later. Peace, out.


The loving dog comment is actually an understatement. I'm like obsessively in love with dogs So if you would like to talk about dogs, that's like my niche ready where to get me So he did a fabulous job of introducing me. So here's really just the same stuff He said also lead organizer for Kent Minneapolis this year Which is really exciting and it's coming together quite well So if you have a desire to come to Minneapolis that that's taking place in August same weekend as the opening state fair So also another reason to come So if you want to reach out to me, I would love for if you shared on social obviously it helps the camp It also helps me it also helps other people see the content feel free to do so Tessa K 22 is my handle pretty much everywhere. You can possibly find me and then use the official hashtag WCDT So I want to talk through this scenario a little bit and why this is important and I'm sure a lot of you Depending on how many of your developers just raising it. Okay. Perfect. Good. That's you're you're the audience I need that will understand this so a team of developers is working That is already on a site that's already live and they're adding additional functionality So we've got multiple developers working on this each developer is working in their own feature branch all likely needing Database to make database changes, right? We all know in WordPress a lot of things are controlled by the database But there are a lot of things in code and kind of trying to manage all of that can be difficult So content from the live environment needs to be tested against new features being created So we've got lots of content that's living in live that client is continuing to add content edit content But we're still trying to work with the database we had And it needs to be it needs to be so that it's not overridden So we're going to talk about and I'm going to come back to this and I'm going to give you some more foundation But what we're going to do is we're going to talk about these three people. They're fictional people Joe Joanna and John are all going to work in different places To do different tasks that we need them to do so Joe is going to actually edit some theme things He's going to use the customizer customizer actually saves all that data into your database Joanna is going to edit our page cache plugin. The the site is coincidentally on Pantheon, which you know, I wonder why but And then John is going to set up a MailChimp plugin that they haven't been using before And so all of these entail code changes as well as database changes So before we start digging into the demo and Joe and John and Joanna and all the code changes they're making Let's talk about some of the basics So what is site configuration? Has anyone worked with? Site configuration or configuration management for yeah, okay cool So site configuration really is the configuration of your site So most of that configuration can be found in the WordPress setting So if you've ever gone to the settings area, you change like the site name the the date format the image where the images are Say like all stuff like that. That's all your your configuration of your site so site configuration includes items that might also be Related to a plugin so plugins have settings correlated to them themes might have settings That's probably about it And all of that stuff is configuration that you're actually setting up in your website. I Just really like this little like me and this is fun Configuration everywhere right so these developers are going to be working on these tasks. They're also doing configuration I don't remember which one but one of them has to set up a MailChimp plugin And there there's an API key that needs to go along with that MailChimp plugin and so that's a configurable item So we've got configuration. We know that we're constantly doing it. We're adding settings. We're changing things So what is configuration management? Has anyone ever worked with Drupal before that's in the room? No, okay, so Drupal 8 specifically is doing a fabulous job of configuration management and it's built into core Wordpress does not have that So configuration management is the act of managing your site configuration in code through version control So basically the things that we are doing to configure that MailChimp plugin We convert that to something that's in code so that we can move that code from one environment to the other So if we've got three developers working on something at the same time if they're pushing that all to a code file We can easily grab that because it's all in code and it's in our get repository Do we have enough configuration management? Probably not So there's an awesome plug-in that is called WPC FM. It is actually slightly outdated However functionality in WordPress has not changed to require an update for that plug-in. It's built by the awesome folks over at forum one I personally have a lot of I love the plug-in. I think it's awesome. That's why I'm talking to you about it And there's been initiatives around updating this plug-in and contributing So if you start to use this and you realize that this is amazing just like I did They're definitely looking for people and can contributors to really help maintain this plug-in Currently like I said a lot of functionally hasn't changed but with Gutenberg coming out There may be some changes to some of the way that the settings Could possibly be saved and there might be some opportunity to expand on it. All right, so the perks of WPC FM Are that there is the less need to copy the database So we talked about these hypothetical developers are all working in different environments if we can do their changes in Code instead of in the database We don't have to try to figure out how to merge databases together and how to make all of those changes work Or overwrite any type of database situation with what they're doing There's no need to manually apply database settings or changes like I just said It's obviously all in code so we can use utilize that code to move it around And then we can track and migrate configuration files So the nice thing about this is if one person does a change and another person does a change There's a version control to that like we we all are probably Who is everyone familiar with version control before I just make assumptions. Okay, awesome So we know that version control allows us to have a history to the things that we do So if someone does some type of configuration and they break something or maybe they do something that's not right We can track back to like what happened who did that like when was this done? We can reverse it all of that information that we may want to know about things that we're actually putting in our database technically So what can it track? I wish it could track everything because that would be amazing But it can only track the things that are in the WP options table So in the options table, they will store things like the general core settings It'll also store things like the customizer like I mentioned earlier Plug-in settings. So as long as the plug-in is built in a way that the settings that you enter are stored in the WP options table Which most of them are if they're built correctly And those plug-in settings will come along Let's see. I think that's that's probably about it from like deep default theme some plug-ins It will also do categories and tags. I believe as well So there's some terminology to this plug-in. So once you install it, you decide that you want to use it It's actually pretty easy to figure out But some of the terminal terminology behind that is a bundle a bundle is a group of settings So you can essentially go in there and say I want to create a bundle And maybe you put all of your theme settings inside of one bundle Which is really just like customizer and other customizer fields And then maybe you say okay cool. I know that I'm working on this mail-chimp plug-in I'm going to create a bundle for my mail-chimp plug-in so that someone else who is working on another site can just pull in those Configurations and then only things that you check off for that bundle will actually get put in there for mail-chimp So I get to a very granular level when I'm doing it because I like to have well a I'm like slightly OCD I'm pretty sure but B I like to have things like very organized and clean So I know that if I'm pulling in a bundle if it's a new change or if it's a change from another developer that I don't Have to pull everything in and I can specifically pull in what I actually need So pushing is the act of exporting your configuration to a JSON file So you do some changes you create your bundle you check the things that you want in that bundle And then you push it and what that does is it pushes it to your server or your version wherever it is that you're working If you're working locally, it's going to create that file And then you'll have that in your version control to be able to commit And then pulling is the opposite so pulling is you go into a new environment and you see that there are JSON files You go in there you can see all of the bundles that are in your in your site files And then you can pull in any of those bundles and then when you pull it in it'll basically say okay cool Do you want to make these changes to the database and then you're like yes? I do and then it'll pull in all of those settings from your bundle to your question It is not the get push and pull so these are words that are inside of the I'm actually going to do a demo in a second But they're actual buttons that are inside of the plug-in but it's actually like Similar to get push and pull obviously you're you know pushing files and then pulling them in but they're not the same Yeah, yep, so it's writing it to a JSON file technically and then all of that is in there And then the buttons are in the dashboard for you to push and pull So coming back to Joe Joanna and John we're actually going to do a live demo Because those never go wrong of course So We'll see how how it goes, but okay So what I've done is that if you're not familiar with Pantheon Pantheon has like this really nice environment set up We've got like dev test and live and you can move stuff around But I we also have this thing called a multi dev Which I can pull things into like essentially what would be considered like feature branches And so each one of these developers has their own environment to be able to work with and make changes So right now we're in let's see. I think we're in Joe's I Have to remember I made all these fake people and then I forgot who was supposed to do what Okay, so Joe is supposed to be working on a theme So we just have the 2017 theme installed I'm just gonna pop over to the customizer here and make like a quick change just so we have something different that we want to push around So let's just change this to Joe's fancy website. We can go ahead and push that or publish that so when we publish that that actually Created a change to the customizer. So in the database this what I put in there has now been pushed over to To our database and so now my database for Joe's site is gonna be different than John's and Joanna's at this point All right, so we made a change. So to get into WPC FM we go to settings and then it shows up at the bottom of our settings I know this is probably slightly small Let's see if I can make this bigger So better Cool, so we're in WPC FM and this is where those buttons were coming in to play with the pushing and the pulling So I'm gonna create a new bundle Joe's job was to change the site name in the customizer So we can say this one bundle is going to be for theme and Then the only downfall to this plug-in is that everything is like machine readable names So you have to like decipher what those are So I actually know that the name of the site is called blog name in the database and as you start to use this You'll pick up on some of them and in one of like the ending slides. There are like cheat sheets for which one maps to wear So we're gonna do blog name in there and then it will just go ahead and save that So in this bundle, we've got just the one thing checked off and it's the blog name So if I push this Then what it just did when I clicked push is it created a JSON file for me of the code change I just made so if we go back to the pantheon dashboard for this site Which is this one we can see that there is now I'm gonna zoom in again There's now a file change that is pending And so down here it created a config directory and then it put a theme.json file inside of that directory So if we click on that we can actually see in JSON format what we change the blog name to So now his changes are inside of a JSON and someone else can pull those in if they need to So we're what we're gonna do is we're going to so these are in multi devs So that means that they're in like basically their own branch So I'm actually going to merge this into our development which is considered our master branch So the other developers can later pick this up because Joe is now done with his work So I go back to dev we can do a merge If I'm in git mode anyways Sorry, this just takes a second to get back into git mode All right cool. So Joe's changes are done. My mouse is being weird All right, so we're gonna merge Joe's code into Actually wait, that's not gonna work yet because I didn't commit it This is my live demos are not a great idea All right, we'll come back to that one actually let's go work on John's so John is supposed to be doing Mailchimp. All right, so I already put installed the No, I didn't you guys I got my people confused already All right, let's just look for a Mailchimp plugin and add it The idea here is to just get a bunch of changes so you can see what it looks like I Think it's one word. All right, so we got a new plug-in We're gonna go ahead and activate it obviously when we activate in the plug-in that's saving to our database the plug-in files are part of our code So now if we go back down to settings go to WPC FM again We can create a bundle and now this time we're not doing something that is actually a core feature So we have to figure out like what database fields are mapped to this plug-in So if we open ACF here again, we can see all of these different check boxes So again, I've gotten pretty familiar with what some of these stand for but if you start to scroll down and maybe even do like a Look at like the name This one is actually called Mailchimp for WP. That's what the plug-in name is called So as you start to get familiar you'll be you'll get to you'll start to realize like what these are So if I check like all of the MCWP ones, I think That's all of them Well, now I can go ahead and save that and then I can push that bundle and then again if we go over to John's environment This time we can actually commit it so now there's 254 changes a big chunk of that is obviously the plug-in, but then we can also scroll down Dun dun dun, maybe it's at the way bottom Nope Way top There we go, we can see that there is a JSON file that is now Basically grabbing the the configuration that is there by default However, we want to change that configuration because we just installed it. We haven't added our API key So if we go in and go to plugins I go to Mailchimp Let's just put fake API Can't type See if it'll let us do that. Oh It says it returned an error, but it did save it. So let's see what happens if we go back So we go back to settings and we're like, okay, cool. We've made a change We need to push that change to our bundle. So we go ahead push the change to our bundle We can go back to our environment for John and there should be an update See what happens here Open our pending files Disappeared where did it go? Sorry, there's like a list of all these files. I gotta find it Probably back at the top again Here we go So I didn't actually save up the API key so I do need like a legitimate API key, but nonetheless like Let's see See if I can come up with one No, it won't let me so We'll just call that good All right, so we've got the settings there that we can go ahead and commit So Mailchimp Go and commit that and then if we go over to Joanna, she's the last one Joanna is working on the advanced page cache plugin So if we go in we actually install this sorry, I'm like that bigger again We install the advanced page cache plugin. This is a plugin that works with Pantheon's like Awesome levels of caching and allows you to like configure that.  It'll be easier to see the files then still cache plug-in Well, if we go back to her site now if we go to settings we can find the Pantheon Page cache plugin and then we can just change this to whatever we want So let's just say we want our our time to live for our cache to be 1200 seconds We can go ahead and update that And now if we go to WPC FM we can create a new bundle again this time. It's for the page cache Plug-in and Then again figure out exactly what this is called and I don't remember off the top of my head what it was called So let's try and figure it out Pantheon cache. There we go So we check that hit save changes push it again Pop back into our environment Cool, so we see a file change here Created this file and we can see that at the time to live changed to 1200 seconds instead of the 600 You definitely could So you could just check all the boxes and say that you want to create everything I I just I personally don't do that because then when you pull it in you're pulling everything in so if for some Reason your developer decided that they wanted to tweak something just for their environment Then you'd be pulling in all of those changes too, so I'm pretty particular about which ones I include But you could it's all in version control so you could go back and fix things if you needed to All right, awesome So we've got everything and everyone's different environment, so we've got a change wait hold up Bundle or page cache Go ahead and commit that and then I make sure everything else is committed And then we can merge all of this into our master branch where we can pull all of this in which is what makes it cool All right, I think I committed that one. Let's see This one does not have a bundle for it. See what happened Joe's was the customizer. Maybe I lost it All right, so let's go back up into Joe's site and just make sure that his changes are there Push this. I don't think his bundle got committed Oh Yeah, I already merged it. Okay, so we're good. So I'm gonna merge the rest of these in So Joanna's with the page cache. I thought I did that. Sorry y'all Dev logistics Okay, so we should be good now. So now I can merge in Joanna's So what it's doing is it's basically doing a git merge of the file changes that we did Which is gonna be our JSON files and the plugin files And then now we should be able to do John's Once this is done All right, so now we're gonna merge John's in While that's actually merging I'm gonna pop back over to my slides because I want to make sure that there's not anything else I wanted to share so Well, that's merging essentially I have a step-by-step So I already shared these slides as long as buffer did its job correctly on my Twitter account so you can find the slides But these are the steps to basically set it up install the plug-in add a bundle put all the things that I walked through just now And then some tips and tricks so as you saw I was like digging through those fields to figure out which fields Correlated to like certain fields in the database. There are some tricks to do So there's the options reference in the WordPress codex actually walks you through all of the core fields And then you can also go to whatever your site name is And go to like the WP admin obviously and then go back slash options dot PHP And you'll get to visually see what all of the fields are in your database So it'll show you like what you have for site name or it'll show you what you have for like something else And sometimes that helps me figure out like exactly which one I want to see And then like I had here to create as many bundles as you want create one huge bundle It's entirely up to you on how you want to do your workflow Major security consideration that I want to point out before we get back to the demo This is put in the WP content folder as we all know is web accessible And so it's going to create a config file or folder directory basically And then it'll put all your JSONs in there if you're putting things like API keys in there Like I was just trying to do make sure that you lock down that file from a like a readable standpoint So that others are not getting your like secure API keys And then you can also do some configuration if you wanted to move where that is located as well So WPC li if has anyone used WPC li No, awesome you you all should be because it's amazing So it's a command line tool for WordPress and it'll specifically do tasks inside of your WordPress site for you through command line And there actually are a lot of commands for it So you can do the pulling and the pushing you can check the differences You can look at your list of bundles The only thing you can't do with command line is actually Create a new bundle obviously that takes some intensity to check all the boxes off But if you're trying to do like a more automated script with your WordPress project like Process you could do things like pulling if you were doing kind of like a project to deployment or whatever you can include this into that automated deployment And then cheat sheet so I'm not actually going to walk through all of the cheat sheets because you don't need them But if you want to use this you can use them in my slide deck So we only have like five minutes left or getting close to five minutes So if we pop into my new site now or my master branch essentially all of our developers did their work And then we went ahead and we merged all that into master If I go into settings actually I have to turn this on first So activating it if I go into settings here go to WPC FM. We can actually see the two bundles I must have somehow screwed up the last bundle that happens So what we can do now is we can either individually pull each bundle or we could actually just pull all the bundles in So if I go ahead and do a poll here, it's gonna say do you want to import these settings to your database? I'm gonna say yep. I sure do Now if I were to go over to let's say the page cache one came through so let's check that out So if we go into the page cache, we can see that the 1200 seconds carried over instead of the default of 600 seconds Anyone have questions on that? It's like amazing Part of the Yeah, absolutely I'm only using Pantheon because like they have this nice dashboard That's really easy to show you that I'm doing different environments It is by no means like a sales or selling point for Pantheon It is usable like everywhere you possibly want to use it Cool, I'm gonna replay these and make sure I don't have any like ending slides But for the most part these are all cheat sheets So it's walking through like what it what it actually is in WordPress and what the field is in the database For you to kind of kick off your use with this plug-in Let's see this other one this last one I just had here oops I keep doing too many buttons Nope, we already did that so there is also a way for you to customize this So if you're a plug-in developer, you can actually do some configuration of creating your own Fields for this so if you're building out a plug-in and maybe you're not storing things in the options table But you want to store things in a WPC FM bundle There's actually a custom way for you to go ahead and do that and then you can find that all in their documentation site Helpful resources at Pantheon. We like support anything that makes your workflow easier Which this obviously does that so we've got a couple docs that we've shared you can also hit up forum one Those are the developers of the plug-in and then some other things. I wanted to point out is if has how many of you use advanced custom fields Okay, quite a few of you has anyone like set up the synchronized JSON so you're like field groups automatically go into a JSON file No, well you should because that's amazing. So it's the same concept It's the same concept as this like if you're creating field groups It'll automatically put your field groups in a JSON file And then if you like say that you inherit a project and then other developers like here you go I'm done with it or like maybe you're just picking up because they've set up some things It'll put all the groups in there and you literally just hit sync and it brings all the field groups in from your JSON file So anyway, so that's another like another way to use Basically putting configuration inside of code That's all I have but I if we have like a minute or two I think for questions. Thank you. What a question Yeah, so content is tricky I actually just Like figured out that this there's a plugin called merge bot and I have not used it yet But I was hoping to get time to use it this week because that's always a question that I get is like This is awesome for like the configuration or whatever But how do I do this with content and it looks like merge bot is doing just that It's actually on my my list of things to do this next week So if I make any like progress on that I can share it on Twitter, but feel free to reach out to me as well But that is supposed to be version controlling for your entire database And so that would obviously play to content and some of the other stuff And it's really it looks really cool because you can actually do like selective bringing in So if you're trying to put two databases together, it kind of lets you go through and like check the things you want It has a pretty price point to it But if it's worth it, I think that that would be it's an amazing resource if it if it does what I think it's going to do So that's the short link again the slides and the short link to give me feedback are both on my Twitter account And so I'm test the k-21 Twitter So feel free to download them use them share them whatever and if you have comments or feedback I would love if you'd provide that