开发周报:2018年8月13日-19日技术周报

Bitcoin-NG

对于Bitcoin-NG,我们添加了块时间戳验证。

在此更新之前,为了验证块时间戳,我们只是在validate_time中检查blocktime <now + 30min。这样做的缺点是它可能潜在地允许时间扭曲攻击,并使时间戳对于时间锁(可能依赖于unix时间而不是块高度)和智能合约的意义不大。为解决这个问题,我们考虑了两种可能性:

一个以太坊式的解决方案,其中时间戳严格增加(即大多数矿工只做min(现在,parent.timestamp + 1)),即使白皮书规定现在+ 900的上限,这实际上没有实现;
比特币式解决方案,其中块时间必须大于最后N个(比特币为11个)交易的中位数,但不到两个小时。

在考虑了这两个选项之后,我们决定选择经过时间验证的比特币式验证。

状态通道

状态通道现在支持在状态通道中的智能合约响应,由通道参与者决定何时进行。我们还为现有的Erlang API添加了WebSocket API和测试用例,以便离开或重新建立状态通道。

虚拟机

对于虚拟机,我们精心调整了Sophia的内置预言机和相关的VM初衷(删除了Oracle.register Sophia内置的费用参数;从Oracle.extend Sophia内置中移除费用参数;从oracle扩展VM primop中删除费用参数)。更重要的是,在执行内部调用之前,我们已经使用可用的机器气体在CALL操作码的气体操作数上引入了上限。

除上述内容外,还添加了以下错误修复和较小的更新:

修复了内置映射函数的Sophia编译器错误。
删除了WS API中对oracles的支持。此功能将转移到中间件。
添加了http API接口/ tx / contract / create / compute以创建合约。
修复了微型叉的内部数据库存储中的错误。
修复了同步算法中的一个错误,其中同步可能卡在丢失的微块上。
提醒一下,关注Mainnet发布(除了GitHub)开发进度的最佳位置是Pivotal Tracker。