Cadence 编程语言通过引入资源和功能来加速和简化安全智能合约编程,支持资源嵌套和组合等高级用例。同时 Cadence 也支持 Flow 上的事务和查询。
通过资源管理所有权
Cadence 很容易学习,因为它与 Rust、TypeScript 和 Swift 等其他编程语言有许多相似之处。最大的区别在于Cadence 总是资源第一。
资源很容易理解,因为它们是真实的东西 —— 一个代币的金库,一个 NBA Topshot 瞬间而且它们存储在所有者的帐户中。这就是为什么 Cadence 代码易于阅读、维护和讨论的原因。
pub resource NFT {
pub let id: UInt64
pub var metadata: {String: String}
...
}
从技术的角度来说,资源类型类似于类 —— 它们表示数据和函数的集合。但它们对开发人员如何处理它们引入了严格的规则:
-
资源在同一时间只能存在于一个确切的位置
-
资源无法被复制
-
资源必须被明确的销毁
这可以防止资源的有害复制和意外删除,使其非常适合区块链应用程序。移动操作符是用于传输资源的特殊操作符,它在处理资源时提供直观的视觉提示。
let myResource <- create NFT(...)
资源还支持高级用例,如组合和嵌套。要对资产进行分组,只需创建一个集合资源作为包装器。这使得批量传输(同时传输多个资源)—— 变得易于实现。
访问控制的能力
能力(Capabilities)类似于权限:它们控制用户可以对给定资源执行的操作。如果要调用资源的方法,则需要具有有效的能力。
能力是通往资源的网关。与 REST API 一样,能力也有一条路径。如果该路径位于帐户的公共域中,则任何人都可以获得该能力;私有域中的能力只能由该帐户的所有者访问。
无论是在公共域还是私有域,能力始终链接到目标。此目标可以是整个资源,也可以只是其方法的子集。对于后者,接口可以作为能力的目标。这就是功能允许细粒度和人类可读的访问控制的方式。
要与资源交互,首先必须在借用其基础资源之前获得特定的能力,这可以在事务中完成。
account.getCapability<...>(/public/MyCapability).borrow()
与事务和脚本交互
事务允许你改变链上的数据。在 Flow 网络,事务以 Cadence 编写。它们通常包括两个阶段:准备(prepare)和执行(execute)。
transaction {
prepare (acct: AuthAccount) {
...
}
execute {
...
}
}
对于交易的每个签名者,相应的 AuthAccount 被传递到交易的 prepare 阶段,提供对存储以及签名帐户的私有域和公有域的完全访问。
如果你只想查询链上数据而不改变它,那么可以运行脚本。在 Cadence 中,脚本由执行时运行的公共函数main组成:
pub fun main () {
log("Hello world!")
}
进一步阅读
如果你想快速开始使用 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 等智能合约语言,关注应用层发展,对区块链技术的应用感兴趣。
END
什么是Flow福洛链?
Flow福洛链是一个快速,去中心化,且对开发者友好的区块链,旨在为新一代游戏、娱乐应用程序提供动力的数字资产的基础。Flow是唯一一个由始至终为消费者提供出色体验的Layer-1区块链团队。其团队创造的dApp包括:CryptoKitties、Dapper Wallets、NBA Top shot。
CrytoKitties于2017年推出时便快速成为加密市场最受欢迎的dApp,因其成功而导致以太坊堵塞。在Flow上运营的NBA Top shot也已成为增长最快的dApp,在公开发布后的6个月创造了7亿美金销量。正因为Flow公链的可扩展性和消费者友好的体验,让这一切成为可能。目前有300多个项目正在Flow链上筹备中,我们期待看到一个伟大的生态系统蓬勃发展。
关于Dapper Labs
Dapper Labs是一家位于加拿大的全球顶尖区块链服务商,在2017 年年底通过CryptoKitties收藏游戏成功进如⽤户视野,并且因为加密猫的爆⽕导致以太坊拥堵,从而推出Flow公链以及全新的开发语言—— Cadence,旨在吸引更多的开发者在Flow 上开发应⽤。