文章出于:http://wangxiaoming.com/blog/2016/06/22/e11/
賬戶在以太坊中發(fā)揮著中心作用。共有兩種賬戶類型:外部賬戶(EOAs)和合約賬戶。我們這里重點講一下外部賬戶,以下會簡稱為賬戶。合約賬戶簡稱為合約, 在合約章節(jié)具體討論。把外部賬戶和合約賬戶都歸入到帳戶的一般概念是合理的,因為這些實體都是所謂的狀態(tài)對象。這些實體都有狀態(tài):賬戶有余額,合約既有余額也有合約儲存。所有賬戶的狀態(tài)正是以太坊網(wǎng)絡的狀態(tài),以太坊網(wǎng)絡和每個區(qū)塊一起更新,網(wǎng)絡需要達成關于以太坊的共識。對于用戶通過交易和以太坊區(qū)塊鏈互動來說,賬戶是必不可少的。
如果我們把以太坊限制為只有外部賬戶,只允許外部賬戶之間進行交易,我們就會進入到"代幣"系統(tǒng),"代幣"系統(tǒng)不如比特幣本身有力,只能用于轉移以太幣。
賬戶代表著外部代理人(例如人物角色,挖礦節(jié)點 ,或是自動代理人)的身份。賬戶運用公鑰加密圖像來簽署交易以便以太坊虛擬機可以安全地驗證交易發(fā)送者身份。
每個賬戶都由一對鑰匙定義,一個私鑰和一個公鑰。 賬戶以地址為索引,地址由公鑰衍生而來,取公鑰的最后 20個字節(jié)。每對私鑰 /地址都編碼在一個鑰匙文件里。鑰匙文件是JSON文本文件,可以用任何文本編輯器打開和瀏覽。鑰匙文件的關鍵部分,賬戶私鑰,通常用你創(chuàng)建帳戶時設置的密碼進行加密。鑰匙文件可以在以太坊節(jié)點數(shù)據(jù)目錄的keystore子目錄下找到。確保經(jīng)常給鑰匙文件備份!查看備份和恢復賬號章節(jié)了解更多。創(chuàng)建鑰匙和創(chuàng)建帳戶是一樣的。
當然新賬戶不包含任何以太幣。但它將會是你的,你大可放心,沒有你的鑰匙和密碼,沒有人能進入。
轉換整個目錄或任何以太坊節(jié)點之間的個人鑰匙文件都是安全的。
警告:請注意萬一你從一個不同的節(jié)點向另一個節(jié)點添加鑰匙文件, 賬戶的順序可能發(fā)生改變。確保不要回復或改變手稿中的索引或代碼片段。
警告:記住密碼并"備份鑰匙文件"。為了從賬號發(fā)送交易,包括發(fā)送以太幣,你必須同時有鑰匙文件和密碼。確保鑰匙文件有個備份并牢記密碼,盡可能安全地存儲它們。這里沒有逃亡路徑,如果鑰匙文件丟失或忘記密碼,就會丟失所有的以太幣。沒有密碼不可能進入賬號,也沒有忘記密碼選項。所以一定不要忘記密碼。
一旦安裝了geth客戶端,創(chuàng)建賬號就只是在終端執(zhí)行 geth account new指令的問題了。
注意不必運行geth客戶端或者和區(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標志的變元。文件中的數(shù)據(jù)包含密碼的原始字節(jié),后面可選擇單獨跟著新的一行。
$ geth --password /path/to/password account new
警告:用—password標志只是為了測試或在信任的環(huán)境中自動操作。不建議將密碼保存在文件中或以任何其他方式暴露。如果你用密碼文件來使用—password標志,要確保文件只對你自己可閱讀和列表。你可以在 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—–
。賬號列出時是按字母順序排列,但是由于時間戳格式,實際上它是按創(chuàng)建順序排列。
為了用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"]
對于相反的命令行,現(xiàn)在有一個基于GUI的選項可以用來創(chuàng)建賬號:"官方"Mist以太坊錢包。 Mist以太坊錢包,和它的父項目Mist, 是在以太坊基金會的贊助下開發(fā),因此是"官方"地位。錢包應用有Linux, Mac OS X和Windows可用的版本。
警告:Mist錢包是試用軟件,使用需風險自擔。
用GUI Mist以太坊錢包創(chuàng)建賬號再容易不過了。事實上,第一個賬號在應用安裝期間就創(chuàng)建出來了。
注意: Mist錢包仍在開發(fā)中,以上列出的具體步驟可能會隨著更新有所變更。