Press "Enter" to skip to content

Teranode The Transition Plan for Terabyte Size Blocks and EnterpriseClass BSV Software

Teranode The Transition Plan for Terabyte Size Blocks and EnterpriseClass BSV Software

Teranode: The Transition Plan for Terabyte Size Blocks and EnterpriseClass BSV Software hello good morning Im here to talk about turnout and how thats going to help us raise box size big blocks big blocks is what we want right and Terra notice our strategy our plan for transitioning from the current book size we have two larger blocks what is Terra node Terra nodal is Bitcoin server software that has been rebuilt from the ground up for enterprise and scale now when I say that rebuilt from the ground up I often get the question from people what did so much coat theyre already what are you going to be very all the code thats not what I mean by rebuild from the ground up rebuilding from the ground up is starting looking at customers looking at the roles the customers play with me within within the software what roles they need what services they need to provide and it goes on to doing functional requirement analysis how what roles need what right there are different requirements for different different roles and miner has the different priorities than the payment processor and once we know as we know these we can account for them in the software writing actually actual code comes later and yes we will reuse a lot of the Bitcoin sv code definitely because that its there it makes sense most important of course is the context right Taron old blocks were talking about 50, 000 transactions per second big blocks big transactions these are fundamental things that impact the design and architecture of the software okay the current software has issues because the fundamental design there is a one megabyte block right now were fixing these in their current software were from internode well have that from the beginning the architecture of the Tara node were taking a big data approach not monolithic system but microservices with messaging between them each service accomplishes a very specific task each service can be multiple instances of the service running so that they can spread the load between them we will be leveraging existing components whatever refers to is for example a transactional store were not going to design a new database were going to use existing databases where possible and its designed for high ability not 24 by 7 but only around rolling upgrades life configuration its what this software is designed to do its designed to never go down so this is the more interesting part for me this is about the principles the turn out how they differ from the existing note software the small world network the small world network refers to how the know connects to every pair not just 8 or 10 peers but all of them this will be built into the software it will can reach out to every single peer and connects to them of course its configurable right some people might not want that but others well if we take the case of a minor the most important job for a minor is to propagate blogs the tip of the chain they need to if they mind the block themselves they need to get that block out everywhere so that other people particularly two miners so other people might on top of it if they have received a block from somewhere else and theyre starting to mine on it they have the same concern they want everyone else to mind on it too they want to stay on the same chain right the small world network that theres this term that we use about block propagation right with the smaller the network its not what propagation anymore its what transmission you send it immediately to every node do you dont have to wait for one node to the other to the other the small world network or sir has a lot of other impacts i think of zero Kampf if you have a payment processor whos pulling in transactions from every peer how can it get confused about double spends because it sees every transaction that is there already of course the smaller network is an ideal situation right where you connect every single peer and there are some there will be some node operators who do not allow connections for example so its not a 100 solution but its a its something to email the blockchain is a tree that this one is one of my pet peeves its not a list right its not a list of blocks its a tree of blocks every block can have one parent every block can have multiple children this goes follows down to the the next two topics to block relativism everything is related to the block upon which at the tip a transaction is valid relative to that block the you checks also is relative to that block its everything is related to the block when you validate a transaction in the system tarah node is designed to tag that the validation message with the block ID so that with Layton sees in the system you can tell for which block its valid tracking all of the active chain tips right now the software is very it treats it takes the blockchain like a like a list right if there is a reorganization so if there were multiple chain tips and the chain tip that you that youre not currently on wins then theres this whole complex process of reorganization to switch to the other one if you if terminal will check all of the chain tips that is all of the recent ones right all of the recently active change tips it will track for a minor to switch from one can tip to another is the stuff is is is then simple because they already have all of the changeups they dont have to download it they already have them all transaction validity is generally linked into one topic within the Bitcoin node you check that the transaction is valid accordingly the script executes and returns true and then you check that the the inputs have not already been spent but these are actually two different topics okay a transaction validity is if the transaction is valid then it is valid for every block that follows the block of which you validated it down the tree it continues to be valid what may not continue to be true is that the inputs are available they might be spent by by another transaction so by separating these two two items out we can optimize the system we can do double spend protection or availability checking right at the last stage where its absolutely necessary for optimization purposes of course well do it earlier right if you submit a transaction I will spent a year ago it wont even entered the system but but for the last final check that can be isolated to a very specific part of the system the big picture so before we start building a system of course we need to define the underlying components that we will be using such as the messaging queue the we talked about control versus data messages data messages can get large theyre designed to to take full transactions large data support streaming data support when you start to receive a block you dont want to wait to receive the whole thing you wont still start processing it immediately this is all built into the messaging design data stores there are more than was listed here yeah theres also like for example a pierced or a transaction store I dont really talk about mental anymore I talk about the set of unconfirmed transactions which can be really large it does not necessarily fit in around calling it mental is a bit bit of a miss name in this system the block store we dont unlike the current system we dont store the entire block we store block headers and we store information about the block transactions in the block u TX u TX o store store the u TX o set for every block okay now of course well have optimizations right if the block is 100 blocks old then we can we can dump Nate you tapes or store but by keeping the UT EXO store for every block we can rapidly switch from one chain to another in the in the in the event of a competition for a block then we have a set of what we call system what I call systems in each system will have several components within it an easel interrupt interact together the components within the system but then the system itself has a well defined output and input so these these are a couple of them than all of them obviously we have a p2p system which handles all of their connections with the p2p network we have a chain tracker which is vital it checks the chain tip all of the chain tips transaction validator block all their block assembler the p2p system for example consists of many separate components within it there is for example of p2p communicator which establishes a number of connections with peers and then a p2p manager there can be many p2p communicators PTP manager controls those communicators directs them to connect to peers coordinates between them the p2p system is designed so that it is multi instance you can have several of these communicators you can geographically distributed PTP communicators for example if you had a fast Network global network you could put a p2p communicator in New York and one in London and one you know and they will they will share the connections between them and you can set the system up so that it will connect to the nearest newest ones of a measure latency the p2p system it handles all of the communication on the p2p network it handles acquiring transactions from other peers it handles transmitting transactions to other peers and it separates these from the rest of the system the p2p layer in Bitcoin as we know it as well its actually quite intensive if you start increasing the number of connections you have you get a lot of data coming into the system and the goal of these of these systems is to to separate the load to stop the p2p system from any load on there impacting the other components okay so you can do the smaller Network you can connect to thousands of peers and that traffic there is is localized to the p2p system and out of the p2p system comes a stream of transactions that need validation right that are passed on to the transaction validator theres notifications about new blocks its passed on to the chain tracker the train tracker will then instantiate will then direct the p2p system to retrieve the block if necessary theres a whole set of of message flows between your systems that that together implement the the functions that we need the ball the block assembler is is where candidate blocks are built its using techniques that weve also deployed in Bitcoin but were also releasing in Bitcoin SV notes soon which incremental block assembly so that we can continually produce bigger blocks instead of starting from scratch each time we every time we need to give a block to a minor we add a bit to it the previous one and yeah so where are we with these systems the architecture is fairly well design welldefined the high level design is also well understood we have an experimental system up so weve deployed that on the main network because that has the most nodes and thats interesting to chip to to to measure and monitor the p2p system weve deployed it also on the scaling test network thats an interesting place to put it because of the high transaction volume is a different different different reasons to put it now the experimental system right now is limited mainly to the p2p system that Ive talked about earlier it does connect to every single note that are on these networks it does retrieve transactions it does world class transactions back out again thats as far as we are with the experimental system the experimental system is designed to the intent is to make sure that to verify that our design with messages of various types Ludington system actually works properly it is not written to the type of quality expectations we would that we would require for the final system here it is not intended that the experimental system will morph into the final system its strictly prototype strictly experimental to check that our design works as we expect it to the PGP system is in development so Steve mentioned earlier I think the be svj library that will be using parts that out for the PTP system and a a further goal will be having weve got this lined up but Genesis work is taking priority right now is to refactor parts that the Bitcoin as we know the implementation so that we can reuse critical functions from that from that software in terminal Im thinking primarily of the script interpreter there other consensus rule components so that we can get a fine start return it with those components and I finished a little bit early thank you

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *