diff --git a/docs/Privacy/How-To/eeajs.md b/docs/Privacy/How-To/eeajs.md index 68b7967f61..e975570af6 100644 --- a/docs/Privacy/How-To/eeajs.md +++ b/docs/Privacy/How-To/eeajs.md @@ -57,3 +57,7 @@ to get the contract binary. ``` The transaction hash is returned. To get the private transaction receipt, use `web3.eea.getTransactionReceipt(txHash)`. + +## Reference + +Refer to [web3.js-eea reference](../../Reference/web3js-eea-Methods.md) for more methods and examples. \ No newline at end of file diff --git a/docs/Reference/web3js-eea-Methods.md b/docs/Reference/web3js-eea-Methods.md new file mode 100644 index 0000000000..04093d59d3 --- /dev/null +++ b/docs/Reference/web3js-eea-Methods.md @@ -0,0 +1,146 @@ +description: web3js-eea methods reference + + +# web3js-eea + +Use the [web3.js-eea library](https://github.com/PegaSysEng/eeajs) to [create and send +private transactions](../Privacy/How-To/Creating-Sending-Private-Transactions.md). + +## Options Parameter + +The Options parameter is used by: + +* [`generatePrivacyGroup`](#generateprivacygroup) +* [`getTransactionCount`](#gettransactioncount) +* [`sendRawParameter`](#sendrawtransaction) + +The Options parameter has the following properties: + +* `privateKey`: Ethereum private key with which to sign the transaction +* `privateFrom` : Orion public key of the sender +* `privateFor` : Orion public keys of recipients +* `nonce` : Optional. If not provided, calculated using [`eea_getTransctionCount`](../Reference/Pantheon-API-Methods.md). +* `to` : Optional. Contract address to send the transaction to. Do not specify for contract deployment transactions +* `data` : Transaction data + +## generatePrivacyGroup + +Generates the privacy group ID. The privacy group ID is the RLP-encoded `privateFor` and `privateFrom` keys. + +**Parameters** + +[Transaction options](#options-parameter) + +**Returns** + +`string` : Privacy group ID + +!!! example + ```bash + const privacyGroupId = web3.eea.generatePrivacyGroup({ + privateFrom: "A1aVtMxLCUHmBVHXoZzzBgPbW/wj5axDpW9X8l91SGo=", + privateFor: ["Ko2bVqD+nNlNYL5EE7y3IdOnviftjiizpjRt+HTuFBs="] + }); + ``` + +## getMarkerTransaction + +Gets the [privacy marker transaction](../Privacy/Explanation/Private-Transaction-Processing.md) transaction receipt. + +**Parameters** + +`txHash` - `string` : Transaction hash of the private transaction + +`retries` - `int` : Maximum number of attempts to get the private marker transaction receipt + +`delay` - `int` : Delay between retries in milliseconds + +**Returns** + +Privacy marker transaction receipt + +!!! example + ```bash + const privateMarkerTransacion = web3.eea.getMarkerTransaction("0x9c41b3d44ed73511c82a9e2b1ef581eb797475c82f318ca2802358d3ba4a8274", 5, 100); + ``` + +## getTransactionCount + +Returns the number of transactions sent from the specified address for the privacy group. + +**Parameters** + +[Transaction options](#options-parameter) + +**Returns** + +`int` : Transaction count for that account (`privateKey`) and privacy group + +!!! example + ```bash + return web3.eea + .getTransactionCount({ + privateKey: pantheon.node1.privateKey, + privateFrom: orion.node1.publicKey, + privateFor: [orion.node2.publicKey], + }) + ``` + +## getTransactionReceipt + +Gets the private transaction receipt using [`eea_getTransactionReceipt`](../Reference/Pantheon-API-Methods.md#eea_gettransactionreceipt). + +**Parameters** + +`txHash` - `string` : Transaction hash of the private transaction + +`enclavePublicKey` - `string` : [`privateFrom` key for the transaction](#options-parameter) + +`retries` - `int` : Optional. Maximum number of attempts to get the private marker transaction receipt. Default is `300`. + +`delay` - `int` : Optional. Delay between retries in milliseconds. Default is `1000`. + +**Returns** + +Private transaction receipt + +!!! example + ```bash + const privateTxReceipt = web3.eea.getTransactionReceipt("0x9c41b3d44ed73511c82a9e2b1ef581eb797475c82f318ca2802358d3ba4a8274", "A1aVtMxLCUHmBVHXoZzzBgPbW/wj5axDpW9X8l91SGo="); + ``` + +## sendRawTransaction + +Signs and sends a RLP-encoded private transaction to Pantheon using [`eea_sendRawTransaction`](Pantheon-API-Methods.md#eea_sendrawtransaction). + +**Parameters** + +[Transaction options](#options-parameter) + +**Returns** + +`string` : Transaction hash of the [`privacy marker transaction`](../Privacy/Explanation/Private-Transaction-Processing.md) + +!!! example + ```bash tab="Contract Deployment" + const createPrivateEmitterContract = () => { + const contractOptions = { + data: `0x${binary}`, + privateFrom: orion.node1.publicKey, + privateFor: [orion.node2.publicKey], + privateKey: pantheon.node1.privateKey + }; + return web3.eea.sendRawTransaction(contractOptions); + }; + ``` + + ```bash tab="Contract Invocation" + const functionCall = { + to: address, + data: functionAbi.signature + functionArgs, + privateFrom: orion.node1.publicKey, + privateFor: [orion.node2.publicKey], + privateKey: pantheon.node1.privateKey + }; + return web3.eea.sendRawTransaction(functionCall); + ``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index f373f8f7fd..4357181486 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -142,6 +142,7 @@ nav: - Pantheon Command Line: Reference/Pantheon-CLI-Syntax.md - Pantheon API Methods: Reference/Pantheon-API-Methods.md - Pantheon API Objects: Reference/Pantheon-API-Objects.md + - web3.js-eaa Methods: Reference/web3js-eea-Methods.md - Resources: - Blog Posts and Webinars: Resources/Resources.md