当前位置: 首页 > article >正文

在 Kakarot ZkEVM 上使用 Starknet Scaffold 构建应用

Starknet 和 EVM

我们所知的智能合约世界一直围绕着以太坊虚拟机(EVM),其主要语言是 Solidity。

尽管 Starknet 通过 STARKs 为以太坊开辟了新的可能性,但其缺点是它有一个不同的虚拟机 (CairoVM),这要求开发者学习 Cairo 编程语言才能在 Starknet 上构建。

因此限制了 Starknet DApps 的影响力,并阻止它们接触到 EVM 生态系统。作为 L2,Starknet 的目标是扩展以太坊,但由于 CairoVM 和以太坊虚拟机(EVM)之间的差距,它无法有效地做到这一点。

Kakarot zkEVM

Kakarot zkEVM 旨在弥合 CairoVM 和 EVM 之间的差距。由 Kakarot Labs开发,它是一个使用Cairo
 构建的 EVM。

有了 Kakarot,Starknet 成为一个多虚拟机环境,这意味着开发者现在可以在构建应用程序时利用 CairoVM 和 EVM。
这种能力使 Starknet 兼容 EVM,消除了 Solidity 开发者在 Starknet 上构建时学习全新语言的需求。

Kakarot zkEVM 的关键特性

  • 敏捷和轻量级:使用 Cairo 构建,Kakarot 将密码学与工程分离,使其更易于审计、扩展和改进。
  • 互操作和模块化:Kakarot 支持多虚拟机环境,允许 Solidity 合约与 Cairo 程序交互,反之亦然。
  • 高性能:Kakarot 受益于未来 Cairo 堆栈的升级,例如即将发布的 Stwo,这将使 ZK 证明生成性能提高 100–1,000 倍。

有了 Kakarot,开发者可以在 Starknet 上获得新的可能性,而不失去现有的技能,使其成为去中心化应用未来的关键角色。

让我们使用 Starknet Scaffold 编写一个 Solidity 智能合约

上面的标题感觉像是一个梦 😄 — 捏我一下!

什么是 Starknet Scaffold?


 Starknet Scaffold由 Horus Labs​构建,是一个为在 Starknet 上开发去中心化应用程序(dApps)而设计的工具包。它包括最流行和功能强大的工具,确保你始终拥有最新的开发环境。

Starknet Scaffold 现在支持 Kakarot,使得创建同时适用于 Solidity 和 Cairo 的 DApps 更加简单。你可以使用 Kakarot zkEVM 上包含的入门模板开始构建你的 DApp。

让我们开始吧

我们将通过 Kakarot 以与你与以太坊主网或任何其他基于以太坊的链(使用 Metamask、Rainbow、使用 Foundry 或 Hardhat 构建等)相同的方式与 Starknet MultiVM 进行交互。

**要求
**在我们开始之前,请确保你已安装以下内容:

  •  Git
  • Node
  • Docker
  • Yarn

设置

打开你的终端并运行以下命令:

npx create-starknet-app

  • 输入你的包名称: 例如,kakarot-DApp
  • 选择包类型: 选择 5 代表 kakarot。
  • 运行脚手架:
  • cd kakarot-DApp

npm run start-kakarot

要使其工作,你需要运行 Docker,否则会出现错误。

继续运行命令,你将在终端中看到以下内容,这意味着 kakarot 当前正在你的机器上运行。

编写和部署智能合约

在你的 vscode 中打开我们搭建的文件夹,你将看到如下的文件夹结构。我们有两个包含智能合约的文件夹:

  • contracts : 该文件夹包含 Cairo 智能合约。
  • kakarot : 包含 Solidity 智能合约。

kakarot zkEVM 通过使 Starknet 成为一个多虚拟机环境来增强和扩展 Starknet,这意味着我们可以将 Solidity 和 Cairo 合约部署到 Starknet。

在 package.json 中,你会找到所有可用的脚本,你可以运行这些脚本以使开发过程更轻松

步骤 1:构建和编译智能合约

此命令构建并编译 Cairo 智能合约。

npm run build-contracts

步骤 2:部署 Kakarot L1 消息合约

npm run deploy-kakarot-l1-messaging-contracts-local

此命令在本地部署 L1KakarotMessaging.sol 和 StarknetMessaging.sol 合约。

合约解释

  1. L1KakarotMessaging.sol : 该合约通过向 Starknet (L2) 上的合约发送和接收消息来实现 Layer 1 (L1) 和 Layer 2 (L2) 之间的通信。
  2. StarknetMessaging.sol : 该合约管理 Layer 1 和 Layer 2 之间消息传递的机制,并负责维护消息的完整性、处理和确保这两个层之间的可靠通信。

步骤 3:部署 EVM 智能合约

让我们在 example 文件夹中部署 counter.sol 合约。确保你的 Docker 正在运行。

本地部署 EVM 合约

在这里,你可以找到在本地部署时可以使用的 rpc 和私钥。

运行以下命令以在本地部署:

npm run deploy-kakarot-evm-contract --contract-path=solidity_contracts/src/examples/Counter.sol:Counter --rpc-url=http://127.0.0.1:3030 --private-key=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

在 Kakarot Sepolia 测试网上部署 EVM 合约

在我们继续之前,请确保将 Kakarot Sepolia添加到你的 Metamask:

 Overview | Kakarot ZK-EVM

我将使用 env.example 文件中的 私钥,如果你想使用你的地址进行部署,可以使用连接到你任何 Metamask 地址的私钥。

运行以下命令在 Kakarot Sepolia 测试网上部署:

npm run deploy-kakarot-evm-contract --contract-path=solidity_contracts/src/examples/Counter.sol:Counter --rpc-url=
 --private-key=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

让我们使用合约地址验证合约是否已部署
0x3Aa5ebB10DC797CAC828524e59A333d0A371443c

在 Kakarot Sepolia 测试网上与 EVM 合约函数交互

让我们增加 Counter.sol 合约的计数器。

cast send 0x3Aa5ebB10DC797CAC828524e59A333d0A371443c "increment()" --rpc-url=https://sepolia-rpc.kakarot.org --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

现在我们已成功与 increment 函数进行了交互。

README.md 文件

打开 kakarot 文件夹中的 README.md 文件,其中包含我们运行的所有命令及更多内容。

总结

我们已成功在 Kakarot Sepolia 测试网上部署并与我们的 Solidity 合约进行了交互。

在本文的下一部分中,我们将演示如何从 Solidity 合约中与 Cairo 合约进行交互。这是不是很令人兴奋?

Kakarot zkEVM 的集成到 Starknet 标志着在 CairoVM 和以太坊虚拟机(EVM)之间架起桥的重要一步。

借助由Horus Labs提供支持的 Starknet Scaffold工具包,开发人员可以高效且简化地编写、部署和交互 Solidity 和 Cairo 智能合约,https://t.me/gtokentool   。


http://www.kler.cn/news/367059.html

相关文章:

  • Vue学习笔记(四)
  • 智慧停车场导航系统架构及反向寻车系统解决方案
  • 雷赛L6N伺服驱动器基本参数设置——EtherCAT 总线型
  • YOLOv8_ ByteTrack目标跟踪、模型部署
  • uniapp renderjs页面传值
  • kubeadm快速自动化部署k8s集群
  • 如何在轻量云服务器上搭建一个基本的开发环境
  • PostgreSQL 约束
  • SSL VPN调试思路及配置指南
  • 三国杀钓鱼自动化
  • 【人工智能-初级】第21章 线性代数与 AI:理解矩阵乘法和特征向量
  • java核心技术点都有哪些
  • C# Windows桌面应用打包指南
  • 算法的学习笔记—和为 S 的两个数字(牛客JZ57)
  • Linux基础命令:轻松掌握终端操作
  • 十一、数据库配置
  • CI/CD 流水线系统-开源框架Tekton
  • windows 上面交叉编译 适合arm架构上的linux内核系统的qt 版本,源码编译
  • MYSQL-查看创建的用户语法(十二)
  • C++音视频02:环境搭建
  • 【rust实战】rust博客系统2_使用wrap启动rust项目服务
  • 基于DDPG算法的股票量化交易
  • 浮动+flex布局
  • Django项目实战-图书管理系统之项目搭建
  • c# windows 动态生成CheckBox控件
  • 前端优化:从Vue/React/Svelte的数组更新->渲染策略剖析数组大列表数据展示优化策略