Overview of the BSV development tools and technologies - Gu Lu
Actually, I nearly forgot I have to give the speech myself. Since Lise only scheduled half an hour for herself, I thought she would talk about it in a broad manner, and I didn't expect it to be so specific and complete. So I think that was nice.
Well, I'm Gu Lu, the founder of Bitcell Technology and the developer of SatoPlay. The topic of my speech today is “Overview of the BSV Development Tools and Technologies". So why do I want to talk about it? In fact, the development tools and technologies themselves... As Lise mentioned just now, there is a list you can easily find, and you can find the SDK, document and library related to BSV development everywhere.
So why am I giving this speech? Because I'd like to bring together all the development resources and provide them to developers in a user-friendly way. This is a step in a relatively large plan, In each step... As we know, Rome was not built in a day, so we'll take it one step at a time. And the step I'll take today is to present to you the information I think is valuable in the system in a logical manner. So let's get started. Okay. Firstly, I'd like to talk about “onboarding".
So, what's the problem of onboarding? You've probably seen the emoticon which says "give me a ride, old hand". I wanted to put the emoticon here, but it seems inappropriate on such a formal occasion, so I didn't. Actually, there are quite a lot of "old hands" in BSV society, and they move so fast that many beginners may not have good opportunities to communicate with them and don't know what they are up to. Besides, what they do may be difficult to understand for beginners, and this means that many new developers don't know how to do this "onboarding", and the same goes for many users.
Users may give up for many reasons, sometimes just because there are too many new concepts to understand. One thing we used to overlook was how to make it easier for everyone to understand and flatten the learning curve. But now we've realized that this is very important. It's even more important than doing in-depth analysis. So, that was about onboarding. Okay. In BSV society,
there is a wallet called Money Button whose developer, Ryan, made a tool specifically for onboarding. It's a faucet available to both developers and users. This faucet has different characteristics compared with those you see on other public blockchains. This faucet is programmable and provides you with some mechanisms so that developers can control it and offer BSV to users in a way they deem appropriate. Therefore, you can bypass some problems without doing anything.
For example, in order to develop, I have to possess Bitcoin, and then I need a wallet to store Bitcoin, so what should I do? Instead, you can directly apply BSV where it is most valued without considering the details. Okay, let me briefly talk about how it is done. It has several APIs, with which you can create a faucet and put some money into it.
It's just like the water faucet, and the water in it is like money. When the water is insufficient, you can fill the faucet, and if you want to get some water from it, you can just tap it, because it has a tap interface for you to tap. So for developers, this way they can actually experiment with some of their new ideas without having to think about any other problems.
For some highly creative developers, who may come up with seventeen or eighteen ideas a day, they don't have to think about which wallet to connect, and so on and so forth. Instead, they can experiment directly with the faucet, so do users. Users can do many things without the need to have Bitcoins first. Okay. In addition to this faucet,
I've also made a list of many others on the test network, There is also a blog article written by Edward Liu recently, in which he talked about the contracted faucet and how you can apply the BSV contract. Since this is a overview introduction, I will not go into every specific technology. But as you can see, in addition to the text, I also posted the link of each message here, so once you get the PPT, you can learn more about what you are interested in. Now that we are done talking about onboarding, I'd like to outline the topics I'll cover today. So my speech is divided into four aspects. The first one is getting started, which is what should you learn when you are new to BSV.
After you get started and get familiar with it, you may want to try to develop some projects yourself, which involves practice. In this respect, what should you refer to? If you already have some practical experience and you want to know more about a certain aspect, you may be interested in that aspect and want to study it in depth. In this case, you would begin a research process.
After you develop a project, finish doing the in-depth research, and come up with many concepts, whether you are familiar with them or not, you need to structure all the lessons you've learned, and turn them into a systematic and structured knowledge system. So this knowledge system requires organization. Actually, it is the same for BSV or learning anything else. We go through four phases, i.e., get started, practice, then theory, and finally to systemize all these things and make them your own. Okay, let's first take a look at how to get started.
The first problem is knowing where I should start if I want to give BSV development a shot. You will encounter a lot of information when you are getting started with Bitcoin. You must have heard of the white paper released by Satoshi Nakamoto.
You will also read stuff from Wiki, related articles, and Github. So should I start studying one specific code? Or should I pull down the source code of the Bitcoin to see how it is implemented? You will come across a lot of information, and the problem that will really bother you is not that there is not enough information, but that there is too much information. You may have seen this picture which is actually quite outdated. It is said that there are more than 500 new projects of various types. If you really want to do something seriously, you need to understand these projects, and see what others have done.
Ask yourself, can I use them? Which one is better? Or which one is better for my needs? So that I don't have to reinvent the wheel. You will need to compare and screen them, so all these things are very time-consuming and labor-intensive. It's like looking for a needle in a haystack, because I myself have done this.
Before I do anything, I will first find out if someone has already done this, or if they have done a good job from a certain perspective. So again, the whole process is actually very time-consuming, and is just like looking for a needle in a haystack. Okay. So here is the "needle". Why did we pick these two libraries out? One is BitSV, which is a Python library. We can directly use it to carry out some basic operations. And the other is BSV.
We all know how important well-designed testing and documents are to programmers, especially if you have read those documents that were very beautifully written and are highly informative, but you still don't know how to use them after reading. If you've read this kind of document, you will know that a good document is very helpful. So the characteristics of these two libraries are that their documents, tests and interfaces can be used immediately by developers. With them, developers are able to start developing in a few minutes. In addition, they have another advantage, namely, they are available at both the high level and low level. Some libraries are black boxes for you, and they are OK to use, but when you encounter a problem, you wouldn't know what to do.
You will find that its implementation is very difficult to understand, so it's practically a black box for developers. And some libraries are too basic, full of trivial details. I've seen all of these, they are very scattered and you need to put together these small pieces by yourself. As a result, the enthusiasm of many people may be exhausted during this process.
Therefore, a library available at both the high level and low level can provide developers with a lot of convenience. If you're not familiar with it, you can use it at the high level, this way you'll get a function instantly. If you are interested, you can go deep enough into it. So I think this will offer great flexibility for developers.
These two libraries have complete basic features, including public and private key management, hash signature, sending transactions and storing data, and so on. All of these functions are available, which gives them one thing in common, namely, the learning curve is very flat, so they're perfect for beginners. Now I'm going to give a simple example with codes. If you're not familiar with engineering, you can just skip it or take it as practice. Actually, it's very intuitive.
It requires less than 10 lines of code to send a transaction with BitSV. To be precise, just one line of code is enough, which is the last line, and the ones before it can be skipped. So first, import a library, then create a private key to specify the address to which you want to send the transaction, and send it out with the last line. You don't need to look at all of these carefully.
The only thing you need to pay attention to is that when you want to send a certain amount of money to an address, you can explicitly specify that you're using USD, i.e., US dollars or BSV. So, this can be done with a string "USD" or "BSV". It's actually very convenient, and the exchange rate conversion behind it is hidden.
Of course, you can customize it yourself. Finally, when sending the transaction, what's different is that you don't have to specify anything that you do not care about. Most libraries actually expose you to many things you don't want to know as a beginner, which requires you to figure out one by one, so it's very troublesome to get started.
After sending the transaction, we got a TXID, which means the transaction was sent successfully. Here's another example. It's about how to verify a message with Money Button's BSV library.
Similarly, the core lies in two functions, and one is for signing a message, and the other is for verifying a message. As you can see, these two libraries have one thing in common, which is you don't have to do extra work. All you need to do is to tell them what you want, and they will take care of all the details for you. Okay, finally, you can see that after the message is signed, it'll be verified, and a code "true" is returned after verification, indicating the signature is indeed made by the owner of the private key.
After getting started, we need to carry out actual development. But we won't be able to do everything all by ourselves, so it's very important to find a good API to help us complete most of the operations. So next, I will introduce some of the existing APIs.
These APIs have some public features, for example, to query a transaction that someone has sent, a block that has been generated, a specific address, or other things you care about. These are available in all the blocks and APIs. And the most important feature is to broadcast transactions.
So I divided these APIs into two categories. One is data API. Just as Lise said earlier, BSV or Bitcoin are data-oriented...
In other words, some data-driven APIs may become data service providers in the future, and other APIs are... And the other is wallet API. Here are three data APIs: MetaSV, WhatsOnChain and MatterCloud. And these are API service providers: DotWallet and Money Button.
Okay. Let's look at them one by one. Firstly, MetaSV. What features does it have? I've listed some features of MetaSV on the left.
You may find it a little bit boring to look at them one by one. So let's combine them with our actual needs. Okay, let's say you want to query metanet. This is a very complicated structure provided by BSV. We think it will be a foundation for the Internet in the future, for which I will not go into details, but now we can see it as a data structure, available for you to organize the data logic in your program.
You can use some features offered by MetaSV to search in this tree structure. And when you want to query whether a particular file or a certain protocol, such as the weather protocol weatherSV is on the blockchain, as well as all the related transactions, you can query the details with the function of "other protocol query" provided by MetaSV. The third one is a special feature provided by MetaSV. It can push you the information you care about. When an active event occurs at an address you care about, you will be notified.
For example, if you care about a certain address with 10,000 BSVs in it, and you want to be notified when someone deposits money into or withdraws money from it, you can put a callback for the API. In this way, it will notify you with SSE in those cases. When a new transaction takes place, you'll also be notified.
Whenever there is a new activity at an address you care about, you'll be notified. When something you're interested in appears in OP_return, for example, you want to know when there is a new release of a specific application, you can customize the keyword to get the relevant notification. So these are the special features they offer from the perspective of demand. Here are two other data service providers besides MetaSV. The APIs they provide are relatively weaker in terms of features, but what's special about them is that they support mAPI which I will briefly explain later.
MatterCloud offers an API interface that allows you to directly send files to the BSV blockchain. It's very convenient when you need it. If the application you deal with is related to the file system, you might think of using this API. OK, so these are in the first category, the data API. Here is the other, the wallet API. For this category, I didn't list the public features.
What I listed here are some personalized features provided by DotWallet, one of which is very interesting. It's called automatic micropayment. What does it do? When you play games or do other things it will constantly generate some small payments, they will be automatically deducted once you authorize it. For example, when you take a bus or ride a bicycle, the cost incurred will be deducted automatically once you authorize it.
This feature is very special and interesting. Besides, DotWallet also allows you to upload your data to the blockchain via its interface, namely, push it to the blockchain in some form. In addition to DotWallet, Money Button has a similar mechanism, but it's simpler in terms of features. In addition to APIs, I'd like to introduce several tools developed by a famous BSV developer overseas called Unwriter. From our perspective, these tools look a bit like some open source tools on Linux, as they show strong open source features. You may not use them in your actual projects, but referring to their design will be of great help to your development.
Here I will briefly talk about the features of these libraries. If you're interested, you can go deep into them. So, the one on the left is called Bitbus, which will analyze the transactions in the block whenever a block is generated, and then put these transactions in its own database. In this way, you can query those ones you are interested in there, instead of directly querying them on the blockchain.
And another library is BitFS, through which you can find the files in any transaction on the blockchain with a protocol defined by Unwriter. You can see that it is divided into a few parts. The first is a transaction ID, and there is a file stored in the sixth one of the 0th output of the transaction ID. In this way, it can locate the resource in the same way as using a URL, so you can get the file. It considers this a file system on the blockchain. Actually, it's a relatively original file system.
I think Bitsocket is another valuable tool developed by Unwriter. It's different from these two tools in that it provides real-time support. Whenever there is a new transaction on the blockchain, it will store this transaction in its own database. In this case, if someone subscribes the message, and the transaction happens to match the pattern of the event you subscribed to, it will notify you of the transaction you care about.
This interface or library is called Bitsocket, and it's more flexible than the MateSV library I just mentioned, because it has a very flexible method for queries that allows you to customize the fields you want and use the information you care about. What you care about may be a very abstract or complex type of logic, so what you need it to return at the end may be very simple. In terms of the flexibility of customization, MateSV is not as flexible as Bitquery, the query mechanism of Unwriter. Okay, that was a brief introduction to the tools of Unwriter.
Now, I'm going to talk about some relatively in-depth topics. These topics may not be necessarily useful when you are new to BSV, but when you reach a certain level and want to go deep into a certain area, you will find them helpful. So the first one is the sCrypt smart contract. It's very important, and now I'm going to give a brief introduction of its characteristics.
I think it has three very important features. Firstly, compared to the original Bitcoin script, it's a high-level language which can improve the development efficiency as well as your understanding and control of the program. Because of course, in theory, everything can be done in a way similar to assembly, but it's very inefficient and error-prone.
In addition to being a high-level language, it also provides a debugging capability, which I think is very useful. Thirdly, it allows you to insert Bitcoin scripts when writing a high-level language. So I think this is also quite a valuable supplementary feature. Besides, sCrypt has some other distinctive and useful features, of which we're not aware at present. Edward Liu may talk about this later, so I won't go into detail here. The second topic is the threshold signature.
The threshold signature is provided by Nakasendo SDK, a project of Nakasendo. In other words, the project is an implementation of it. It's very useful. In fact, I didn't know this very well at first and I thought it was just a mechanism similar to the multi-signature.
But later, I found out it was much more secure than the multi-signature. Here are some reasons why I said this: its private key never appears, which means the private key never appears in full during the entire signing process, thus greatly reducing risk in this respect. Besides, it will not expose the signer, because in a typical multi-signature, when someone signs the transaction, his or her signature will appear in it. You can think about why we use the multi-signature.
It's usually applied in an organization. When we want to make a decision on something, we can vote in the form of the multi-signature, so everyone can have a say. This is one of its applications.
Sometimes, we'd like the vote to be anonymous, and those who made the signature don't want others to know. In this case, the threshold can be used to make this happen. The threshold or the Nakasendo library is implemented in c++, but other languages are available for binding, which is also very valuable. In addition to smart contracts and the threshold signature, the third topic is digital assets. So why do I say digital assets instead of Token solutions? Because what's interesting here is that these two teams are actually doing similar things, i.e., to develop a one-stop Token solution. This means it's not only to provide support in terms of BSV technically.
Instead, they think it's necessary to provide a complete set of solutions, from issuance to transaction. Tokenized did a demo about half a month ago, so anyone interested in this can search for their demo video and see how the platform supports the whole set of logic from issuance to transaction. As for fabriik, it allows you to carry out some simple operations on its website. As far as I know, releasing is available on it now.
However, after I applied for releasing and tried it out myself, I found that it allows you to release, but that's all. I'm not sure which stage they are currently at, but I may follow up on this project later. Okay, next we'll look at a more important and core topic, namely, mAPI. I mentioned it earlier in the mAPI service, and it was actually underestimated by me, because I thought it might be something like this: a miner provides the query of transaction fees, and then helps you broadcast the transaction to the Bitcoin network at a lower cost.
But I found out later that, what it's actually trying to do is... I'd rather not call it an ambition, it's much more than that. It actually wants to expose developers to the large number of capabilities that miners already possess through a reasonably defined interface.
So how and what does it expose? This process may be constantly evolving and changing, but it looks like this now mAPI, or MAPI as we call it, is no longer a simple fee negotiation process. Well, to whom is this mAPI exposed? As you can see, it's exposed to those who actually use this network. So why do they use the network? Because the Bitcoin network already has a lot of computing power, and as a developer, you will need a large number of servers if you want to develop an application like WeChat.
But why do we rent additional repetitive construction ourselves rather than taking advantage of the existing large amount of computing power? Well, you can see that here I listed two types of merchants. One is in the narrow sense. For example, you initiate a transaction when you use BSV to buy coffee, so the owner of the coffee shop is the recipient of the payment for this transaction. In this case, the owner is a merchant in our system in a narrow sense.
So what about merchant in a broad sense? We consider all the developers merchants as long as they apply the capabilities of the Bitcoin network, even if no BSV transfer is involved. Currently, there are a few mAPI service providers, including TAAL and Mempool, both of which are mining pools, as well as such API service provider as WhatsOnChain who provides basic support. So on the right, we can see how mAPI, as I just said, develops this feature from a simple fee negotiation to a very valuable system step by step. The first version was released at the beginning of this year, and it could be used to broadcast your transaction at a very low cost. The fee was cut down to 1/4 from one Satoshi per byte, meaning it was directly reduced to a quarter of the original fee, which means, if you could only send one transaction in the past, you can send 4 transactions now with the same money, and the fee will be constantly coming down.
Within a few months after v1.0, they released v1.1, which allows you to check the status of transactions, so it's easy for you to know whether and when the transaction you just sent is valid. Besides, you can submit transactions in batches, which is very valuable in computing, because many operations may be very expensive when carried out one at a time.
Theoretically, as long as there is an interface for batch submissions, any operation can be done through it, so as to optimize the system and to make it more efficient. Actually, it didn't take long for v1.2 to be released, and I think it just happened recently, not long ago. In v1.2, there are some new features which we didn't expect. For example, it allows you to verify the validity of the Merkle Proof, to detect double spending, and to set a callback so as to receive messages through the so-called SPV Channels.
So, as soon as these interfaces are available, I found out that these features are far more important than I thought. In addition, what's noteworthy in v1.2 is that it provides SPV Channels. SPV channels are efficient P2P communication, which leave us large room for imagination, as can be used to do a lot of things.
Well, let's take a look at the features of SPV channels. SPV channels provide end-to-end encryption, which allows you to safely send your message to a third party without authority. It's the peer that initiates the request, so it's possible for NAT traversal. Furthermore, it supports message buffering, which is not possible with ordinary P2P networks.
For ordinary P2P networks, such as BT seed, the file will be unavailable to download once the seed goes offline. Instead, message buffering is available in this case. Just as I said, it actually has both features. In other words, it is a perfect combination of centralization and P2P, and has the characteristics of P2P and central services, so there is a lot of room for imagination. Here I briefly listed what SPV Channels can be used for.
For example, if you conduct multi-signature or threshold signature through SPV Channels, it's actually possible for you to coordinate the threshold without others knowing. You can also create notifications for some wallets, just like the system notifications received on your iPhone. Besides, you can use it for P2P message transfers, which has been tried by a lot of software, but what they've done are either centralized or not so good, so you may want to give it a shot.
And if you're interested, you can develop a P2P WeChat with it, in which miners can help you send messages. This way you don't need to rent more servers like WeChat to meet your growth needs, because it'll grow exponentially. The fourth one is game development, with which I'm more familiar. For game development, you can use it to create a server, so that you don't need to worry about routing as well as many communication-related details yourself. Apart from this, the server still has enough scalability and capacity, because it takes advantage of the existing network of miners.
All of these are based on the fact that they combine the characteristics of P2P and central services. So we think that SPV Channels are likely to become a common feature of the applications that may be generated in the Bitcoin network in the future. This means they can do what central services and P2P can do. In my opinion, it's much like Chrome OS by Google. I mean, there might be something like Bitcoin OS, but this may take a long time. However, when v1.2 was released, my brain lit up all of a sudden,
and I felt that this may reveal a big picture. Okay, I'd like to summarize what I just said. In fact, there are 4 stages, i.e., getting started, APIs, advancement as well as framework and specifications.
Understanding these 4 aspects can cover most of your development needs. For each stage, I've listed what are noteworthy. Apart from these 4 aspects, I've also listed these unwriter's tools in the lower left corner for you to learn about. Of these stages, the fourth one will change drastically with the iteration of the version, so you'd better check on it from time to time.
Well, that's about the practice. We'll explore the theory next. Actually, Bitcoin is a very sophisticated system, that is to say, it's not just something superficial.
What we've just talked about is the part above the water. Now let's look at the part below the water. First of all, if you want to learn more about Bitcoin, you can watch this video. This 20-hour video is a dialogue between Dr. Craig Wright and Ryan, covering all aspects of Bitcoin, including those important ones we may not use in daily development.
So here I've posted the URL of this video and its Chinese introduction summarized by Coddy Qiu. I recommend you find some time to watch this video to learn about something beyond development, namely, the part below the iceberg of Bitcoin. So I've simply sorted it out, and it contains these parts. As a whole system, a real sense of Bitcoin is not just about technology, and the technical layer is only a part of the whole Bitcoin system. As you can see, it consists of eight parts, and these puzzles are actually indispensable.
This means Bitcoin is not all about technology, and that it has legal implications, and involves commerce, money and law equal a contract, which is the most essential part of commerce. Besides, it provides support for scripts at the technical level, calculations of Bitcoin, and Turing Completeness. And it's even related to economics, informatics, cryptography and game theory. All of these correlated things constitute the whole Bitcoin system. When you get to know the system, you may also need to find out where Bitcoin comes from, and where it's going, namely, its history and future. Then you can have a complete understanding of the system.
Although Bitcoin only has a history of about a decade, there have actually been many thrilling incidents. Without knowing these incidents, you may be only touching some parts of Bitcoin. In addition to the theory of Bitcoin, I'd like to share two documents that can also help you gain a deeper understanding of Bitcoin.
One is the Rebirth of Bitcoin, and the other is Recreating Bitcoin. The reason why I single them out is because they can help us remove all other distractions, and put this system together again piece by piece, so that we can know how the Bitcoin system came into being from nothing. They actually did quite a in-depth analysis. And I'm very happy both of them were written by Chinese, Coddy Qiu and Yann He. That's right! They are both Chinese. Well, you can see that there are two sentences directly related to these two documents, or books as I call them. One says that the Bitcoin protocol will not be modified once it is formulated.
And the other was once quoted by Feynman, which says "What I cannot recreate, I do not understand." I can't agree more. Well, in addition to the above information, you can visit Dr. Craig Wright's website. There are a lot of articles on it. Frankly speaking, I didn't read them all myself, and I only chose the topics I care about the most to read. So how should we look at his website? Here I made a brief list for you.
You can see that there are some categories in the upper right corner. It's very interesting and if looking carefully, you'll find that its classification and order are progressive, from concrete and specific development to in-depth analysis and then to philosophy. You may choose one of them and the relevant level according to your needs to read. Speaking of which, if I'm asked to describe Dr. Craig in one word, I think I would label him as an eternal student. Why? Because to me, the most important quality he displays is not that he is a superman or a person with many skills and degrees, but a person who is very good at learning.
This is the greatest feeling and biggest lesson I've learned from him. He has been learning all his life, in a highly efficient way and at an accelerated speed, which I admire very much. As I'm getting old, I feel it's harder to learn, so I'm trying to find ways to improve my learning ability. Because you know, only when you're experienced enough, can you identify things faster.
So I see a real learner in him, as well as the way he iterates and adapts himself to improve his learning ability. He thinks himself as a student too, which was written in his Twitter profile when it still existed. Okay. In addition to the theory,
if you have more energy and want to know more about it, you may refer to the following resources I've summarized. I've also attached the links to them for you to check. For example, there are some resources on the official website, which have sorted it out.
As you can see, they are divided into two parts. One is some third-party libraries, and the other is the core part of Bitcoin SV I just mentioned that are most critical and fast-changing. So the website has clearly divided them into these two parts. Besides, just as Lise introduced earlier, there are also some Chinese-language BSV materials that are sorted out elaborately. Actually, after I recorded these videos, I barely checked them again. But when I was checking something there one day, I happened to find out that these videos are well organized so that you can find what you need easily.
A lot of related videos are also posted on Bilibili every week. So I think there is so much to learn, and it's a bit overwhelming for me. In addition to this information provided by official organizations, there are also official Wiki entries and the Chinese Wikipedia. Wikis are a very effective method of information collection.
It's obvious that these two encyclopedias have different orientations. The official Wiki mainly focuses on the authority of its information source, so it describes things in a concise way. In other words, it is what it is, and it is free of unnecessary information. While Chinese Wikipedia is more inclusive. Everything in the ecology will be covered, as long as it is relevant, so you can find more information there. Here are some blogs and columns.
This is Edward Liu's column, and here I only listed the smart contract part. Edward Liu has been studying smart contracts and posting many in-depth blog series. So I strongly recommend you follow his blog.
Aaron has also written a series of articles introducing the Bitcoin signature. He is among the "old hands" who move very fast. Not long ago, he gave a presentation in Fuzhou about the threshold signature. And later, he felt it's necessary to talk about it systematically. So he put in large text, and wrote a systematic series of articles.
These articles start from scratch, and can help you understand every aspect of the Bitcoin signature. So I strongly recommend you follow up on that. Well, here is a summary of the application layer protocol I made during the Webinar. If you want to know what application layer protocols there are or how to use these protocols, you may have a look at it.
The Awesome list on the right is prepared by me based on a list called Awesome BSV I've seen, but many items on that list have not been updated, so I made one myself. It's very simple and all in listicles. Anyone who is interested may look at it. Here we come to the last page of the PPT. I'd like to go through what I've said today to give you the overall logic. I think, for developers, presenting all these materials in an easy-to-understand way can save them a lot of trouble.
So we start with onboarding, and then how to get started, followed by how to use others' APIs, and what the difference is between each API. And then, when getting deeper into each specific topic, where I should look for information. After that, there are tools by Unwriter as well as the official framework and specifications. Namely, how do we develop them step by step? Next, where should we turn if we want to know more theories? So we may look at these resources such as the Theory of Bitcoin, and Dr. Craig Wright's website.
After gaining a deeper understanding of the theory, if you want to go further into it, you may refer to Wiki, blog and many other sources. Once you've read these things and gotten familiar with them, it's time for you to do something by yourself. Of course, this doesn't mean you have to figure out all of this before you can do anything. But, in fact, I myself started to develop after scratching the surface of it. Then, in practice, you will encounter various difficulties.
In that case, you may seek help from experienced peers, or look back at this diagram to see at which stage or where your problems are. I hope you'll find this diagram helpful. That's all for my speech today. Thank you!