dir : cmd/utils/cmd.go
등록된 lifecycle, RPC service, p2p networking 시작 (Start 함수는 한 번만 실행 가능함)
if err := stack.Start() ...
// dir : node/node.go
사용자가 종료할 경우 os signal을 받아 노드 종료
go func() {
sigc := make(chan os.Signal, 1)
signal.Notify(sigc, syscall.SIGINT, syscall.SIGTERM)
defer signal.Stop(sigc)
// 최대 디스크 가용 용량 설정
minFreeDiskSpace := ...
...
if minFreeDiskSpace > 0 {
// 디스크 용량이 부족시 node 종료
go monitorFreeDiskSpace(...)
}
// 노드 종료시 실행
shutdown := func() {
...
go stack.Close()
for i := 10; i > 0; i-- {
<- sigc
...
}
debug.Exit()
...
}
...
}()
main.startNode()