以编程方式签名
原文: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)