Zilliqa进度更新第20期

2018年10月29日
Yiling Ding 发布于Zilliqa博客,Rita译

随着Zilliqa主网上线的日子 — — 1月31日益临近,我们的技术团队也在持续取得积极进展,主要包括:推进平台测试,完成区块链核心功能的开发;在智能合约语言Scilla方面,我们一直在完善开发工具,并积极致力于一项名为“现金流分析”的新安全功能,该功能可以检测合约中未计入的资金,从而检测任何潜在的资金泄漏。我们将继续努力,使Scilla成为智能合约开发的安全标准。

在业务开发方面,本月我们积极参加世界各地的活动,与开发人员密切互动,并得到了大量有益的反馈。上周,我们还在日本东京与DMM.com、LayerX和Infoteria的开发人员一起举办了Scilla研讨会。

随着主网上线越来越近,我们很多社区成员都表示希望可以更多地了解我们的技术进展和市场计划。因此,我们将于11月15日下午3点(UTG时间上午7点)在Zilliqa官方电报群(地址:https://t.me/zilliqachat)举行AMA自由问答活动,欢迎大家届时向我们提问。我们也将在社交媒体渠道上分享更多细节。

同往常一样,如您想要了解Zilliqa的更多信息或与我们讨论项目技术,请随时通过以下官方渠道与我们联系:

电报群: https://t.me/zilliqachat
Slack: https://invite.zilliqa.com
推特: https://twitter.com/zilliqa
Reddit: https://www.reddit.com/r/zilliqa/
Github: https://github.com/Zilliqa/zilliqa
Gitter:https://gitter.im/Zilliqa/ecogrant(开发相关专用频道,包括“生态构建资助计划”)

已举办的活动

这个十月充实精彩,我们在世界多地举办和参加了多场见面会和研讨会。这两周,我们还先后在巴塞罗那、东京、法兰克福和雅加达参加及举办了活动。尤其值得一提的是,我们在日本东京与来自DMM.com、LayerX和Infoteria的开发人员共同举办了Scilla研讨会。
在这里插入图片描述
我们直接与LayerX和DMM.com的开发人员共同讨论使用Scilla构建智能合约应用程序的结构和好处
在这里插入图片描述
商业开发主管Ong En Hui在东京Blockchain Jam活动上致辞
在这里插入图片描述
Max Kantelia在巴塞罗那的加密经济世界2018大会上发表演讲
在这里插入图片描述
Juzar Motiwalla在2018年雅加达Tech in Asia活动中发言

11月对我们来说将是一个相对安静的月份,因为我们将从准备主网上线的角度出发,更加关注技术开发和合作伙伴关系。

1、 中国,香港
时间:11月7–9日
活动:数字媒体亚洲2018
https://events.wan-ifra.org/events/digital-media-asia-2018

2、 中国,北京
时间:11月9日
活动:清华大学见面会 — — 公链扩容与区块链在游戏中的应用
http://www.huodongxing.com/event/1463975733300

3、 新加坡
时间:11月12–13日
活动:区块链和网络安全研讨会
http://sgcsc.sg/Blockchain-and-Cybersecurity-Workshop-2018/

11月13日,我们还将举行Zilliqa安全智能合约的研讨会,欢迎大家积极参加,报名地址:https://www.eventbrite.sg/e/zilliqa-workshop-on-secure-smart-contracts-tickets-51866230291

技术进展

核心开发团队一方面在不断加快测试和增强性能,另一方面也在重点推进区块链运行所必需的关键功能的开发完成。此次技术更新我们将分享这些新功能中的三个以及一个很值得注意的增强功能:

PoW挖矿的GPU选择

应社区开发者的要求,我们持续增强挖矿方面的功能。例如,许多社区开发者表示,希望挖矿可以支持GPU选择,从而允许将一个或多个GPU单元一起使用来进行PoW挖矿。举个例子,一个用户具有6个可用的GPU,现在他就可以任意选择一个GPU或几个的组合来配置Zilliqa的一个节点,同时也可以启动多个Zilliqa节点。

燃料费奖励

公有链的重要特征之一是向矿工分配燃料费。在我们当前的网络版本中,燃料费在每个交易周期中通过处理交易生成,并被累积到总的挖矿交易池中。之后,在下一个交易周期中(也就是我们所说的真空周期Vacuous epoch,因为在这个周期中不处理交易)、下一轮PoW提交之前,这些奖励将会分发给各个矿工节点。此功能需要在交易微块中添加一个表示分片总燃料费的新字段。之后,DS委员会能够将所有微块的燃料费求和,并在挖矿交易池启动奖励时执行奖励分配。出于安全原因,交易终块中也添加了类似的字段。这样,每个周期的燃料费都将成为终块共识的一部分。

PoW排序验证

DS委员会领导者宣布的DS区块共识消息包含下一个DS周期的建议分片结构。如果备份DS节点未对此结构进行彻底审查,则恶意节点可能会伪装成领导者并宣布无效的分片结构。由于所有的DS节点必须从其验证的PoW提交中识别所有分片节点,因此使用这些提交作为生成和验证分片结构的基础很有必要。现在,结构生成将严格遵循基于最终的交易块和每个节点的PoW结果连接的哈希值的排序。

Fallback机制

我们引入了一种fallback机制来提高网络的稳健性,并确保网络在出现无法预料的停顿后仍能取得进展。当整个系统停顿很长一段时间后,系统中的第一个分片将承担DS委员会的职责来恢复网络。如果系统仍未取得进展,则第二个分片承担这个职责。这种机制由候选fallback分片实现,该分片对新的块类型 (为此机制设计的fallback块)执行共识。共识一旦达成,该块就被广播到网络的其余部分,此后开始新一轮的工作量证明PoW提交。

Scilla解释器

现金流分析:正是因为Scilla的设计宗旨之一就是安全性,因此我们一直在致力于开发一种新的安全功能,来可以检测合约中未计入的资金,从而达到检测资金泄漏的目的。更具体地说就是,我们目前正在部署一个Scilla合约的静态分析器,用于跟踪合约中的资金流动情况,我们称之为现金流分析(cashflow analysis)。

现金流分析的基本思路是,一些合约使用‘field’(一个可变状态变量)来跟踪合约的资金用途。例如,kickstarter众筹合约可能想要跟踪每个贡献者投了多少钱,以便在不满足目标时可以还钱。如果合约跟踪的钱与合约的余额不符(由区块链跟踪),就意味着中间出问题了。用现金流分析的目的就是,一旦这种差异被检查出来,就可以向合约开发人员发出警告。

并非所有合约都以这种方式跟踪资金,因此如果发现合约与分析结果不符,这只会导致发出警告。实际上,一些合约可能想要跟踪比当前余额更多的资金。例如,多签名钱包合约将跟踪所有尚未签署的交易,无论合约中是否有足够的钱来支付全额。

现金流分析的第一个原型将在未来几天内开发完成。但这个原型还无法处理库函数,并且对“ADT”的支持有限。之后,我们将在此原型上进一步完善开发,从而支持完整语言。为了支持现金流分析,我们必须首先实现能够报告警告的底层基础架构。

性能测试:过去几周,我们一直在进行大量实验,来了解解释器的性能并检测任何有可能的性能瓶颈。我们很高兴与大家分享,实验现已结束。在这些实验的最后一步,我们进行了一些细粒度的测试,以确定算术和哈希操作的燃料成本。我们还对Scilla库进行了性能测试。

新的映射运算符:我们添加了新的in-place映射运算符,从而允许以更简单的方式修改和查询映射。请注意,这里的in-place更新仅适用于‘Map’字段。此外,maps的纯表达处理仍可通过builtin映射运算符获得。换句话说,所有先前的map语义仍然存在,包括putgetremovecontains。支持的新的运算符如下:

l m [k1] [k2] […]:= v:in-place更新。如果不存在中间键,那么它们将被创建。
l delete m [k1] [k2] […]:in-place删除密钥。如果中间密钥不存在,则不执行任何操作。
l v < — m [k1] [k2] […]:in-place取指。用键索引后返回“some valve”,如果所有键都不存在,则返回“None”。
l b < — exists m [k1] [k2] […]:in-place存在检查。检查是否所有键都映射了值。

开发工具

为了支持主网上线,我们一方面为现在稳定的JS客户端添加了更多的功能,另一方面还对区块链和客户端进行了实验并做了相当大的改动。以下列出了一些更改:

-用于交易确认轮询的指数退让,防止在带宽受限的客户端环境中不必要地使用网络,从而浪费资源。
-将手动编码、解码功能转换为Protobuf等效功能,因为Zilliqa核心正在转移至gRPC、Protobuf作为主要线路格式。
-实现BIP-0032、BIP-0039和BIP-0044,以便客户端开发人员可以用zilliqa-js来获取所有与加密相关的函数,而不用自己编写。请注意,coin_type仍未确定,因此现在使用占位符值。
-基本智能合约日志过滤的初始内部规范,可能通过额外的RPC API、GetLogs(暂定)。
-HTTPProvider的默认编码、解码中间件。
-以及其他大量测试

我们的目标是本周发布zilliqa-js0.2.0版本,同时继续将每日更新推到’@ zilliqa / zilliqa-js — * @ next中,以便社区开发人员可以随时获得最新的前沿消息。未来,我们在NPM上发布时,还将在Gitter上做出进一步的公告。 最后一项要点是,对于Emacs的粉丝,我们为Emacs添加了Scilla flycheck模式。这将Emacs与scilla-checker`集成在一起,从而实现了错误突出显示。请尽情享受用Scilla编码吧!

Zilliqa新闻报道

一篇技术文章分析了Zilliqa使用的分片技术和Scilla智能合约语言以及与以太坊的比较:
https://medium.com/on-the-origin-of-smart-contract-platforms/on-the-origin-of-zilliqa-1b1afc344aa7

一篇强调了Zilliqa和Scilla在智能合约中进行形式化验证的文章:
https://blockonomi.com/formal-verification-smart-contracts/

多篇关于Zilliqa的自发的报道:
https://cryptorecorder.com/2018/10/26/zilliqa-zil-the-singapore-connection-is-a-strategic-edge-for-zilliqa/

https://www.cryptorecorder.com/2018/10/22/how-zilliqa-zil-might-be-a-champion-of-scalability-solutions/

https://ethereumworldnews.com/all-eyes-on-zilliqa-zil-as-its-mainnet-launch-approaches/

https://cryptoblockwire.com/interesting-facts-about-zilliqa-zil/

分数阶傅里叶变换(Fractional Fourier Transform, FRFT)是对传统傅里叶变换的拓展,它通过非整数阶的变换方式,能够更有效地处理非线性信号以及涉及时频局部化的问题。在信号处理领域,FRFT尤其适用于分析非平稳信号,例如在雷达、声纳和通信系统中,对线性调频(Linear Frequency Modulation, LFM)信号的分析具有显著优势。LFM信号是一种频率随时间线性变化的信号,因其具有宽频带和良好的时频分辨率,被广泛应用于雷达和通信系统。FRFT能够更精准地捕捉LFM信号的时间和频率信息,相比普通傅里叶变换,其性能更为出色。 MATLAB是一种强大的数值计算和科学计算工具,拥有丰富的函数库和用户友好的界面。在MATLAB中实现FRFT,通常需要编写自定义函数或利用信号处理工具箱中的相关函数。例如,一个名为“frft”的文件可能是用于执行分数阶傅里叶变换的MATLAB脚本或函数,并展示其在信号处理中的应用。FRFT的正确性验证通常通过对比变换前后信号的特性来完成,比如评估信号的重构质量、信噪比等。具体而言,可以通过计算原始信号与经过FRFT处理后的信号之间的相似度,或者对比LFM信号的关键参数(如初始频率、扫频率和持续时间)是否在变换后得到准确恢复。 在MATLAB代码实现中,通常包含以下步骤:首先,生成LFM信号模型,设定其初始频率、扫频率、持续时间和采样率等参数;其次,利用自定义的frft函数对LFM信号进行分数阶傅里叶变换;接着,使用MATLAB的可视化工具(如plot或imagesc)展示原始信号的时域和频域表示,以及FRFT后的结果,以便直观对比;最后,通过计算均方误差、峰值信噪比等指标来评估FRFT的性能。深入理解FRFT的数学原理并结合MATLAB编程技巧,可以实现对LFM信号的有效分析和处理。这个代码示例不仅展示了理论知识在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值