问题描述
我正在学习如何使用 cardano-rosetta
并且我想让 send-transaction-example.ts
脚本使用我事先获得的地址。这些地址是使用 cardano-addresses
工具导出的,然后我将其转换为 Uint8 数组。这是因为我们需要导出一批以后可能会用到的地址。
交易已构建并签署,似乎没有任何问题。服务器日志如下。但是,交易被拒绝。 API 响应不是很具有描述性,我只收到 500 错误,但服务器日志在下面。问题似乎出在这一行:
[53047783:cardano.node.Mempool:Info:38002] [2021-03-30 15:55:43.90 UTC] fromList [("tx",Object (fromList [("txid",String "txid: TxId {_unTxId = \"831f0e898a7d6653149bf2f6fc6ea7b482deb04f49251a1edd612051f42617b2\"}")])),("kind",String "TraceMempoolRejectedTx"),("mempoolSize",Object (fromList [("numTxs",Number 0.0),("bytes",Number 0.0)])),("err",Object (fromList [("kind",String "InvalidWitnessesUTXOW"),("invalidWitnesses",Array [String "VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))"])]))]
我不知道为什么证人无效。有人可以帮忙吗?
{"level":30,"time":1617119743744,"pid":106,"hostname":"530477839db5","reqId":1392,"msg":"[constructionCombine] Request received to sign a transaction","v":1}
{"level":30,"time":1617119743745,"msg":"[buildTransaction] About to signed a transaction with 1 signatures","msg":"[getWitnessesForTransaction] Extracting witnesses from signatures","msg":"[getWitnessesForTransaction] 1 witnesses were extracted to sign transaction","msg":"[buildTransaction] Instantiating transaction body from unsigned transaction bytes","msg":"[buildTransaction] Creating transaction using transaction body and extracted witnesses","signedTransaction":"83a400818258204bc397faa17b5f7972cfd6acf2729eb950b5756c8ea2f704ec8ef11d8a3718fb000181825839000c6d3e4ad14b5ac97656fe56cae3d46e4474af25f6f4d25268b8a168474ac229ab36f3ebb93da86e068f35f5a64bcc0e4ed40cc295fca2df1a389fd980021a02faf080031a015b291ba100818258209eee5780b8243a45e71c61984924190886188c9d4e9aee7204adccac633463725840b2e842c390b4142c46e9d08dd5fc366cb37fc960ab48bdeb083134d79858928775e8304f8c25a5cd5d531f9fd7579188fdb659a27e8f418c12a6aada0fda7600f6","msg":"[constructionCombine] About to return signed transaction","time":1617119743747,"res":{"statusCode":200},"responseTime":3.006010055541992,"msg":"request completed","time":1617119743887,"reqId":1393,"req":{"method":"POST","url":"/construction/submit","hostname":"35.214.159.230:8080","remoteAddress":"84.247.50.48","remotePort":55196},"msg":"incoming request","time":1617119743888,"msg":"[constructionSubmit] About to submit 83a400818258204bc397faa17b5f7972cfd6acf2729eb950b5756c8ea2f704ec8ef11d8a3718fb000181825839000c6d3e4ad14b5ac97656fe56cae3d46e4474af25f6f4d25268b8a168474ac229ab36f3ebb93da86e068f35f5a64bcc0e4ed40cc295fca2df1a389fd980021a02faf080031a015b291ba100818258209eee5780b8243a45e71c61984924190886188c9d4e9aee7204adccac633463725840b2e842c390b4142c46e9d08dd5fc366cb37fc960ab48bdeb083134d79858928775e8304f8c25a5cd5d531f9fd7579188fdb659a27e8f418c12a6aada0fda7600f6","v":1}
[53047783:cardano.node.Mempool:Info:38002] [2021-03-30 15:55:43.90 UTC] fromList [("tx",Array [String "VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))"])]))]
{"level":50,"time":1617119743909,"shortMessage":"Command Failed with exit code 1: /usr/local/bin/cardano-cli transaction submit --tx-file /tmp/6edd9e54-ea83-420c-b5b8-c0c2ea722dc6 --testnet-magic 1097911063","command":"/usr/local/bin/cardano-cli transaction submit --tx-file /tmp/6edd9e54-ea83-420c-b5b8-c0c2ea722dc6 --testnet-magic 1097911063","exitCode":1,"stdout":"","stderr":"Shelley command Failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (InvalidWitnessesUTXOW [VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))]))]","Failed":true,"timedOut":false,"isCanceled":false,"killed":false,"msg":"[submitTransaction] Command Failed","stack":"Error: Command Failed with exit code 1: /usr/local/bin/cardano-cli transaction submit --tx-file /tmp/6edd9e54-ea83-420c-b5b8-c0c2ea722dc6 --testnet-magic 1097911063\nShelley command Failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (InvalidWitnessesUTXOW [VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))]))]\n at makeError (/cardano-rosetta-server/node_modules/execa/lib/error.js:59:11)\n at handlePromise (/cardano-rosetta-server/node_modules/execa/index.js:114:26)\n at runMicrotasks (<anonymous>)\n at processticksAndRejections (internal/process/task_queues.js:93:5)","type":"Error","v":1}
{"level":50,"time":1617119743910,"msg":"Shelley command Failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (InvalidWitnessesUTXOW [VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))]))]","stack":"Error: Shelley command Failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (InvalidWitnessesUTXOW [VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))]))]\n at Object.<anonymous> (/cardano-rosetta-server/dist/src/server/utils/cardano/cli/cardanonode-cli.js:60:31)\n at Generator.throw (<anonymous>)\n at rejected (/cardano-rosetta-server/dist/src/server/utils/cardano/cli/cardanonode-cli.js:6:65)\n at runMicrotasks (<anonymous>)\n at processticksAndRejections (internal/process/task_queues.js:93:5)","code":5006,"retriable":true,"details":{"message":"Shelley command Failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (InvalidWitnessesUTXOW [VKey (VerKeyEd25519DSIGN (PublicKey \"\\158\\238W\\128\\184$:E\\231\\FSa\\152I$\\EM\\b\\134\\CAN\\140\\157N\\154\\238r\\EOT\\173\\204\\172c4cr\"))]))]"},"msg":"[errorHandler] An error ocurred and will be sent as response","stack":"Error: Error when sending the transaction\n at Object.exports.buildApiError (/cardano-rosetta-server/dist/src/server/utils/errors.js:86:56)\n at Object.sendTransactionError (/cardano-rosetta-server/dist/src/server/utils/errors.js:108:51)\n at /cardano-rosetta-server/dist/src/server/controllers/construction-controller.js:170:46\n at Generator.throw (<anonymous>)\n at rejected (/cardano-rosetta-server/dist/src/server/controllers/construction-controller.js:6:65)","time":1617119743911,"res":{"statusCode":500},"responseTime":23.158724784851074,"v":1}
解决方法
要使用 send-transaction-example.ts
和 cardano-address
执行发送交易,只需为您希望花费的 UTXO 生成正确的私钥,然后使用此私钥编辑 .ts 脚本即可.
从助记词中,做:
$ cat phrase.prv
exercise club noble adult miracle awkward problem olympic puppy private goddess piano fatal fashion vacuum
$ cardano-address key from-recovery-phrase Shelley < phrase.prv | tee root.xsk
root_xsk1hqzfzrgskgnpwskxxrv5khs7ess82ecy8za9l5ef7e0afd2849p3zryje8chk39nxtva0sww5me3pzkej4rvd5cae3q3v8eu7556n6pdrp4fdu8nsglynpmcppxxvfdyzdz5gfq3fefjepxhvqspmuyvmvqg8983
$ cardano-address key child 1852H/1815H/0H/0/0 < root.xsk | tee utxo.prv
addr_xsk1ppxa0t64fwwgclj6wa7u228d2ux06dkmx27zhc6eessgmj2849pn8k40xgjk5cd7jaw377gg558tlt5kgkfsnyr00mzqkxtfg5qn00wd8t99f5a37drp8k04ggj2rfkjx60y708m34n6udptx0hrdykllv9n5zcs
其中 1852H/1815H/0H/0/0
对应于您希望从中花费的所需密钥对/UTXO。
然后,运行
$ cardano-address key inspect < utxo.prv
{
"chain_code": "cd3aca54d3b1f34613d9f54224a1a6d2369e4f3cfb8d67ae342b33ee3692dffb","key_type": "private","extended_key": "084dd7af554b9c8c7e5a777dc528ed570cfd36db32bc2be359cc208dc947a94333daaf32256a61be975d1f7908a50ebfae96459309906f7ec40b1969450137bd"
}
并将 PRIVATE_KEY
中的 send-transaction-example.ts
替换为上面的 extended_key
值:
const PRIVATE_KEY =
"084dd7af554b9c8c7e5a777dc528ed570cfd36db32bc2be359cc208dc947a94333daaf32256a61be975d1f7908a50ebfae96459309906f7ec40b1969450137bd";
并运行脚本。