网络安全|互联网计算机的母语 Motoko 两岁了( 二 )
安全罐升级我们的另一个重要课题是提高罐升级的安全性和可靠性 。 dfx 始终计划能够检查新容器版本的接口是否向后兼容旧版本 , 从某种意义上说 , 所有依赖它但(尚未)意识到升级的现有客户端将继续功能 。
我们专门设计了Candid , 以可检查的方式定义什么是安全升级 。 这是根据Candid 接口上的子类型规则来表达的 。 Joachim 最近在博客系列中解释了这些 。 我们实际上能够正式证明 , 作为机器验证的健全性声明的一种形式 , 这些规则正确地防止了客户端被破坏 。 但是 , 虽然这是从一开始就计划好的 , 但我们现在才开始将基础设施构建到 IC、dfx 和 Motoko 编译器中 , 以实际执行这些检查 。
稳定变量会出现类似但独立的问题 。 虽然这些不是容器的公共接口的一部分 , 但它们是容器的两个版本之间的一种私有接口 , 通常需要以类似的方式进行检查 。 具体来说 , 新的容器应该仍然能够读取现有稳定变量的内容 , 这需要在升级过程中限制对其类型的更改 , 否则容器可能会意外丢失数据 。 该检查及其基础设施目前也由团队实施 。
语言特点当然 , 我们也改进了 Motoko 语言本身 。 我们增加了生活质量功能 , 并整合了设计中一些不太合适的方面 。
例如 , do?块使使用选项类型?T更加方便 。 您不再需要打开每个选项来访问其值 。 相反 , 插入单个 bang!就足够了 , 前提是整个计算都包含在一个do?块中 , 以在某个外部级别封装错误情况 。 将来 , 我们计划将此功能推广到其他类型 , 例如Result.
Motoko 的结构类型系统的另一个痛点是 , 没有允许通过扩展先前定义的类型以增量方式定义对象或变体类型的“继承”——相反 , 所有字段都必须重复 。 现在 , 由于引入了新的类型级运算符andandor , 这已经变得不必要了 , 它们表达了一种使用附加信息细化给定类型的方法 , 甚至可以组合两种类型 。
在整合方面 , 比如 , 我们细化了对象和块语法不太明确的 , 并且我们去掉了笨拙的WordN类型和青睐 , 在另外的运营商的需要进行繁琐的转换NatN和IntN类型的家庭 。 我们还对类型检查进行了各种改进 , 尤其是在使用重载运算符或文字时减少了对虚假类型注释的需求 。 最后但并非最不重要的是 , 我们试图使编译可重现 , 即避免对环境的依赖 , 例如断言错误消息中出现的源文件路径 。
我们一直在考虑许多其他不错的语言功能 , 希望将来能实现 。 但我们目前正致力于整合语言并使其更具可扩展性和安全性 , 包括一些性能优化 , 例如迭代数组 。
图书馆最后但并非最不重要的一点是 , 图书馆也很重要 。 随着时间的推移 , Motoko 基础库中增加了各种较小的内容 , 但显然 , 总有更多内容 。 作为开源的一个好处 , 我们希望社区做出贡献 , 使 Motoko 库更丰富 , 或者第三方提供他们自己的额外库 , 使它们可以通过容器访问 。
我们现在的主要目标是通过当前无法访问的系统库来公开 IC 的一些功能 。 例如 , 传输周期 , 直接访问稳定内存(具有 64 位地址范围) , 支持方法访问检查 , 也许还有心跳 。 其中一些已经以实验形式存在 , 但在我们正式向世界发布之前还需要进行更多调整 。
最后 , 我们意识到目前很难测试和调试 Motoko 程序 , 尤其是当它们应该与其他容器交互时 。 不幸的是 , 在很大程度上 , 由于 IC 本身的性质 , 这是一个不重要的问题 。 例如 , 它显然不允许设置断点或单步执行在网络上实时运行的代码 , 因为这与其底层区块链模型不兼容 , 后者不支持计算的随机中断 。 所以一般的问题在元子这边是无法真正解决的 。 有一些想法可以提供用于观察直播节目的状态或行为的机制 , 但这需要时间来设计和在系统中实现 。 直到那时 ,
- |互联网运营是什么?快来看看你是哪种类型的运营
- 合规|上海制定反垄断、互联网营销算法、盲盒经营活动等新业态合规指引
- 互联网时代|原极狐汽车总裁被挖至小米 担任小米汽车副总裁
- 阿里巴巴|社区团购是互联网巨头的宝地,美团拼多多发展强劲,阿里坐不住了
- 传音|移动互联网这一仗,向海龙和传音要怎么打?
- 大数据|山东拟新开通5G基站6万个,新培育5个以上工业互联网园区
- Kindle|互联网上这些外国“键盘好人”的彩虹屁,看得人实在是太开心啦
- Java|慎入慎入!!又是被互联网“美人”诈骗的一天!
- 互联网时代|华为走的是合作路线,跟传统厂家现在主打,物联网万物互联的模式
- 互联网创业|宝妈群体要怎么在互联网创业较为稳妥呢?