跳转至

设置本地测试网

原文:https://docs.elrond.com/developers/setup-local-testnet

本指南描述了如何使用 erdpy 建立一个本地小型测试网。除了编写单元和集成测试之外,本地迷你测试网的目的是允许开发者试验和测试他们的智能合约。

迷你测试网包括:

  • 验证器节点(默认为两个)
  • 观察节点(默认为两个)
  • 种子节点
  • 一个Elrond代理

如果没有另外指定,mini-testnet 从一个 Shard 加上元链开始(每个都有一个验证器和一个观察者)。

先决条件:erdpy

为了安装 erdpy,请遵循安装 erdpy 中的说明。

erdpy 版

确保您的 erdpy 版本是1.3.2或更高版本。

先决条件:节点和代理

运行以下命令,将先决条件(elrond-goelrond-proxy-gogolangtestwallets)提取到~/elrondsdk:

$ erdpy testnet prerequisites 

Testnet 配置

让我们在 erdpy 中配置以下网络参数,这样(erdpy 的)后续命令调用就不需要您显式提供--proxy--chainID参数:

$ erdpy config set chainID local-testnet
$ erdpy config set proxy http://localhost:7950 

然后,在你选择的文件夹中添加一个文件名testnet.toml和下面的内容。

$ mkdir MySandbox && cd MySandbox
$ touch testnet.toml 
testnet.toml
[networking]
port_proxy = 7950 
提示

erdpy 允许您更加详细地定制本地迷你测试网的配置,但是为了简单起见,在上面的例子中,我们只设置了Elrond代理的 TCP 端口。

然后,配置并构建本地测试网,如下所示:

$ cd MySandbox
$ erdpy testnet config 

运行该命令后,一个名为testnet的新文件夹将被添加到当前目录中。这个文件夹包含节点&代理二进制文件,它们的配置,加上开发钱包

警告

发展钱包(爱丽丝,鲍勃,卡罗尔,...,Mike) 是众所周知的 -它们只能用于开发和测试目的。

开发钱包是在 genesis 创建的,它们的密钥(PEM 文件和钱包 JSON 文件)可以在文件夹testnet/wallets/users中找到。

首发 Testnet

erdpy testnet start 

这将启动种子节点、验证器、观察器和代理。

重要

请注意,代理启动时有大约 30 秒的延迟。

发送交易

让我们使用 erdpy: 发送一个简单的交易

Simple Transfer
erdpy tx new --recall-nonce --data="Hello, World" --gas-limit=70000 \
 --receiver=erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx \
 --pem=~/elrondsdk/testwallets/latest/users/alice.pem \
 --send 

您应该在stdout(或您选择的--outfile)中看到准备好的交易和交易散列。使用交易散列,您可以根据代理或 erdpy 本身查询交易的状态:

$ curl http://localhost:7950/transaction/1dcfb2227e32483f0a5148b98341af319e9bd2824a76f605421482b36a1418f7
$ erdpy tx get --hash=1dcfb2227e32483f0a5148b98341af319e9bd2824a76f605421482b36a1418f7 

部署智能合约并与之交互

让我们使用 erdpy 部署一个智能合约。我们将以简单的计数器为例。

如果您需要有关如何构建柜台样本合约的指导,请遵循柜台智能合约教程

Deploy Contract
erdpy --verbose contract deploy --bytecode=./counter.wasm \
 --recall-nonce --gas-limit=5000000 \
 --pem=~/elrondsdk/testwallets/latest/users/alice.pem \
 --outfile=myCounter.json \
 --send 

部署后,您可以检查交易的状态以及智能合约是否存在:

$ curl http://localhost:7950/transaction/0db61bab8e78779ae009300988c6be0949086d93e2b7adfddd5e6375a4b6eeb7 | jq
$ curl http://localhost:7950/address/erd1qqqqqqqqqqqqqpgqj5zftf3ef3gqm3gklcetpmxwg43rh8z2d8ss2e49aq | jq 

如果一切正常(交易状态为executed并且地址的code属性已设置),您可以与已部署的合约进行交互或对其执行查询:

Call Contract
erdpy --verbose contract call erd1qqqqqqqqqqqqqpgqj5zftf3ef3gqm3gklcetpmxwg43rh8z2d8ss2e49aq \
 --recall-nonce --gas-limit=1000000 --function=increment \
 --pem=~/elrondsdk/testwallets/latest/users/alice.pem --outfile=myCall.json \
 --send 
Query Contract
erdpy --verbose contract query erd1qqqqqqqqqqqqqpgqj5zftf3ef3gqm3gklcetpmxwg43rh8z2d8ss2e49aq --function=get 

模拟交易

有时,您可以通过用标志--simulate替换标志--send来模拟交易,而不是广播它们。例如:

Simulate: Call Contract
all-nonce --gas-limit=1000000 --function=increment \
 --pem=~/elrondsdk/testwallets/latest/users/alice.pem --outfile=myCall.json \
 --simulate 
Simulate: Simple Transfer
erdpy tx new --recall-nonce --data="Hello, World" --gas-limit=70000 \
 --receiver=erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx \
 --pem=~/elrondsdk/testwallets/latest/users/alice.pem \
 --simulate 


回到顶部