Flow Season#Day3| Cadence之惊鸿一瞥

Created
Apr 9, 2022 08:22 AM
Tags
翻译
Cadence 编程语言通过引入资源和功能来加速和简化安全智能合约编程,支持资源嵌套和组合等高级用例。同时 Cadence 也支持 Flow 上的事务和查询。通过资源管理所有权
notion image
Cadence 很容易学习,因为它与 Rust、TypeScript 和 Swift 等其他编程语言有许多相似之处。最大的区别在于Cadence 总是资源第一。
资源很容易理解,因为它们是真实的东西 —— 一个代币的金库,一个 NBA Topshot 瞬间而且它们存储在所有者的帐户中。这就是为什么 Cadence 代码易于阅读、维护和讨论的原因。
从技术的角度来说,资源类型类似于类 —— 它们表示数据和函数的集合。但它们对开发人员如何处理它们引入了严格的规则:
  • 资源在同一时间只能存在于一个确切的位置
  • 资源无法被复制
  • 资源必须被明确的销毁
这可以防止资源的有害复制和意外删除,使其非常适合区块链应用程序。移动操作符是用于传输资源的特殊操作符,它在处理资源时提供直观的视觉提示。
资源还支持高级用例,如组合和嵌套。要对资产进行分组,只需创建一个集合资源作为包装器。这使得批量传输(同时传输多个资源)—— 变得易于实现。
访问控制的能力
能力(Capabilities)类似于权限:它们控制用户可以对给定资源执行的操作。如果要调用资源的方法,则需要具有有效的能力。
能力是通往资源的网关。与 REST API 一样,能力也有一条路径。如果该路径位于帐户的公共域中,则任何人都可以获得该能力;私有域中的能力只能由该帐户的所有者访问。
无论是在公共域还是私有域,能力始终链接到目标。此目标可以是整个资源,也可以只是其方法的子集。对于后者,接口可以作为能力的目标。这就是功能允许细粒度和人类可读的访问控制的方式。
要与资源交互,首先必须在借用其基础资源之前获得特定的能力,这可以在事务中完成。
与事务和脚本交互
事务允许你改变链上的数据。在 Flow 网络,事务以 Cadence 编写。它们通常包括两个阶段:准备(prepare)和执行(execute)
对于交易的每个签名者,相应的 AuthAccount 被传递到交易的 prepare 阶段,提供对存储以及签名帐户的私有域和公有域的完全访问。
如果你只想查询链上数据而不改变它,那么可以运行脚本。在 Cadence 中,脚本由执行时运行的公共函数main组成:
进一步阅读
如果你想快速开始使用 Cadence 构建,请查看官方教程系列,在该系列中,你将为整个市场编写同质化和非同质化代币的集成代码。
  • Cadence tutorial series
https://docs.onflow.org/cadence/tutorial/01-first-steps
当你需要更全面、更深入的语言文档时,请查看完整的 Cadence 参考资料:
  • Cadence language reference
https://docs.onflow.org/cadence/language
任何时候,如果你想尝试 Cadence 而不必设置本地开发环境,请使用 Cadence playground:
  • Cadence playground
https://play.onflow.org/
原文链接:
https://medium.com/@ebner.benjamin/cadence-at-a-glance-4e685c34b544
翻译:Caos, Flow中国技术大使,四年区块链应用研发经验,全栈工程师,熟悉 solidity 、cadence 等智能合约语言,关注应用层发展,对区块链技术的应用感兴趣。