跳转至

以编程方式签名

原文:https://docs.elrond.com/developers/signing-transactions/signing-programmatically

## 标志使用 elrond-core-js

安装 elrond-core-js 后,交易可以签署如下:

const fs = require("fs");
const core = require("@elrondnetwork/elrond-core-js");

let keyFileJson = fs.readFileSync("myWallet.json", { encoding: "utf8" }).trim();
let keyFileObject = JSON.parse(keyFileJson);

let account = new core.account();
account.loadFromKeyFile(keyFileObject, "passwordOfMyWallet");

let transaction = new core.transaction(
    42,                // nonce
    "erd1...",         // sender
    "erd1...",         // receiver
    "100000000000000000", // value
    1000000000,           // gas price
    70000,                // gas limit
    "food for cats",      // data (not encoded)
    "1",                  // chain ID
    1                     // tx version
);

let serializedTransaction = transaction.prepareForSigning();
transaction.signature = account.sign(serializedTransaction);
let signedTransaction = transaction.prepareForNode();
let signedTransactionJson = JSON.stringify(signedTransaction, null, 4); 

以上,signedTransactionJson的内容可以提交给Elrond API,以便广播交易。

符号使用 erdpy

from erdpy.accounts import Account
from erdpy.transactions import Transaction

tx = Transaction()
tx.nonce = 43
tx.value = "20000000000000000"  # 0.00002 EGLD
tx.sender = "erd1..."
tx.receiver = "erd1..."
tx.gasPrice = 1000000000
tx.gasLimit = 50000
tx.data = "hello, World!"
tx.chainID = "1"
tx.version = 1

account = Account(key_file="myWallet.json", pass_file="myPass.txt")
tx.sign(account)

payload = tx.to_dictionary()
print(payload) 

以上,payload可提交给Elrond API,以便广播交易。或者,可以使用send功能:

from erdpy.proxy import ElrondProxy
 proxy = ElrondProxy("https://gateway.elrond.com")
tx.send(proxy) 


回到顶部