昨天,有位大佬問了一個有趣的問題:EOS轉賬一定要賬號嗎?使用者對映時,沒並有賬號,EOS主網上線時賬號哪裡來?
帶著這個問題,我研究了一下,請往下看。
快照工具
對映就是把以太地址和以後要用的EOS地址對應起來,並且把EOS數量記錄下來。EOS官方提供了快照程式,見 https://github.com/EOSIO/genesis 。該程式會生成一份csv檔案,包含所有滿足快照條件的賬號。
賬號如何生成
我們先看看快照內容:https://raw.githubusercontent.com/EOSIO/genesis/master/snapshot.csv
每一行,除了以太地址,EOS地址,EOS餘額,還有賬號名稱。說明快照過程中,生成了賬號名稱。官方的工具是如何產生賬號名稱的呢?奧秘藏見這個檔案裡 tools/snapshot/tasks/misc/account-names.js。
set_account_name方法,生成了account_name,也就是賬號名稱。
看第2行的生成方法:base32.encode(wallet.deterministic_index.toString),deterministic_index是最多11位的整數。base32.encode方法將一定的規則進行編碼,如果瞭解base32,你會發現該結果將少於12位。
EOS剛開始要求賬號名稱一定是12位,如果少於12位,怎麼辦?用"genesis11111"這12個字元補齊。比如bean只有4位,那麼需要再補8個字元,就會變成 beangenesis1。
細心的讀者,可能會發現上面截圖的賬號名稱不符合"genesis11111"的補齊規則,是的,這個快照檔案是別的工作生成的,計算賬號名稱的方法不一樣,補齊規則也不一樣。
賬號只能由其它賬號生成
EOS生成賬號的命令為 cleos create account xxx -p other_account,所以賬號只能由其它賬號生成。第一個賬號eosio由系統預設生成。由於賬號名稱不能更改,因此,如果不想要快照時生成的名稱,只能重新生成一個新的。
進入快照的條件 - 滿足最小余額(1個EOS)
這段話的意思是:推薦設定該引數為1,因為一個需要抵押至少1個EOS給頻寬(這個值是否會改,目前還不知道),賬號才可以正常使用。同時,該引數還可以減少鏈上賬號數量(prevents dust這句求大牛翻譯)。
賬號命名規則,來自Dawn4.1
帳戶名稱只限於12個字元,沒有小數點。 這是為了阻止名字搶注。 Dan正在透過GitHub (#3189)提出有關名稱分配方案,並在徵求社羣反饋意見。這個提議如下:
1. 只允許賬號 com 註冊 xyz.com。一個賬號可以建立子賬號,類似於域名可以建立二級域名。
2. 每天最多銷售一個高階名稱(不含小數點),價高者得。
總結一下:
1. 餘額超過1個EOS的地址才會進入快照
2. 快照會生成一個12個字元(字母和1-5)的賬戶名稱
3. 賬號可以生成其它賬號
4. 高階賬號名稱很可能需要拍賣
如何獲得想要的EOS賬號?要麼是12位字元,要不等著搶拍。當然,還有可能BM改變主意了,有其它辦法。