跳转至

发送批量交易

原文:https://docs.elrond.com/sdk-and-tools/erdpy/sending-bulk-transactions

很容易准备一组交易,然后使用erdpy一次性发送它们。以下是方法。

要求:

  • 您的电脑上必须安装有erdpy。详见安装 erdpy
  • 你需要一个有足够 EGLD 的钱包。我们将使用您为此钱包准备的助记符来生成一个erdpy需要的 PEM 文件。

将有 3 个步骤来完成:

  1. 根据钱包助记符准备 PEM 文件。
  2. 准备交易集,包括配置一个 Bash 脚本(下面提供)。该脚本将包含您想要的交易,并将引用您的 PEM 文件。
  3. 执行发送准备集中所有交易的命令。
警告

确保您的终端正在运行bash,而不是zsh或任何其他 shell。运行以下命令:

ps -p $$ 

它应该打印出如下内容:

PID TTY          TIME CMD
169860 pts/6 00:00:00 bash 

CMD关键字下的字必须是bash,否则下面提供的脚本无法工作。如果它显示zshcshtcsh或其他任何信息,运行以下命令启动一个bash会话:

exec /bin/bash 

第一步:准备 PEM 文件

有关如何准备 PEM 文件,请参见第页“导出钱包 PEM 文件”。确保您知道erdpy为您保存的确切位置。

第二步:准备交易集

下面的 Bash 脚本定义了一组 9 个示例交易。每笔交易占一行,包含接收者钱包地址(如erd1qx22...),然后是一个空格,然后是要转移的 EGLD 金额(如8)。该脚本将负责应用正确的 EGLD 命名。

您必须首先更改MYWALLET的值。您在下面的脚本中看到的钱包实际上并不存在,从它发送的交易将会失败。因此,你需要在定义MYWALLET的那一行的引号"之间写上你的钱包地址。

接下来,您必须将PEM_FILE变量更改为您在步骤 1 中准备的 PEM 文件的路径(见上文)。

接下来,您必须用您想要的收款人钱包和您想要转账的金额来更改TRANSACTIONS列表。您可以删除此列表中的一些行,或者根据需要添加更多行。

# You must edit the values of MYWALLET and PEM_FILE
# and then modify the TRANSACTIONS list.

MYWALLET="erd1sg4u62lzvgkeu4grnlwn7h2s92rqf8a64z48pl9c7us37ajv9u8qj9w8xg"
PEM_FILE="./walletKey.pem"

declare -a TRANSACTIONS=(
  "erd1qx22s3yyawvfvsn3573r3nkwk6c9efj756ex5cnqk5ul6fz5nggqhaze4y 2"
  "erd1qx22s3yyawvfvsn3573r3nkwk6c9efj756ex5cnqk5ul6fz5nggqhaze4y 4"
  "erd1qx22s3yyawvfvsn3573r3nkwk6c9efj756ex5cnqk5ul6fz5nggqhaze4y 8"
  "erd1nuxuu4s07m0348tacnu7et3x9dsskj6rql3yax2qsmct8uux3qqqf86kl9 16"
  "erd1nuxuu4s07m0348tacnu7et3x9dsskj6rql3yax2qsmct8uux3qqqf86kl9 32"
  "erd1nuxuu4s07m0348tacnu7et3x9dsskj6rql3yax2qsmct8uux3qqqf86kl9 64"
  "erd1a6wdtlr72ejdf8szvxaz4xvtcq8650az9005s9s92n7vpkj0lylsmja0h0 128"
  "erd1a6wdtlr72ejdf8szvxaz4xvtcq8650az9005s9s92n7vpkj0lylsmja0h0 256"
  "erd1a6wdtlr72ejdf8szvxaz4xvtcq8650az9005s9s92n7vpkj0lylsmja0h0 512"
)

# DO NOT MODIFY ANYTHING FROM HERE ON

PROXY="https://gateway.elrond.com"
DENOMINATION="000000000000000000"

# We recall the nonce of the wallet
NONCE=$(erdpy account get --nonce --address="$MYWALLET" --proxy="$PROXY")

function send-bulk-tx {
  for transaction in "${TRANSACTIONS[@]}"; do
    set -- $transaction
    erdpy --verbose tx new --send --outfile="bon-mission-tx-$NONCE.json" --pem=$PEM_FILE --nonce=$NONCE --receiver=$1 --value="$2$DENOMINATION" --gas-limit=50000 --proxy=$PROXY
    echo "Transaction sent with nonce $NONCE and backed up to bon-mission-tx-$NONCE.json."
    (( NONCE++ ))
  done
} 

将上述代码保存到一个名为transactions.sh的文件中。我们将在下一步中需要它。

第三步:发送交易

让我们发送交易:

source ./transactions.sh
send-bulk-tx 

第一个命令从transactions.sh文件导入send-bulk-tx命令(参见上面步骤 1 中的文件)。然后第二个命令执行send-bulk-tx,它将为集合中的每个交易调用erdpy

搞定了。



回到顶部