學(xué)習(xí)區(qū)塊鏈知識2

最近一直在學(xué)習(xí)區(qū)塊鏈的基礎(chǔ)知識,想了想決定將2個任務(wù)(學(xué)區(qū)塊鏈和寫作)相融合。寫區(qū)塊鏈相關(guān)的文字榕茧,既可以讓自己梳理出思路不清的地方,可以讓戰(zhàn)友們幫忙檢驗自己沒說明白的地方客给。(爭取之后在幣乎里面發(fā)表)

最近的感悟


先談?wù)勛罱母形蛴醚海瑤准∈虑椋?/p>

最近和室友住在一起,為了健身(減肥)起愈,每天一起做俯臥兩頭起只恨。第一天的時候,我只做了30個(1組)抬虽。由于身體的酸痛時間是從運動后48-72小時的時間段官觅,所以第二天我又做了60個兩頭起(2組)。第三天阐污,明顯感到肋骨前肌肉的疼痛感休涤,但也堅持做90個,雖然是上午2組,下午1組功氨,但由于使用同一位置的肌肉序苏,所以反而覺得酸痛被緩解了。目前已經(jīng)堅持到8天了捷凄,每天90個兩頭起(3組)和10個俯臥撐(因為自己手臂無力忱详,所以下沉的深度不夠,不過慢慢有好轉(zhuǎn))跺涤。

感受最深的是堅持健身和健康的飲食搭配匈睁,真的會讓人(主要是腸胃)感覺到舒服。同時桶错,也會讓自己變瘦變健康航唆。最大的動力來自于室友的鼓勵,每次做完一組院刁,她都會在旁邊說糯钙,“你好棒呀!” 這種真心實意的贊美讓人如沐春風(fēng)退腥,也會覺得自己特別棒任岸!跟007er宣揚評價機(jī)制的在本質(zhì)上是一致的。當(dāng)然啦阅虫,室友也是一名007er演闭,世界總是那么小,目前學(xué)習(xí)區(qū)塊鏈的同學(xué)里面也很多007er颓帝。鼓勵機(jī)制真的會有一種魔力米碰,有種讓人想變得越來越好的沖動,同時也覺得自己能做的事情有很多呀购城,比如每次做完飯的時候吕座,留下食物的照片或者視頻,等到課程結(jié)束時瘪板,我們就可以剪輯出小視頻吴趴,留下自己的處女電影作品或者寫成小小說,紀(jì)念我們的小日子侮攀。將日子過的越來越有儀式感锣枝。

還一件007內(nèi)的事情,昨天總結(jié)上期的優(yōu)秀作品兰英,我的點評竟然被選做最佳的點評撇叁。這是我從來不敢妄想的∑杳常總覺得自己做的很一般陨闹,并不會覺得做的很好楞捂。所以,驚喜之外趋厉,聯(lián)系了巫同學(xué)寨闹,他說感覺到我的進(jìn)步。點評的那天君账,我有回顧笑來老師的《通往財富自由之路》的一篇文章繁堡,所以點評才會言之有物,聯(lián)想到的東西就會更多杈绸。

以前總覺得自己什么也做不好帖蔓,跟身邊的人比起來,總覺得自己的學(xué)歷不夠瞳脓,所以覺得自己的腦子運轉(zhuǎn)起來也不如他們的感覺。但是當(dāng)我自己從這種想法中解救出來之后 澈侠,我發(fā)現(xiàn)自己并不比別人差劫侧,甚至有些事情上,還會超越他們哨啃。這樣的轉(zhuǎn)變烧栋,在上次的家庭聚餐上,也體現(xiàn)了出來拳球,當(dāng)我表達(dá)關(guān)于投資的概念就應(yīng)該是把自己的多余錢拿去投資审姓,并在心里將這部分錢認(rèn)為是丟了的狀態(tài)時,家里人對我的評價在那一瞬間就改變了祝峻。(當(dāng)然是笑來老師的概念啦魔吐,我覺得是正確的,所以使用起來了)我從沒有想過莱找,自己的想法能夠震撼到他們酬姆。而且之后家里人對我學(xué)習(xí)的事情,品頭論足了一番(我沒在家的情況下)奥溺。我本以為他們會很難理解辞色,并會使用批評的語氣來評價此事的。結(jié)果卻出乎了我的想象浮定。

好像最近很多的事情都超出了我的想象呢相满?

最近學(xué)習(xí)的東西


雙拼輸入法 (手指還不是很熟悉這種輸入法,每天練習(xí)30分鐘)

使用在行 約見老師

學(xué)習(xí)使用Markdown 好更加快速的記筆記及敲入代碼

學(xué)習(xí)區(qū)塊鏈的代碼

聯(lián)系英語口語(應(yīng)該更專注)

練習(xí)自己的專注力(剛剛開始了2次)

區(qū)塊鏈的內(nèi)容


如何創(chuàng)建文件/保存數(shù)據(jù)

計算機(jī)保存所有數(shù)據(jù)都是以數(shù)字的形式桦卒,然后再用不同的協(xié)議來使用數(shù)字代表文字立美、圖片等。

byte(字節(jié))

byte 是最小的有明確地址的儲存單位( bit 就沒有明確地址)

1 byte = 8 bits

bit: 1 or 0

是指針的大小闸盔。在32位系統(tǒng)里悯辙,為4個字節(jié);在64位系統(tǒng)中,為8個字節(jié)躲撰。

是最大的加減乘除的單操作單位针贬。

在 Intel 的文檔里,word 指 2 個 byte拢蛋。

本課程中桦他,指 4 個 byte。

4 個 byte谆棱,范圍為 -21億 ~ 21億快压,或 0 ~ 42 億。(注釋:4 個 byte 是4 * 8 = 32位垃瞧,即2^32 = 4294967296蔫劣,約 4.29 Billion)

8 個 byte 可保存的數(shù)字范圍為 0 ~ 1019

比特幣的最小單位是 10-8,你如果要發(fā)送 1個 BTC 給別人个从,在內(nèi)存中要保存的數(shù)字為 108脉幢,4個 byte 對比特幣系統(tǒng)來說太小,最大只能存 42個BTC嗦锐。所以BTC系統(tǒng)中是使用 8 個 byte嫌松。比特幣總量為 2100萬個,21 x 106?x 108?= 21 x 1014奕污,還是小于 1019?萎羔。

程序語言如何保存數(shù)據(jù)

計算機(jī)只有兩種保存數(shù)據(jù)的方式:

轉(zhuǎn)換成數(shù)字

轉(zhuǎn)換成數(shù)字的排列(Vector of numbers)

100 | 140 | 200 | 300

我們從操作系統(tǒng)得到的是一整塊內(nèi)存,程序語言需要把內(nèi)存進(jìn)行分配碳默,分成不同的部分來使用贾陷。程序語言有兩種方式使用內(nèi)存保存數(shù)據(jù):

將數(shù)據(jù)保存在一塊連續(xù)的內(nèi)存部分(vector), 更常用在硬盤(深儲存,計算機(jī)重啟后不會被刪除)中使用這種方式腻窒。

使用指針,數(shù)據(jù)是樹狀的昵宇。更常用在內(nèi)存(淺儲存,重啟計算機(jī)后會被刪除)中使用這種方式儿子。

例子:保存一套關(guān)于人的信息

屬性? ? ?身份號碼? ? ? 電話號碼? ? ? 名字地址

類型? ? ? 4 byte? ? ? ? 11位的string? ? string string

存儲方式數(shù)據(jù)結(jié)構(gòu)分配方式

vector? ? 連續(xù)靜態(tài)&動態(tài)

指針? ? ? 樹狀動態(tài)

使用指針的好處是:每個指針的大小是固定的瓦哎,比如本例中我要查找地址,只需要找到身份號碼的指針后柔逼,跳4格蒋譬,即可找到地址的指針。

但如果不用指針愉适,你就要先順序跳到名字犯助,然后確定名字占幾個字節(jié),然后才知道要再跳過幾個字節(jié)维咸,才能找到地址剂买。

Ruby惠爽、Python等高級語言會默認(rèn)用指針的方式,不會給你選擇瞬哼。由于高級語言都是用指針的方式婚肆,而文件格式的內(nèi)部用的都是 vector 方式,所以用高級語言操作文件不太適合坐慰。

C語言分配內(nèi)存的主要是用 malloc 函數(shù)较性,C語言對內(nèi)存比較節(jié)省,盡量用靜態(tài)分配结胀,因為對內(nèi)存的管理是手動的赞咙。

在Ruby、Python 這樣的動態(tài)語言中糟港,會頻繁呼叫 malloc 函數(shù)攀操,比如新建一個字符串、數(shù)組秸抚、從數(shù)組中取出一個元素等崔赌。

任何數(shù)據(jù)都可以通過數(shù)字和指針來表示,什么樣的關(guān)系都可以耸别。

但現(xiàn)實中的實際問題,要用數(shù)據(jù)結(jié)構(gòu)來表示县钥,需要程序員一定的思考和設(shè)計秀姐,才能找到最合適的數(shù)據(jù)結(jié)構(gòu)。因為數(shù)據(jù)結(jié)構(gòu)指序列若贮,樹省有,圖這些基本機(jī)構(gòu)以及它們的組合,在描述實際問題時谴麦,必然會用到蠢沿,比如區(qū)塊鏈對應(yīng)的大的數(shù)據(jù)結(jié)構(gòu)是鏈表,而分叉對應(yīng)的數(shù)據(jù)結(jié)構(gòu)是樹匾效。)

游戲開發(fā)者們需要經(jīng)常設(shè)計內(nèi)存數(shù)據(jù)結(jié)構(gòu)舷蟀,因為他們總在創(chuàng)造新的概念,新的概念需要新的對象來代表面哼。

SQL 通過數(shù)據(jù)表(Table)野宜,你給它一個抽象的數(shù)據(jù)結(jié)構(gòu)的描述,它能自動做內(nèi)存管理魔策,你就不需要去手動管理了匈子。 區(qū)塊鏈的儲存與 SQL 的對接,還有待研究闯袒。

區(qū)塊的結(jié)構(gòu)

區(qū)塊(在BTC中 < 1MB) = 區(qū)塊頭(大小固定虎敦,BTC中為80字節(jié)) | 區(qū)塊body(大小有變化)

body里含有多個 transaction(one to many)游岳,

Transaction -> 多個input —— 參數(shù)

? ? ? ? ? ? ? ? ? ? -> 多個output—— 參數(shù)

BTC 中每個交易下也要參數(shù),而XCY 中交易層面是沒有參數(shù)的其徙,做了簡化胚迫。

一個 block 里面至少有一個交易——generational transaction 或 coinbase,用于獎勵礦工擂橘。其他交易可能為 0 個晌区。

解析區(qū)塊(parsing/analysis):得到一個區(qū)塊后,如何寫函數(shù)來把頭切出來通贞,把 coinbase 切出來朗若,然后寫函數(shù)進(jìn)一步切開各個部分。

創(chuàng)建區(qū)塊(create)


區(qū)塊鏈系統(tǒng)的格式

每一個區(qū)塊鏈系統(tǒng)有三套格式:

A. 區(qū)塊鏈的儲存格式

B. 節(jié)點和應(yīng)用之間的通訊格式——創(chuàng)造自己的交易所昌罩、錢包要用到

C. 節(jié)點和節(jié)點之間的通訊格式——主要是P2P網(wǎng)絡(luò)的知識哭懈,引入少部分區(qū)塊鏈部分

A和C最重要掏熬。今天我們的學(xué)習(xí)內(nèi)容是 A带到。

BTC 格式的非官方說明文檔

A:?https://en.bitcoin.it/wiki/Block

B:?https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)

C:?https://en.bitcoin.it/wiki/Protocol_documentation

ETH 格式的官方說明文檔

C:?https://github.com/ethereum/wiki/wiki/Ethereum-Wire-Protocol

XCY(Concise Yuan)

A: protocol-for-data-representation

B: protocol-for-applications

C: protocol-for-relays

protocol.txt

BTC相關(guān)網(wǎng)站:

查看開放節(jié)點:https://bitnotes.earn.com

查看虛擬貨幣市值:https://coinmarketcap.com

查看區(qū)塊信息:https://blockchain.info/

*表示0個以上,+表示1個以上

concise Yuan (XCY)

BLOCK := HEAD, BODY

HEAD :=

BODY := TRANSACTION+

TRANSACTION := INPUT+, OUTPUT+? //一個交易,有一個以上輸入患朱、有一個以上輸出

INPUT := A(4), index(4), B(4), public(B), C(4), signature(C)轨功, transaction(32)

OUTPUT := A(4), B(4), address(B), amount(8)

public(B),數(shù)據(jù)的長度是靈活的旭斥,需要的是公鑰,長度不固定古涧。

signature?垂券,簽名的長度不固定。72-68羡滑,更小的簽名也存在菇爪。

一個input的總大小:4 + 4 + 4 + B +4 + C + 32 = 48 + B + C

一個output的總大衅饣琛:4 + 4 + B + 8 = 16 + B

你要想發(fā)送錢凳宙,就必須在 INPUT 中說明你的錢來自哪筆交易,才能證明你真的擁有這筆錢职祷。

input的目的:

1)指定錢的來源:index 和transaction 是來指明你的錢來自哪筆交易氏涩;

2)證明錢是你的:public(公鑰的長度可能會不同) 和 signature(簽名的長度也不固定) 是來證明這筆錢是屬于你的,與加密驗證相關(guān)堪旧。

output 的目的是來指定:

1)發(fā)送多少錢

2)向哪一個賬號發(fā)送

假設(shè)我想給一個人發(fā)送 2 XCY:

OUTPUT:

A: 50 = OUTPUT 的總長度削葱,4+4+34+8=50

B: 34 = address 的長度,當(dāng)前使用地址的長度

address: 1NrrHYZMum2JaHJeSZufFitqg9W8uNdfzM

amount: 200,000,000 //額度是2個XCY

在內(nèi)存中是這樣:

0   4  8                   42    50

[50,  34,  1NrrHYZMum2JaHJeSZufFitqg9W8uNdfzM, 200000000]

INPUT:

A: 總共的大小

index: 一筆交易可以有多個收款人,所以要把transaction內(nèi)的輸出號(你是第幾個收款人)寫在這里淳梦。

B: public 的大小

public: 我的公鑰

C: signature 的大小

signature: 自己的私鑰的簽名(簽名能證明這個私鑰是你的析砸,但不會暴露你的私鑰)

transaction:之前接受錢是在哪個交易?把交易的身份號寫這里 (交易身份號TxID 32 個字節(jié))

頭部結(jié)構(gòu)

區(qū)塊 = 頭部(總是存在的)+ coinbase(總是存在的)+ 其他交易(可能有0 個或者以上)

HEAD 包含如下內(nèi)容:

current(32) 當(dāng)前區(qū)塊的身部的身份號 Merkle Tree

nonce (4) 挖礦中被設(shè)定的數(shù)值爆袍,在 0-42 億間猜數(shù)字首繁。目前改成了 12 個字節(jié)(BTC 在 body 又中加了 8 個字節(jié))

previous: 前一個區(qū)塊的身份號

target(32) 挖礦的難度作郭。target越大,挖礦難道越小弦疮。target 的難度會根據(jù)時間調(diào)整夹攒。

time(4) 時間

valence(4) 包含多少個交易

XCY的頭部有 108 個字節(jié),BTC的頭部是 80 個字節(jié)(經(jīng)過了壓縮)

挖礦的過程是

猜測 nonce胁塞,nonce就是那個隨機(jī)數(shù)啦

計算 SHA256(current + nonce)

查看小不小于target

要是不小于咏尝,重復(fù) #1

1/65536

分叉

自然分叉:如果同一時刻有不只一個區(qū)塊被挖出來,就會暫時將這幾個區(qū)塊都上鏈啸罢,然后再繼續(xù)看后面新產(chǎn)生的區(qū)塊連接到哪個分支上编检,最終會只保留最長的分支,其余分支會被廢棄扰才。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末允懂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衩匣,更是在濱河造成了極大的恐慌蕾总,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琅捏,死亡現(xiàn)場離奇詭異生百,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柄延,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門置侍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拦焚,你說我怎么就攤上這事「苁洌” “怎么了赎败?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蠢甲。 經(jīng)常有香客問我僵刮,道長,這世上最難降的妖魔是什么鹦牛? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任搞糕,我火速辦了婚禮,結(jié)果婚禮上曼追,老公的妹妹穿的比我還像新娘窍仰。我一直安慰自己,他們只是感情好礼殊,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布驹吮。 她就那樣靜靜地躺著针史,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碟狞。 梳的紋絲不亂的頭發(fā)上啄枕,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音族沃,去河邊找鬼频祝。 笑死,一個胖子當(dāng)著我的面吹牛脆淹,可吹牛的內(nèi)容都是我干的常空。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼未辆,長吁一口氣:“原來是場噩夢啊……” “哼窟绷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咐柜,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兼蜈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拙友,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體为狸,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年遗契,在試婚紗的時候發(fā)現(xiàn)自己被綠了辐棒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡牍蜂,死狀恐怖漾根,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲫竞,我是刑警寧澤辐怕,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站从绘,受9級特大地震影響寄疏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜僵井,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一陕截、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧批什,春花似錦农曲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罚渐。三九已至,卻和暖如春驯妄,著一層夾襖步出監(jiān)牢的瞬間荷并,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工青扔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留源织,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓微猖,卻偏偏與公主長得像谈息,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凛剥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 以太坊(Ethereum ):下一代智能合約和去中心化應(yīng)用平臺 翻譯:巨蟹 侠仇、少平 譯者注:中文讀者可以到以太坊愛...
    車圣閱讀 3,763評論 1 7
  • 【中文版】以太坊白皮書 翻譯:少平、 Seven當(dāng)中本聰在 2009 年 1 月啟動比特幣區(qū)塊鏈時犁珠,他同時向世界引...
    __Seven__閱讀 4,249評論 0 10
  • 我希望有個如你一般的人逻炊。如這山間清晨一般明亮清爽的人,如奔赴古城道路上陽光一般的人犁享,溫暖而不炙熱余素,覆蓋我所有肌膚。...
    史密斯思密達(dá)閱讀 1,455評論 0 2
  • Ok. Today I will discuss another sad news. well, sad ever...
    北燕南洄閱讀 218評論 0 0