以太坊使用的哈希函數(shù)
ethash
共識算法有什么用扣墩?
答:在DAPP中哲银,沒有一個中心服務(wù)器來協(xié)調(diào)節(jié)點,或者決定什么是對呻惕,什么是錯荆责,因此應(yīng)對這個挑戰(zhàn)確實不容易,一致性協(xié)議(concensus protocol)可用于解決這個問題亚脆。
補充:共識算法的核心就是解決拜占庭將軍問題(分布式網(wǎng)絡(luò)一致性問題)做院。
去中心化應(yīng)用的缺點
答:修改bug或者更新DAPP很困難。
Oraclize服務(wù)
如果我需要從一個中心化應(yīng)用抓取數(shù)據(jù)濒持,如車輛違章信息山憨,怎么保證抓取的數(shù)據(jù)是真實有效的?
答:為了訪問中心化的API弥喉,可以使用Oraclize服務(wù)可以作為中間人郁竟,Oraclize為從中心化服務(wù)智能合約中抓取的數(shù)據(jù)提供TLSNotary驗證。
代幣存在的意義
中心化應(yīng)用的所有者需要有盈利才能長期維護應(yīng)用的運行由境,而DAPP雖然沒有所有者棚亩,但是跟中心化應(yīng)用一樣,DAPP節(jié)點需要硬件和網(wǎng)絡(luò)資源才能維持運行虏杰。DAPP節(jié)點需要一些有用的回報來維持運行讥蟆,于是內(nèi)部貨幣登場了。大多數(shù)DAPP都有內(nèi)置內(nèi)部貨幣纺阔,或者可以說最成功的DAPP都有內(nèi)置內(nèi)部貨幣瘸彤。如以太幣
授權(quán)的DAPP
授權(quán)的DAPP不對所有人開放。授權(quán)的DAPP繼承了免權(quán)限D(zhuǎn)APP的全部屬性笛钝,但需要權(quán)限才能參與到網(wǎng)絡(luò)中去质况。授權(quán)的DAPP與免權(quán)限的DAPP的共識協(xié)議是不同的。授權(quán)的DAPP沒有內(nèi)部貨幣玻靡。
超級賬本(Hyperledger)項目致力于開發(fā)創(chuàng)建授權(quán)的DAPP技術(shù)结榄。
為什么少數(shù)國家認定比特幣是非法的
為什么少數(shù)國家認定比特幣是非法的,大部分國家對此還沒有做出決定呢囤捻?原因如下:
- 洗錢
- 虛擬貨幣不穩(wěn)定臼朗,丟錢風險高
- 逃稅
使用比特幣的原因
- 在世界任何地方快速便捷轉(zhuǎn)賬
- 交易費低于銀行交易費
IPFS
星際文件存儲系統(tǒng)(InterPlanetary File System)是一個去中心化的文件系統(tǒng)。
達世幣
目標是通過使交易幾乎瞬間完成,并隱藏交易賬戶的信息视哑,還可以防止他人用ISP追蹤所有者绣否。
礦工激勵
任何人都可以成為以太坊網(wǎng)絡(luò)中的礦工。每個礦工獨自解決問題挡毅,第一個解決問題的礦工是勝利者蒜撮,它得到的回報是5個以太幣和該區(qū)塊中全部交易的交易費。區(qū)塊鏈中有多少個區(qū)塊沒有限制慷嗜,可以生成的以太幣總數(shù)也沒有限制。
網(wǎng)絡(luò)中的任何節(jié)點都可以檢查區(qū)塊鏈是否合法丹壕,首先檢查交易在區(qū)塊鏈中是否合法以及時間戳的驗證情況庆械,然后檢查區(qū)塊的目標值和隨機數(shù)是否合法、礦工是否得到合法的回報等菌赖。
如果網(wǎng)絡(luò)中的節(jié)點接收到兩個不同的合法區(qū)塊鏈缭乘,那么所有區(qū)塊的整體難度值較高的那個區(qū)塊鏈被視為合法的區(qū)塊鏈。
創(chuàng)世區(qū)塊(genesis block)
- 區(qū)塊序號為0
- 沒有前一個區(qū)塊
- 不包含任何交易琉用,因為還沒產(chǎn)生任何以太幣
- 如果兩個對等節(jié)點有相同的創(chuàng)世塊才會進行同步區(qū)塊堕绩,否則它們將彼此拒絕
發(fā)現(xiàn)對等節(jié)點
節(jié)點是如何發(fā)現(xiàn)網(wǎng)絡(luò)中的其他節(jié)點的呢?
以太坊的節(jié)點發(fā)現(xiàn)協(xié)議:Kadelima邑时,在這種協(xié)議中奴紧,有一種特殊節(jié)點Bootstrap節(jié)點。它保存了一段時間內(nèi)與它連接的所有節(jié)點列表晶丘,但其本身不保存區(qū)塊鏈黍氮。
當對等節(jié)點連接到以太坊網(wǎng)絡(luò)時,它們首先連接到Bootstrap節(jié)點浅浮。
可以有多種以太坊實例沫浆,也就是說,不同的網(wǎng)絡(luò)每個都有自己的網(wǎng)絡(luò)ID滚秩。
兩種主要的以太坊網(wǎng)絡(luò)是主網(wǎng)和測試網(wǎng)专执。以太幣在主網(wǎng)上交易,而測試網(wǎng)供開發(fā)人員測試郁油。
Whisper
一個去中心化的通信協(xié)議本股,它支持廣播、用戶到用戶桐腌、加密信息等痊末,但不用于傳輸大數(shù)據(jù)。
Swarm
一個去中心化的文件系統(tǒng)哩掺。
JSON-RPC API
geth為其他應(yīng)用提供了與其通信的JSON-RPC API凿叠。使用HTTP、WebSocket和其他協(xié)議服務(wù)于JSON-RPC API。
JSON-RPC API提供的API分成如下類型:
- admin
- debug
- eth
- miner
- net
- personal
- shh
- txpool
- web3
連接到主網(wǎng)網(wǎng)絡(luò)
以太坊網(wǎng)絡(luò)中的節(jié)點默認用30303端口通信盒件。
geth --datadir "/home/simon/ethereum" --networkid 1
--networkid 用于指定網(wǎng)絡(luò)ID蹬碧,1代表主網(wǎng)網(wǎng)絡(luò)ID,缺省默認值為1炒刁,2代表測試網(wǎng)絡(luò)ID
--dev 標記運行一個私有網(wǎng)絡(luò)
--etherbase 指定挖礦賺取的回報存入的錢包地址
--unlock 解鎖一個或者多個賬戶
以太坊錢包Mist
以太坊錢包與geth捆綁在一起恩沽。運行以太坊時,它會嘗試發(fā)現(xiàn)一個本地geth實例并與之連接翔始;如果它不能發(fā)現(xiàn)geth正在運行罗心,它就啟動自己的geth節(jié)點。以太坊錢包使用IPC與geth通信城瞎。geth支持以文件為基礎(chǔ)的IPC渤闷。
如果在運行g(shù)eth時更改數(shù)據(jù)目錄,就是也在更改IPC文件路徑脖镀。所以為了讓以太坊錢包發(fā)現(xiàn)并連接到geth實例飒箭,需要使用--ipcpath選項指定IPC文件位置為其默認位置,這樣以太坊錢包可以發(fā)現(xiàn)它蜒灰;否則弦蹂,以太坊錢包就不能發(fā)現(xiàn)它,將啟動自己的geth實例强窖。為了發(fā)現(xiàn)默認IPC文件路徑凸椿,運行g(shù)eth help,它會顯示--ipcpath選項的默認路徑翅溺。
Mist下載地址:https://github.com/ethereum/mist/releases
Serenity
以太坊下一個主要更新的名字削饵。Serenity把共識協(xié)議改為casper,并將整合狀態(tài)通道和分片未巫。
Casper實施了一個進程窿撬,使得它可以懲罰所有的惡意因素。這就是權(quán)益證明在Casper下是如何工作的:
驗證者押下一定比例的他們擁有的以太幣作為保證金叙凡。然后劈伴,他們將開始驗證區(qū)塊。也就是說握爷,當他們發(fā)現(xiàn)一個可以他們認為可以被加到鏈上的區(qū)塊的時候跛璧,他們將以通過押下賭注來驗證它。
如果該區(qū)塊被加到鏈上新啼,然后驗證者們將得到一個跟他們的賭注成比例的獎勵追城。但是,如果一個驗證者采用一種惡意的方式行動燥撞、試圖做“無利害關(guān)系”的事座柱,他們將立即遭到懲罰迷帜,他們所有的權(quán)益都會被砍掉。正如你可以看到的色洞,Casper被設(shè)計成可以在一個無需信任的系統(tǒng)上工作戏锹,并且是更加拜占庭容錯的。
支付通道功能允許將兩個以上向另一個賬戶發(fā)送以太幣的交易合并成兩個交易火诸。其工作原理為:假設(shè)X是一個視頻網(wǎng)站老板锦针,Y是個用戶。X每分鐘收費1個以太幣≈檬瘢現(xiàn)在X想讓Y看視頻期間每分鐘交一次錢奈搜。當然,Y可以每分鐘廣播交易盯荤,但是這里有些問題馋吗,例如X不得不等待確認,所以視頻就會中斷一會廷雅。支付通道可以解決這個問題耗美。使用支付通道京髓,Y可以廣播一個鎖定交易航缀,為X把一些以太幣(比如100個以太幣)鎖定一段時間(比如24小時)。現(xiàn)在每看完一分鐘視頻堰怨,Y將發(fā)送一個簽名記錄表示可以解鎖芥玉,一個以太幣就進入X的賬戶狱窘,其余的進入Y的賬戶辞色。再過一分鐘,Y將發(fā)送一個簽名記錄表示可以解鎖僚碎,兩個以太幣就進入X的賬戶揽涮,其余的進入Y的賬戶抠藕。Y觀看X網(wǎng)站的視頻過程中,該過程將持續(xù)〗В現(xiàn)在假設(shè)Y看完了100小時視頻或者24小時時間到了盾似,X將向網(wǎng)絡(luò)廣播最后的簽名記錄,以把錢收到自己的賬戶里雪标。如果X沒有在24小時內(nèi)提款零院,全款會返還給Y。所以在區(qū)塊鏈中村刨,我們將看到lock和unlock兩種交易告抄。
以太坊的缺點
Sybil攻擊
51%攻擊
補充:不能存儲較大數(shù)據(jù),目前有Swarm與IPFS等分布式存儲方式可供選擇
Testrpc
把所有東西都存在內(nèi)存里嵌牺,因此打洼,節(jié)點一旦重啟龄糊,將丟失以前的狀態(tài)。
默認監(jiān)聽端口:8545