Kakarot ZkEVM 弥合 CairoVM 和 EVM 之间的差距
我们所知的智能合约世界一直围绕着以太坊虚拟机(EVM),其主要语言是 Solidity。
尽管 Starknet 通过 STARKs 为以太坊开辟了新的可能性,但其缺点是它有一个不同的虚拟机 (CairoVM),这要求开发者学习 Cairo 编程语言才能在 Starknet 上构建。
因此限制了 Starknet DApps 的影响力,并阻止它们接触到 EVM 生态系统。作为 L2,Starknet 的目标是扩展以太坊,但由于 CairoVM 和以太坊虚拟机(EVM)之间的差距,它无法有效地做到这一点。
Kakarot zkEVM 旨在弥合 CairoVM 和 EVM 之间的差距。由 Kakarot Labs 开发,它是一个使用 Cairo 构建的 EVM。
有了 Kakarot,Starknet 成为一个多虚拟机环境,这意味着开发者现在可以在构建应用程序时利用 CairoVM 和 EVM。
这种能力使 Starknet 兼容 EVM,消除了 Solidity 开发者在 Starknet 上构建时学习全新语言的需求。
有了 Kakarot,开发者可以在 Starknet 上获得新的可能性,而不失去现有的技能,使其成为去中心化应用未来的关键角色。
上面的标题感觉像是一个梦 😄 — 捏我一下!
Starknet Scaffold 由 Horus Labs 构建,是一个为在 Starknet 上开发去中心化应用程序(dApps)而设计的工具包。它包括最流行和功能强大的工具,确保你始终拥有最新的开发环境。
Starknet Scaffold 现在支持 Kakarot,使得创建同时适用于 Solidity 和 Cairo 的 DApps 更加简单。你可以使用 Kakarot zkEVM 上包含的入门模板开始构建你的 DApp。
我们将通过 Kakarot 以与你与以太坊主网或任何其他基于以太坊的链(使用 Metamask、Rainbow、使用 Foundry 或 Hardhat 构建等)相同的方式与 Starknet MultiVM 进行交互。
要求
在我们开始之前,请确保你已安装以下内容:
打开你的终端并运行以下命令:
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
中,你会找到所有可用的脚本,你可以运行这些脚本以使开发过程更轻松
此命令构建并编译 Cairo 智能合约。
npm run build-contracts
npm run deploy-kakarot-l1-messaging-contracts-local
此命令在本地部署 L1KakarotMessaging.sol
和 StarknetMessaging.sol
合约。
合约解释
L1KakarotMessaging.sol
: 该合约通过向 Starknet (L2) 上的合约发送和接收消息来实现 Layer 1 (L1) 和 Layer 2 (L2) 之间的通信。StarknetMessaging.sol
: 该合约管理 Layer 1 和 Layer 2 之间消息传递的机制,并负责维护消息的完整性、处理和确保这两个层之间的可靠通信。让我们在 example
文件夹中部署 counter.sol
合约。确保你的 Docker 正在运行。
在这里,你可以找到在本地部署时可以使用的 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 添加到你的 Metamask:
https://docs.kakarot.org/starknet/overview/
我将使用 env.example
文件中的 私钥,如果你想使用你的地址进行部署,可以使用连接到你任何 Metamask 地址的私钥。
运行以下命令在 Kakarot Sepolia 测试网上部署:
npm run deploy-kakarot-evm-contract --contract-path=solidity_contracts/src/examples/Counter.sol:Counter --rpc-url=https://sepolia-rpc.kakarot.org --private-key=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
让我们使用合约地址验证合约是否已部署
0x3Aa5ebB10DC797CAC828524e59A333d0A371443c
让我们增加 Counter.sol
合约的计数器。
cast send 0x3Aa5ebB10DC797CAC828524e59A333d0A371443c "increment()" --rpc-url=https://sepolia-rpc.kakarot.org --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
现在我们已成功与 increment
函数进行了交互。
打开 kakarot
文件夹中的 README.md 文件,其中包含我们运行的所有命令及更多内容。
我们已成功在 Kakarot Sepolia 测试网上部署并与我们的 Solidity 合约进行了交互。
在本文的下一部分中,我们将演示如何从 Solidity 合约中与 Cairo 合约进行交互。这是不是很令人兴奋?
Kakarot zkEVM 的集成到 Starknet 标志着在 CairoVM 和以太坊虚拟机(EVM)之间架起桥的重要一步。
借助由 Horus Labs 提供支持的 Starknet Scaffold 工具包,开发人员可以高效且简化地编写、部署和交互 Solidity 和 Cairo 智能合约。
有用的链接:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!