Flow Season#Day3| Cadence之惊鸿一瞥

Cadence是一种资源导向的编程语言,专为Flow区块链设计,确保智能合约的安全性。它引入资源概念,限制复制和删除,支持高级用例如组合和嵌套。Cadence还通过能力系统实现细粒度访问控制。了解如何通过资源管理和事务处理来构建区块链应用程序。
摘要由CSDN通过智能技术生成

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包括:CryptoKittiesDapper WalletsNBA Top shot

CrytoKitties于2017年推出时便快速成为加密市场最受欢迎的dApp,因其成功而导致以太坊堵塞。在Flow上运营的NBA Top shot也已成为增长最快的dApp,在公开发布后的6个月创造了7亿美金销量。正因为Flow公链的可扩展性和消费者友好的体验,让这一切成为可能。目前有300多个项目正在Flow链上筹备中,我们期待看到一个伟大的生态系统蓬勃发展。

关于Dapper Labs

Dapper Labs是一家位于加拿大的全球顶尖区块链服务商,在2017 年年底通过CryptoKitties收藏游戏成功进如⽤户视野,并且因为加密猫的爆⽕导致以太坊拥堵,从而推出Flow公链以及全新的开发语言—— Cadence,旨在吸引更多的开发者在Flow 上开发应⽤。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值