区块链函数
A. 鍖哄潡閾炬妧鏈4锛氬瘑鐮佸︿箣鍝堝笇
瀵嗙爜瀛︾殑鍔犲瘑瀹堟姢鑰咃細鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓鐨勫姏閲
鍦ㄦ暟瀛楃粡娴庣殑涓栫晫閲岋紝鍖哄潡閾炬妧鏈鍑鍊熷叾鍘讳腑蹇冨寲鍜屽畨鍏ㄦэ紝姝i犺嗕紶缁熶氦鏄撴柟寮忋傛瘮鐗瑰竵鐨勮癁鐢燂紝灏辨槸瀵嗙爜瀛︽妧鏈鐗瑰埆鏄鍝堝笇鍑芥暟鐨勬澃浣溿傚搱甯屽嚱鏁帮紝杩欎釜鐪嬩技绁炵樼殑绠楁硶锛屽叾瀹炴壆婕旂潃鍏抽敭瑙掕壊锛岀‘淇濅簡浜ゆ槗鐨勯忔槑鎬у拰闃叉鸿瘓鑳藉姏銆
鍝堝笇鍑芥暟鐨勯瓟娉曪細纭瀹氭у拰鎶楀啿绐
鍝堝笇鍑芥暟鐨勬牳蹇冪壒鎬у湪浜庡叾鎺ユ敹浠讳綍杈撳叆骞剁敓鎴愬浐瀹氶暱搴﹁緭鍑猴紝濡係HA-256绠楁硶锛屽畠閫氳繃寮傛垨杩愮畻蹇閫熻$畻锛岀敓鎴愮殑64浣16杩涘埗鏁e垪鍊煎叿鏈夋棤娉曡繕鍘熺殑鍗曞悜鎬с傜悊鎯崇殑鍝堝笇鍑芥暟瑕佹眰鍏峰囦簲涓鐗规э細纭瀹氭с佸揩閫熻$畻銆佹姉鍐茬獊銆侀洩宕╂晥搴斿拰闅愯棌銆傛姉鍐茬獊浣垮緱SHA-256閬垮厤浜嗗嚑涔庝笉鍙鑳界殑2^256娆¤緭鍏ュ啿绐侊紝濡傚湪妫娴媥code鍚庨棬鏃讹紝閫氳繃MD5鐨勬暎鍒楃‘璁よ蒋浠舵潵婧愮殑鐪熷疄鎬с
闅愯棌鐨勫姏閲忎笌puzzle friendliness
鍝堝笇鍑芥暟鐨勯殣钘忕壒鎬э紝濡侻D5锛岄氳繃娣诲姞闅忔満鎬т繚鎶や俊鎭锛屾瘮濡備笘鐣屾澂棰勬祴缁撴灉锛岃╅勬祴鍊煎彉寰楅毦浠ョ洿鎺ユ帹鏂銆傝宲uzzle friendliness锛屽嵆闅句互蹇閫熸壘鍒版弧瓒崇壒瀹氭潯浠剁殑杈撳叆锛屾f槸姣旂壒甯佸伐浣滈噺璇佹槑锛圥roof of Work锛夎儗鍚庣殑鍏抽敭鏈哄埗锛屽畠纭淇濅簡鍖哄潡閾剧殑瀹夊叏鎬у拰鍘讳腑蹇冨寲銆
SHA-256鐨勮$畻涔嬫梾
SHA-256绠楁硶鐨勮$畻杩囩▼鏋佷负澶嶆潅锛岄氳繃64娆¤凯浠o紝鍒濆嬪悜閲忓拰杞娆℃洿鏂拌勫垯锛屼互鍙64涓璐ㄦ暟绔嬫柟鏍圭殑甯搁噺鍙備笌锛岀‘淇濅簡姣忎竴姝ョ殑杩愮畻閮芥槸鐙涓鏃犱簩鐨勩傚湪娑堟伅澶勭悊闃舵碉紝鍗充娇鏄鐭杈撳叆锛屼篃浼氳鎵╁睍骞跺~鍏呰嚦512浣嶇殑鍊嶆暟锛屼互閫傚簲Merkle-Damgard缁撴瀯锛屼负鍖哄潡閾剧殑鍔犲瘑鍜岄獙璇佹彁渚涘熀纭銆
鍖哄潡閾句腑鐨勫搱甯屽簲鐢
鍦ㄥ尯鍧楅摼涓栫晫锛屽搱甯屽嚱鏁扮殑浣滅敤鑷冲叧閲嶈併傚伐浣滈噺璇佹槑鏈哄埗涓锛岀熆宸ラ渶瑙e喅澶嶆潅鐨勫搱甯岃$畻闅鹃橈紝鑰屽尯鍧楀唴瀹圭殑鏍¢獙鍒欎緷璧栦簬鍝堝笇鍊肩殑涓鑷存с傝繖浜涘姛鑳界‘淇濅簡浜ゆ槗鐨勪笉鍙绡℃敼鎬э紝鏄鍖哄潡閾惧幓涓蹇冨寲淇′换鍩虹煶鐨勪竴閮ㄥ垎銆傛繁鍏ョ悊瑙e搱甯岋紝灏辨槸鎺屾彙浜嗗尯鍧楅摼鎶鏈鐨勪竴鎶婇挜鍖欙紝濡傘1銆態lock hashing algorithm, 銆2銆戞瘮鐗瑰竵涔︾睄PDF, 銆3銆慡HA-2, 銆4銆慡HA256绠楁硶璇﹁В绛夎祫婧愶紝涓烘帰绱㈣繖涓鍔犲瘑瀹囧畽鎻愪緵浜嗗疂璐电殑鐭ヨ瘑銆
鍖哄潡閾炬妧鏈鐨勫瘑鐮佸︿箣鏃咃紝鍝堝笇鍑芥暟鏃犵枒鏄閭d釜涓嶅彲鎴栫己鐨勫畧鎶よ咃紝瀹冪殑绁炵樹笌鍔涢噺锛屾i┍鍔ㄧ潃鏁板瓧缁忔祹鐨勯潻鏂般
B. 鍦ㄥ尯鍧楅摼涓涓鑸浣跨敤浠涔堝姞瀵嗙畻娉
鍦ㄥ尯鍧楅摼涓锛屼竴鑸浣跨敤涓ょ嶄富瑕佺殑鍔犲瘑绠楁硶锛
- 鍏閽/绉侀挜鍔犲瘑绠楁硶锛氳繖绉嶅康缁濆姞瀵嗙畻娉曚娇鐢ㄤ竴瀵瑰叕閽ュ拰绉侀挜銆傚叕閽ュ彲浠ュ叕寮鍒嗗彂锛岃岀侀挜闇瑕佷繚瀵嗐傚彧鏈夋嫢鏈夌侀挜鐨勪汉鎵嶈兘瑙e瘑浣跨敤鍏閽ュ姞瀵嗙殑鏁版嵁銆傝繖绉嶅姞瀵嗘柟娉曡骞挎硾鐢ㄤ簬鏁板瓧绛惧悕鍜岃韩浠介獙璇侊紝鍥犱负瀹冨彲浠ョ‘璁ゆ暟鎹鐨勬潵婧愬拰瀹屾暣鎬с傚湪鍖哄潡閾句腑锛岀侀挜鐢ㄤ簬纭璁や氦鏄撹呯殑韬浠斤紝鑰屽叕閽ュ垯琚骞挎挱缁欑綉缁滀腑鐨勫叾浠栬妭鐐逛互楠岃瘉浜ゆ槗鐨勬湁鏁堟ф壈楂樼瑧銆
- RSA绠楁硶锛氳繖鏄涓绉嶅父鐢ㄧ殑鍏閽/绉侀挜鍔犲瘑绠楁硶锛岀敱Ron Rivest銆丄di Shamir 鍜 Leonard Adleman浜1978骞村彂鏄庛傚畠鏄涓绉嶉潪瀵圭О鍔犲瘑绠楁硶锛屼篃灏辨槸璇达紝鐢ㄤ簬鍔犲瘑鐨勫瘑閽ュ拰鐢ㄤ簬瑙e瘑鐨勫瘑閽ユ槸涓嶅悓鐨勩
- ECDSA锛堟き鍦嗘洸绾挎暟瀛楃惧悕绠楁硶锛夛細杩欐槸涓绉嶅熀浜嶳SA绠楁硶鐨勬敼杩涚増锛屼娇鐢ㄦき鍦嗘洸绾垮瘑鐮佸︼紝浣垮緱绛惧悕杩囩▼鏇村揩閫熶笖鏇村畨鍏ㄣ傚湪鍖哄潡閾句腑锛孍CDSA琚鐢ㄤ簬楠岃瘉浜ゆ槗鐨勬暟瀛楃惧悕銆
鎷撳睍鐭ヨ瘑锛
鍝堝笇鍑芥暟鏄涓绉嶅皢浠绘剰闀垮害鐨勬暟鎹锛堝傛枃鏈銆佹暟瀛楃瓑锛夎浆鎹涓哄浐瀹氶暱搴︼紙閫氬父涓256浣嶆垨512浣嶏級鐨勬憳瑕佺殑鏂规硶銆傚畠浠缂撳惈闈炲父蹇涓旈潪甯稿畨鍏锛屽洜涓烘敼鍙樻暟鎹涓鐨勪竴灏忛儴鍒嗭紙鍗充娇鏄寰灏忕殑鏀瑰彉锛変細瀵艰嚧鍝堝笇缁撴灉鐨勫彉鍖栭潪甯稿ぇ锛岀敋鑷充笉鍙閫嗐傝繖绉嶇壒鎬т娇寰楀搱甯屽嚱鏁板湪鍖哄潡閾句腑琚骞挎硾浣跨敤锛屽傚尯鍧楃殑merkle鏍戠粨鏋勩佷氦鏄撶殑鏁板瓧绛惧悕浠ュ強瀵嗙爜瀛﹂挶鍖呯殑瀛樺偍绛夈
姣旂壒甯佸尯鍧楅摼涓昏佷娇鐢⊿HA-256浣滀负鍏跺搱甯屽嚱鏁帮紝杩欐槸鐢盌avid Chaum鍜孧ayra P. Chilomchik鍦1997骞村紩鍏ョ殑涓绉嶇畻娉曘係HA-256鎻愪緵浜嗕竴绉嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ュ垱寤哄尯鍧楅摼骞剁‘淇濅氦鏄撶殑瀹夊叏鎬с傛ゅ栵紝鍖哄潡閾句腑鐨凪erkle鏍戠粨鏋勪篃鏄鍩轰簬SHA-256鐨勫搱甯屽嚱鏁版潵鍒涘缓鐨勩
浠ヤ笂涓ょ嶅姞瀵嗙畻娉曞拰鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓閮芥壆婕旂潃闈炲父閲嶈佺殑瑙掕壊锛屽畠浠淇濊瘉浜嗕氦鏄撶殑瀹夊叏鎬с佸畬鏁存у拰鍖垮悕鎬э紝鍚屾椂涔熺‘淇濅簡鍖哄潡閾剧綉缁滅殑鍘讳腑蹇冨寲鍜屼笉鍙绡℃敼鎬с
鍚屾椂锛岀敱浜庡尯鍧楅摼涓鐨勬暟鎹鏄浠ュ尯鍧楃殑褰㈠紡涓嶆柇澧為暱鐨勶紝杩欎簺鍔犲瘑绠楁硶杩樿鐢ㄤ簬鍒涘缓鍖哄潡澶村拰鍖哄潡闂寸殑閾炬帴锛岃繘涓姝ユ彁楂樹簡鍖哄潡閾剧殑鎬ц兘鍜屽畨鍏ㄦс
C. 区块链技术
背景:比特币诞生之后,发现该技术很先进,才发现了区块链技术。比特币和区块链技术同时被发现。
1.1 比特币诞生的目的:
①货币交易就有记录,即账本;
②中心化机构记账弊端——可篡改;易超发
比特币解决第一个问题:防篡改——hash函数
1.2 hash函数(加密方式)
①作用:将任意长度的字符串,转换成固定长度(sha256)的输出。输出也被称为hash值。
②特点:很难找到两个不同的x和y,使得h(x)=h(y)。
③应用:md5文件加密
1.3 区块链
①定义
区块:将总账本拆分成区块存储
区块链:在每个区块上,增加区块头。其中记录父区块的hash值。通过每个区块存储父区块的hash值,将所有的区块按照顺序连接起来,形成区块链。
②区块链如何防止交易记录被篡改
形成区块链后,篡改任一交易,会导致该交易区块hash值和其子区块中不同,发现篡改。
即使继续篡改子区块头中hash值,会导致子区块hash值和孙区块中不同,发现篡改。
1.4 区块链本质
①比特币和区块链本质:一个人人可见的大账本,只记录交易。
②核心技术:通过密码学hash函数+数据结构,保证账本记录不可篡改。
③核心功能:创造信任。法币依靠政府公信力,比特币依靠技术。
1.5如何交易
①进行交易,需要有账号和密码,对应公钥和私钥
私钥:一串256位的二进制数字,获取不需要申请,甚至不需要电脑,自己抛硬币256次就生成了私钥
地址由私钥转化而成。地址不能反推私钥。
地址即身份,代表了在比特币世界的ID。
一个地址产生之后,只有进入区块链账本,才能被大家知道。
②数字签名技术
签名函数sign(张三的私钥,转账信息:张三转10元给李四) = 本次转账签名
验证韩式verify(张三的地址,转账信息:张三转10元给李四,本次转账签名) = True
张三通过签名函数sign(),使用自己的私钥对本次交易进行签名。
任何人可以通过验证韩式vertify(),来验证此次签名是否有由持有张三私钥的张三本人发出。是返回true,反之为false。
sign()和verify()由密码学保证不被破解。·
③完成交易
张三将转账信息和签名在全网供内部。在账户有余额的前提下,验证签名是true后,即会记录到区块链账本中。一旦记录,张三的账户减少10元,李四增加10元。
支持一对一,一对多,多对已,多对多的交易方式。
比特币世界中,私钥就是一切!!!
1.6中心化记账
①中心化记账优点:
a.不管哪个中心记账,都不用太担心
b.中心化记账,效率高
②中心化记账缺点:
a 拒绝服务攻击
b 厌倦后停止服务
c 中心机构易被攻击。比如破坏服务器、网络,监守自盗、法律终止、政府干预等
历史 上所有有中心化机构的机密货币尝试都失败了。
比特币解决第二个问题:如何去中心化
1.7 去中心化记账
①去中心化:人人都可以记账。每个人都可以保留完整的账本。
任何人都可以下载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账。
②去中心化记账流程
某人发起一笔交易后,向全网广播。
每个记账节点,持续监听、持续全网交易。收到一笔新交易,验证准确性后,将其放入交易池并继续向其它节点传播。
因为网络传播,同一时间不同记账节点的交一次不一定相同。
每隔10分钟,从所有记账节点当中,按照某种方式抽取1名,将其交易池作为下一个区块,并向全网广播。
其它节点根据最新的区块中的交易,删除自己交易池中已经被记录的交易,继续记账,等待下一次被选中。
③去中心化记账特点
每隔10分钟产生一个区块,但不是所有在这10分钟之内的交易都能记录。
获得记账权的记账节点,将得到50个比特币的奖励。每21万个区块(约4年)后,奖励减半。总量约2100万枚,预计2040年开采完。
记录一个区块的奖励,也是比特币唯一的发行方式。
④如何分配记账权:POW(proof of work) 方式
记账几点通过计算一下数学题,来争夺记账权。
找到某随即数,使得一下不等式成立:
除了从0开始遍历随机数碰运气之外,没有其它解法,解题的过程,又叫做挖矿。
谁先解对,谁就得到记账权。
某记账节点率先找到解,即向全网公布。其他节点验证无误之后,在新区块之后重新开始新一轮的计算。这个方式被称为POW。
⑤难度调整
每个区块产生的时间并不是正好10分钟
随着比特币发展,全网算力不算提升。
为了应对算力的变化,每隔2016个区块(大约2周),会加大或者减少难度,使得每个区块产生的平均时间是10分钟。
#欧易OKEx# #比特币[超话]# #数字货币#
D. 区块链技术中的哈希算法是什么
1.1. 简介
计算机行业从业者对哈希这个词应该非常熟悉,哈希能够实现数据从一个维度向另一个维度的映射,通常使用哈希函数实现这种映射。通常业界使用y = hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。
区块链中哈希函数特性:
函数参数为string类型;
固定大小输出;
计算高效;
collision-free 即冲突概率小:x != y => hash(x) != hash(y)
隐藏原始信息:例如区块链中各个节点之间对交易的验证只需要验证交易的信息熵,而不需要对原始信息进行比对,节点间不需要传输交易的原始数据只传输交易的哈希即可,常见算法有SHA系列和MD5等算法
1.2. 哈希的用法
哈希在区块链中用处广泛,其一我们称之为哈希指针(Hash Pointer)
哈希指针是指该变量的值是通过实际数据计算出来的且指向实际的数据所在位置,即其既可以表示实际数据内容又可以表示实际数据的存储位置。下图为Hash Pointer的示意图
