enum class block_status {
irreversible = 0, ///< this block has already been applied before by this node and is considered irreversible
validated = 1, ///< this is a complete block signed by a valid producer and has been previously applied by this node and therefore validated but it is not yet irreversible
complete = 2, ///< this is a complete block signed by a valid producer but is not yet irreversible nor has it yet been applied by this node
incomplete = 3, ///< this is an incomplete block (either being produced by a producer or speculatively produced by a node)
};
eos block_status
EOSIO 1.8.0-rc2 有哪些重要的改进
版本号:1.8.0
Github:https://github.com/EOSIO/eos/releases/tag/v1.8.0-rc2
1 扩展性提升与代码重构
在这个版本中我们看到了大量的提交 , 主要集中在代码重构和线程安全化两个方面 :
首先的代码重构 , 很多人往往不关心这些既没有增加功能也没有提升性能的代码修改 , 但是从开发的角度看 , 这些其实构成后续开发的重要基础 , 我们可以看到 , 自年初以来 , Block.one 的核心开发者一直在改善 EOS.IO 的代码结构 , 并且从设计层面上逐步在建立一个抽象层 , 最明显的是 EOS.IO.cdt 的完善 , 这些构成了 EOS.IO 的框架 , 不同于很多在一开始就给出了庞大架构的团队 ,Block.one 的开发团队一贯以务实且自低向上的思路开发 EOS.IO。
在 1.8.0 版本中 , Block.one 的开发者拆分了很多之前的巨无霸类型 , 剥离了散落在各处的一些复杂逻辑 , 比如 pending_block_state
相关的状态管理 , 就从 block_header_state
中剥离出来 . 还有之前略带“坏味”的 transaction traces, 也在这次重新整理。
另一个方面是关于多线程 , 在最近一段时间有很多关于线程安全性的提交,为下一步实现多线程相关开发做准备,Block.One 团队在 2019 年的开发中对多线程非常重视,此次重构后将很更好的实现 EOS.IO 白皮书里描述的多线程,届时 TPS 会上升到一个新的台阶。
众所周知 , 中大规模 C++软件的多线程开发一直是一个“深坑”, 为了在引入并行计算的同时保证 EOS.IO 的稳定性 , Block.One 团队并没有急于进行多线程相关新特性的开发 , 而是耐心的排查代码中的线程安全问题 , 完善基础架构支持 , 同时在特定的适合并发的独立模块 , 如 chain api 以及 p2p 模块引入对应的多线程实现
2 提升链安全性
在这个版本中 , Block.One 团队修正了之前遗留的一些资源计算问题 , EOS.IO 中资源相关的逻辑很多 , 并且极为分散 , 为了提升链性能并避免节点进行不必要的计算 , EOS.IO 中添加了很多资源相关的特化逻辑 , 这也造成了很多特定场景下用户资源计算的不明确 , 对于 EOS.IO 链来说 , 这带来了很多起潜在的安全性问题 , 前一阶段暴露的由延迟交易所触发的阻塞交易问题 , 很大程度上就是资源检查不完备的问题。
另外 , 某些场景下资源计算的问题也会导致用户权益上的损失 , 所以这方面的修改势在必行。
3 智能合约安全
智能合约安全困扰了 EOS.IO 社区很久,DAPP 开发者在过去一年的实践中发现了大量的问题,Block.One 团队吸收了这些问题并且做出了极大的改进,此次更新对智能合约开发者更友好。
举例来说 , 对于 DAPP 开发者来说 , 一个好消息就是千呼万唤的 GET_SENDER
API 终于要引入 EOS.IO 中了 , DAPP 开发者可以通过这个 API 判定当前 Action 是否是通过 inline action 机制触发的 , 据此可以回避大量的基于合约触发 inline action 的攻击手段 . 这个更新,可以一定程度上部分解决了困扰社区已久的随机数问题,需要注意的是 , 即使通过这个 api 可以屏蔽当前的很多攻击手段 , 固然攻击者的攻击成本会大幅提高 , 但是不意味着 DAPP 开发者可以高枕无忧 , 对于开发者来说安全问题永远需要注意 , 没有什么一劳永逸的银弹。
4 硬分叉升级机制
这方面的更新可以使得未来的硬分叉升级更加高效的同时使得硬分叉升级过程中不影响用户使用体验。
近一段时间 , Block.One 其实开发了非常多的新功能,包括上面提到的几个功能 , 但都没有在过往的更新中出现,一个很大的原因就是开发者必须保证 EOS.IO 的兼容性 , 节点可以选择不升级节点版本 , 显然这会极大的阻挠 EOS.IO 的发展 , 这次 1.8.0 的版本与以往的一个最大区别是这个版本不兼容前面的版本 , 也就是所谓的“硬分叉”, 在这个版本之前 EOS.IO 并没有应对硬分叉的机制 , 硬分叉的过程会对用户的使用带来很大影响 , 为了使以后的更新不会像这一次一样造成很大影响 , 这次更新中添加了一系列硬分叉升级机制 , 为的是以后的硬分叉更新可以更加平滑和安。
eos_faucet EOS 账号水龙头
eos_faucet
server side:
cd your_working_dir
git clone https://github.com/cryptokylin/eos_faucet.git
cd eos_faucet
open wallet.py, paste account (to create account, transfer tokens) name, wallet name, wallet password accordingly, then save
python clfaucet.py
client side:
you can create at most 1000 accounts per day.
curl http://your_server_ip/create_account?<new_account_name>
you can get 100 tokens each call and max 1000 tokens per day.
curl http://your_server_ip/get_token?<your_account_name>
note:
this code is for test purpose only, you should not use it on eos mainnet with your real account
虚拟币硬件钱包调研
最近项目打算接硬件钱包,简单记录下调研信息
目前需求 需要支持 PC浏览器以及收集APP。
APP端的话相对较多,先查下PC浏览器相关的
主要信息来源MetaMask扩展和ScatteDesktop客户端。
目前流行的两个“龙头”PC浏览器钱包解决方案。
MetaMask
支持2种硬件钱包
- Ledger
- TREZOR
ScatteDesktop
也支持2种
- Ledger Nano S
- Scatter/LiguidEOS DIY Hardware Wallet
EOSIO
YubiKey (WebAuthn)
相关介绍
Ledger
https://shop.ledger.com/products/ledger-nano-s?r=17c4991a03fa&tracker=MY_TRACKER
https://zhuanlan.zhihu.com/p/32322818
https://weidian.com/p5/diary/pages/diary.php?id=14414801
https://0xzx.com/20190504193957697.html
https://github.com/cosmos/ledger-cosmos
Scatter/LiguidEOS DIY Hardware Wallet
https://medium.com/@liquideos/how-to-build-an-eos-hardware-wallet-a-step-by-step-guide-a62445786c0f
Yubikey
https://www.zilian8.com/148763.html
目前Yubikey 是EOSIO官方在做的,目前还没有太多的介绍,相信很快就会有了。
目前EOS已经稳定,BM下一步就是商业化产品运行,
对于开发者来说,目前Ledger的周边库是最全的,一些相关的js库等
比特币,以太坊,EOS 公私钥生成以及签名 BlockchainWallet-Crypto
BlockchainWallet-Crypto
简介
这个库到底能干什么
- 生成比特币公私钥地址
- 生成以太坊公私钥地址
- 根据 UTXO 信息打包比特币交易
- 根据 nonce 信息打包以太坊交易
- 对比特币交易进行签名
- 对以太坊交易进行签名
- 支持 BIP39 助记词
- 支持 BIP32 子私钥
- 支持 BIP44 多币种管理
- 支持 BIP38 加密私钥导入导出
- 支持以太坊 keystore 导入导出
- 生成以太坊调用智能合约的参数
- 生成 EOS 公私钥
EOS 从助记词生成私钥
现在 EOS 从助记词生成私钥有两种方式
- 12 个助记词之间用空格隔开拼接成字符串,然后 Hash 得到私钥
- 采用 Bip44 标准的生成方案,EOS 的币种序号详见最下方⎡相关资料⎦中的⎡Bip44 注册币种列表⎦
经过国内大部分钱包商议统一使用第二种方案解决 EOS 从助记词生成私钥的问题
欢迎给位提设计上的 lssues 和 pr
引入项目
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.QuincySx:BlockchainWallet-Crypto:last-version'
}