密碼學/加密貨幣原理

467 回覆
844 Like 6 Dislike
2017-07-26 23:55:52
lm
2017-07-26 23:59:39
多謝巴打,你好有心機好用心,就算唔明慢慢睇多幾次都會明,多謝你
2017-07-27 00:21:14
live,留名
2017-07-27 00:50:49
再幫推
2017-07-27 00:52:05
白痴一問
咁點解bitcoin創造人要咁多人幫佢一齊verify past record?
對佢有咩好處?
對有份參與嘅人有咩好處?
2017-07-27 01:18:42
請教一下
小弟以前睇過 Tom Scott (Computerphile) 講過Hash algorithm會因為電腦越黎越快而慢慢失效
隨住電腦運算速度越黎越快,SHA-2終有一日會被破解,而呢個時間好有可能早過2100年(掘唔到bitcoin之前),到時會唔會對bitcoin有影響?

另外想問Bitcoin本身一但唔見咗(例如整唔見實體錢包USB之類)就好似冇方法補充,bitcoin數量長期黎講只會有減無增,咁現時有冇第二啲cryptocurrency可以解決呢個問題?

bitcoin掘新coin係靠搵 partial collision (用brute force 逐個試)
如果只係運算能力提高, 即brute force更快, 咁會自動提高難度
e.g.由搵頭5個位係0, 變搵頭10個位係0
而個難度係根據上一個partial collision幾快比人搵到而調節, 所以掘coin既人升得愈快, 或者電腦運算速度升得愈快, 個難度就升得愈快
如果講到破解, 就要視乎破解法幾有效, 不過一般唔會即時影響安全性
然後正常會有update轉用新既hash algorithm, 確保新transaction係安全
舊record點處理就視情況而訂

bitcoin現時設左上限, 將來有需要既話取消都唔奇
同埋唔係所有cryptocurrency都有設上限


其實我最唔明嘅係點解撞中左個transaction 就會有錢分?


簡單咁講 係比特幣創造人整出黎嘅獎勵 鼓勵更多人去mine(撞個hash) 因為愈多人就愈難比人改到當中既資料

搵partial collision係出新coin既唯一方法
具體黎講係搵x令到Hash(x,y)<z
x係brute force搵出黎既數
y係(hash of) past records
z係一個數, 決定搵x既難度
掘coin者要先verify y, 即先前既record係岩
如果y錯, 咁搵到x都冇用
呢個做法可以令人幫手verify交易記錄

另一方面, 你搵到k=Hash(x,y), 而且成功拎到coin
k亦會成為past record既一部分
新既hash input 亦會包埋k, 如此類推
新hash係由舊hash加新野得出黎
呢個步驟run得愈多次(愈多block, 條chain愈長), 舊hash/record就愈可靠
因為只有係最長個條chain既record先至有效, e.g.
A chain: a || hash(a, ·)
B chain: a || hash(a, *) || hash(hash(a, *),*)|| hash(hash(a, *),*)
只有B chain既record先會被認同
因為搵hash需時, B比A長愈多, 就愈難追上A, 除非你有極大運算能力

明少少 如果咁啱同時有兩個人搵到點計
2017-07-27 01:30:34
留名

初學者, 唔知例子有無錯:
如果假設 f(x) = x^5-x-1
我input 個x 落去你去搵f(x) 好容易
e.g. let's say x=2, f(2)=29
問題係如果我話比你知exist such x s.t. f(x)= 29
你就好難搵一個systematic 既方法去solve x^5-x-1= 29
所謂brutal 就係透過sub 曬x=1,2,3..... 先至估得番x=2 satisfy f(x)= 29
而可能有另一個x value 都satisfy f(x)=29
bitcoin 既theory 就係要搵呢一個x value?

換言之, 我要窮舉(暫時已知方法)去搵個exception case 去disprove injective nature of function (disprove 呢個字有d 怪不過用住先)??
2017-07-27 01:50:45
強post, it 白痴留名

有個位諗唔通就係究竟點樣去交易少於1 個bitcoin 係咪之後會講?


50年前d 人點將5仙買個白飯?


要交易五仙首先要有五仙嘅幣存在

依家香港已經唔存在五仙幣所以我地最少都要交易一毫。 bitcoin掘出嚟就係1蚊所以先問點樣去交易少於1 個bitcoin

事實上我都幾訝異會有咁嘅程度嘅回應

bitcoin掘出黎都唔係一個個
最初最初一掘就掘到50個出黎
早兩年變左做一掘掘到25個出黎
遲D會變做掘到12.5個


起電腦既世界其實你填幾多個小數位落去都得架啦
理論上你填幾多個小數位電腦都handle到
中本聰limit佢做8個小數位係為左限制一個transaction既file size
慳番D network transmission time同storage space


謝解惑。

所以係會有個地方(say server) 記住我目前擁有幾多bitcoin(去到小數點8位照你講) ? 而我同人交易時係會整一個如上面有張圖所講加咗我條public & private key再encrypt變成一個transaction file再俾人﹐而個人就會放個file上server去處理而完成交易?

差唔多

嚴格黎講bitcoin node無記得一個人/一個account有幾多錢
而係有一個transaction既output未有人用過
過多幾個chapter會詳細講


非常感謝


bitcoin其中一個重點就係decentrailization,即係權力去中心化,bitcoin唔係靠一個server去save低你有幾錢,咁同普通online banking冇分別

bitcoin勁在佢係推翻左成個傳統嘅金融系統

傳統銀行業就係一間銀行做得夠大,有信譽,所以大家會將錢交比銀行,咁你本簿仔就多左幾個零咁
要過數嘅時候就同個teller姐姐講/atm/online banking,將你個戶口入面扣咁幾個零,然後你個frd嘅戶口就加幾個零,你frd去銀行提款就可以拎翻d錢
成嗰過程其實都係交曬比銀行,呢個大家都覺得信得過嘅公司去完成

但係其實成件事唔係真係咁穩陣,假如銀行倒閉,你d錢就係咁先只係近代銀行都做到大到不能倒嘅規模所以你好少聽人講會冇左d錢

翻到去bitcoin,bitcoin係唔需要銀行,或者任何需要被信任嘅機構做中間人去完成交易,大家信嘅就係嗰串交易紀錄(blockchain),頭先都有人講左,修改成條交易串係極難,所以成串交易紀錄係可以隨意send比任何人,咁大家都有呢串紀錄,就知每個人有幾多錢可以用

開始1999都係等樓主嚟講
2017-07-27 02:11:53
白痴一問
咁點解bitcoin創造人要咁多人幫佢一齊verify past record?
對佢有咩好處?
對有份參與嘅人有咩好處?


點解要人verify
因為所有交易紀錄都係公開嘅,為左令新紀錄唔會比人任意verify到,所以將verify紀錄嘅難度set得好高,高到一部普通電腦要幾十甚至幾百年時間先計到,咁你可以用好多部電腦一齊計,但係修改嘅成本就會遠大過修改得到嘅利益(買電腦要錢,電費都係),咁就冇人會去任意改佢
咁個方法就係hashing,所以理論上一個人都可以修改到舊嘅紀錄,如果你屋企有部超級電腦嘅話

對有份參與嘅人有咩好處?
頭先講左要計到個答案係極難,咁咪冇人計?
所以為左吸引有人(用電腦)計,計到答案嘅人就會有獎勵(就係bitcoin)為左錢大家就會盡力試下同連登仔做爛市差唔多,因為好多好多人一齊試(e.g. 1000000張1080一齊run),咁就總有人會撞中咁又冇可能有一個人會買1000000張1080去修改紀錄,所以點解成個bitcoin嘅系統就係安全嘅
2017-07-27 02:13:58
請教一下
小弟以前睇過 Tom Scott (Computerphile) 講過Hash algorithm會因為電腦越黎越快而慢慢失效
隨住電腦運算速度越黎越快,SHA-2終有一日會被破解,而呢個時間好有可能早過2100年(掘唔到bitcoin之前),到時會唔會對bitcoin有影響?

另外想問Bitcoin本身一但唔見咗(例如整唔見實體錢包USB之類)就好似冇方法補充,bitcoin數量長期黎講只會有減無增,咁現時有冇第二啲cryptocurrency可以解決呢個問題?

bitcoin掘新coin係靠搵 partial collision (用brute force 逐個試)
如果只係運算能力提高, 即brute force更快, 咁會自動提高難度
e.g.由搵頭5個位係0, 變搵頭10個位係0
而個難度係根據上一個partial collision幾快比人搵到而調節, 所以掘coin既人升得愈快, 或者電腦運算速度升得愈快, 個難度就升得愈快
如果講到破解, 就要視乎破解法幾有效, 不過一般唔會即時影響安全性
然後正常會有update轉用新既hash algorithm, 確保新transaction係安全
舊record點處理就視情況而訂

bitcoin現時設左上限, 將來有需要既話取消都唔奇
同埋唔係所有cryptocurrency都有設上限


其實我最唔明嘅係點解撞中左個transaction 就會有錢分?


簡單咁講 係比特幣創造人整出黎嘅獎勵 鼓勵更多人去mine(撞個hash) 因為愈多人就愈難比人改到當中既資料

搵partial collision係出新coin既唯一方法
具體黎講係搵x令到Hash(x,y)<z
x係brute force搵出黎既數
y係(hash of) past records
z係一個數, 決定搵x既難度
掘coin者要先verify y, 即先前既record係岩
如果y錯, 咁搵到x都冇用
呢個做法可以令人幫手verify交易記錄

另一方面, 你搵到k=Hash(x,y), 而且成功拎到coin
k亦會成為past record既一部分
新既hash input 亦會包埋k, 如此類推
新hash係由舊hash加新野得出黎
呢個步驟run得愈多次(愈多block, 條chain愈長), 舊hash/record就愈可靠
因為只有係最長個條chain既record先至有效, e.g.
A chain: a || hash(a, ·)
B chain: a || hash(a, *) || hash(hash(a, *),*)|| hash(hash(a, *),*)
只有B chain既record先會被認同
因為搵hash需時, B比A長愈多, 就愈難追上A, 除非你有極大運算能力

明少少 如果咁啱同時有兩個人搵到點計


個答案太難計到,難到一個點係幾乎唔可能同時計到,所以呢個情況應該唔係一個大問題
2017-07-27 02:22:03
留名

初學者, 唔知例子有無錯:
如果假設 f(x) = x^5-x-1
我input 個x 落去你去搵f(x) 好容易
e.g. let's say x=2, f(2)=29
問題係如果我話比你知exist such x s.t. f(x)= 29
你就好難搵一個systematic 既方法去solve x^5-x-1= 29
所謂brutal 就係透過sub 曬x=1,2,3..... 先至估得番x=2 satisfy f(x)= 29
而可能有另一個x value 都satisfy f(x)=29
bitcoin 既theory 就係要搵呢一個x value?

換言之, 我要窮舉(暫時已知方法)去搵個exception case 去disprove injective nature of function (disprove 呢個字有d 怪不過用住先)??



bitcoin剩係要搵翻x=2就得

你所講嘅另一個x就係一個理想嘅hash function唔應該存在嘅野(雖然係必然存在),但係只要搵嘅難度高到近乎不可能搵到咁就安全
2017-07-27 02:26:55
留名學野
2017-07-27 02:42:36
lm
2017-07-27 08:21:53
樓主解釋得好清楚

建議樓主唔好覆其他人住,除非係同chapter1有關嘅東西,因為見你好多時都話之後嘅chapters會講到,可能一次過出哂文先討論會方便大家閱讀
2017-07-27 08:22:12
強post, it 白痴留名

有個位諗唔通就係究竟點樣去交易少於1 個bitcoin 係咪之後會講?


50年前d 人點將5仙買個白飯?


要交易五仙首先要有五仙嘅幣存在

依家香港已經唔存在五仙幣所以我地最少都要交易一毫。 bitcoin掘出嚟就係1蚊所以先問點樣去交易少於1 個bitcoin

事實上我都幾訝異會有咁嘅程度嘅回應

bitcoin掘出黎都唔係一個個
最初最初一掘就掘到50個出黎
早兩年變左做一掘掘到25個出黎
遲D會變做掘到12.5個


起電腦既世界其實你填幾多個小數位落去都得架啦
理論上你填幾多個小數位電腦都handle到
中本聰limit佢做8個小數位係為左限制一個transaction既file size
慳番D network transmission time同storage space


謝解惑。

所以係會有個地方(say server) 記住我目前擁有幾多bitcoin(去到小數點8位照你講) ? 而我同人交易時係會整一個如上面有張圖所講加咗我條public & private key再encrypt變成一個transaction file再俾人﹐而個人就會放個file上server去處理而完成交易?

差唔多

嚴格黎講bitcoin node無記得一個人/一個account有幾多錢
而係有一個transaction既output未有人用過
過多幾個chapter會詳細講


非常感謝


bitcoin其中一個重點就係decentrailization,即係權力去中心化,bitcoin唔係靠一個server去save低你有幾錢,咁同普通online banking冇分別

bitcoin勁在佢係推翻左成個傳統嘅金融系統

傳統銀行業就係一間銀行做得夠大,有信譽,所以大家會將錢交比銀行,咁你本簿仔就多左幾個零咁
要過數嘅時候就同個teller姐姐講/atm/online banking,將你個戶口入面扣咁幾個零,然後你個frd嘅戶口就加幾個零,你frd去銀行提款就可以拎翻d錢
成嗰過程其實都係交曬比銀行,呢個大家都覺得信得過嘅公司去完成

但係其實成件事唔係真係咁穩陣,假如銀行倒閉,你d錢就係咁先只係近代銀行都做到大到不能倒嘅規模所以你好少聽人講會冇左d錢

翻到去bitcoin,bitcoin係唔需要銀行,或者任何需要被信任嘅機構做中間人去完成交易,大家信嘅就係嗰串交易紀錄(blockchain),頭先都有人講左,修改成條交易串係極難,所以成串交易紀錄係可以隨意send比任何人,咁大家都有呢串紀錄,就知每個人有幾多錢可以用

開始1999都係等樓主嚟講



呢個係大慨明嘅

只係我未完全理解blockchain先當住係一個server﹐驟眼諗落以對個交易流程功用嚟講blockchain同server好似差唔多
2017-07-27 08:27:52
請教一下
小弟以前睇過 Tom Scott (Computerphile) 講過Hash algorithm會因為電腦越黎越快而慢慢失效
隨住電腦運算速度越黎越快,SHA-2終有一日會被破解,而呢個時間好有可能早過2100年(掘唔到bitcoin之前),到時會唔會對bitcoin有影響?

另外想問Bitcoin本身一但唔見咗(例如整唔見實體錢包USB之類)就好似冇方法補充,bitcoin數量長期黎講只會有減無增,咁現時有冇第二啲cryptocurrency可以解決呢個問題?

bitcoin掘新coin係靠搵 partial collision (用brute force 逐個試)
如果只係運算能力提高, 即brute force更快, 咁會自動提高難度
e.g.由搵頭5個位係0, 變搵頭10個位係0
而個難度係根據上一個partial collision幾快比人搵到而調節, 所以掘coin既人升得愈快, 或者電腦運算速度升得愈快, 個難度就升得愈快
如果講到破解, 就要視乎破解法幾有效, 不過一般唔會即時影響安全性
然後正常會有update轉用新既hash algorithm, 確保新transaction係安全
舊record點處理就視情況而訂

bitcoin現時設左上限, 將來有需要既話取消都唔奇
同埋唔係所有cryptocurrency都有設上限


其實我最唔明嘅係點解撞中左個transaction 就會有錢分?


簡單咁講 係比特幣創造人整出黎嘅獎勵 鼓勵更多人去mine(撞個hash) 因為愈多人就愈難比人改到當中既資料

搵partial collision係出新coin既唯一方法
具體黎講係搵x令到Hash(x,y)<z
x係brute force搵出黎既數
y係(hash of) past records
z係一個數, 決定搵x既難度
掘coin者要先verify y, 即先前既record係岩
如果y錯, 咁搵到x都冇用
呢個做法可以令人幫手verify交易記錄

另一方面, 你搵到k=Hash(x,y), 而且成功拎到coin
k亦會成為past record既一部分
新既hash input 亦會包埋k, 如此類推
新hash係由舊hash加新野得出黎
呢個步驟run得愈多次(愈多block, 條chain愈長), 舊hash/record就愈可靠
因為只有係最長個條chain既record先至有效, e.g.
A chain: a || hash(a, ·)
B chain: a || hash(a, *) || hash(hash(a, *),*)|| hash(hash(a, *),*)
只有B chain既record先會被認同
因為搵hash需時, B比A長愈多, 就愈難追上A, 除非你有極大運算能力

明少少 如果咁啱同時有兩個人搵到點計


個答案太難計到,難到一個點係幾乎唔可能同時計到,所以呢個情況應該唔係一個大問題

你搵到就可以加個新block落條chain到, 再send比鄰近壙工,再傳開去
因為只有最長條chain會被承認, 所以正常壙工會work on佢收到既chain入面最長個條
如果A同B同時搵到, 咁就要睇A chain 同 B chain廣泛傳開去之前邊條長d
例如A鄰近既壙工十分之好彩/勁, 咁A chain就可能加長得好快
到A chain傳到去B個邊時, A chain長過B chain唔少, 咁B個邊d人就會放棄B chain, 走去work on A chain
最後導致B chain入面由B開始計既hash, 同新加既transaction無效
所以一般交易係加上chain後要等佢後面加多幾個block先至穩陣(確保冇第2個chain會長過佢)
2017-07-27 08:38:07
留名
2017-07-27 08:40:16
留名

初學者, 唔知例子有無錯:
如果假設 f(x) = x^5-x-1
我input 個x 落去你去搵f(x) 好容易
e.g. let's say x=2, f(2)=29
問題係如果我話比你知exist such x s.t. f(x)= 29
你就好難搵一個systematic 既方法去solve x^5-x-1= 29
所謂brutal 就係透過sub 曬x=1,2,3..... 先至估得番x=2 satisfy f(x)= 29
而可能有另一個x value 都satisfy f(x)=29
bitcoin 既theory 就係要搵呢一個x value?

換言之, 我要窮舉(暫時已知方法)去搵個exception case 去disprove injective nature of function (disprove 呢個字有d 怪不過用住先)??



bitcoin剩係要搵翻x=2就得

你所講嘅另一個x就係一個理想嘅hash function唔應該存在嘅野(雖然係必然存在),但係只要搵嘅難度高到近乎不可能搵到咁就安全

你提既主要係one-wayness
既係搵f(x)易, 搵f^-1(y)難
e.g. f(米)=>飯 易, f^-1(飯)=>米 難
呢個可以確保唔可以由f(x)搵返x, 但呢個唔係bitcoin入面既用途

bitcoin主要係想用個hash黎確保資料唔會被改
e.g.
想比server儲pdf
但server唔可靠, 可能會改左個pdf
所以user就儲hash(pdf), 用黎確保server冇改到個pdf
而點解做到, 就係因為個hash係collision-resistance
即係就算你知道個hash點run, 你到搵唔到一對pair (x, y)
令到hash(x)=hash(y)
換言之, 就算server知道pdf, hash(pdf)
佢都搵唔到pdf' such that hash(pdf')=hash(pdf)
所以user只要keep住hash(pdf), 就可以確保由server拎返黎既資料係岩
2017-07-27 08:44:47
Lm
2017-07-27 08:49:21
強post, it 白痴留名

有個位諗唔通就係究竟點樣去交易少於1 個bitcoin 係咪之後會講?


50年前d 人點將5仙買個白飯?


要交易五仙首先要有五仙嘅幣存在

依家香港已經唔存在五仙幣所以我地最少都要交易一毫。 bitcoin掘出嚟就係1蚊所以先問點樣去交易少於1 個bitcoin

事實上我都幾訝異會有咁嘅程度嘅回應


唔係想罵戰
但邊個話bitcoin 係"一蚊一蚊咁掘"?

再加上, digital 既野......要有返"5仙" 有難度?
2017-07-27 09:17:19
MD5同SHA係咪類似嘅嘢嚟?
2017-07-27 09:18:35
lm
2017-07-27 09:26:29
MD5同SHA係咪類似嘅嘢嚟?


都係hash algorithm
設計SHA-1果陣直情有參考過MD5
2017-07-27 09:43:04
有無預告ch2 係講咩

會講digital signature, 即係public key private key

會唔會講埋PKI?
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞