賬戶
賬戶在以太坊中發(fā)揮著中心作用钧敞。賬戶共有兩種類型:
- 外部賬戶(EOAs)
- 合約賬戶等太。
這里重點講一下外部賬戶 EOA爷耀,為了方便资柔,這里把外部賬戶簡稱為賬戶焙贷,合約賬戶簡稱為合約, 合約賬戶會在合約章節(jié)具體討論贿堰。把外部賬戶和合約賬戶都?xì)w入到帳戶的一般概念是合理的辙芍,因為這些實體都是所謂的狀態(tài)對象。這些實體都有狀態(tài):賬戶有余額羹与,合約既有余額也有合約儲存故硅。所有賬戶的狀態(tài)正是以太坊網(wǎng)絡(luò)的狀態(tài),以太坊網(wǎng)絡(luò)和每個區(qū)塊一起更新纵搁,網(wǎng)絡(luò)需要達(dá)成關(guān)于以太坊的共識吃衅。對于用戶通過交易和以太坊區(qū)塊鏈互動來說,賬戶是必不可少的腾誉。
如果我們把以太坊限制為只有外部賬戶徘层,只允許外部賬戶之間進(jìn)行交易,我們就會進(jìn)入到“代幣”系統(tǒng)利职,“代幣”系統(tǒng)不如比特幣本身有力趣效,只能用于轉(zhuǎn)移以太幣。
賬戶代表著外部代理人(例如人物角色猪贪,挖礦節(jié)點 跷敬,或是自動代理人)的身份。賬戶運用公鑰加密圖像來簽署交易以便以太坊虛擬機可以安全地驗證交易發(fā)送者身份热押。
鑰匙文件
每個賬戶都由一對鑰匙定義西傀,一個私鑰和一個公鑰斤寇。 賬戶以地址為索引,地址由公鑰衍生而來池凄,取公鑰的最后 20個字節(jié)抡驼。每對私鑰 /地址都編碼在一個鑰匙文件里。鑰匙文件是JSON文本文件肿仑,可以用任何文本編輯器打開和瀏覽致盟。鑰匙文件的關(guān)鍵部分,賬戶私鑰尤慰,通常用你創(chuàng)建帳戶時設(shè)置的密碼進(jìn)行加密馏锡。鑰匙文件可以在以太坊節(jié)點數(shù)據(jù)目錄的keystore子目錄下找到。確保經(jīng)常給鑰匙文件備份伟端!查看備份和恢復(fù)賬號章節(jié)了解更多杯道。創(chuàng)建鑰匙和創(chuàng)建帳戶是一樣的。
不必告訴任何人你的操作责蝠。
不必和區(qū)塊鏈同步党巾。
不必運行客戶端。
甚至不必連接到網(wǎng)絡(luò)霜医。
當(dāng)然新賬戶不包含任何以太幣齿拂。但它將會是你的,你大可放心肴敛,沒有你的鑰匙和密碼署海,沒有人能進(jìn)入。
轉(zhuǎn)換整個目錄或任何以太坊節(jié)點之間的個人鑰匙文件都是安全的医男。
警告:請注意萬一你從一個不同的節(jié)點向另一個節(jié)點添加鑰匙文件砸狞, 賬戶的順序可能發(fā)生改變。確保不要回復(fù)或改變手稿中的索引或代碼片段镀梭。
創(chuàng)建賬號
警告:記住密碼并“備份鑰匙文件<backup-and-restore-accounts>”刀森。為了從賬號發(fā)送交易,包括發(fā)送以太幣报账,你必須同時有鑰匙文件和密碼研底。確保鑰匙文件有個備份并牢記密碼,盡可能安全地存儲它們笙什。這里沒有逃亡路徑飘哨,如果鑰匙文件丟失或忘記密碼,就會丟失所有的以太幣琐凭。沒有密碼不可能進(jìn)入賬號芽隆,也沒有忘記密碼選項。所以一定不要忘記密碼。
使用geth account new
一旦安裝了geth客戶端胚吁,創(chuàng)建賬號就只是在終端執(zhí)行 geth account new指令的問題了牙躺。
注意不必運行g(shù)eth客戶端或者和區(qū)塊鏈同步來使用geth account指令。
$ geth account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat Passphrase:
Address: {168bc315a2ee09042d83d7c5811b533620531f67}
對于非交互式使用腕扶,你可以提供純文本密碼文件作為—password標(biāo)志的變元孽拷。文件中的數(shù)據(jù)包含密碼的原始字節(jié),后面可選擇單獨跟著新的一行半抱。
$ geth --password /path/to/password account new
警告:用—password標(biāo)志只是為了測試或在信任的環(huán)境中自動操作脓恕。不建議將密碼保存在文件中或以任何其他方式暴露。如果你用密碼文件來使用—password標(biāo)志窿侈,要確保文件只對你自己可閱讀和列表炼幔。你可以在 Mac/Linux系統(tǒng)中通過以下指令實現(xiàn):
touch /path/to/password
chmod 600 /path/to/password
cat > /path/to/password
>I type my pass
要列出目前在你的 keystore 文件夾中的鑰匙文件的所有賬號,使用 geth account
指令的 list 子指令:
$ geth account list
account #0: {a94f5374fce5edbc8e2a8697c15331677e6ebf0b}
account #1: {c385233b188811c9f355d4caec14df86d6248235}
account #2: {7f444580bfef4b9bc7e14eb7fb2a029336b07c9d}
鑰匙文件的文件名格式為 UTC—<created_at UTC ISO8601>–史简。
賬號列出時是按字母順序排列乃秀,但是由于時間戳格式,實際上它是按創(chuàng)建順序排列圆兵。
使用 geth 控制臺
為了用 geth 創(chuàng)建新賬號跺讯,我們必須先在控制臺模式開啟 geth(或者可以用 geth attach 將控制臺依附在已經(jīng)運行著的事例上):
> geth console 2>> file_to_log_output
instance: Geth/v1.4.0-unstable/linux/go1.5.1
coinbase: coinbase: [object Object]
at block: 865174 (Mon, 18 Jan 2016 02:58:53 GMT)
datadir: /home/USERNAME/.ethereum
控制臺使你能夠通過發(fā)出指令與本地節(jié)點互相作用。比如殉农,試一下這個列出賬號的指令:
> eth.accounts
{
code: -32000,
message: "no keys in store"
}
這就表明你沒有賬號刀脏。你也可以從控制臺創(chuàng)建一個賬號:
> personal.newAccount()
Passphrase:
Repeat passphrase:
"0xb2f69ddf70297958e582a0cc98bce43294f1007d"
注意:記得用一個安全性強、隨機生成的密碼统抬。
我們剛剛創(chuàng)建了第一個賬號火本。如果我們再次試著列出賬號危队,就可以看到新創(chuàng)建的賬號了聪建。
> eth.accounts
["0xb2f69ddf70297958e582a0cc98bce43294f1007d"]
使用 Mist 以太坊錢包
以太坊官方提供了一個叫 Mist 的以太坊錢包。 Mist 以太坊錢包茫陆,和它的父項目Mist, 是在以太坊基金會的贊助下開發(fā)金麸,錢包應(yīng)用有 Linux, Mac OS X 和 Windows 分別可用的版本。
用 Mist 以太坊錢包創(chuàng)建賬號再容易不過了簿盅。事實上挥下,第一個賬號在應(yīng)用安裝期間就創(chuàng)建出來了。
一桨醋、根據(jù)你的操作程序下載錢包應(yīng)用最新版本棚瘟。由于你實際上會運行一個完整的 geth 節(jié)點,打開錢包應(yīng)用就會開始同步復(fù)制你電腦上的整個以太坊區(qū)塊鏈喜最。
二偎蘸、 解鎖下載的文件夾,運行以太坊錢包可執(zhí)行文件。
三迷雪、 等待區(qū)塊鏈完全同步限书,按照屏幕上的說明操作,第一個賬號就創(chuàng)建出來了章咧。
四倦西、第一次登錄Mist 以太坊錢包,你會看到自己在安裝過程中創(chuàng)建的賬號赁严。它會被默認(rèn)命名為主賬號(以太庫)
五扰柠、再另外創(chuàng)建賬號很容易;只需點擊應(yīng)用主界面上的添加賬號疼约,輸入所需的密碼即可耻矮。
注意: Mist錢包仍在開發(fā)中,以上列出的具體步驟可能會隨著更新有所變更忆谓。