Casper网络1.4版本将在2021年10月22日推出测试网,并将于之后不久的10月28日推出主网。请在我们的Discord上查看相关技术发布及更新日志。
关键日期
1.4.0版本主网更新的关键时间节点
工程竣工 | 2021年9月30日 |
---|
测试网 | 2021年10月22日 | 主网 | 2021年10月28日 | 版本分发 | |
关键变化(核心)
安全性能和稳健性增强
- 更快的网络区块时间:在1.4.0版本中,我们大大改善了预期的区块时间,从大约64秒减少到32秒,终决区块的实时效率提高了50%,(至少快了4倍)——我们通过改善加入节点的协议状态同步机制来突破区块加速的瓶颈问题,当区块速度是原来的两倍时,我们产生的信息也是原来的两倍,新加入节点需一次下载所有信息,降低了其加入的速度,增加了同步时间甚至阻碍了加入和同步进程。我们提升了新节点同步协议状态的算法,分批补全缺失的信息,而非一次性全部下载。1.4.0版本相较于1.3.4版本新节点的同步和加入时间快了至少6倍。(https://github.com/casper-network/casper-node/pull/2062)
- Highway协议内存优化:1.4.0版本中,我们解决了一系列共识内存使用优化中的一个问题,即当一个节点等待standstill_alert,然后向所有其它节点发送请求最新状态的信息过多,更改为从另一个节点定期请求状态,从而减少消息传递,优化内存使用。
- 改善分叉者:直到1.3.2版本,分叉者在区块中仍被列为不活跃的验证器,1.4.0版本中,改为将它们列入分叉者列表,这将防止它们在后续代际继续分叉。在没有削减的情况下增加了网络的适应力(https://github.com/casper-network/casper-node/pull/1637/commits)。我们还加强了分叉监测,对于N+1代际初始化前发现了分叉而我们未能在N+1代际将其标记为故障的问题,我们已予以修复并提升了适应力。(https://github.com/casper-network/casper-node/pull/1607)
- 信息传递内存优化:我们对广播和私信的内存管理做了一些改进,删除了大部分发出的广播及个别私信等网络信息在内存中的副本,以改善内存占用率(https://app.zenhub.com/workspaces/engineering-60953fafb1945f0011a3592d/issues/casper-network/casper-node/1518)。
- 原生转账成本优化:从1.4.0版本开始,原生传输成本(Wasmless)从1万摩提高到1亿摩或0.1 CSPR代币,已通过链参数进行更改,其对乒乓攻击是一种有效威慑(https://github.com/casper-network/casper-node/pull/2129),CEP69(https://github.com/casper-network/ceps/blob/minimal_charges/text/0069-minimal-use-charges.md)。
功能及改进
- 部署接收器优化: 该版本对部署接收器进行了一些改进(https://github.com/casper-network/casper-node/pull/1885/commits,https://github.com/casper-network/casper-node/pull/2081/commits);
- 增加了对部署的批准字段是否为空的检查,并提示相关错误信息。
- 增加了对与部署相关的账户哈希值是否为有效的关联密钥的检查。
- 增加了对账户哈希值的权重是否符合执行部署的阈值的检查。
- 当从客户端接收部署时,增加了对账户余额是否充足的检查。
- 针对存储的合约和合约包,增加了对会话或付款字段中可执行部署项目有效性的检查。
- 当满足所有条件时,将部署的加密有效性检查移至最后一步。
RPC-事件流-客户端及指标
- 查询状态的命令包含一个可选的块标识符:之前查询状态,我们使用state_root_hash来查询部署,然后再查询区块;1.4.0版本中改为接收一个可选的块标识符。新增了新的RPC端点query_global_state,可以接收blockhash或state_root_hash。Rust客户端也新增了query-global-state命令(https://github.com/casper-network/casper-node/pull/1645)。
- 增强Casper客户端/外部功能接口:casper客户端及其外部功能接口做了一些小的改动,比如两者的transfer_id都改为了u64;客户端增强以避免意外的文件覆盖(https://github.com/casper-network/casper-node/pull/1652),客户端外部功能接口的增强允许用户从他们的代码中生成密钥对,从而生成新账户的密钥。1.4.0版本为Casper客户端增加了RPM包,以满足Redhat linux发行版用户的使用。
- RPC中增加了验证器信息:新增RPC(get-validator-info)和REST(validator-changes)端点,可在两个代际之间查询、变更验证器集状态(激活、失效、故障等)。外部功能接口也新增了这些命令。二进制版客户端查询命令是get-validator-info(https://github.com/casper-network/casper-node/pull/2086/commits)。
- 增加了转账命令:put-deploy和make-deploy命令新增了客户端子命令–session-transfer,用户可指定部署是否为转账(https://app.zenhub.com/workspaces/engineering-60953fafb1945f0011a3592d/issues/casper-network/casper-node/1572)。
- 增加创建Account-deploy:客户端子命令put-deploy、make-deploy、transfer和make-transfer新增了一个可选参数–session-account,用户可选用非秘钥的账户密钥来签署部署(https://github.com/casper-network/casper-node/pull/1662)。
- 改进错误处理:对客户端提示错误信息及其处理的方式进行了改进(https://github.com/casper-network/casper-node/pull/2039/commits)。
- 对于AccountHash和URref sessions-arg的CL值解析的错误信息得到了加强,将提供更有价值的信息(详见附录)。
- 修复了当使用–session-args-complex和–payment-args-complex传输文件时,casper客户端会默认忽略解析错误,并创建一个具有空运行参数的部署的问题。现在会触发客户端故障报错(详见附录)。
智能合约
- 增加关联密钥的最大数量:关联密钥的上限已从10个增加到100个,并纳入了链参数,开发者可为每个公钥配置多达100个关联密钥,默认值为100(https://github.com/casper-network/casper-node/pull/1309)。
- 创建钱包/铸币的成本增加:为了阻止创建可能对存储资源不利的空钱包,1.4.0版本中,创建自定义支付钱包的成本增加到2.5 CSPR,但不影响用新账户创建的新钱包(https://github.com/casper-network/casper-node/pull/1326/commits)。
- 修正了阻碍部署的问题:gas支付金额超过块gas限额的部署总是被卡住,且没有任何没有失败或错误信息。该问题已被修复,将检查金额参数并拒绝此类付款(缺失或超额),并提供有效的错误信息(详见附录,https://github.com/casper-network/casper-node/pull/2002)。
- 增加了对公钥的支持:增加了对原生转账中传递公钥作为目标参数的支持,Rust API增加了transfer_to_public_key和transfer_from_purse_to_public_key,Assembly脚本API增加了transferToPublicKey和transferFromPurseToPurse,它们没有大的变化(https://github.com/casper-network/casper-node/pull/1933/commits)。
- Wasm部署成本:从1.4.0版本开始,WASM部署成本将是0.1 CSPR或1亿摩。
Cargo-Casper文档和核心更新:文档更新,包括–erc20选 (https://github.com/casper-network/casper-node/pull/2105),核心组件更新,包括erc20库(https://github.com/casper-network/casper-node/pull/2056/commits)。
已知问题(核心)
目前该版本未发现恶化、严重或高优先级的问题。
发布范围(核心)
1.4.0版本的完整范围可访问1.4.0_Scope(https://docs.google.com/spreadsheets/d/1XEHEyMDaRsSz9xQJTvK-3RPHV1V1CURjYIdtc9vO6EI/edit?usp=sharing)及更新日志。
执行
工作安排(核心)
附录(核心)
|