賬戶(hù)(Account)
帳戶(hù)在以太坊中扮演著重要角色。有兩種類(lèi)型的賬戶(hù):外部擁有賬戶(hù)(EOAs)和合同賬戶(hù)喧笔。這里我們關(guān)注外部擁有的賬戶(hù)福贞,這些賬戶(hù)將簡(jiǎn)稱(chēng)為賬戶(hù)我注。合同賬戶(hù)將被稱(chēng)為合同,并在合同中詳細(xì)討論舅柜。這種通用的賬戶(hù)概念包含了外部擁有的賬戶(hù)和合約梭纹,這是合理的,因?yàn)檫@些實(shí)體被稱(chēng)為狀態(tài)對(duì)象致份。這些實(shí)體有一個(gè)狀態(tài):賬戶(hù)有余額变抽,合同有余額和合同存儲(chǔ)。所有帳戶(hù)的狀態(tài)都是以太坊網(wǎng)絡(luò)的狀態(tài)氮块,每個(gè)區(qū)塊都會(huì)更新绍载,而網(wǎng)絡(luò)真正需要達(dá)成共識(shí)。賬戶(hù)對(duì)于用戶(hù)通過(guò)交易與以太坊區(qū)塊鏈進(jìn)行交互至關(guān)重要滔蝉。
如果我們將以太坊僅限于外部擁有的賬戶(hù)击儡,并且只允許它們之間的交易,那么我們會(huì)得到一個(gè)比比特幣稍弱的系統(tǒng), 只能用于轉(zhuǎn)以太.?
帳戶(hù)表示外部代理的身份(例如锰提,人類(lèi)角色曙痘,挖掘節(jié)點(diǎn)或自動(dòng)代理)芳悲。賬戶(hù)使用公鑰加密來(lái)簽署交易,以便EVM可以安全地驗(yàn)證交易發(fā)件人的身份边坤。
keyfiles
每個(gè)賬戶(hù)都由一對(duì)密鑰名扛,一個(gè)私鑰和一個(gè)公鑰來(lái)定義。帳戶(hù)是通過(guò)它們的地址索引的茧痒,該地址是通過(guò)取最后20個(gè)字節(jié)從公鑰得出的肮韧。每個(gè)私鑰/地址對(duì)都被編碼在一個(gè)密鑰文件中。密鑰文件是JSON文本文件旺订,可以在任何文本編輯器中打開(kāi)和查看弄企。密鑰文件的關(guān)鍵組成部分(您的帳戶(hù)的私鑰)始終是加密的,并且使用您在創(chuàng)建帳戶(hù)時(shí)輸入的密碼進(jìn)行加密区拳。密鑰文件位于您以太坊節(jié)點(diǎn)數(shù)據(jù)目錄的密鑰庫(kù)子目錄中拘领。確保定期備份你的密鑰文件!有關(guān)更多信息樱调,請(qǐng)參閱備份和還原帳戶(hù)部分约素。
創(chuàng)建密鑰等同于創(chuàng)建帳戶(hù):
* 你不需要告訴其他人你正在做它
* 您不需要與區(qū)塊鏈同步
*您不需要運(yùn)行客戶(hù)端
* 你甚至不需要連接到互聯(lián)網(wǎng)
當(dāng)然你的新賬戶(hù)不會(huì)包含任何以太。但它是你的笆凌,你可以肯定的是沒(méi)有你的密碼和密碼圣猎,任何人都無(wú)法訪(fǎng)問(wèn)它。在以太坊節(jié)點(diǎn)之間傳輸整個(gè)目錄或任何單獨(dú)的密鑰文件是安全的乞而。
請(qǐng)注意送悔,如果您將密鑰文件從不同節(jié)點(diǎn)添加到節(jié)點(diǎn),帳戶(hù)順序可能會(huì)更改爪模。 因此在你的程序里, 不要修改或依賴(lài)索引
創(chuàng)建賬戶(hù)
為了從一個(gè)賬戶(hù)發(fā)送交易欠啤,包括發(fā)送以太,你必須同時(shí)擁有密鑰文件和密碼屋灌。 請(qǐng)務(wù)必保留密鑰文件的副本并記住該密鑰文件的密碼跪妥,并盡可能安全地存儲(chǔ)它們。 這里沒(méi)有逃生路線(xiàn); 丟失密鑰文件或忘記密碼声滥,你所有的以太都會(huì)消失了眉撵。 忘記密碼就無(wú)法訪(fǎng)問(wèn)您的帳戶(hù),并且沒(méi)有密碼恢復(fù)功能落塑。 別忘記了纽疟。
使用?geth?account?new
一旦你安裝了geth客戶(hù)端,創(chuàng)建一個(gè)帳戶(hù)只需要在終端中執(zhí)行g(shù)eth account new命令憾赁。
請(qǐng)注意污朽,您不必運(yùn)行g(shù)eth客戶(hù)端或與區(qū)塊鏈同步即可使用geth account命令。
對(duì)于非交互式使用龙考,您提供明文密碼文件作為--password標(biāo)志的參數(shù)蟆肆。該文件中的數(shù)據(jù)由密碼的原始字節(jié)組成矾睦,可選地后跟一個(gè)換行符。
使用--password標(biāo)志僅用于可信環(huán)境中的測(cè)試或自動(dòng)化炎功。 將密碼保存到文件或以任何其他方式公開(kāi)它是個(gè)不錯(cuò)的主意枚冗。 如果確實(shí)在密碼文件中使用了--password標(biāo)志,請(qǐng)確保該文件對(duì)于除您以外的任何人都不可讀或甚至不可列出蛇损。 您可以在Mac / Linux系統(tǒng)中通過(guò)以下方式實(shí)現(xiàn)此目的:
要列出當(dāng)前包含密鑰文件的所有帳戶(hù)是密鑰存儲(chǔ)文件夾赁温,請(qǐng)使用geth帳戶(hù)命令的列表子命令:
使用geth控制臺(tái)
為了使用geth創(chuàng)建一個(gè)新帳戶(hù),我們必須首先以控制臺(tái)模式啟動(dòng)geth(或者您可以使用geth attach將控制臺(tái)附加到已經(jīng)運(yùn)行的實(shí)例):
控制臺(tái)允許您通過(guò)發(fā)出命令與本地節(jié)點(diǎn)進(jìn)行交互淤齐。例如股囊,嘗試使用命令列出您的帳戶(hù):
這表明你沒(méi)有帳戶(hù)。您也可以從控制臺(tái)創(chuàng)建一個(gè)帳戶(hù):
使用Mist以太坊錢(qián)包
對(duì)于厭惡命令行的人更啄,現(xiàn)在有一個(gè)基于GUI的創(chuàng)建賬戶(hù)選項(xiàng):“官方”Mist以太坊錢(qián)包稚疹。在以太坊基金會(huì)的贊助下,Mist以太坊錢(qián)包和它的父親Mist項(xiàng)目正在開(kāi)發(fā)祭务,因此是“官方”的地位贫堰。錢(qián)包應(yīng)用程序的版本適用于Linux,Mac OS X和Windows待牵。
使用GUI Mist Ethereum錢(qián)包創(chuàng)建一個(gè)賬戶(hù)不是一件容易的事情。實(shí)際上喇勋,您的第一個(gè)帳戶(hù)是在安裝應(yīng)用程序期間創(chuàng)建的缨该。
1) 為您的操作系統(tǒng)下載最新版本的錢(qián)包應(yīng)用程序。打開(kāi)電子錢(qián)包應(yīng)用程序?qū)㈤_(kāi)始在計(jì)算機(jī)上同步以太坊區(qū)塊鏈的完整副本川背,因?yàn)槟鷮?shí)際上將運(yùn)行完整的geth節(jié)點(diǎn)贰拿。
2) 解壓下載的文件夾并運(yùn)行Ethereum-Wallet可執(zhí)行文件。
3) 等待區(qū)塊鏈完全同步熄云,然后按照屏幕上的說(shuō)明操作膨更,并創(chuàng)建您的第一個(gè)帳戶(hù)。
4) 當(dāng)您第一次啟動(dòng)Mist錢(qián)包時(shí)缴允,您會(huì)看到您在安裝過(guò)程中創(chuàng)建的帳戶(hù)荚守。默認(rèn)情況下,它將被命名為MAIN ACCOUNT(ETHERBASE)练般。
5.?創(chuàng)建額外的帳戶(hù)很容易;只需點(diǎn)擊應(yīng)用程序主屏幕上的添加帳戶(hù)矗漾,然后輸入所需的密碼即可。
在Mist里創(chuàng)建多重簽名的錢(qián)包
Mist錢(qián)包有一個(gè)多用簽名機(jī)制, 用以保障錢(qián)包的安全薄料。使用多重簽名(multisig)的好處是敞贡,它需要從多個(gè)帳戶(hù)授權(quán)才能從余額中提取更多金額。在創(chuàng)建多重錢(qián)包之前摄职,您需要?jiǎng)?chuàng)建多個(gè)帳戶(hù)誊役。
在Mist中創(chuàng)建賬戶(hù)文件非常簡(jiǎn)單获列。在“帳戶(hù)”部分,點(diǎn)擊“添加帳戶(hù)”蛔垢。選擇一個(gè)強(qiáng)大且易于記憶的密碼(記住沒(méi)有密碼恢復(fù)選項(xiàng))击孩,確認(rèn)它,然后創(chuàng)建您的帳戶(hù)啦桌。創(chuàng)建至少2個(gè)帳戶(hù)溯壶。如果您愿意,可以在運(yùn)行Mist的單獨(dú)計(jì)算機(jī)上創(chuàng)建輔助帳戶(hù)(理論上甫男,通過(guò)這種方式使您的多重身份更安全)且改。創(chuàng)建多重錢(qián)包時(shí),您只需要輔助帳戶(hù)的公鑰(您的存款地址)(復(fù)制/粘貼它們板驳,千萬(wàn)不要手動(dòng)輸入)又跛。您的主帳戶(hù)將需要?jiǎng)?chuàng)建多種簽名的錢(qián)包合約,因此它必須位于您創(chuàng)建該錢(qián)包的計(jì)算機(jī)上若治。
您現(xiàn)在應(yīng)該為您的主帳戶(hù)添加大約不低于0.02 ETH(您將開(kāi)始創(chuàng)建多重簽名錢(qián)包的帳戶(hù))慨蓝。創(chuàng)建多重簽名錢(qián)包合同時(shí),這是交易費(fèi)用所必需的端幼。另外還需要1個(gè)ETH(或更多)礼烈,因?yàn)镸ist目前要求這樣做才能確保錢(qián)包合同交易有足夠的費(fèi)用來(lái)正確執(zhí)行...所以對(duì)于初學(xué)者來(lái)說(shuō),總計(jì)不低于1.02 ETH婆跑。
在創(chuàng)建時(shí)此熬,您將輸入您附加到此錢(qián)包的所有帳戶(hù)的完整地址。在進(jìn)入Mist中每個(gè)帳戶(hù)的詳細(xì)信息頁(yè)面滑进,并從右側(cè)按鈕列中選擇“復(fù)制地址”后犀忱,我建議將每個(gè)地址復(fù)制/粘貼到純文本編輯器(記事本/ kedit / etc)中。千萬(wàn)不要手動(dòng)輸入地址扶关,否則冒著拼寫(xiě)錯(cuò)誤的風(fēng)險(xiǎn)阴汇,并且可能會(huì)失去將余額發(fā)送到錯(cuò)誤地址的交易。
我們現(xiàn)在準(zhǔn)備創(chuàng)建multisig錢(qián)包节槐。在“電子錢(qián)包合同”下搀庶,選擇“添加錢(qián)包合同”。給它一個(gè)名字铜异,選擇主帳戶(hù)所有者地来,然后選擇'多重簽名錢(qián)包合同'。您會(huì)看到類(lèi)似這樣的內(nèi)容:
“這是由X所有者控制的聯(lián)合賬戶(hù)熙掺。您每天最多可以發(fā)送X以太未斑。任何超過(guò)該限額的交易都需要X業(yè)主的確認(rèn)”壹ǎ“
設(shè)置您連接到此multisig錢(qián)包的任何數(shù)量的所有者(賬戶(hù))蜡秽,無(wú)論您想要每日提款限額(只需要一個(gè)賬戶(hù)提取該金額)府阀,以及需要多少所有者(賬戶(hù))才能批準(zhǔn)任何提款金額超過(guò)每日限額。
現(xiàn)在添加您之前復(fù)制/粘貼到您的文本編輯器中的帳戶(hù)的地址芽突,確認(rèn)您的所有設(shè)置都是正確的试浙,然后點(diǎn)擊底部的“創(chuàng)建”坦康。然后您需要輸入密碼才能發(fā)送交易辽旋。在“電子錢(qián)包合同”部分,它應(yīng)該顯示您的新錢(qián)包锡凝,并說(shuō)'創(chuàng)建'挟秤。
當(dāng)錢(qián)包創(chuàng)建完成后壹哺,您應(yīng)該在屏幕上看到您的合同地址。選擇整個(gè)地址艘刚,將其復(fù)制/粘貼到文本編輯器中的新文本文件中管宵,然后將該文本文件保存為“Ethereum-Wallet-Address.txt”或任何您想命名的文件。
現(xiàn)在您只需備份“Ethereum-Wallet-Address.txt”文件攀甚,就像備份您的帳戶(hù)文件一樣箩朴,然后您就可以使用此地址加載帶有ETH的新multisig錢(qián)包。
如果您要從備份中恢復(fù)秋度,只需將'Ethereum -keystore-backup'文件夾中的文件復(fù)制到本演練的第一部分中提到的'keystore'文件夾中即可炸庞。僅供參考,您可能需要?jiǎng)?chuàng)建'keystore'文件夾(如果它是之前從未安裝過(guò)的機(jī)器上的全新安裝的Mist)(第一次創(chuàng)建帳戶(hù)時(shí)是創(chuàng)建此文件夾時(shí))荚斯。至于恢復(fù)多重錢(qián)包埠居,而不是像我們之前在創(chuàng)建時(shí)那樣選擇“多簽名錢(qián)包合同”,我們只需選擇“導(dǎo)入錢(qián)包”鲸拥。
故障排除:
1) Mist不會(huì)同步。有效的解決方案之一就是將PC硬件時(shí)鐘與NTP服務(wù)器同步僧免,因此時(shí)間完全正確刑赶,然后重新啟動(dòng)。
2) Mist同步后開(kāi)始懂衩,但是是一個(gè)空白的白色屏幕撞叨。你有可能在基于Linux的操作系統(tǒng)(Ubuntu,Linux Mint等)上運(yùn)行“xorg”視頻驅(qū)動(dòng)程序浊洞。嘗試安裝制造商的視頻驅(qū)動(dòng)程序牵敷。
3) “密碼錯(cuò)誤”通知。這在目前的Mist版本上似乎是錯(cuò)誤的通知法希。重新啟動(dòng)Mist枷餐,問(wèn)題應(yīng)該消失(如果你確實(shí)輸入了正確的密碼)。
使用Eth
與使用geth可用的密鑰管理相關(guān)的每個(gè)選項(xiàng)都可以在eth中以相同的方式使用苫亦。
以下是“帳戶(hù)”相關(guān)選項(xiàng):
這是"錢(qián)包"相關(guān)選項(xiàng):?
'賬戶(hù)導(dǎo)入'選項(xiàng)只能用于導(dǎo)入通用密鑰文件毛肋。 “錢(qián)包導(dǎo)入”選項(xiàng)只能用于導(dǎo)入預(yù)售錢(qián)包怨咪。
也可以從集成控制臺(tái)訪(fǎng)問(wèn)密鑰管理(使用內(nèi)置控制臺(tái)或geth attach):
導(dǎo)入預(yù)售(presale)錢(qián)包
使用Mist錢(qián)包
使用GUI Mist 錢(qián)包導(dǎo)入預(yù)售錢(qián)包非常簡(jiǎn)單。事實(shí)上润匙,在安裝應(yīng)用程序的過(guò)程中诗眨,系統(tǒng)會(huì)詢(xún)問(wèn)您是否要導(dǎo)入預(yù)售錢(qián)包。
Mist錢(qián)包是beta軟件孕讳。 謹(jǐn)防和使用它需要您自擔(dān)風(fēng)險(xiǎn)匠楚。
只需將您的.json預(yù)售錢(qián)包文件拖放到指定區(qū)域,然后輸入密碼即可導(dǎo)入您的預(yù)售帳戶(hù)厂财。
如果您在安裝應(yīng)用程序時(shí)選擇不導(dǎo)入預(yù)售錢(qián)包芋簿,則可以隨時(shí)通過(guò)選擇應(yīng)用程序菜單欄中的帳戶(hù)菜單,然后選擇導(dǎo)入預(yù)售帳戶(hù)來(lái)導(dǎo)入它蟀苛。
Mist錢(qián)包仍在積極開(kāi)發(fā)中益咬,因此上述步驟的細(xì)節(jié)可能隨升級(jí)而改變。
使用geth
如果您有g(shù)eth的獨(dú)立安裝帜平,則通過(guò)在終端中執(zhí)行以下命令來(lái)導(dǎo)入預(yù)售錢(qián)包:
系統(tǒng)會(huì)提示您輸入密碼幽告。
更新賬戶(hù)
您可以將密鑰文件升級(jí)到最新的密鑰文件格式和/或升級(jí)密鑰文件密碼。
使用geth
您可以使用update子命令以帳戶(hù)地址或索引作為參數(shù)更新命令行上的現(xiàn)有帳戶(hù)裆甩。請(qǐng)記住冗锁,帳戶(hù)索引反映了創(chuàng)建的順序(包含創(chuàng)建時(shí)間的密鑰文件名的字典順序)。
例如:?
該帳戶(hù)以加密格式保存在最新版本中嗤栓,系統(tǒng)會(huì)提示您輸入密碼以解鎖帳戶(hù)冻河,而另一個(gè)帳戶(hù)則保存更新的文件≤运В可以使用相同的命令將不推薦格式的帳戶(hù)遷移到最新的格式叨叙,也可以更改帳戶(hù)的密碼。
對(duì)于非交互式使用堪澎,可以使用--password標(biāo)志指定密碼:
由于只能輸入一個(gè)密碼擂错,所以只能進(jìn)行格式更新,只能以交互方式更改密碼樱蛤。
帳戶(hù)更新具有可能會(huì)改變帳戶(hù)順序的副作用钮呀。 成功更新后,該相同密鑰的所有以前的格式/版本將被刪除昨凡!
備份和恢復(fù)賬戶(hù)
手動(dòng)備份/恢復(fù)
您必須擁有帳戶(hù)的密鑰文件才能發(fā)送該帳戶(hù)的任何交易爽醋。密鑰文件位于您以太坊節(jié)點(diǎn)數(shù)據(jù)目錄的密鑰庫(kù)子目錄中。默認(rèn)數(shù)據(jù)目錄位置是平臺(tái)特定的
windows:?C:\Users\username\%appdata%\Roaming\Ethereum\keystore
Linux:?~/.ethereum/keystore
Mac:?~/Library/Ethereum/keystore
要備份密鑰文件(帳戶(hù))便脊,請(qǐng)復(fù)制密鑰庫(kù)子目錄中的單個(gè)密鑰文件或復(fù)制整個(gè)密鑰庫(kù)文件夾蚂四。
要還原您的密鑰文件(帳戶(hù)),請(qǐng)將密鑰文件復(fù)制回原始位置的密鑰存儲(chǔ)子目錄中。
導(dǎo)入非加密私有key
geth支持導(dǎo)入未加密的私鑰
該命令從純文本文件中導(dǎo)入未加密的私鑰并創(chuàng)建一個(gè)新帳戶(hù)并打印該地址证杭。假設(shè)密鑰文件包含一個(gè)未加密的私鑰田度,作為編碼為十六進(jìn)制的規(guī)范EC原始字節(jié)。該帳戶(hù)以加密格式保存解愤,系統(tǒng)會(huì)提示您輸入密碼镇饺。您必須記住此密碼才能在未來(lái)解鎖您的帳戶(hù)。
一個(gè)數(shù)據(jù)目錄被指定的例子送讲。如果未使用--datadir標(biāo)志奸笤,則將在默認(rèn)數(shù)據(jù)目錄中創(chuàng)建新帳戶(hù),即密鑰文件將被放置在數(shù)據(jù)目錄的密鑰存儲(chǔ)子目錄中哼鬓。
對(duì)于非交互式使用监右,可以使用--password標(biāo)志指定密碼:
由于您可以直接將您的加密賬戶(hù)復(fù)制到另一個(gè)以太坊實(shí)例,所以當(dāng)您在節(jié)點(diǎn)之間轉(zhuǎn)賬時(shí)异希,不需要此導(dǎo)入/導(dǎo)出機(jī)制健盒。
當(dāng)您將密鑰復(fù)制到現(xiàn)有節(jié)點(diǎn)的密鑰庫(kù)中時(shí),您習(xí)慣使用的帳戶(hù)順序可能會(huì)發(fā)生變化称簿。 因此扣癣,請(qǐng)確保您不要依賴(lài)帳戶(hù)順序或仔細(xì)檢查并更新腳本中使用的索引。