签名工具
原文:https://docs.elrond.com/developers/signing-transactions/tools-for-signing
为了在不实际分派交易的情况下签署交易,可以使用 erdpy 或 erdwalletjs-cli 。
符号使用 erdpy (命令行界面)
使用 pem 文件:
$ erdpy tx new --nonce=41 --data="Hello, World" --gas-limit=70000 \
--receiver=erd1l453hd0gt5gzdp7czpuall8ggt2dcv5zwmfdf3sd3lguxseux2fsmsgldz \
--pem=aliceKey.pem --pem-index=0 --outfile=myTransaction.json
使用 JSON wallet 密钥(及其密码):
erdpy tx new --nonce=41 --data="Hello, World" --gas-limit=70000 \
--receiver=erd1l453hd0gt5gzdp7czpuall8ggt2dcv5zwmfdf3sd3lguxseux2fsmsgldz \
--keyfile=walletKeyOfAlice.json --passfile=passwordOfAlice.txt \
--outfile=myTransaction.json
在任一情况下,输出文件如下所示:
{
"tx": {
"nonce": 41,
"value": "0",
"receiver": "erd1l453hd0gt5gzdp7czpuall8ggt2dcv5zwmfdf3sd3lguxseux2fsmsgldz",
"sender": "erd1aedmqfsflx4rhwvs7v9z52e7eylkevz4w342jzuaa9ezy5unsc5qqy963v",
"gasPrice": 1000000000,
"gasLimit": 70000,
"data": "SGVsbG8sIFdvcmxk",
"chainID": "1596807148",
"version": 123,
"signature": "f432442ebfee6edf4518c10d006ab571d8ecbd6f2601995554c75d3402b424364908235d45449ba5dd28575e4a8129271020e4718cf8a4c6f44e22c0885ac40a"
},
"hash": "",
"data": "Hello, World"
}
符号使用 erdwalletjs-cli
假设 JSON 文件中有一个未签名的交易:
{
"nonce": 42,
"receiver": "erd1cux02zersde0l7hhklzhywcxk4u9n4py5tdxyx7vrvhnza2r4gmq4vw35r",
"value": "100000000000000000",
"gasPrice": 1000000000,
"gasLimit": 70000,
"data": "food for cats",
"chainID": "1",
"version": 1
}
您可以按如下方式签名:
$ erdwalletjs sign -i ./aliceToBob.json -o ./aliceToBobSigned.json \
-k walletKeyOfAlice.json -p passwordOfAlice.txt
已签名的交易如下所示:
{
"nonce": 42,
"value": "100000000000000000",
"receiver": "erd1cux02zersde0l7hhklzhywcxk4u9n4py5tdxyx7vrvhnza2r4gmq4vw35r",
"sender": "erd1ylzm22ngxl2tspgvwm0yth2myr6dx9avtx83zpxpu7rhxw4qltzs9tmjm9",
"gasPrice": 1000000000,
"gasLimit": 70000,
"data": "Zm9vZCBmb3IgY2F0cw==",
"chainID": "1",
"version": 1,
"signature": "5845301de8ca3a8576166fb3b7dd25124868ce54b07eec7022ae3ffd8d4629540dbb7d0ceed9455a259695e2665db614828728d0f9b0fb1cc46c07dd669d2f0e"
}
其他签约工具
每个 SDK 都包括签名和广播交易的功能。完整列表请参考SDK&工具。