在IC链上开发虽然Motoko可能是最拥有优势的编程语言之一,但是在开发者层面来说Motoko作为新兴编程语言对他们来说是陌生的,这时候大部分的开发者在IC链上开发时都会选择自己熟悉的编程语言进行构建Dapp,而不管是Motoko、Rust、C、JavaScript等编写的Dapps,最后都会被编译为WebAssembly部署在InternetComputer运行。最重要的是即使Dapp的组件是由不同语言编写的,也可以通过Candid无缝集成,这也是IC链上开发的魅力所在。本期文章带各位小伙伴探讨如何使用不同的语言编写Dapp以及如何在InternetComputer上部署Dapp。
使用Rust在InternetComputer上开发
开发人员可以通过使用Cargo并编译Dapp以使用WebAssembly作为目标输出来创建Rust项目在InternetComputer上运行。
本字节概述将Rust程序部署为InternetComputer上的Canister所涉及的关键步骤,需要注意的是此处描述的步骤只是一种实现方法,也可通过其他方法实现。以下操作流程的示例项目是以下存储库中示例项目的其中之一。
ParaSpace推出激励计划,积分未来可兑换为该项目代币:4月3日消息,据官方推特,NFT借贷协议ParaSpace宣布推出激励计划,该计划中用户的行为和活动将获得积分奖励,积分将在 ParaSpace发布代币时通过空投兑换为ParaSpace代币。在第二季度末(2023年6月30日)之前,ParaSpace会将用户赚取的奖励积分提高至 300%。
据官方文档信息显示,赚取积分的有效行为包括借贷、参与APE质押以及赊购。ParaSpace计划在完成核心产品和功能开发后加快启动治理令牌的过程。[2023/4/3 13:41:39]
注意:RustCDK可以提供了一些快捷方式实现更轻松的编写查询和更新调用的函数。
最低到最高级别的RustCDK程序库
RustCDK程序库:https://github.com/dfinity/cdk-rs使用RustCDK快捷方式编写查询更新调用示例项目:https://github.com/dfinity/cdk-rs/tree/main/examples01创建项目
由于大多数开发者都是使用Cargo来处理build和packagsemanagementtask:下载和编译Dapp所依赖的程序库,以下是使用Cargo命令行界面创建的一个新的Rust项目示例。但使用Cargo创建一个项目代表创建Rust项目的典型工作流程如下:
比特币闪电网络通道数量为76,238个:金色财经报道,1ML数据显示,当前比特币闪电网络节点为16,052个,过去30天增加0.65%;通道数量为76,238个,较一个月前增加了0.4%;网络容量为5,360.60枚BTC,月涨2%。[2023/2/21 12:18:44]
1、在本地打开一个终端窗口。
2、运行以下命令验证是否安装Cargo:
由于大多数开发者都是使用Cargo来处理build和packagsemanagementtask:下载和编译Dapp所依赖的程序库,以下是使用Cargo命令行界面创建的一个新的Rust项目示例。但使用Cargo创建一个项目代表创建Rust项目的典型工作流程如下:
1、在本地打开一个终端窗口。
2、运行以下命令验证是否安装Cargo:
cargo--version3、更改为用于InternetComputer或Rust示例项目的文件夹名。
4、运行以下命令来创建一个新项目:
cargonewmyrustdapp此命令创建一个my_rust_dapp带有默认Crago.toml文件的新目录和一个带有src目录的main.rs的默认文件。5、运行以下命令切换到项目目录:
cdmyrustdapp如果你列出项目目录内容,将会看到它只包含Crago.toml文件和src目录,要编译此项目在InternetComputer上运行需要一些附加文件。
The Wanderverse项目Discord服务器遭到攻击:金色财经报道,据CertiK监测,The Wanderverse项目Discord服务器遭到攻击。请社区用户在服务器修复之前不要点击任何链接。[2023/2/8 11:54:39]
02修改Crago配置文件
该Crago.toml文件为每个Rust程序包提供一个清单,清单包含指定Rust程序包配置详细信息,为了准备Rust项目在InternetComputer上运行,我们需要复制默认Crago.toml文件,然后修改项目的一些配置细节。修改Grago.toml文件:
1、运行pwd命令检查是否位于项目的根目录文件。
2、运行以下命令将默认Crago.toml文件复制到src目录中:
cpCargo.tomlsrc/Cargo.toml在InternetComputer上运行的项目通常使用一个项目级Crago.toml文件来为项目Canister成员设置工作区,并使用Crago.toml源代码目录中的第二个文件来配置每个Canister的设置。
3、在文本编辑器中打开Crago.toml作为项目根目录文件。默认情况下该文件包含和分区。
4、将该分区替换为类似于以下内容的分区:
members=[
"src/my\_rust\_dapp",
]
Axie Infinity:Homeland Season 0已结束,Season 1预计在3周后开始:1月31日消息,据官方推特,P2E游戏Axie Infinity宣布,Axie Infinity:Homeland Season 0已结束,预计Season 1将在大约3周后开始,在即将到来的Homeland Season 1中,玩家可以期待游戏内经济的重大升级,重点是体力、游戏时间和游戏会议。Homeland服务器将从1月31日关闭,直到第一季开始,进度将重置。
按照此前去年12月份发布的路线图,Homeland开发为期5年,分4个阶段进行,alpha版本的发布则标志着第一阶段和Alpha Season 0的正式开始,而Alpha Season预计将持续一个月。[2023/1/31 11:38:40]
有关分区和键值的信息参考如下:https://doc.rust-lang.org/cargo/reference/workspaces.html有关于Crago.toml文件中配置的其它分区和键值的信息如下:https://doc.rust-lang.org/cargo/reference/manifest.html5、删除分区。
6、保存更改并关闭文件继续以下流程。
7、在文本编辑器中打开src/Cargo.toml文件。
8、添加一个包含主源代码路径的分区,类似于以下内容:
path="main.rs"
新晨科技:公司在区块链技术方面的储备和研究方向可应用于数字货币领域:金色财经报道,有投资者在投资者互动平台向新晨科技提问:“贵司现在有数字货币和数字人民币相关的业务技术开展吗?是否有支持银行的数字货币相关的解决方案?”
新晨科技(300542.SZ)近日在投资者互动平台表示,公司在区块链技术方面的储备和研究方向可应用于数字货币领域。(每经AI)[2022/9/25 7:19:16]
9、使用任何程序包依赖项更新分区。
10、保存更改文件继续以下操作。
03添加Canister配置文件
当你使用DFINITYCanisterSDK创建新项目时,dfxnew命令会自动将默认dfx.json配置文件添加到项目目录中,因为以上示例是使用Cargo创建的Rust项目,所以需要在项目目录中手动去创建这个文件。添加dfx.json配置文件流程如下:
1、运行pwd命令检查是否在项目目录中。
2、在项目根目录中创建一个新的dfx.json配置文件。
3、在文本编辑器中打开dfx.json文件。
4、将具有类似以下设置的version和canisters键值添加到dfx.json文件中:
{"version":1,"canisters":{
"my\_rust\_dapp":{"type":"custom","candid":"src/my\_rust\_dapp.did","wasm":"target/wasm32-unknown-unknown/debug/my\_rust\_dapp.wasm","build":"cargobuild--targetwasm32-unknown-unknown--packagemy\_rust\_dapp"}
}}
以上设置解释:
version设置用于标识创建项目的软件版本;canisters分区指定项目Canister的名称,在以上情况下只有一个Canister,名为my_rust_dapp;type键值设置为custom,因为该Canister不是当前识别的Canistertypes之一;Candid键值指定名称和Candid的接口描述文件的位置用于此项目;Wasm键值指定由cragobuild命令生成WebAssembly文件路径;build键值指定crago命令用于编译的输出;这些是所需的最低设置,当需要构建更复杂的程序时,需要在Cargo.toml、dfx.json这两个文件中包含其它配置信息。
5、保存更改关闭文件继续以下操作。
04创建Candid接口描述文件
除了dfx.json配置文件之外,还需要一个Candid接口描述文件—例如:my_rust_dapp-did—将Dapp的输入参数和返回值格式映射到它们在Candid中与语言无关的表示。创建Candid接口描述文件流程如下:
1、运行pwd检查是否仍在项目目录中。
2、在src项目目录中,创建一个新的Candid接口描述文件,例如my_rust_dapp_did。
3、在文本编辑器中打开Candid文件,为Dapp定义每个功能添加描述,如果my_rust_dapp是一个简单的增量计数器Dapp使用increment、read和write功能,该my_rust_dapp.did文件是以下这样的:
service:{
"increment":()->();
"read":()->(nat)query;
"write":(nat)->();
}
4、保存更改并改变文件继续以下流程。
05修改默认Dapp
创建新项目时,项目的src目录中会包含一个模版main.re文件,其中包含“HelloWorld!”程序。修改模版源代码流程如下:
1、在文本编辑器中打开src/main.rs模版文件并删除现有内容。
2、编写要在InternetComputer上部署的程序,编写程序时,请注意有两种类型的调用—查询调用和更新调用—并且更新函数使用异步消息传递。
3、保存更改并关闭src/main.rs文件操作以下流程。
06部署Dapp
在部署和测试Dapp之前,需要执行以下操作:
连接本地Canister执行环境或InternetComputer主网;为Dapp注册特定于网络的标识符;使用WebAssembly的目标输出编译Dapp;由于以上示例使用可编译为WebAssembly的Cargobuild命令配置了自定义dfx.json文件,因此可以使用dfx命令行界面和标准工作流程来完成所有剩余步骤。在本地构建和部署Dapp流程如下:
1、运行pwd检查是否在项目目录中。
2、在本地计算机打开新的终端窗口或Tab,然后导航到项目目录中。如果是在macOS上运行终端,可以执行以下任一操作:
单击shell,然后在NewTab在当前工作目录中打开一个新终端;单击shell并选择NewWindow,然后在新终端中运行cd-ic-projects/locationhello;3、通过运行以下命令启动本地Canister执行环境:运行结束后会根据平台和本地安全设置提示警告,如果系统提示允许或拒绝传入网络连接点击Allow。
4、让显示网络操作的终端保持打开状态,然后将焦点切换到创建项目的原始终端。
5、通过运行以下命令为Dapp注册唯一的Canister标识符:
dfxcanistercreate--all
6、运行以下命令构建Dapp:
dfxbuild
7、运行以下命令在本地Canister执行环境上部署Dapp:
dfxcanisterinstall--all
8、从命令行或浏览器测试Dapp中的功能。
以上是使用Rust在InterputerComputer上开发一个HelloWorld项目的流程。
标签:TERUSTDAPPAPPecoterra币APp下载Rug BustersDAPPXimtoken钱包app苹果版
本报记者李文见习记者张博今年以来,数字人民币试点进展迅速,“10+1”发展格局基本成形。各地因地制宜制定创新推广策略,促进数字人民币在C端与B端场景的加速落地.
1900/1/1 0:00:00Steam拒绝了区块链游戏,是否说明主流游戏行业依然对区块链怀有偏见?同样是游戏发行平台,Epic为什么欢迎区块链游戏? 作者:大文?来源:链得得2021年10月.
1900/1/1 0:00:00据外媒10月26日报道,OnChain认为孩子们下一个最喜欢的玩具可能是NFT。 Web3音乐平台Spinamp完成120万美元融资:6月5日消息,Web3 音乐平台 Spinamp 完成 12.
1900/1/1 0:00:00据CoinGeek10月12日消息,加密庞氏局OneCoin的投资者已与其创始人RujaIgnatova及其兄弟KonstantinIgnatov达成和解,且自愿撤销集体诉讼.
1900/1/1 0:00:00据Cointelegraph消息,Rally联合创始人KevinChou和MaheshVellanki周五宣布成立SuperLayer.
1900/1/1 0:00:00数字权利倡导组织FightfortheFuture、区块链游戏联盟、Enjin和26家区块链游戏公司已向电子游戏公司Valve提出请求.
1900/1/1 0:00:00