From 3f4454e66417ab0c44c4b431fdb9c563809819b1 Mon Sep 17 00:00:00 2001 From: Davis Sawali Date: Mon, 6 Nov 2023 16:00:16 -0800 Subject: [PATCH] added docs on obtaining ophash before injecting (#2702) * added docs on obtaining ophash before injecting * added versioned doc * updated typo * updated previous version --- docs/ophash_before_injecting.md | 49 +++++++++++++++++++ website/sidebars.js | 1 + .../version-17.3.0/ophash_before_injecting.md | 49 +++++++++++++++++++ .../version-17.3.0-sidebars.json | 1 + 4 files changed, 100 insertions(+) create mode 100644 docs/ophash_before_injecting.md create mode 100644 website/versioned_docs/version-17.3.0/ophash_before_injecting.md diff --git a/docs/ophash_before_injecting.md b/docs/ophash_before_injecting.md new file mode 100644 index 0000000000..6b562bb0ac --- /dev/null +++ b/docs/ophash_before_injecting.md @@ -0,0 +1,49 @@ +--- +title: Getting the Operation Hash without Injecting +id: ophash_before_injecting +author: Davis Sawali +--- + +This section serves as a guide to get the operation hash without injecting it into the blockchain. + +## Getting the Operation Hash + +There might come a time when you, the developer, would like to grab the operation hash without injecting it into the blockchain. + +To accomplish that, we have a utility function called `encodeOpHash()` in the `@taquito/utils` package. This function takes in the signed operation bytes in the form of a `string`, and outputs the operation hash of said transaction without injecting it. + +### Usage example + +Here is a simple example on getting the operation hash of a transaction (transfer) operation: + +```js + +// import { TezosToolkit } from '@taquito/taquito'; +// import { encodeOpHash } from '@taquito/utils'; +// import { LocalForger } from '@taquito/local-forging'; + +// const Tezos = new TezosToolkit('RPC_ENDPOINT'); + +const preparedTransfer = await Tezos.prepare.transaction({ + amount: 1, + to: 'tz1ZfrERcALBwmAqwonRXYVQBDT9BjNjBHJu' +}); + + +// convert prepared operation into a forgeable object +const forgeParams = await Tezos.prepare.toForge(preparedTransfer); + +// forge the transaction operation +const forger = new LocalForger(); +const forgedBytes = await forger.forge(forgeParams); + +// sign the transaction operation +const signedBytes = await Tezos.signer.sign(forgedBytes); + +// get the operation hash using the encodeOpHash() function +const opHash = encodeOpHash(signedBytes.sbytes, new Uint8Array([3])); + +``` + + + diff --git a/website/sidebars.js b/website/sidebars.js index 4b3af836fb..37c7939147 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -157,6 +157,7 @@ const sidebars = { collapsed: false, collapsible: false, items: [ + 'ophash_before_injecting', 'drain_account', 'complex_parameters', 'confirmation_event_stream', diff --git a/website/versioned_docs/version-17.3.0/ophash_before_injecting.md b/website/versioned_docs/version-17.3.0/ophash_before_injecting.md new file mode 100644 index 0000000000..6b562bb0ac --- /dev/null +++ b/website/versioned_docs/version-17.3.0/ophash_before_injecting.md @@ -0,0 +1,49 @@ +--- +title: Getting the Operation Hash without Injecting +id: ophash_before_injecting +author: Davis Sawali +--- + +This section serves as a guide to get the operation hash without injecting it into the blockchain. + +## Getting the Operation Hash + +There might come a time when you, the developer, would like to grab the operation hash without injecting it into the blockchain. + +To accomplish that, we have a utility function called `encodeOpHash()` in the `@taquito/utils` package. This function takes in the signed operation bytes in the form of a `string`, and outputs the operation hash of said transaction without injecting it. + +### Usage example + +Here is a simple example on getting the operation hash of a transaction (transfer) operation: + +```js + +// import { TezosToolkit } from '@taquito/taquito'; +// import { encodeOpHash } from '@taquito/utils'; +// import { LocalForger } from '@taquito/local-forging'; + +// const Tezos = new TezosToolkit('RPC_ENDPOINT'); + +const preparedTransfer = await Tezos.prepare.transaction({ + amount: 1, + to: 'tz1ZfrERcALBwmAqwonRXYVQBDT9BjNjBHJu' +}); + + +// convert prepared operation into a forgeable object +const forgeParams = await Tezos.prepare.toForge(preparedTransfer); + +// forge the transaction operation +const forger = new LocalForger(); +const forgedBytes = await forger.forge(forgeParams); + +// sign the transaction operation +const signedBytes = await Tezos.signer.sign(forgedBytes); + +// get the operation hash using the encodeOpHash() function +const opHash = encodeOpHash(signedBytes.sbytes, new Uint8Array([3])); + +``` + + + diff --git a/website/versioned_sidebars/version-17.3.0-sidebars.json b/website/versioned_sidebars/version-17.3.0-sidebars.json index 8e36a54505..78bd0e7f0b 100644 --- a/website/versioned_sidebars/version-17.3.0-sidebars.json +++ b/website/versioned_sidebars/version-17.3.0-sidebars.json @@ -145,6 +145,7 @@ "collapsed": false, "collapsible": false, "items": [ + "ophash_before_injecting", "drain_account", "complex_parameters", "confirmation_event_stream",