Using golang to develop Ethereum
Publish: 2021-05-11 19:06:39
1. Go full stack + blockchain course:
a total of 22 weeks, divided into five stages,
the first stage is 4 weeks, go language foundation and network concurrency, learning the introctory go language,
the second stage is 4 weeks, go language practical web development, crawler development, cryptography, consensus algorithm, realizing lightweight public chain, learning the website and crawler that can develop golang, Achieve lightweight blockchain
stage 3, 4-week Ethereum source code analysis and smart contract DAPP development, master Ethereum core and smart contract development, as well as blockchain,
stage 4, 4-week super ledger, bitcoin EOS, source code analysis and smart contract practice, master super ledger development, cat bitcoin, bifurcated EOS after learning, As well as DAPP development of smart contract
phase 5, 6-week project practice, five enterprise level projects, and one year of blockchain project experience after learning
from the characteristics of the language itself, go is a very efficient language, which highly supports concurrency. Go language itself pays more attention to distributed system, and concurrency processing is relatively good, such as advertising and search, That kind of high concurrency server
go language advantages:
excellent performance, can be directly compiled into machine code, does not rely on other libraries, go is extremely fast. Its performance is similar to Java or C + +
concurrency is supported at the language level, which is the biggest feature of go. It is born to support concurrency, and go is the concurrency supported in gene, which can make full use of multi-core and make it easy to use concurrency
the built-in runtime supports garbage collection, which is one of the features of dynamic language. Although GC is not perfect at present, it is enough to cope with most of the situations we can encounter, especially GC after go1.1
it's easy to learn. The authors of go language all have the gene of C, so go naturally has the gene of C. There are 25 go keywords, but the expressive ability is very strong. It almost supports most of the features you've seen in other languages: inheritance, overloading, object, etc
rich standard libraries, go has built a large number of libraries, especially the network library, which is also my favorite part< As like as two peas, br / > built-in powerful tools, Go language is built with many tools chain, the best should be gofmt tools, automatic formatting code, make team review become so simple, code format is exactly the same, it is very difficult to think differently.
cross platform compilation and fast compilation. Compared with the sluggish compilation speed of Java and C + +, the fast compilation time of go is a major efficiency advantage
disadvantages of go language:
package management: package management of go language is absolutely not perfect. By default, it has no way to make a specific version of the dependency library, nor can it create replicable builds. In contrast, python, node and Ruby all have better package management systems. However, with the right tools, the package management of go language can also perform well
lack of development framework: go language does not have a major framework, such as Ruby's rails framework, Python's Django framework or PHP's laravel. This is a heated discussion in the go language community, because many people think that we should not start with using frameworks. This is true in many cases, but if you just want to build a simple crud API, it's much easier to use Django / djrf, rails laravel, or Phoenix
exception handling: go language can help developers deal with compilation errors by simply returning errors (or call stack) through functions and expected calling codes. Although this method is effective, it is easy to lose the scope of the error, so it is difficult to provide meaningful error information to users. Error package can solve this problem by allowing us to add context and stack trace to return error
another problem is that we may forget to handle errors. Static analysis tools such as errcheck and megacheck can avoid these errors. Although these solutions are very effective, they may not be the right way.
a total of 22 weeks, divided into five stages,
the first stage is 4 weeks, go language foundation and network concurrency, learning the introctory go language,
the second stage is 4 weeks, go language practical web development, crawler development, cryptography, consensus algorithm, realizing lightweight public chain, learning the website and crawler that can develop golang, Achieve lightweight blockchain
stage 3, 4-week Ethereum source code analysis and smart contract DAPP development, master Ethereum core and smart contract development, as well as blockchain,
stage 4, 4-week super ledger, bitcoin EOS, source code analysis and smart contract practice, master super ledger development, cat bitcoin, bifurcated EOS after learning, As well as DAPP development of smart contract
phase 5, 6-week project practice, five enterprise level projects, and one year of blockchain project experience after learning
from the characteristics of the language itself, go is a very efficient language, which highly supports concurrency. Go language itself pays more attention to distributed system, and concurrency processing is relatively good, such as advertising and search, That kind of high concurrency server
go language advantages:
excellent performance, can be directly compiled into machine code, does not rely on other libraries, go is extremely fast. Its performance is similar to Java or C + +
concurrency is supported at the language level, which is the biggest feature of go. It is born to support concurrency, and go is the concurrency supported in gene, which can make full use of multi-core and make it easy to use concurrency
the built-in runtime supports garbage collection, which is one of the features of dynamic language. Although GC is not perfect at present, it is enough to cope with most of the situations we can encounter, especially GC after go1.1
it's easy to learn. The authors of go language all have the gene of C, so go naturally has the gene of C. There are 25 go keywords, but the expressive ability is very strong. It almost supports most of the features you've seen in other languages: inheritance, overloading, object, etc
rich standard libraries, go has built a large number of libraries, especially the network library, which is also my favorite part< As like as two peas, br / > built-in powerful tools, Go language is built with many tools chain, the best should be gofmt tools, automatic formatting code, make team review become so simple, code format is exactly the same, it is very difficult to think differently.
cross platform compilation and fast compilation. Compared with the sluggish compilation speed of Java and C + +, the fast compilation time of go is a major efficiency advantage
disadvantages of go language:
package management: package management of go language is absolutely not perfect. By default, it has no way to make a specific version of the dependency library, nor can it create replicable builds. In contrast, python, node and Ruby all have better package management systems. However, with the right tools, the package management of go language can also perform well
lack of development framework: go language does not have a major framework, such as Ruby's rails framework, Python's Django framework or PHP's laravel. This is a heated discussion in the go language community, because many people think that we should not start with using frameworks. This is true in many cases, but if you just want to build a simple crud API, it's much easier to use Django / djrf, rails laravel, or Phoenix
exception handling: go language can help developers deal with compilation errors by simply returning errors (or call stack) through functions and expected calling codes. Although this method is effective, it is easy to lose the scope of the error, so it is difficult to provide meaningful error information to users. Error package can solve this problem by allowing us to add context and stack trace to return error
another problem is that we may forget to handle errors. Static analysis tools such as errcheck and megacheck can avoid these errors. Although these solutions are very effective, they may not be the right way.
2. Ethereum source code
3. You can restart the network service
4. Why learn go language? What are the advantages of go
1. What are the advantages of go
1: performance
2: language performance is very important
3: developer efficiency & don't be too innovative
4: concurrency & Channel
5: fast compile time
6: team building ability
7: powerful ecosystem
8: gofmt, Mandatory code format
9: grpc and protocol buffers
can be directly compiled into machine code, independent of other libraries. Glibc version has certain requirements, and deployment is completed by throwing a file
static type language has the feeling of dynamic language. Static type language can check out most hidden problems when compiling, while dynamic language has the feeling that there are many packages that can be used and the efficiency of writing is very high
the first stage: blockchain instry and go programming for 5 weeks
the second stage: cryptography and consensus algorithm for 2 weeks
the third stage: Ethereum source code analysis and development for 3 weeks
the fourth stage: Super ledger and node.js for 2 weeks
the fifth stage: bitcoin & EOS for 4 weeks
the sixth stage: comprehensive actual combat of the project
1. What are the advantages of go
1: performance
2: language performance is very important
3: developer efficiency & don't be too innovative
4: concurrency & Channel
5: fast compile time
6: team building ability
7: powerful ecosystem
8: gofmt, Mandatory code format
9: grpc and protocol buffers
can be directly compiled into machine code, independent of other libraries. Glibc version has certain requirements, and deployment is completed by throwing a file
static type language has the feeling of dynamic language. Static type language can check out most hidden problems when compiling, while dynamic language has the feeling that there are many packages that can be used and the efficiency of writing is very high
the first stage: blockchain instry and go programming for 5 weeks
the second stage: cryptography and consensus algorithm for 2 weeks
the third stage: Ethereum source code analysis and development for 3 weeks
the fourth stage: Super ledger and node.js for 2 weeks
the fifth stage: bitcoin & EOS for 4 weeks
the sixth stage: comprehensive actual combat of the project
5. At present, go develops few large-scale procts
what I know at present are:
beego, the web framework developed by domestic developers
sudo China, CMS developed by golang
Monti is also a CMS
others have some open source projects on GIT
after all, the language is very young, and there are few large and mature procts. However, our company is already using golang to develop software for internal use. At the same time, we are also using golang to develop some web projects.
what I know at present are:
beego, the web framework developed by domestic developers
sudo China, CMS developed by golang
Monti is also a CMS
others have some open source projects on GIT
after all, the language is very young, and there are few large and mature procts. However, our company is already using golang to develop software for internal use. At the same time, we are also using golang to develop some web projects.
6. I haven't used node WebKit under windows. If it was me, I would choose pyqt. If we don't consider cross platform, C # is good. There is no mature thing about golang. If it is from the perspective of learning experience, you can use golang.
7. Each has its own merits. It's just that you are familiar with it. You are quite proficient in using python. There is no problem in writing e-commerce backstage
8. The solution: in the system design, avoid using Chan pipeline to transfer the main business data, and avoid dividing the business process into two go processes. In this way, the time-consuming of Chan transmission and go process scheling will be reced, and the performance will be greatly improved
Case Study: both NSQ and NATs are real-time message queues. NSQ uses Chan to forward messages on both client and server, resulting in poor performance, only 100000 / s; However, in the process of distributing messages, the Nats server does not use Chan, but only uses Chan when the client receives it. The performance can reach 1000000 / s.
Case Study: both NSQ and NATs are real-time message queues. NSQ uses Chan to forward messages on both client and server, resulting in poor performance, only 100000 / s; However, in the process of distributing messages, the Nats server does not use Chan, but only uses Chan when the client receives it. The performance can reach 1000000 / s.
9. If it's the compiler of go, go can now write the compiler through go
Hot content
