月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 以太坊 > 正文

TER:教程 | 如何使用Rust在Internet Computer上开发一个Hello World项目_ustc币最新官方消息

作者:

时间:1900/1/1 0:00:00

在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所涉及的关键步骤,需要注意的是此处描述的步骤只是一种实现方法,也可通过其他方法实现。以下操作流程的示例项目是以下存储库中示例项目的其中之一。

Azuki联创:Elementals铸造确存处理不当问题,预售窗口将会延长:6月28日消息,由于预售时间和网站托管等问题,NFT项目Azuki联合创始人locationtba发推承认Azuki Elementals铸造处理不当的责任。locationtba表示Azuki Elementals铸造流程存在重大缺陷,严重低估了Azuki和BEANZ持有者预售第一阶段和第二阶段所需的时间,应该将持续时间延长到10分钟以上,以便在出现任何问题时(确实存在问题)有足够的缓冲。另外,尽管受到容量限制,但后续Azuki Elementals网站仍将由Vercel托管,以确保能够处理预期的负载。鉴于预售阶段出现的种种问题,Azuki Elementals预售窗口将会延长。

另据Opensea最新数据,Azuki Elementals地板价现为1.91ETH,跌破发行价2ETH。Azuki品牌NFT系列均大幅下跌,Azuki地板价跌至10ETH,24小时跌幅31%,BEANZ跌幅超40%。[2023/6/28 22:04:49]

注意:RustCDK可以提供了一些快捷方式实现更轻松的编写查询和更新调用的函数。

全国人大代表付喜国:防范虚拟货币风险,明确制作和发售数字代币的法律责任:金色财经报道,今年全国两会,全国人大代表、中国人民银行沈阳分行行长付喜国拟提交关于修改《中华人民共和国中国人民银行法》的建议。付喜国认为,应完善人民币管理职责,重新对法定人民币的表现形式和制作方式等内容在法律规定中进行界定,赋予数字人民币与实物人民币同等的法定地位;根据数字人民币的特性,全面详细规定数字人民币的发行方式、流通方式、监管方式等内容,防范虚拟货币风险,明确制作和发售数字代币的法律责任。[2023/3/5 12:43:37]

最低到最高级别的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项目的典型工作流程如下:

1、在本地打开一个终端窗口。

2、运行以下命令验证是否安装Cargo:

由于大多数开发者都是使用Cargo来处理build和packagsemanagementtask:下载和编译Dapp所依赖的程序库,以下是使用Cargo命令行界面创建的一个新的Rust项目示例。但使用Cargo创建一个项目代表创建Rust项目的典型工作流程如下:

彭博社:SBF正在将自己描绘成一个倒霉但用心良苦的CEO来尝试逃避指控:金色财经报道,彭博社最新推文称,“Sam Bankman-Fried 正在将自己描绘成一位倒霉但用心良苦的首席执行官来尝试逃避指控,他犯了一系列灾难性的错误,但却声称从未在 FTX 加密货币帝国中故意犯下欺诈行为,甚至还表示自己曾呼吁渴望 FTX 受到监管,但事实可能无法给予其辩解更多支持。[2023/1/1 22:19:31]

1、在本地打开一个终端窗口。

2、运行以下命令验证是否安装Cargo:

cargo--version3、更改为用于InternetComputer或Rust示例项目的文件夹名。

4、运行以下命令来创建一个新项目:

cargonewmyrustdapp此命令创建一个my_rust_dapp带有默认Crago.toml文件的新目录和一个带有src目录的main.rs的默认文件。5、运行以下命令切换到项目目录:

cdmyrustdapp如果你列出项目目录内容,将会看到它只包含Crago.toml文件和src目录,要编译此项目在InternetComputer上运行需要一些附加文件。

02修改Crago配置文件

该Crago.toml文件为每个Rust程序包提供一个清单,清单包含指定Rust程序包配置详细信息,为了准备Rust项目在InternetComputer上运行,我们需要复制默认Crago.toml文件,然后修改项目的一些配置细节。修改Grago.toml文件:

数据:过去三个月加密行业每周活跃开发者数量减少了26%以上:9月9日消息,据外媒报道,在市场长期低迷的情况下,过去三个月,加密行业的每周活跃开发者数量减少了26%以上。根据区块链数据聚合器Artemis的数据,以太坊、Polkadot、Solana和Cosmos的降幅更大,在过去三个月里,开发者活动分别减少了30.5%、43.6%、48.4%和48.9%。

不过,去中心化数据存储协议IPFS和区块链网络Internet Computer是少数几个在此期间增长的顶级智能合约平台,分别增长了206.6%和21.7%。报道称,区块链开发人员活动被认为是智能合约平台成功的最重要指标之一,因为缺乏开发人员的平台可能难以成长。(Cointelegraph)[2022/9/9 13:18:57]

1、运行pwd命令检查是否位于项目的根目录文件。

2、运行以下命令将默认Crago.toml文件复制到src目录中:

cpCargo.tomlsrc/Cargo.toml在InternetComputer上运行的项目通常使用一个项目级Crago.toml文件来为项目Canister成员设置工作区,并使用Crago.toml源代码目录中的第二个文件来配置每个Canister的设置。

3、在文本编辑器中打开Crago.toml作为项目根目录文件。默认情况下该文件包含和分区。

4、将该分区替换为类似于以下内容的分区:

Immutable X与特纳体育合作,构建体育区块链游戏:6月15日消息,Immutable X与特纳体育达成战略合作关系,构建由StarkWare支持的体育区块链游戏。据悉,特纳体育(Turner Sports)是特纳广播系统公司子公司,负责特纳体育广播频道,包括TBS,TNT,TruTV和CNN enEspa?ol,也运营数字媒体渠道NCAA.com ,NBA.com,PGATOUR.com和PGA.com。特纳体育还代表美国国家篮球协会运营NBA电视,以及拥有Peachtree TV。[2022/6/15 4:28:26]

members=[

"src/my\_rust\_dapp",

]

有关分区和键值的信息参考如下: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"

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项目的流程。

标签:TERUSTDAPAPPEATER价格ustc币最新官方消息DAPSmetamask钱包app下载

以太坊热门资讯
NFT:NFT周刊|迪士尼与VeVe达成合作;CryptoPunk巨额交易引发关注;首次NFT嘉年华举行_Work Force Coin

本周有大量的资金流入了NFT领域。我们在一周内看到许多高光时刻。当然,还有一些新的合作伙伴加入并引起了注目。与往常一样,我们每周日都会撰写NFT周报,简要回顾过去7天发生的一切.

1900/1/1 0:00:00
区块链::随着区块链等技术加速创新,应不断做强做优做大我国数字经济_区块链域名谁在管理

据新华社消息,中共中央局10月18日下午就推动我国数字经济健康发展进行第三十四次集体学习。中共中央总书记在主持学习时强调,近年来,互联网、大数据、云计算、人工智能、区块链等技术加速创新.

1900/1/1 0:00:00
区块链:探索Web3基础设施:从计算、索引到存储,Web3网络收入的黎明已至_filecoin币会涨到多少钱

撰文:MasonNystrom本文编译自MessariWeb3的普及早已在预料之中,但由于需要跨越计算、索引、数据管理、托管、存储和其他重要服务的基础设施,因此需要时间才能完全体现.

1900/1/1 0:00:00
比特币:灰度「出山」再攻比特币现货ETF_比特币最直白的解释

不出意外,美国知名ETF提供商ProShares发行的比特币期货ETF将很快在纽交所上市。根据Coindesk报道,美国证券交易委员会SEC在内部会议中已经批准了该ETF.

1900/1/1 0:00:00
以太坊:科普 | 以太坊虚拟机EVM是什么,有何用处?_DEF

近日消息,以太坊扩容方案Optimism宣布其OVM的2.0版将于10月14日部署至Kovan测试网,并于10月28日部署至以太网主网.

1900/1/1 0:00:00
数字资产:观点 | 区块链技术是构建产业互联网的可信数据基础设施_数字资产合法吗

本文作者为分布科技供应链金融总监肖旻随着数字经济的到来,中国企业及各类产业集群的产业互联网需求急剧扩增。中国拥有门类齐全、规模巨大、集群众多的产业体系,为产业互联网的发展提供极为丰富的应用场景.

1900/1/1 0:00:00