新手教程 1.5.0 本班更新总结

gk5 · 2018年12月20日 · 最后由 Surou 回复于 2018年12月20日 · 502 次阅读
本帖已被设为精华帖!

对1.5.0版本更新做了部分验证和总结,分享出来,如有问题一起讨论一起学习。

1.对主观白名单/黑名单执行的更改 1.1描述 此版本对从合约内部调度的操作(内联操作)以及合约(延迟交易)发送的事务强制执行白名单/黑名单。实现了完整的白名单/黑名单功能。 由于此功能也在特权帐户上强制实施,因此添加了其他配置以允许明确指定的合约在白名单/黑名单之外执行。这对于代表被列入黑名单的帐户或合约采取行政措施非常有用。 1.2更新说明 添加了一个新的chain_plugin配置选项sender-bypass-whiteblacklist。 此PR对主观白名单/黑名单检查进行更改,以便在发送内联操作或延迟事务时(以及实际停用延期事务时)强制执行白名单/黑名单。 但是,块生成器可能需要绕过白名单/黑名单检查,以便例如执行仲裁命令。BP在执行交易以执行订单期间将账户从黑名单中删除是不安全的。因此,这个PR还包括一个名为的新列表sender-bypass-whiteblacklist。如果延迟交易的发件人在此列表中,则在该延期交易的计划或退出期间不会强制执行白名单/黑名单检查。其意图是将账户eosio.wrap添加到sender-bypass-whiteblacklist所有活动BP中,以便BP可以执行包装的交易而不受黑名单的干扰。这将允许BP执行仲裁命令(通过eosio.wrap)时不需要在该流程中的任何时候从黑名单中删除任何列入黑名单的帐户,直到该帐户不再被列入黑名单为止。 1.3研究程度 理解,未验证。 添加了sender-bypass-whiteblacklist列表,当黑名单账户发起内联或延迟事务时,如果他在sender-bypass-whiteblacklist列表当中,则在该延期交易的计划或退出期间不会强制执行白名单/黑名单检查。

2支持反向迭代并在获取表中显示RAM付款人并更改upper_bound和limit参数 2.1描述 此版本更改了get_table_rows和get_table_by_scope RPC调用以支持反向迭代响应序列。添加-r 反向序列,--show-payer ram付款人账户等参数信息。

2.2更新说明  允许开发人员/用户在get_table_rows RPC调用中反向迭代行

 允许开发人员/用户获取每行的RAM付款人信息

 允许开发人员/用户在get_table_by_scope RPC调用中反向迭代行

2.3研究程度 验证结果如上图所示。

3.多线程事务/块密钥恢复 3.1描述 此版本引入了对跨多个线程的事务和块的加密签名(即签名验证)恢复密钥的支持。在块验证和中继的时间线中已经推进了调度这些恢复任务,使得对于大多数块,可以有效地减轻与它们相关联的开销。这应该大大改善块验证时间,它不影响生成块的成本,也不影响在区块链上退出事务的可计费费用。 3.2更新说明  chain_plugin有新的配置选项:

  • chain-threads - 控制器thread_pool的线程数。目前用于事务密钥恢复,但可以用于将来的其他操作。  新的链线程nodeos配置选项chain-threads- 应用签名块时用于事务密钥恢复的线程数。 3.3研究程度 验证配置文件选项结果如下:默认为两个线程。

4.添加cleos帮助程序命令以添加eosio.code权限 4.1描述 eosio.code 的解释: eoiso.code这一特殊权限是dawn4.0后新增的内部特殊权限,用来加强inline action的安全性。比如alice调用智能合约contract1.test,一开始alice看过contract1.test的逻辑,发现它只是一个打印函数,并不会调用其他合约。所以alice以自己active的权限[email protected]去执行contract1.test。但是contract1的拥有者某一天可能偷偷更改了test的实现,在test函数中调用eosio.token的transfer函数以[email protected]权限就可以取走alice的EOS. 为了解决权限乱用问题,EOS新增了eosio.code这个特殊权限。采用eosio.code后,contract1.test要以[email protected]去调用其它合约如eosio.token,必须得到alice的授权,即必须在[email protected]里添加[email protected]授权,让 contract1 在自己的合约代码里运行的代码具有 [email protected] 权限。而且只有在 contract1 自己的合约代码里才能拿到[email protected]权限,在外部手动以contract1的active权限调用alice的active权限的action(如转账等)是不会成功的,非得在contract1的自己合约代码里调用才会获得[email protected] 权限。 此版本提供(社区创作的)便利选项,用于制作涉及eosio.code元权限的权限。此权限对于允许合同代码代表用户行事并使其可访问将允许更轻松地访问更好的面向用户的解决方案至关重要。 4.2更新说明 此PR添加--add-code和命令--remove-code选项,cleos set account permission以便eosio.code方便地向指定的权限授予添加或删除权限。 以下示例可以添加到文档中。

  1. 添加[email protected][email protected] cleos set account permission eosio active --add-code
  2. [email protected]从中移除[email protected] cleos set account permission eosio active --remove-code
  3. 添加[email protected][email protected] cleos set account permission eosio owner eosio.token --add-code -p [email protected]
    4.3研究程度 cleos set account permission 参数验证,功能为验证。

5.cleos multisig approve使用proposal_hash,无效和改进审核的增强功能 5.1描述 此版本修改了cleos对eosio.msig作为EOSIO合同v1.5.0和EOSIO合同v1.3.0的一部分发布的合同增强的支持。有关新功能的更多信息。 5.2更新说明 添加可选proposal_hash参数以cleos multisig approve支持eosio.msig在EOSIO / eosio.contracts中引入合约的新安全功能。 添加cleos multisig invalidate子命令以调用EOSIO / eosio.contracts中引入invalidate的eosio.msig合同操作。 修改cleos multisig review子命令:  向返回的JSON 添加proposer和transaction_id字段。该transaction_id特别是有用的,因为这是需要传递的是哈希proposal_hash的cleos multisig approve子命令(假设用户想要使用以增加安全性的可选功能)。  添加cleos选项--show-approvals,如果启用,将为approvals返回的JSON 添加额外的数组字段。此approvals字段是建议交易的所有请求批准及其状态的列表:未批准,已批准,无效。如果合适,也可以存在批准时间,未批准时间和无效时间。即使合同是旧版本,该approvals字段仍将正确显示(假设已通过--show-approvals选项请求)eosio.msig; 但是,某些功能,例如invalidation状态和批准/未批准时间,当然不可用。 5.3研究程度 验证cleos multisig approve添加的参数proposal_hash

验证添加cleos multisig invalidate子命令

验证对cleos multisig review子命令的修改

功能为验证。 6.重播ctrl-c支持 6.1描述 此版本提供了一个安全路径,用于响应信号并nodeos在重放期间正常关闭,而不会导致状态数据库损坏。这对于经常重播的用户来说是一个痛点,包括开发团队。节点处于一种状态,它应该能够从中断处继续重放。 6.2更新说明  Appbase更新为发布插件插件startup(),因此信号可以在每个插件后中断startup()  应用平台的信号处理移动到一个专用的线程,以便信号中断,同时插件来处理startup()在处理中间  检查重放时是否已发出关闭信号以允许中断  允许从先前停止的重播启动到重播结束的地方 6.3研究程度 理解。 7.添加state-history-plugin插件

7.1描述 State History Plugin重新设想nodeos了未来如何从正在运行的进程中检索区块链数据。它旨在作为替换当前已弃用的历史插件的基础,具有其他功能,例如支持实时流和访问合同表值和增量。 此插件在此时被视为ALPHA,并且可能在最终版本发布之前发生重大变化,但开发团队邀请社区对其进行评估并提供反馈以帮助指导此产品的开发。 7.2更新说明 状态历史插件为外部进程提供了跟踪链状态(表),事务历史记录和块的方法。外部进程可以将这些数据存储到数据库中(例如https://github.com/EOSIO/fill-postgresqlhttps://github.com/EOSIO/demux-js操作处理器),或索引数据并提供最终用户api(例如/v1/history替换)。),转换数据以满足应用程序需求(例如 插件存储:  链数据库表更改(每个块)(启用--chain-state-history)  事务跟踪(每个块)(启用--trace-history) 该插件允许客户端通过块索引获取:  来自块日志的块  链数据库表更改(每个块)(启用--chain-state-history)  事务跟踪(每个块)(启用--trace-history) 配置如下: plugin = eosio::state_history_plugin trace-history = true chain-state-history = true 命令行使用方法如下: /usr/local/eosio/bin/nodeos --data-dir /home/eosio/data --config-dir /home/eosio/etc --disable-replay-opts --chain-state-history --trace-history 该插件将其数据存储在可在计算机之间移动的文件中。BP可以提供这些文件以及快照,从而减少重播新节点的需要。 该插件提供流式websocket接口。为了减少nodeos上的负载,接口使用序列化二进制格式而不是JSON,并且插件执行处理请求的最小处理。但是,由于此接口提供高数据量且没有滥用缓解,因此我们不建议公开其端口。 7.3研究程度 插件在配置文件config.ini中的提现如下:

由于该插件会在1.6.x版本中发生很大变化,目前只是了解,并未验证。 8.在keosd自动启动强制unix套接字路径 8.1描述 当cleos的钱包网址保留默认值时,cleos只会自动启动keosd unix:///home/user/eosio-wallet/keosd.sock 当它执行自动启动时,启动keosd keosd --http-server-address --https-server-address 以显式禁用HTTP和HTTPS。但是,用户~/eosio-wallet/config.ini可能会在其中设置另一个unix-socket-path,以防止cleos和自动启动的keosd能够进行通信。 8.2更新说明 现在强制设置unix-socket-path为默认值。 8.3研究程度 ~/eosio-wallet/config.in 默认设置为:

核实参数设置。 9.cleos parse last_bid_time support time_point 9.1描述 服务器可以将last_bid_time作为ISO时间格式返回。 9.2更新说明 cleos system bidnameinfo 返回结果中的 last_bid_time时间格式 9.3研究程度 命令验证,如下图所示;

共收到 1 条回复

👍 分享的很及时的干活

Surou 将本帖设为了精华贴 12月20日 23:02
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册