生のトランザクションをデコードする方法は?
3 回答
- 投票
-
- 2020-05-28
Taquitoは、
@taquito/local-forging
パッケージの@taquito/local-forging
メソッドを使用して偽造バイトを解析できます.TypeDocsは
こちらです.ユニットテストを見ることができます ここ. 署名されたトランザクションをデコードするための実装:
const { localForger } = require('@taquito/local-forging'); const sbytes = '008f1d96e2783258ff663f03dacfe946c026a5d194c73d1987b3da73fadea7d46c008cb5baedee4dc3ec261dfcf57a9600bb0a8e26c0f00bdd85a0018452ac02e0a712000153957451d3cc83a71e26b65ea2391a1b16713d2d009595facf847a72b4c3fe231c0e4185e68e9b2875aa3c639382c86bcf0af23699f47fe66a6550ade936a5b59d5919ad20703885750314e0c368b277de39e7d10a'; async function decode() { const unsignedPart = sbytes.substring(0, sbytes.length - 128); // Removing last 128 characters as that is the signature const decoded = await localForger.parse(unsignedPart); console.log(decoded); } decode();
Taquito can parse forged bytes using the
parse()
method in the@taquito/local-forging
package.TypeDocs are here. You can see the unit tests here.
Implementation to decode a signed transaction:
const { localForger } = require('@taquito/local-forging'); const sbytes = '008f1d96e2783258ff663f03dacfe946c026a5d194c73d1987b3da73fadea7d46c008cb5baedee4dc3ec261dfcf57a9600bb0a8e26c0f00bdd85a0018452ac02e0a712000153957451d3cc83a71e26b65ea2391a1b16713d2d009595facf847a72b4c3fe231c0e4185e68e9b2875aa3c639382c86bcf0af23699f47fe66a6550ade936a5b59d5919ad20703885750314e0c368b277de39e7d10a'; async function decode() { const unsignedPart = sbytes.substring(0, sbytes.length - 128); // Removing last 128 characters as that is the signature const decoded = await localForger.parse(unsignedPart); console.log(decoded); } decode();
-
- 2020-05-28
tezos-codec
バイナリを使用して、これをデコードできます:<コード>tezosコーデックデコード006、PsCARTHA.operation
これにより
{"branch": "BKiXcfN1ZTXnNNbTWSRArSWzVFc6om7radWq5mTqGX6rY4P2Uhe"、 「コンテンツ」: [{"種類": "トランザクション"、 "ソース": "tz1YU2zoyCkXPKEA4jknSpCpMs7yUndVNe3S"、 "料金": "1520"、 "counter": "2622173"、 "gas_limit": "10500"、 "storage_limit": "300"、 「金額」:「300000」、 "宛先": "tz2FwBnXhuXvPAUcr1aF3uX84Z6JELxrdYxD"}]、 "署名": "sighZMqWz5G8drK1VTsmTnQBFEQ9kxQQxL88NFh8UaqDEJ3R3mzgR3g81azadZ9saPwsWga3kEPsyfbzrXm6ueuDvx3pQ5Q9"}
tezos-codec
の詳細については、マニュアル(tezos-codecman -v 3
)You can use the
tezos-codec
binary to decode this:tezos-codec decode 006-PsCARTHA.operation from 008f1d96e2783258ff663f03dacfe946c026a5d194c73d1987b3da73fadea7d46c008cb5baedee4dc3ec261dfcf57a9600bb0a8e26c0f00bdd85a0018452ac02e0a712000153957451d3cc83a71e26b65ea2391a1b16713d2d009595facf847a72b4c3fe231c0e4185e68e9b2875aa3c639382c86bcf0af23699f47fe66a6550ade936a5b59d5919ad20703885750314e0c368b277de39e7d10a
which yields
{ "branch": "BKiXcfN1ZTXnNNbTWSRArSWzVFc6om7radWq5mTqGX6rY4P2Uhe", "contents": [ { "kind": "transaction", "source": "tz1YU2zoyCkXPKEA4jknSpCpMs7yUndVNe3S", "fee": "1520", "counter": "2622173", "gas_limit": "10500", "storage_limit": "300", "amount": "300000", "destination": "tz2FwBnXhuXvPAUcr1aF3uX84Z6JELxrdYxD" } ], "signature": "sighZMqWz5G8drK1VTsmTnQBFEQ9kxQQxL88NFh8UaqDEJ3R3mzgR3g81azadZ9saPwsWga3kEPsyfbzrXm6ueuDvx3pQ5Q9" }
You can get more details about
tezos-codec
in its manual (tezos-codec man -v 3
)-
TOMASSSSあなたの命の恩人.tezos-codecのようなNPMライブラリがあるかどうか何か考えはありますか?TOMASSSS you life saver. Any idea if there's an NPM library like tezos-codec?
- 0
- 2020-05-28
- coder123
-
ステータスはわかりませんが、https://www.npmjs.com/package/@nomadic-labs/tezos-codecを試すことができます.I'm not sure what is its status, but you can try https://www.npmjs.com/package/@nomadic-labs/tezos-codec
- 0
- 2020-05-28
- Tomáš Zemanovič
-
- 2020-06-02
RPCエンドポイントを使用できます:
/chains/main/blocks/head/helpers/parse/operations
これを行うことができます.例:
await axios.post( `${nodeURL}/chains/main/blocks/head/helpers/parse/operations`, parseOperationBytesData, { headers: { 'Content-Type': 'application/json' } } )
You can use the RPC endpoint:
/chains/main/blocks/head/helpers/parse/operations
to do that.Example:
await axios.post( `${nodeURL}/chains/main/blocks/head/helpers/parse/operations`, parseOperationBytesData, { headers: { 'Content-Type': 'application/json' } } )
@taquitoを使用して、トランザクションを作成して署名しています.しかし、送信する前に、他のブロックチェーンで通常行うように、デコードして宛先アドレスや金額などを確認したいと思います.
方法がわかりませんが、ED25519署名キーを使用してリクエストに署名しました. 署名は成功し、見返りに得たsbytesは
<コード> 008f1d96e2783258ff663f03dacfe946c026a5d194c73d1987b3da73fadea7d46c008cb5baedee4dc3ec261dfcf57a9600bb0a8e26c0f00bdd85a0018452ac02e0a712000153957451d3cc83a71e26b65ea2391a1b16713d2d009595facf847a72b4c3fe231c0e4185e68e9b2875aa3c639382c86bcf0af23699f47fe66a6550ade936a5b59d5919ad20703885750314e0c368b277de39e7d10a コード>
いくつかの記事を読みましたが、これを行う正確な方法を見つけることができませんでした.試したものが、希望するものを正確に生成しませんでした.つまり、トランザクションをデコードする方法がわからないか、sbytesが違う. Javascript/Typescriptライブラリを使用してこの生のトランザクションをデコードして
のようなものを取得する方法について誰かが説明できますか?fromAddress
toAddress
amount
などと署名されたトランザクションが正しいかどうか.これはテストネット用です.