3.7.1 賬戶、錢包和密鑰的關(guān)系

如圖所示,右邊是EOS Wallet錢包,里面只存放私鑰及由該私鑰產(chǎn)生的公鑰(公私鑰對(duì)),而且錢包有一個(gè)密碼,需要輸入密碼才能解鎖錢包,讀取私鑰。錢包和賬戶沒(méi)有直接的關(guān)系左邊是EOS Account賬戶,可以把它看成是一個(gè)保險(xiǎn)箱,里面有EOS Token以及智能合約,而需要轉(zhuǎn)移里面的EOS Token(或者執(zhí)行智能合約),你需要錢包中對(duì)應(yīng)的私鑰來(lái)解鎖這個(gè)保險(xiǎn)箱。
創(chuàng)建一個(gè)賬戶的命令是:cleos create account {創(chuàng)建者賬戶名} {新的賬戶名} 公鑰1 公鑰2
其中{創(chuàng)建者賬戶名}是為這個(gè)創(chuàng)建動(dòng)作支付EOS的賬戶,公鑰1和公鑰2分別是兩個(gè)不同權(quán)限的密鑰對(duì)的公鑰。

所以把權(quán)限系統(tǒng)加上,圖就變成上面這個(gè)樣子,一個(gè)保險(xiǎn)柜有兩個(gè)開關(guān),不過(guò)打開后可以進(jìn)行操作的權(quán)限是不同的。2個(gè)私鑰可以存在一個(gè)錢包里,也可以如上圖所示存在不同的錢包里(由不同的人控制)。
owner權(quán)限是賬戶的最高權(quán)限,可以修改其它權(quán)限。
active權(quán)限默認(rèn)可以進(jìn)行轉(zhuǎn)賬等操作,但不能修改權(quán)限。
每個(gè)保險(xiǎn)箱有一個(gè)名字,就是EOS賬戶名。
轉(zhuǎn)賬和智能合約等操作的執(zhí)行都是在Account這個(gè)保險(xiǎn)箱進(jìn)行,所以賬戶名在EOS世界其實(shí)是以太坊的地址。與以太坊不同,EOS的賬戶名不再是一串很長(zhǎng)很長(zhǎng)的地址,而是一個(gè)你可以自定義的英文字母+數(shù)字(12345)+符號(hào)(.),最長(zhǎng)12位,最短1位,全局唯一,先到先得,注冊(cè)費(fèi)用還沒(méi)公布,但據(jù)最新的消息,長(zhǎng)度不同注冊(cè)需要的EOS也不一樣。
3.7.2 賬戶、錢包、token、合約、活動(dòng)、權(quán)限、權(quán)重、閥值的關(guān)系

1、創(chuàng)建帳戶,首先要?jiǎng)?chuàng)建帳戶的公私鑰對(duì),公私鑰對(duì)可以代表對(duì)應(yīng)該賬號(hào)下的某個(gè)權(quán)限的權(quán)重。帳戶使用公私鑰對(duì)事物進(jìn)行簽名操作,讓區(qū)塊鏈節(jié)點(diǎn)確定事物中的活動(dòng)是由某帳戶的哪個(gè)權(quán)限授權(quán)的。
2、帳戶可以部署、加載合約,所以合約是屬于某個(gè)帳戶的,在EOS系統(tǒng)中1個(gè)帳戶只能有一個(gè)合約。
3、Token是由帳戶創(chuàng)建和發(fā)行的,發(fā)行的Token屬于帳戶。帳戶擁有Token,并且可以通過(guò)eosio.token合約中定義的活動(dòng)轉(zhuǎn)賬給其他賬戶。
4、帳戶的公私鑰對(duì)是存放在錢包中,錢包僅僅是一個(gè)有名字有密碼的公私鑰對(duì)的容器。
5、一個(gè)實(shí)際用戶可以創(chuàng)建多個(gè)帳戶,用戶通過(guò)錢包中的公私鑰對(duì)管理對(duì)哪個(gè)賬戶的哪個(gè)權(quán)限授權(quán)用于執(zhí)行某個(gè)合約中的動(dòng)作。
6、一個(gè)用戶可以擁有多個(gè)錢包,賬戶和錢包沒(méi)有直接的所屬關(guān)系只有使用關(guān)系即某個(gè)賬戶使用了某個(gè)錢包存放了自己的公私鑰對(duì)。
7、一個(gè)keosd錢包服務(wù)可以管理多個(gè)命名錢包,用戶可以通過(guò)錢包服務(wù)提取錢包中的公私鑰對(duì)其發(fā)起的事務(wù)進(jìn)行簽名。
8、一個(gè)用戶可以開啟一個(gè)或者多個(gè)keosd錢包服務(wù)。
9、一個(gè)錢包中可以存放零個(gè)或者多個(gè)密鑰對(duì)。
10、一個(gè)帳戶可以擁有多種權(quán)限。
11、每一個(gè)權(quán)限都有一個(gè)使用該權(quán)限的閥值。
12、每一個(gè)權(quán)限都可以由一對(duì)或者多對(duì)密鑰及對(duì)應(yīng)的權(quán)重來(lái)控制權(quán)限的使用。
13、每一個(gè)密鑰都會(huì)有使用某權(quán)限的權(quán)重,當(dāng)擁有的密鑰對(duì)應(yīng)的權(quán)重累計(jì)大于等于閥值即可使用該權(quán)限。
14、每個(gè)對(duì)某個(gè)賬戶的某個(gè)活動(dòng)都會(huì)需要對(duì)應(yīng)的賬戶的權(quán)限使用授權(quán)。
15、一個(gè)合約中可以定義多種不同的活動(dòng),賬戶調(diào)用對(duì)應(yīng)的合約來(lái)執(zhí)行不同活動(dòng)。
3.7.3 總結(jié)
綜上,我們通過(guò)一些列問(wèn)題的問(wèn)答來(lái)理解賬戶、錢包、token、合約、活動(dòng)、權(quán)限在EOS中的作用。
問(wèn)答如下:
1、EOS系統(tǒng)中的主體是什么?答:賬戶
2、有了賬戶能做什么?答:做事務(wù)
3、怎么做事務(wù)?答:通過(guò)合約
4、合約包含哪些依賴元素?答:(1)賬戶 (2)權(quán)限 (3)token
5、權(quán)限是什么?怎么管理?答:公私鑰對(duì),通過(guò)錢包管理
6、什么是token,怎么使用?? 答:做事物占用了系統(tǒng)資源,需要花費(fèi)gas(token)。
為了更好理解上述概念,我們不妨舉個(gè)生活中的例子:
生活中有這樣的三口之家,爸爸、媽媽、小孩
- 他們所居住的房間我們看作一個(gè)賬戶,房間都有一個(gè)唯一的且可被人為識(shí)別的地址(賬戶名稱),例如:某某小區(qū)12#1201
- 房間里有很多設(shè)施設(shè)備(電視、電腦、空調(diào).......),我們把不同設(shè)備具有的功能看作智能合約里定義的活動(dòng)功能
- 如果小孩想看電視(執(zhí)行合約的動(dòng)作),需要進(jìn)入房間的授權(quán)(賬號(hào)權(quán)限),能不能進(jìn)入房間由是否持有爸爸或者媽媽的鑰匙(公私密鑰)決定。
- 爸爸、媽媽的鑰匙存放在各自的有密碼的鑰匙包(錢包)里。
- 小孩在得到爸爸或者媽媽的要鑰匙后(授權(quán)),就可以打開電視并收看(執(zhí)行合約)。
- 看電視需要繳納電費(fèi)(token),電費(fèi)是按照房間地址(賬號(hào)名稱)收取的。
鏈接
3.7 錢包、帳戶、token、智能合約、action、權(quán)限、權(quán)重和閥值之間關(guān)系-wx5ca1790914ac4的博客-51CTO博客
3.7 錢包、帳戶、token、智能合約、action、權(quán)限、權(quán)重和閥值之間關(guān)系 - arm_snow的博客 - CSDN博客