ブロックチェーン、UTF-8符号化、Linuxカーネル起動、ブロックチェーンプロトコル
2487 ワード
1.UTF-8符号化機構
UTF-8符号化は現在最も主流の文字符号化方式であり、約91.1%のインターネットコンテンツがこの符号化を採用している.utf-8符号化では4バイト、すなわち32ビットを用いて各種文字を表すが、現在は21ビットまでしか使われていない.従来のascii符号化と互換性があり、記憶空間を節約するために、上位128文字、範囲は0 x 00-0 x 7 Fであり、1バイトで表すことができるが、8位は0で補完する.その他の順に類推する.次の表に示します.
範囲
文字に必要な実際のbitビット数
最初のバイト
2バイト目
3バイト目
4バイト目
バイト数
0X00-0X7F
7
0XXXXXXX
1
0X8F-0X7FF
11
110XXXXX
10XXXXXX
2
0X8FFF-0XFFFF
16
1110XXXX
10XXXXXX
10XXXXXX
3
0X10000-0X10FFFF
21
11110XXX
10XXXXXX
10XXXXXX
10XXXXXX
4
1バイト目の11,111,1111は、それぞれこの文字が2,3,4バイトで表されることを示し、10は次のバイトの先頭を示す.0は、0 XXXXXXXの0など、1バイトの先頭を表します.
この方法で符号化することで、不要なストレージスペースを多く省くことができ、柔軟です.範囲の少ない文字ほど、相対的にコンピュータで使用される確率が大きくなるとともに、使用される文字符号化で使用される空間が最も少なくなるという戦略により、記憶空間の需要を極めて低減し、文字データを伝送する際に、伝送するデータの数を低減し、通信速度を速めることができる.
2.Linuxカーネル起動プロセス
init(1) -> agetty(1) -> login(1)/sshd(1) -> bash/zsh/mksh... -> xarg(1)グラフィックインタフェース|vim(1)
linuxカーネルにはアカウントの概念がなく、最初に起動したプロセス、すなわちinitはそのための権限を持っており、その後のプロセスの権限はinitプロセスによって制御され、割り当てられている.アカウントの管理はloginやsshdによって実現されます.
agettyはターミナルコントローラです.loginはローカルログインプロセス、sshdはリモートログインプロセス、bash/zsh/mksh...グラフィックインタフェースプログラム、vimなど、後続の他のプロセスはすべてこれらの端末プログラムによって起動されます.
3.C StringとPascal String
C Stringの文字列は、文字列の後ろに0を加えることで文字列の末尾を表す.これにより,文字列が非常に長いと,完全な文字列を遍歴してから文字列全体の長さを知るだけで効率が非常に低下する.
Pascal Stringは、文字列の前に文字列のバイト長を直接書くので、文字列全体を遍歴することなく、文字列の終わりがどこにあるかを知ることができます.
4.最も簡単なブロック構造
完全なブロックには、ブロックヘッダ、ブロックボディが含まれます.ブロックは少なくとも1つの取引(coinbaseまたは創世取引)を含み、1つの取引では、少なくとも1つの出力、1つの入力があり、実際にはcoinbaseの入力に対して、そのメンバー値はすべて0であり、入力されていない.
5.ブロックチェーンにおけるプロトコル階層区分
ブロックチェーンでは、3つのレベルのプロトコルに分けることができます.プロトコルA:取引検証 を担当するプロトコルB:ノードとアプリケーション間のインタラクションを担当する プロトコルC:ノードとノード間のインタラクションを担当する
UTF-8符号化は現在最も主流の文字符号化方式であり、約91.1%のインターネットコンテンツがこの符号化を採用している.utf-8符号化では4バイト、すなわち32ビットを用いて各種文字を表すが、現在は21ビットまでしか使われていない.従来のascii符号化と互換性があり、記憶空間を節約するために、上位128文字、範囲は0 x 00-0 x 7 Fであり、1バイトで表すことができるが、8位は0で補完する.その他の順に類推する.次の表に示します.
範囲
文字に必要な実際のbitビット数
最初のバイト
2バイト目
3バイト目
4バイト目
バイト数
0X00-0X7F
7
0XXXXXXX
1
0X8F-0X7FF
11
110XXXXX
10XXXXXX
2
0X8FFF-0XFFFF
16
1110XXXX
10XXXXXX
10XXXXXX
3
0X10000-0X10FFFF
21
11110XXX
10XXXXXX
10XXXXXX
10XXXXXX
4
1バイト目の11,111,1111は、それぞれこの文字が2,3,4バイトで表されることを示し、10は次のバイトの先頭を示す.0は、0 XXXXXXXの0など、1バイトの先頭を表します.
この方法で符号化することで、不要なストレージスペースを多く省くことができ、柔軟です.範囲の少ない文字ほど、相対的にコンピュータで使用される確率が大きくなるとともに、使用される文字符号化で使用される空間が最も少なくなるという戦略により、記憶空間の需要を極めて低減し、文字データを伝送する際に、伝送するデータの数を低減し、通信速度を速めることができる.
2.Linuxカーネル起動プロセス
init(1) -> agetty(1) -> login(1)/sshd(1) -> bash/zsh/mksh... -> xarg(1)グラフィックインタフェース|vim(1)
linuxカーネルにはアカウントの概念がなく、最初に起動したプロセス、すなわちinitはそのための権限を持っており、その後のプロセスの権限はinitプロセスによって制御され、割り当てられている.アカウントの管理はloginやsshdによって実現されます.
agettyはターミナルコントローラです.loginはローカルログインプロセス、sshdはリモートログインプロセス、bash/zsh/mksh...グラフィックインタフェースプログラム、vimなど、後続の他のプロセスはすべてこれらの端末プログラムによって起動されます.
3.C StringとPascal String
C Stringの文字列は、文字列の後ろに0を加えることで文字列の末尾を表す.これにより,文字列が非常に長いと,完全な文字列を遍歴してから文字列全体の長さを知るだけで効率が非常に低下する.
Pascal Stringは、文字列の前に文字列のバイト長を直接書くので、文字列全体を遍歴することなく、文字列の終わりがどこにあるかを知ることができます.
4.最も簡単なブロック構造
BLOCK
HEAD
CURRENT: 32B
NONCE: 4B
PRVIOUS:32B
TARGET: 32B
TIME: 4B
BODY
TRANSACTION
INPUTS:
INDEX: 4B
PUBLIC:
SIGNATURE:
TRANSACTION: 32B
OUTPUTS:
ADDRESS:
AMOUNT: 4B
完全なブロックには、ブロックヘッダ、ブロックボディが含まれます.ブロックは少なくとも1つの取引(coinbaseまたは創世取引)を含み、1つの取引では、少なくとも1つの出力、1つの入力があり、実際にはcoinbaseの入力に対して、そのメンバー値はすべて0であり、入力されていない.
$coinbase = $input. $ouput
$body = $coinbase
$block = $head.$body
5.ブロックチェーンにおけるプロトコル階層区分
ブロックチェーンでは、3つのレベルのプロトコルに分けることができます.