EOS 智能合约最佳安全开发指南

原文:https://github.com/slowmist/eos-smart-contract-security-best-practices

这篇文档旨在为 EOS 智能合约开发人员提供一些智能合约的安全准则已知漏洞分析。我们邀请社区对该文档提出修改或完善建议,欢迎各种合并请求(Pull Request)。若有相关的文章或博客的发表,也请将其加入到参考文献中。

目录

安全准则

EOS 处于早期阶段并且有很强的实验性质。因此,随着新的 bug 和安全漏洞被发现,新的功能不断被开发出来,其面临的安全威胁也是不断变化的。这篇文章对于开发人员编写安全的智能合约来说只是个开始。

开发智能合约需要一个全新的工程思维,它不同于我们以往项目的开发。因为它犯错的代价是巨大的,很难像中心化类型的软件那样,打上补丁就可以弥补损失。就像直接给硬件编程或金融服务类软件开发,相比于 Web 开发和移动开发都有更大的挑战。因此,仅仅防范已知的漏洞是不够的,还需要学习新的开发理念:

  • 对可能的错误有所准备。任何有意义的智能合约或多或少都存在错误,因此你的代码必须能够正确的处理出现的 bug 和漏洞。需始终保证以下规则:
    • 当智能合约出现错误时,停止合约
    • 管理账户的资金风险,如限制(转账)速率、最大(转账)额度
    • 有效的途径来进行 bug 修复和功能提升
  • 谨慎发布智能合约。 尽量在正式发布智能合约之前发现并修复可能的 bug。
    • 对智能合约进行彻底的测试,并在任何新的攻击手法被发现后及时的测试(包括已经发布的合约)
    • 从 alpha 版本在麒麟测试网(CryptoKylin-Testnet)上发布开始便邀请专业安全审计机构进行审计,并提供漏洞赏金计划(Bug Bounty)
    • 阶段性发布,每个阶段都提供足够的测试
  • 保持智能合约的简洁。复杂会增加出错的风险。
    • 确保智能合约逻辑简洁
    • 确保合约和函数模块化
    • 使用已经被广泛使用的合约或工具(比如,不要自己写一个随机数生成器)
    • 条件允许的话,清晰明了比性能更重要
    • 只在你系统的去中心化部分使用区块链
  • 保持更新。通过公开资源来确保获取到最新的安全进展。
    • 在任何新的漏洞被发现时检查你的智能合约
    • 尽可能快的将使用到的库或者工具更新到最新
    • 使用最新的安全技术
  • 清楚区块链的特性。尽管你先前所拥有的编程经验同样适用于智能合约开发,但这里仍然有些陷阱你需要留意:
    • require_recipient(account_name name) 可触发通知,调用name合约中的同名函数,官方文档

已知漏洞

数值溢出

在进行算术运算时,未进行边界检查可能导致数值上下溢,引起智能合约用户资产受损。

漏洞示例

存在缺陷的代码:batchTransfer 批量转账

typedef struct acnts {
    account_name name0;
    account_name name1;
    account_name name2;
    account_name name3;
} account_names;

void transfer(symbol_name symbol, account_name from, account_names to, uint64_t balance)
{
    require_auth(from);
    account fromaccount;

    require_recipient(from);
    require_recipient(to.name0);
    require_recipient(to.name1);
    require_recipient(to.name2);
    require_recipient(to.name3);

    eosio_assert(is_balance_within_range(balance), "invalid balance");
    eosio_assert(balance > 0, "must transfer positive balance");

    uint64_t amount = balance * 4; //乘法溢出

    int itr = db_find_i64(_self, symbol, N(table), from);
    eosio_assert(itr >= 0, "Sub-- wrong name");
    db_get_i64(itr, &fromaccount, (account));
    eosio_assert(fromaccount.balance >= amount, "overdrawn balance");

    sub_balance(symbol, from, amount);

    add_balance(symbol, to.name0, balance);
    add_balance(symbol, to.name1, balance);
    add_balance(symbol, to.name2, balance);
    add_balance(symbol, to.name3, balance);
}

防御方法

尽可能使用 asset 结构体进行运算,而不是把 balance 提取出来进行运算。

真实案例

权限校验

在进行相关操作时,应严格判断函数入参和实际调用者是否一致,使用require_auth进行校验。

漏洞示例

存在缺陷的代码:transfer 转账

void token::transfer( account_name from,
                      account_name to,
                      asset        quantity,
                      string       memo )
{
    eosio_assert( from != to, "cannot transfer to self" );
    eosio_assert( is_account( to ), "to account does not exist");
    auto sym = quantity.symbol.name();
    stats statstable( _self, sym );
    const auto& st = statstable.get( sym );

    require_recipient( from );
    require_recipient( to );

    eosio_assert( quantity.is_valid(), "invalid quantity" );
    eosio_assert( quantity.amount > 0, "must transfer positive quantity" );
    eosio_assert( quantity.symbol == st.supply.symbol, "symbol precision mismatch" );
    eosio_assert( memo.size() <= 256, "memo has more than 256 bytes" );

    auto payer = has_auth( to ) ? to : from;

    sub_balance( from, quantity );
    add_balance( to, quantity, payer );
}

防御方法

使用require_auth( from )校验资产转出账户与调用账户是否一致。

真实案例

暂无

apply 校验

在处理合约调用时,应确保每个 action 与 code 均满足关联要求。

漏洞示例

存在缺陷的代码:

// extend from EOSIO_ABI
#define EOSIO_ABI_EX( TYPE, MEMBERS ) \
extern "C" { \
   void apply( uint64_t receiver, uint64_t code, uint64_t action ) { \
      auto self = receiver; \
      if( action == N(onerror)) { \
         /* onerror is only valid if it is for the "eosio" code account and authorized by "eosio"'s "active permission */ \
         eosio_assert(code == N(eosio), "onerror action's are only valid from the \"eosio\" system account"); \
      } \
      if( code == self || code == N(eosio.token) || action == N(onerror) ) { \
         TYPE thiscontract( self ); \
         switch( action ) { \
            EOSIO_API( TYPE, MEMBERS ) \
         } \
         /* does not allow destructor of thiscontract to run: eosio_exit(0); */ \
      } \
   } \
}

EOSIO_ABI_EX(eosio::charity, (hi)(transfer))

防御方法

使用

if( ((code == self  && action != N(transfer) ) || (code == N(eosio.token) && action == N(transfer)) || action == N(onerror)) ) { }

绑定每个关键 action 与 code 是否满足要求,避免异常调用。

真实案例

参考文献

致谢

  • 麒麟工作组
  • eosiofans
  • 荆凯(EOS42)
  • 星魂
  • 岛娘
  • 赵余(EOSLaoMao)
  • 字符

在麦子钱包发布了一个叫【EOS子弹消息】的DAPP

WechatIMG6301

花了1小时基于麦子钱包的 API 做的一个 DAPP

DAPP介绍

把一段内容写在备注里面,通过一次转账发送给多个好友,每条消息通过给好友转 0.0001 EOS 完成。

为什么做这个DAPP?

之前看到不少机构在通过这种方式做推广,普通用户还没有比较好用的工具,所以就在麦子上做了一个。
另外这种方式挺“区块链”的,第一、相比短信推广它的费用更低;第二、它的收益方是接受消息的用户而非中间商。

对接麦子钱包的心得体会

简单研究了一下麦子钱包的API,发现可以基于现成开源的【小协议】代码做修改,前端都没自己写,还是很方便的。

主要用到 EOS 支持一个 transaction 可以包含多个 action 的特点,具体代码已开源,有兴趣的可以访问 https://github.com/MediShares/mds-eosjs/tree/master/eos/sample06

WechatIMG2471

如何进行自动的延迟EOS转账

transaction 里面有一个 delay_sec 的参数,默认是0,可以通过自定义实现延迟EOS转账。

具体代码可以查看 contracts/eosiolib/transaction.hpp

我们通过写一个新的合约,实现延时转账的 send 功能


void send(account_name from, account_name to, asset amount, string memo, uint64_t delay) {
eosio::transaction t{};
t.actions.emplace_back(
eosio::permission_level(from, N(active)), // with `from@active` permission
N(eosio.token), // You're sending this to `eosio.token`
N(transfer),   // to their `transfer` action
std::make_tuple(from, to, amount, memo));  // with the appropriate args
t.delay_sec = delay; // Set the delay
t.send(eosio::string_to_name(memo.c_str()), from); // Send the transaction with some ID derived from the memo
}
};

最后需要记得对发送者账户进行权限设置,让该合约有权限进行转账操作。

$ cleos set account permission <sender-account> active '{"threshold": 1,"keys": [{"key": "<sender-pubkey>","weight": 1}],"accounts": [{"permission":{"actor":"<contract-account>","permission":"eosio.code"},"weight":1}]}' owner -p <sender-account>

参考:https://eosio.stackexchange.com/questions/1900/how-to-transfer-eos-after-a-particular-delay

EOS合约权限(二)- 如何检查 EOS 合约的安全性

开源,并能够验证开源代码与链上部署代码一致

比如 EOS.win 的代码就能够在 EOSpark 上查到,并已被 EOSpark 验证与链上部署代码一致
https://eospark.com/MainNet/contract/eosluckygame

慢雾科技也推出 EOS 合约验证平台,也可以做相应的查询和确认
https://eos.slowmist.io

代码安全性

EOS 代码安全性审计需要比较专业的背景知识,在合约层面一般的问题包括数值溢出漏洞、代码逻辑错误等。

权限

合约账户的权限能够控制对账户内金额转账,以及对合约进行升级,是非常重要的安全环节。目前主要有三种方法对权限进行限制。

方法一(低安全):多重签名账户

通过EOS账户体系的Weight和Threshold控制账户权限,实现由多人共同管理一个账户。假设该账户owner权限由5个不同的公钥控制,每个公钥的Weight为1,Threshold为3,表示需要这5个人中的3人进行签名,才能转账或修改合约代码,从而提升账户安全性。

参看 eosio.prods 的权限设置,就是使用这种方式 https://eospark.com/MainNet/account/eosio.prods
当然 eosio.prods 的参与者是所有当选的超级节点,公信力更高。

方法二(高安全):移交智能合约权限

修改合约权限为 eosio.prods 账户,意味着将修改合约的权限交给21个超级节点,如果需要转移资金或修改合约,需要申请节点仲裁。
使用 updateauth 命令可以进行权限的修改:

$ cleos push action eosio updateauth '{"account": "eosio", "permission": "owner", "parent": "", "auth": {"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio.prods", "permission": "active"}}]}}' -p eosio@owner
$ cleos push action eosio updateauth '{"account": "eosio", "permission": "active", "parent": "owner", "auth": {"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio.prods", "permission": "active"}}]}}' -p eosio@active

参看 eosio 的权限设置,就是使用这种方式 https://eospark.com/MainNet/account/eosio

方法三(高安全):设置账户权限到一个黑洞公钥

将owner和active权限设置为一个没有人知道私钥的公钥地址(黑洞),即可保证没有人可以获得账户的实际控制权。比如 EOS1111111111111111111111111111111114T1Anm,它的公钥是0值加检验数据生成,任何人都不知道它的私钥。

以下一些最近的热门游戏合约,供大家学习研究用:

狼人
https://eosflare.io/account/eosfoiowolfs

ITE
https://eosflare.io/account/itedeathstar

EOS Bet
https://eostracker.io/accounts/eosbetdice11

EOS核心仲裁庭收费标准

请注意: 本文由EMAC(EOS 华语治理社区)仲裁候选人Achilles原创翻译,保留该声明即可转载。

原文来源:https://steemit.com/ecaf/@ecaf/ecaf-s-fee-schedule

EOS核心仲裁庭费用表

本费用表适用于在EOS核心仲裁庭(ECAF)的争议解决机制(RDR)之下进行的仲裁,详情请参见此处https://eoscorearbitration.io/home/governance/

本费用表将会不定期的修订。ECAF的费用将以EOS的形式收取。如果需要从法币转换为EOS,操作过程在本备忘录末尾的货币转换部分做了详细说明。

该收费制度分为两部分,如下:

1.不可退还的诉讼费:在提交案件时支付。

2.仲裁费用:在案件结案时支付,用于补偿仲裁员、案件管理员、仲裁庭工作人员、外部专家等在案件上花费的时间成本。

注:费用与仲裁员针对潜在的判决可能要求当事人作为担保缴纳的任何保证金是分开的。

诉讼费:

当提交仲裁申请时,申请人应支付不可退还的诉讼费,该费用取决于索赔金额,具体如下:

ecaf001

仲裁费用

根据RDR第5.9节https://eoscorearbitration.io/home/governance/ :当仲裁程序开始,仲裁员将在切实可行的范围内尽快的提交一份仲裁费用的估算。

该仲裁费用将固定使用在仲裁上并且将被支付到本法庭账户。

这样的花费可能包括:

1、仲裁员的报酬;

2、仲裁员的花费;

3、专家和翻译的成本;

4、其它与本法庭审理该案件相关的报酬和花费;

5、当事人引发的合理的法律费用和其它花费;

6、由于消极的行动或行为被仲裁员征收的罚金;

7、任何与临时或者紧急救济通知有关的费用;

8、任何与请求合并仲裁有关的费用;

仲裁费用应参照仲裁庭成员的工作量计算。费率将取决于案件的具体情况,包括其复杂性和仲裁员可能具有的任何特殊资质。

费用将按小时收取,如下文(数字以美元报价,但以EOS收取,见后文关于货币兑换的部分)。适用的费率将取决于经验水平和本人对问题的专业程度。

ecaf002

保证金

仲裁员可指示当事人按其认为适当的比例和时间提交两种类型的保证金:

1.仲裁费用的预付款。根据ECAF规则,此类由当事人预付的保证金可以由ECAF用来支付任何此类仲裁费用(包括ECAF自己的费用和开支)。

2.占争议总金额一定百分比的保证金,作为对潜在判决的担保。

如果一方当事人未能或者拒绝支付任何款项到仲裁员指示的仲裁费用的账号,仲裁员可指示另一方或多方代为支付以允许仲裁继续进行(基于任何针对仲裁费用的仲裁令或裁定)。在这种情况下,代为付款的一方可以要求仲裁员给出一个命令或裁决,以便将该金额作为违约方的一笔立即到期债务和应付账款,来进行收回。

一方当事人申请紧急救济时,除了支付不可退还的诉讼费之外,还应支付相当于750美元的EOS的保证金(见后文关于货币兑换的说明)作为紧急救济程序的预付费用。如果没有同时支付诉讼费和保证金,ECAF将不会以紧急救济程序进行处理。

临时付款

随着仲裁程序的进行,由ECAF和仲裁员批准,部分保证金可能会不时地被释放,以覆盖仲裁费用的任何部分。

如果在需要临时付款时没有或欠缺资金,付款通知可以被提交给当事人直接进行付款。

支付方式

ECAF只会要求您将资金转入以下两个账户之一:

ecafeewallet
ecafescrowww

警告:不要将资金转移到任何其他帐户!任何向其他EOS帐户或交易所帐户付款的请求都是欺诈性请求! ECAF不会对转入其它账户的资金承担责任。

诉讼费的收取

申请人将通过ECAF官方网址的诉讼提交页面提起一个诉讼:https://eoscorearbitration.io/file-a-claim/

ECAF的案例经理随后将审核该诉讼。一旦案件经理确信不需要其他补充信息,他们将联系申请人提交诉讼费并附上适当的备注到以下地址:

Ecafeewallet

一旦成功收到诉讼费,该案件将被标记为已被仲裁庭接受,并等待分配给具体的一个仲裁员。

保证金的收取

当仲裁员被分配到一个案件时,他们将对仲裁费用进行初步估计。 (该估计将在结案时最终确定。)

仲裁员可以随后指示案件管理员将本案件的这些费用通知当事人。仲裁员还将确定是否需要要求一笔保证金来覆盖部分仲裁费用以及作为争议金额的保证金。

保证金将由案件经理负责征收,并将存入ECAF的托管账户,同时附有将提供给当事人的备注。保证金必须只能发送到以下这个账户:

Ecafescrowww

货币兑换

金额必须以EOS的形式支付。

如果任何到期金额没有以EOS为单位报价,则应按保证金和/或裁定的付款通知发出之日前一天的兑换率进行兑换。
EOS转换为美元使用的利率引用自CoinMarketCap https://coinmarketcap.com/currencies/eos/historical-data/ 在指定日期的收盘价。

如果该金额以美元以外的法定货币表示,则该金额应首先使用引用自OandA https://www.oanda.com/lang/cns/currency/converter/ 的在指定日期的平均卖出价,来转换为美元。然后再将其转换为如上所述的EOS单位。

全文完。

EOS合约权限(一)- FOMO3D和其山寨的EOS版本

fomo3d

FOMO3D这游戏超魔性,虽然它是以太坊的。

既然我们是EOS博客,先说说 F3D 和 EOS 可能的关联。

Fomo3D的好处很明显:可以帮助锁仓、增加用户数、拉升链上交易活跃度。尤其是EOS有这么多中国玩家,配合国人搏一把心态,加上EOS网络速度,很难不爆发。
而且已经有人做了一个受F3D启发的EOS DAPP出来了,虽然玩法上还不够精致 https://eosbutton.io/

不过EOS合约有个毛病,可以随时改,不像eth合约无法被人控制,就算上了EOS智能合约还是可以卷款跑路。

(2018/07/27 更新:上面的说法不准确,社群里面也收到不少反馈,准确来说EOS的权限设置很灵活,合约可以修改也可以不能修改,如果把合约账户的owner和active设为空,或者没人知道私钥的密钥,或者由超级节点多签的账户,则可以理解为合约将无法修改。另外一点就是升级合约只能改动代码逻辑部分,合约中数据是不能改的,如果要改还需要专门写Action,这是一个很大的话题。)

官网
http://exitscam.me/

官方教程 – 英文
https://fomo3d.hostedwiki.co/

ETH 合约地址
https://etherscan.io/address/0xa62142888aba8370742be823c1782d17a0389da1#code

团队自己直接开发了一个去中心交易所,可以随时买卖P3D:
https://exchange.powh.io/purchase-tokens

中文攻略
https://bihu.com/article/972045
https://bihu.com/article/988957
https://bihu.com/article/1005669

用麦子钱包APP玩FOMO3D说明
https://mp.weixin.qq.com/s/vbWvwLmZZxVFTMc1y2u12w
http://mathwallet.org/

彩蛋:
https://mp.weixin.qq.com/s?__biz=MzU1OTQ3MTI3Ng==&mid=2247484008&idx=1&sn=017ae144c895b80fe0cc7aec641c839d
https://mp.weixin.qq.com/s/FrwzjoP-8vUytEyXlpANpQ
https://mp.weixin.qq.com/s?__biz=MzU0ODg3Mjk2Mw==&mid=2247483809&idx=1&sn=6259ecc668d3e37d398b1371ad00075e

名词解释:
Exitscam – 逃离骗局
Bad advice – 坏的建议
Fomo3D – FOMO – Fear of missing out 害怕踏空
Key – 打开大奖的钥匙
P3D – PoWH3D – Proof of Weak Hands 缺乏投资信念、心理素质极差、特别怂的那类投资者

2018/07/27 更新:

事件后续,果然有个团队做了一个叫做狼人的EOS版本出来(网址:https://eosfo.io/),然后出了本文刚开始说到问题,目前正在由EMAC仲裁,EOS作为一条治理型区块链,真是一个很有趣的社会实验
该狼人EOS游戏被黑事件经过:
https://bihu.com/article/1007040

先写第一篇,介绍大概背景,感觉这个可以写一个系列。

EOS内存投机和资源模型

在美国呆了一周,回来发现整个群风向都变了,RAM投机这事真是毒害不浅

从技术角度,个人觉得有三个方向其实可以研究:

1 BM设计的跨链通讯的理论基础–Merkle证明已经得到证实。BM在Dawn3.0和Dawn4.0之间大幅修改了原先的跨链设计,这里面有很多机会可以研究
https://steemit.com/eos/@dan/inter-blockchain-communication-via-merkle-proofs-with-eos-io

2 Evolution团队这两天也对内存资源模型提出了自己的设计,Evolution会做一条和主网并行但交叉的主网,对主网进行扩容
https://hackernoon.com/solving-ram-speculation-property-rights-in-eos-631ca10c1970

3 EOS原力团队,作为国内的EOS团队,重写了EOS资源模型,使用了与ETH类似的手续费模式,其尝试和探索个人觉得是值得鼓励的。
https://www.eosforce.io/?lang=Cn

EOS内存价格翻5倍,用户如何参与?

EOS所有与合约数据存储相关的操作都需要购买内存。内存交易是通过EOS系统内建机制进行买卖,其核心算法基于Bancor协议,买的人多价格涨,卖的人多价格跌。

目前EOS内存价格已经从刚上线时0.017EOS/kb,上涨到0.085EOS/kb,翻了5倍。也就是说,如果你一周前买入100EOS的内存,但未使用,现在卖给系统的话可以收入500EOS。(更准确的说每次买入卖出其实都要收0.5%手续费)

如果整个EOS系统总内存数量不变的话,被购买的内存越多,意味着内存价格会越高(除非EOS节点扩容内存)。

WechatIMG2032

本文以麦子钱包为例,介绍如何买卖EOS内存

首先你需要下载,并导入EOS钱包
http://www.medishares.org/wallet/cn

然后切换到 【应用】界面

第一步,通过 EOS 内存价格趋势 应用查看当前行情,判断合适价格出手

WechatIMG2031

第二步,点击 购买 EOS 系统资源,里面可以看到当前内存价格,并进行买卖

WechatIMG2030

最后,不得不提醒大家 EOS 内存是可以由超级节点进行扩容的,扩容后意味着价格可能会大幅下跌,所以大幅投资还需谨慎。

Chintai 基于EOS的租赁项目

Chintai是一个全功能的通证租赁平台项目,它能够让EOS通证持有者通过通证租赁产生收入,并且能够为dApp开发人员提供相关重要资源。

什么是Chintai?

Chintai是一个全功能的通证租赁平台,可在让EOS持有者通过通证租赁产生收入的同时能够为dApp开发人员提供所需的关键资源。高性能的Chintai租赁引擎将允许即时算法执行市场交易,以创建一个繁荣的通证租赁平台。

Chintai将提供高度灵活的EOS池,让比起直接出售,更愿意将EOS通证租赁给开发人员的人可以有满意的渠道,并得到应有的收入。

根据Chintai官网的介绍,可以知道它的目的是为EOS区块链提供支持,丰富EOS生态系统,打造一个高性能、低费用的社区拥有通证租赁平台。

Chintai的主要特点将有:
1.强大的通证租赁市场;
2.快速的订单执行;
3.用户之间进行的交易无偿;
4.先进的订单式功能;
5.高速流动的带宽授权池;
6.安全和透明的仲裁可能性。

界面截图

Chintai的付款机制

Chintai的当前代币现货定价和付款机制将会通过一个价值转移工具“Chintai 代币”来实现。这个代币的供应量在最开始是为零的,当在每四分之一的周期结束时(每周),每一个租出去的EOS 代币将会释放一个Chintai 代币出来并交给出租人。在每个周期结束时(每月),承租人必需用EOS 代币来采购出租人全部的Chintai 代币。

Chintai的买入价将由承租人决定,主要的基础是先前周期的代币价格、预期的dApp项目与带宽。当然,在承租人违约时,他将面临声誉受损及仲裁。

需要注意的是,Chintai代币是不可转让的,并将会在回购过程中销毁。并且出租人绝不会丢失原来属于他们的EOS。

展望

作为一个租赁平台,Chintai希望有朝一日可以成为“EOS必备”,成为社区共同拥有的dApp解决方案的一份子,为此,Chintai做了许多努力。

1.开源化。Chintai是一个社区共有,并且共同开发、共同运行的dApp,所有代码的公开为项目的价格搜索引擎提供了全面的透明性。

2.不收取任何终端用户费。Chintai将由一个或多个区块生产员来赞助运行费及将来程序发布后的开发费用。

3.chintai将不仅仅会在EOS.IO的主链上登陆,依照核心团队的野心,Chintai将来会在很多其他的EOS区块链上建立公链和私链,然后被应用于各种应用和销售。将来Chintai将通过跨链通信与货币转送的技术,对这些链的货币提供需要的租赁服务。

4.除了以Chintai代币作为付款机制外,BTC、LTC、ETH等其他的电子加密货币甚至包括其他的法定货币都将作为Chintai的备选付款方案被纳入考量。

数字货币租赁平台的概念,总的来说还是比较新鲜的,也切实满足了当前EOS开发的需要,为EOS生态系统的丰富提供了很多便捷。

对这个项目感兴趣或者想租赁EOS的朋友,可以直接访问下方项目官网。

Chintai官网:https://chintai-eos.io/

作者:区块链下午茶
链接:https://www.jianshu.com/p/d03533edbccd

EOS 账户名创建的一些工具

研究了一下EOS账户名体系,可以分成3大类

一、注册12位EOS账户名

这个还分两种情况,一种是你已经有EOS账户(比如之前做过映射,获得了默认的随机账户名),另一种是没有EOS账户。

目前看对这类账户支持最好的是Halo钱包 http://halowallet.io/

但由于创建EOS钱包,需要平台给用户付费,目前费用还不低,大于一个账户需要4元人民币,所以Halo钱包创建账号限制每小时限量100个,需要手动抢。

二、注册12位以下账户名

这类账户名需要通过通过竞拍获得。但竞拍难度是比较高的,因为EOS系统每天会在所有名字中只拍出一个出价最高的12位以下账户名,所以建议找准时机再出价。比如,你拍到net账户名最高10EOS,但当天有人在com账户名拍了11EOS,那么你仍然无法获得net账户名。

目前对这类账户名竞拍系统支持最好的是麦子钱包 http://www.medishares.org/wallet/cn

有兴趣的可以看下麦子钱包官方出的竞拍攻略:http://blog.medishares.org/?p=138
以及竞拍QA:http://blog.medishares.org/?p=142

现在竞拍机制还没正式启动,根据下图中BM的说法,投票达到15%的两周后,也就是29号,启动后,只要24小时没人出价,就算竞拍成功。

Clipboard Image

在下面这个网站可以查到当前出价最高的账户名排行榜
http://8111.io/

三、带.的账户名

根据EOS设定的规则,带.的账户名作为短账户名的子账户进行创建。

举例来说,如果你拍到了com,你就可以创建 jd.com,然后卖个刘强东爸爸。

因为目前上面说到的结拍机制要到29号才启动,所以目前这类账户名还不能注册。

不过这里面还是有商业模式在的,或许也因此,目前eos这个名字的竞拍价格已经到1000EOS了。