我们已发布的六月份版本(即0.20版本),是测试网发布后的最大改版,增加了合约头、合约升级以及支持账户多种密钥类型(secp256k1、secp256r1、ed25519)、绑定和交易签名。得益于本次升级中的多种元素,可使智能合约编写的更加精准,对于Casper网络上存储的会话逻辑和智能合约,也可同时提升其使用和维护的体验。
此版本的技术细节
合约头
Casper区块链执行wasm合约,这些合约要么作为(一次性执行)交易的一部分在会话代码中传递,要么从区块链全局状态存储的地址调用。Casper交易是元交易,在一个部署中同时包含支付码和会话代码。支付码和会话代码都可以带参数,这些参数在运行时传递。本版中,这些参数必须声明名称和类型。一经命名,就可以在调用合约时以任意顺序发送参数。
合约头技术发布说明:
- 用户可用稳定哈希存储合约包。合约包可选项包括用户自定义权限控制组(作为一组特定的Uref存储在一个标签下)。
- 每个合约包都会收到一个合约包管理所需入口的Uref,这个Uref将发至创建合约包的账户,也可按需分发给多个维护者。
- 用户可将其一个或多个逻辑版本存储在一个稳定哈希的合约包中,并分别管理这些版本。各版本可按需禁用或保留(例如,允许版本间的过渡期)。这替代了之前在Uref下存储和更新合约的机制。
- 每个版本的存储逻辑都可定义一个或多个入点。每个入点可有任意个定义了名称和类型的参数。每个入点可公开/匿名(允许任何调用者),或需被包含在用户定义的访问组中(在合约包中定义和管理)。此外,入点可被定义为session(在调用账户时运行)或Contract(在调用合约时运行)。
- 存储逻辑可以直接使用合约包哈希和顺序逻辑版本,或使用特定的合约哈希版本来访问。另外,如果合约包哈希没有提供合约版本,则默认使用该合约包的最高可用版本(调用者需确保兼容性)。
- 描述合约包和合约版本的元数据经过系统检查,且随时可查;因此,可检查合约包的定义、其合约版本及端点,包括参数和返回值。
- contract_api提供了帮助功能,使合约作者能够轻松使用这些新特性。
Rust合约DSL
使用合约头最简单的方法是使用合约DSL,这些宏在运行时加载代码以设置合约,并为合约创建入点。详情请查阅开发者指南:https://docs.casperlabs.io/en/latest/dapp-dev-guide/index.html。
支持多种密钥类型
Casper网络现已支持多种账户密钥的加密算法,开发者可在系统内使用其中任意类型的密钥。由于SecureEnclave协处理器的兼容性,苹果设备可用作Casper账户的硬件钱包。
- Secp256k1 - 以太坊风格的密钥
- Secp256r1 - 苹果SecureEnclave密钥
- Ed25519 - Casper密钥
我们相信,对于任何的网络或协议,设备提供强大的可恢复历史记录的密钥存储功能必不可少。我们的系统支持可靠的密钥恢复功能,如密钥授权,甚至链上社交恢复(可以以多重签名形式指派其他几个账户来恢复权限)。
优化
我们将持续优化以提高网络性能。本版中,我们将通证转账功能植入了合约运行环境的主机端。这将使通证转账无需通过wasm或存储在全局状态。
版本安装包说明
版本安装包包括:
- 通过DockerHub获取Docker镜像(https://hub.docker.com/u/casperlabs)
- Debian安装包
- RPM安装包
- tar.gz
开发者了解详情并开始使用
发布后,可在Github上获取安装包及相关文档链接:
- 通过Github获取安装包(https://github.com/CasperLabs/CasperLabs/releases/tag/v0.20.0)
- 获取文档:https://docs.casperlabs.io/en/latest/dapp-dev-guide/index.html
问题反馈
反馈问题:https://github.com/CasperLabs/CasperLabs/issues
获取帮助
加入Discord社区:https://discord.gg/Q38s3Vh
关于CasperLabs
CasperLabs区块链平台旨在为每个人扩展机会。CasperLabs引领区块链前沿,专为实际应用设计,无需牺牲可用性、成本、去中心化或安全性。 CasperLabs一贯支持创新,让区块链更易用、更开放、更具前瞻性,以此消除主流采用区块链的壁垒;团队始终遵循开源原则,全方位为个体赋能,力求提供公平的基础以实现长远影响。