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",