加密狗空投教程269 — 用VPS在 zkSync 网络上部署合约

之前写了篇不用VPS部署智能合约的教程,很多人会遇到各种各样的问题,那今天我们就来用VPS部署,一般情况下不会出现跑不通的问题了。一、往期教程加密狗空投教程256 – 部署 zkSync Era 智能合约二、教程前1、安装前需要使用VPS服务器,最低配置如下:CPU:4vCore内存:6GB硬盘:1

之前写了篇不用VPS部署智能合约的教程,很多人会遇到各种各样的问题,那今天我们就来用VPS部署,一般情况下不会出现跑不通的问题了。

image-1686636763168

一、往期教程

加密狗空投教程256 – 部署 zkSync Era 智能合约

二、教程前

1、安装前需要使用VPS服务器,最低配置如下:

CPU:4vCore

内存:6GB

硬盘:100GB

操作系统:Ubuntu 20.04

2、云主机+SSH工具

需要你使用VPS或者你的机场做为云主机,云主机请切换成Ubuntu系统;

SSH工具:小白用户建议使用Xshell或Finalshell。

三、如何连接到 VPS

MacOs:如果你用的是这个操作系统,你只需要用自己的设备与 SSH 连接;

Windows:如果你是Win,有很多工具可以用,比如putty 、MobaXterm、Xshell

1、下载一个应用(本教程以putty为例,小白用户建议使用Xshell或Finalshell)
2、复制云服务器IP链接

image-1686636922603

3、点击“接受”,输入云服务器的用户名和密码

注意:要粘贴你已经复制的任何命令,只需右键单击要粘贴命令即可

image-1686636979864

4、再次输入密码,并输入新密码。

以上就是云服务器+SSH组合的步骤,下文所有步骤都在SSH工具中进行(小白用户建议使用Xshell或Finalshell)

5、使用Ubuntu,因此将目录更改为 /home/ubuntu
cd /home/ubuntu
6、root

每个VPS都需要root,如果你用的是PuTTY,就按如下方式root,其他工具基础都差不了多少。

image-1686637079048

三、服务器设置

1、输入如下指令
sudo apt-get update && sudo apt-get install -y

image-1686637145773

2、安装CURL
apt install curl -y

image-1686637189453

curl -sL https://deb.nodesource.com/setup_16.x -o /tmp/nodesource_setup.sh
sudo bash /tmp/nodesource_setup.sh
3、安装NODEJS
sudo apt-get install -y nodejs

image-1686637312033

4、安装VIM :
sudo apt-get install vim

image-1686637388973

5、部署TIME
npm init -y

image-1686637464199

npm install --save-dev hardhat

image-1686637508982

6、继续:
npm install -g npm@9.6.2

image-1686637565547

npx hardhat

image-1686637603094

  • 点击箭头标记的地方,按ENTER
  • 按三下回车键

image-1686637654491

7、创建目录并进入目录
mkdir greeter
cd greeter
npm init -y

image-1686637719582

npm add -D typescript ts-node @types/node ethers@^5.7.2 zksync-web3@^0.14.3 @ethersproject/hash @ethersproject/web hardhat @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy
8、编辑配置:
vim hardhat.config.ts

插入次代码(这是官方代码,如果怕被女巫,可以用ai生成一个) :

import "@matterlabs/hardhat-zksync-deploy";
import "@matterlabs/hardhat-zksync-solc";
module.exports = {
  zksolc: {
    version: "1.3.6",
    compilerSource: "binary",
    settings: {},
  },
defaultNetwork: "zkSyncMainnet",
  networks: {
    zkSyncMainnet: {
      url: "https://zksync2-mainnet.zksync.io",
      ethNetwork: "mainnet", 
      zksync: true,
    },
  },
  solidity: {
    version: "0.8.17",
  },
};

按Esc
输入:wq
回车

9、创建两个目录:
mkdir contracts
mkdir deploy
vim contracts/Greeter.sol
10、继续插入代码:
//SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.0;
contract Greeter {
    string private greeting;
    constructor(string memory _greeting) {
        greeting = _greeting;
    }
    function greet() public view returns (string memory) {
        return greeting;
    }
    function setGreeting(string memory _greeting) public {
        greeting = _greeting;
    }
}

按 ESC
输入 :wq
按 ENTER

npx hardhat compile

image-1686638216536

11、继续输入
vim deploy/deploy.ts
12、输入下面的代码,将代码中的WALLET-PRIVATE-KEY改为你自己的私钥
import { utils, Wallet } from "zksync-web3";
import * as ethers from "ethers";
import { HardhatRuntimeEnvironment } from "hardhat/types";
import { Deployer } from "@matterlabs/hardhat-zksync-deploy";
// An example of a deploy script that will deploy and call a simple contract.
export default async function (hre: HardhatRuntimeEnvironment) {
  console.log(`Running deploy script for the Greeter contract`);
  // Initialize the wallet.
  const wallet = new Wallet(*<WALLET-PRIVATE-KEY*");
  // Create deployer object and load the artifact of the contract we want to deploy.
  const deployer = new Deployer(hre, wallet);
  const artifact = await deployer.loadArtifact("Greeter");
  // Deploy this contract. The returned object will be of a `Contract` type, similarly to ones in `ethers`.
  // `greeting` is an argument for contract constructor.
  const greeting = "Hi there!";
  const greeterContract = await deployer.deploy(artifact, [greeting]);
  // Show the contract info.
  const contractAddress = greeterContract.address;
  console.log(`${artifact.contractName} was deployed to ${contractAddress}`);
  // Call the deployed contract.
  const greetingFromContract = await greeterContract.greet();
  if (greetingFromContract == greeting) {
    console.log(`Contract greets us with ${greeting}!`);
  } else {
    console.error(`Contract said something unexpected: ${greetingFromContract}`);
  }
  // Edit the greeting of the contract
  const newGreeting = "Hey guys";
  const setNewGreetingHandle = await greeterContract.setGreeting(newGreeting);
  await setNewGreetingHandle.wait();
  const newGreetingFromContract = await greeterContract.greet();
  if (newGreetingFromContract == newGreeting) {
    console.log(`Contract greets us with ${newGreeting}!`);
  } else {
    console.error(`Contract said something unexpected: ${newGreetingFromContract}`);
  }
}

image-1686638414807

按 ESC
输入 :wq
按 ENTER

四、部署

npx hardhat deploy-zksync

image-1686638467127

复制合约地址,粘贴到EXPLORER查看:

image-1686638725418

五、验证合约

第1步、在刚打开的区块链浏览器上,选择下方contract,点击Verify Smart Contract;

image-1686638774376

第2步、填写智能合约,下图打箭头的部分都是要填写的:

image-1686638816624

Contract Name 填Greeter
在Enter the Solidy Contract Code栏中,粘贴:

//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
contract Greeter {
    string private greeting;
    constructor(string memory _greeting) {
        greeting = _greeting;
    }
    function greet() public view returns (string memory) {
        return greeting;
    }
    function setGreeting(string memory _greeting) public {
        greeting = _greeting;
    }
}

在 Constructor Arguments 栏中,插入部署合约后出现的数据:

第3步、填写所有栏后,点击“Verify Smart Contract”;

image-1686638913190

出现如下界面,说明部署成功;如果报错,请降低版本。

image-1686638947413

六、运行合约

验证成功后,可以去检查智能合约的运行情况。

第1步、点击区块链浏览器中的Back to contract,并转到contract部分。

第2步、选择read部分,点击Query按钮,应出现以下消息:Hey guys!

image-1686638992080

第3步、转到Write,打开,写下任何短语,例如Hi ZkSync,然后点击Connect Write to write 确认交易(要确认2次)。

image-1686639033007

第4步、交易完成后,返回read部分,并按下Query按钮,我们应该会看到我们在上次操作中写入的短语。

如果像下图这样,恭喜你,你的智能合约已打开并成功运行。

image-1686639056960

如果没有出现,请返回Write部分,看看你是不是没有出现交易hash,如果没有出现,请在此点击Write。

以上就是今天全部内容,更多信息请关注:

加密狗推特:https://twitter.com/JiamigouCn

电报:https://t.me/JIAMIGOU002

给TA打赏
共{{data.count}}人
人已打赏
评测攻略

加密狗空投教程268 -- 如何部署Aptos节点?

2023-6-12 16:38:22

评测攻略

加密狗空投教程270 -- 5分钟在Taiko上部署智能合约的收藏级教程

2023-6-19 16:39:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索