智能合约开发与其他类型的软件开发没有什么不同。编写代码是为了执行特定任务,并且有一些工具可以帮助简化此过程。以太坊生态系统包含许多成熟的工具来帮助构建 Web3 项目,但是像 Flow 这样的更新生态系统呢?
如果到目前为止您一直在关注本系列,您就会知道 Flow 区块链针对数字资产的创建和管理进行了优化。此外,其智能合约语言 Cadence 通过其基于资源的方法和强大的静态类型系统改进了其他语言的缺陷。
在本文中,我们将了解智能合约开发人员可以用来更轻松地在 Flow 上构建的基本工具——例如 CLI、IDE 扩展、客户端库、本地网络等工具。我们还将这些与您可能已经熟悉的以太坊工具进行对比,因此如果您切换到 Flow,您将确切地知道会发生什么。
命令行界面 (CLI) 是软件开发的基础。它们对于大多数开发人员来说都很直观,并且可以轻松地与其他软件集成。
这种简单的集成也适用于智能合约开发。例如,如果您需要快速部署合约以对其进行测试或使用不同的帐户运行它,那么 CLI 可以提供极大的帮助。稍后,当您想将部署过程添加到 CI/CD 管道时,您会很高兴拥有一个简单的 CLI 工具,您可以使用 shell 脚本实现自动化。
在以太坊等与 EVM 兼容的网络上,Truffle 和 Hardhat 都为这些任务提供了强大的工具。Hardhat Runner用于几乎所有与 Hardhat 相关的操作,而Truffle Console使开发人员能够通过 JavaScript 快速与其智能合约交互,而无需编写脚本文件。
Flow CLI是用于开发、测试和部署以 Cadence 编写的智能合约到 Flow 网络的主要工具。此外,它是您与 Flow 区块链交互时使用的界面,例如创建和检查帐户、签署交易或使用脚本自动执行任务。
与以太坊不同,您将生成一个地址以与区块链交互,Flow 要求您拥有一个帐户。该账户持有您的智能合约、代币和密钥,是与区块链交互所必需的。您可以使用 Flow CLI 轻松创建帐户。
接下来,您想编写一些代码,Cadence 和 Solidity 等语言提供静态类型检查,为您提供有关代码在编辑器中的行为方式的一些有用信息。
虽然 Solidity 带有一个基本的类型系统,可以防止您混合不同的数字类型,但 Cadence 更进一步并引入了所有权的概念。你可能从 Rust 知道这一点,但基本思想是 Cadence 拥有只能由一个地址拥有的资源,例如 NFT。Cadence IDE 扩展将在您编写代码时立即通知您有关 NFT 交易的问题,同时还提供语法突出显示、代码完成和类型检查。
您可能知道来自 JavaScript 等语言的 linter,其中没有可用的静态类型。在这种情况下,linter 有助于防止常见错误并帮助开发人员遵循最佳实践。
Solhint也是如此,它是Solidity的一个 linter 工具。同样,Solidity 的静态类型系统非常初级,在使用该语言时并不能防止许多错误。Solhint 在这里提供帮助,并在类型系统之上提供提示以避免误用。
Cadence 语言具有更复杂的系统类型,并且提供比 Solidity 更多的帮助。正确键入的 Cadence 智能合约比正确键入的 Solidity 合约更安全。
典型的 linter 功能通过其类型系统直接内置到 Cadence 语言本身中,但是如果您想对 CI/CD 管道中的多个 Cadence 文件运行类型检查,Cadence lint工具可以提供帮助。
本地网络或网络模拟器是一种在您的开发计算机上运行区块链网络的工具,因此您可以在干净的环境中进行测试,而不必冒险将未完成的智能合约推送到实时区块链。本地网络还具有较低的延迟并允许您控制块的创建,因此您可以逐步完成智能合约执行时发生的所有事情。
在 EVM 上进行开发时,您可能知道并使用Hardhat Network或 Ganache 来完成此任务。这两种工具都在您的本地机器上模拟了一个区块链环境,并允许您分叉一个主网版本以与真实账户和合约进行交互。
Flow 提供了一个类似的功能,称为Flow Emulator,它模拟真实的 Flow 网络,但为您提供了更多交互选项。它启用帐户存储限制,设置初始 FLOW 令牌供应,并在重启之间启用持久状态。这个强大的工具通过上面提到的 Flow CLI 使用,它们一起提供了开发人员构建功能齐全的 dapp 所需的所有功能以及测试它们的环境。
安装Flow CLI后,启动模拟器所需要做的就是在终端中输入命令 flow emulator。
在开发智能合约时,您通常需要加密代币来部署代码并与之交互。否则,你将如何测试交易?
Flow,就像以太坊一样,有一个带有水龙头的测试网,它可以为您提供免费的测试网 FLOW 或 FUSD 用于开发。
此外,Blocto Swap 是一种多用途工具,可让用户在 Flow 上轻松创建帐户。只需输入一个电子邮件地址。Blocto Swap 允许用户轻松地将他们的代币兑换成不同类型的代币以用于测试。如果该集合尚未在帐户中初始化,则此工具也是获取 FUSD 的便捷方式。
请记住:测试网上的代币在测试之外没有任何价值。
Cadence 和 Solidity 都有测试自动化工具,允许您使用 JavaScript 编写测试。
Hardhat 开发工具使用 Chai 测试运行程序,并为您提供用于 EVM 的智能合约匹配器和网络助手。
Cadence 有自己的以Jest为基础的工具,但它们与框架无关。因此,如果 Jest 不是你的菜,你可以使用不同的测试运行器。
所有区块链网络的另一个重要部分是区块浏览器——一个允许你检查链上发生的一切的工具。
对于以太坊网络,您可能知道Etherscan。它是一个 Web 应用程序,可让您浏览主网和测试网的交易和地址。
Flow 带有一个更强大的工具,Flowser!
Flowser(流浏览器)是一个 Web 应用程序,但您可以在本地运行它。它允许您浏览 Flow 主网和使用 Flow Emulator 启动的任何本地网络。它甚至带有一个 GUI 来配置和启动模拟器并管理您的开发钱包。
但是,如果您需要做的只是检查交易或在 Flow 主网或测试网上浏览,那么传统的区块浏览器 Flowscan将满足您的需求。
此外,flow-view-source工具允许用户检查帐户及其各种属性,例如余额、密钥和它们可能包含的任何合同。
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现