From e6767c3aca82210762ffd785a2dea7a994b970c5 Mon Sep 17 00:00:00 2001 From: prathamesh0 <42446521+prathamesh0@users.noreply.github.com> Date: Thu, 12 Oct 2023 17:42:19 +0530 Subject: [PATCH] Pass vouchers for RPC requests in header (#429) * Send voucher in request header instead of url params * Handle review changes * Update package versions --------- Co-authored-by: Shreerang Kale --- lerna.json | 2 +- packages/cache/package.json | 2 +- packages/cli/package.json | 12 +++++----- packages/codegen/package.json | 4 ++-- .../src/templates/package-template.handlebars | 10 ++++----- packages/graph-node/package.json | 10 ++++----- packages/ipld-eth-client/package.json | 4 ++-- packages/peer/package.json | 2 +- packages/rpc-eth-client/package.json | 8 +++---- packages/solidity-mapper/package.json | 4 ++-- packages/test/package.json | 2 +- packages/tracing-client/package.json | 2 +- packages/util/package.json | 8 +++---- packages/util/src/payments.ts | 22 +++++++++---------- 14 files changed, 45 insertions(+), 47 deletions(-) diff --git a/lerna.json b/lerna.json index 41fa7150..4d43b106 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "0.2.64", + "version": "0.2.65", "npmClient": "yarn", "useWorkspaces": true, "command": { diff --git a/packages/cache/package.json b/packages/cache/package.json index ee864d3a..39bff00b 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/cache", - "version": "0.2.64", + "version": "0.2.65", "description": "Generic object cache", "main": "dist/index.js", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 9fec9909..54ee0d8a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/cli", - "version": "0.2.64", + "version": "0.2.65", "main": "dist/index.js", "license": "AGPL-3.0", "scripts": { @@ -12,13 +12,13 @@ }, "dependencies": { "@apollo/client": "^3.7.1", - "@cerc-io/cache": "^0.2.64", - "@cerc-io/ipld-eth-client": "^0.2.64", + "@cerc-io/cache": "^0.2.65", + "@cerc-io/ipld-eth-client": "^0.2.65", "@cerc-io/libp2p": "^0.42.2-laconic-0.1.4", "@cerc-io/nitro-node": "^0.1.13", - "@cerc-io/peer": "^0.2.64", - "@cerc-io/rpc-eth-client": "^0.2.64", - "@cerc-io/util": "^0.2.64", + "@cerc-io/peer": "^0.2.65", + "@cerc-io/rpc-eth-client": "^0.2.65", + "@cerc-io/util": "^0.2.65", "@ethersproject/providers": "^5.4.4", "@graphql-tools/utils": "^9.1.1", "@ipld/dag-cbor": "^8.0.0", diff --git a/packages/codegen/package.json b/packages/codegen/package.json index 0f050cf1..740d8458 100644 --- a/packages/codegen/package.json +++ b/packages/codegen/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/codegen", - "version": "0.2.64", + "version": "0.2.65", "description": "Code generator", "private": true, "main": "index.js", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/cerc-io/watcher-ts#readme", "dependencies": { - "@cerc-io/util": "^0.2.64", + "@cerc-io/util": "^0.2.65", "@graphql-tools/load-files": "^6.5.2", "@poanet/solidity-flattener": "https://github.com/vulcanize/solidity-flattener.git", "@solidity-parser/parser": "^0.13.2", diff --git a/packages/codegen/src/templates/package-template.handlebars b/packages/codegen/src/templates/package-template.handlebars index 3c12ccd0..db560dbe 100644 --- a/packages/codegen/src/templates/package-template.handlebars +++ b/packages/codegen/src/templates/package-template.handlebars @@ -41,12 +41,12 @@ "homepage": "https://github.com/cerc-io/watcher-ts#readme", "dependencies": { "@apollo/client": "^3.3.19", - "@cerc-io/cli": "^0.2.64", - "@cerc-io/ipld-eth-client": "^0.2.64", - "@cerc-io/solidity-mapper": "^0.2.64", - "@cerc-io/util": "^0.2.64", + "@cerc-io/cli": "^0.2.65", + "@cerc-io/ipld-eth-client": "^0.2.65", + "@cerc-io/solidity-mapper": "^0.2.65", + "@cerc-io/util": "^0.2.65", {{#if (subgraphPath)}} - "@cerc-io/graph-node": "^0.2.64", + "@cerc-io/graph-node": "^0.2.65", {{/if}} "@ethersproject/providers": "^5.4.4", "apollo-type-bigint": "^0.1.3", diff --git a/packages/graph-node/package.json b/packages/graph-node/package.json index 23cca86a..a7bc21f1 100644 --- a/packages/graph-node/package.json +++ b/packages/graph-node/package.json @@ -1,10 +1,10 @@ { "name": "@cerc-io/graph-node", - "version": "0.2.64", + "version": "0.2.65", "main": "dist/index.js", "license": "AGPL-3.0", "devDependencies": { - "@cerc-io/solidity-mapper": "^0.2.64", + "@cerc-io/solidity-mapper": "^0.2.65", "@ethersproject/providers": "^5.4.4", "@graphprotocol/graph-ts": "^0.22.0", "@nomiclabs/hardhat-ethers": "^2.0.2", @@ -51,9 +51,9 @@ "dependencies": { "@apollo/client": "^3.3.19", "@cerc-io/assemblyscript": "0.19.10-watcher-ts-0.1.2", - "@cerc-io/cache": "^0.2.64", - "@cerc-io/ipld-eth-client": "^0.2.64", - "@cerc-io/util": "^0.2.64", + "@cerc-io/cache": "^0.2.65", + "@cerc-io/ipld-eth-client": "^0.2.65", + "@cerc-io/util": "^0.2.65", "@types/json-diff": "^0.5.2", "@types/yargs": "^17.0.0", "bn.js": "^4.11.9", diff --git a/packages/ipld-eth-client/package.json b/packages/ipld-eth-client/package.json index 638325da..475ee2d5 100644 --- a/packages/ipld-eth-client/package.json +++ b/packages/ipld-eth-client/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/ipld-eth-client", - "version": "0.2.64", + "version": "0.2.65", "description": "IPLD ETH Client", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "homepage": "https://github.com/cerc-io/watcher-ts#readme", "dependencies": { "@apollo/client": "^3.7.1", - "@cerc-io/cache": "^0.2.64", + "@cerc-io/cache": "^0.2.65", "cross-fetch": "^3.1.4", "debug": "^4.3.1", "ethers": "^5.4.4", diff --git a/packages/peer/package.json b/packages/peer/package.json index 8bc691c8..e0b19f9c 100644 --- a/packages/peer/package.json +++ b/packages/peer/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/peer", - "version": "0.2.64", + "version": "0.2.65", "description": "libp2p module", "main": "dist/index.js", "exports": "./dist/index.js", diff --git a/packages/rpc-eth-client/package.json b/packages/rpc-eth-client/package.json index d3024e89..eaa3213a 100644 --- a/packages/rpc-eth-client/package.json +++ b/packages/rpc-eth-client/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/rpc-eth-client", - "version": "0.2.64", + "version": "0.2.65", "description": "RPC ETH Client", "main": "dist/index.js", "scripts": { @@ -19,9 +19,9 @@ }, "homepage": "https://github.com/cerc-io/watcher-ts#readme", "dependencies": { - "@cerc-io/cache": "^0.2.64", - "@cerc-io/ipld-eth-client": "^0.2.64", - "@cerc-io/util": "^0.2.64", + "@cerc-io/cache": "^0.2.65", + "@cerc-io/ipld-eth-client": "^0.2.65", + "@cerc-io/util": "^0.2.65", "chai": "^4.3.4", "ethers": "^5.4.4", "left-pad": "^1.3.0", diff --git a/packages/solidity-mapper/package.json b/packages/solidity-mapper/package.json index 8d179909..57eb0b4d 100644 --- a/packages/solidity-mapper/package.json +++ b/packages/solidity-mapper/package.json @@ -1,10 +1,10 @@ { "name": "@cerc-io/solidity-mapper", - "version": "0.2.64", + "version": "0.2.65", "main": "dist/index.js", "license": "AGPL-3.0", "devDependencies": { - "@cerc-io/ipld-eth-client": "^0.2.64", + "@cerc-io/ipld-eth-client": "^0.2.65", "@ethersproject/abi": "^5.3.0", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-waffle": "^2.0.1", diff --git a/packages/test/package.json b/packages/test/package.json index 3951cbce..5b02b5a9 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/test", - "version": "0.2.64", + "version": "0.2.65", "main": "dist/index.js", "license": "AGPL-3.0", "private": true, diff --git a/packages/tracing-client/package.json b/packages/tracing-client/package.json index 7a92561e..2d9ec2e4 100644 --- a/packages/tracing-client/package.json +++ b/packages/tracing-client/package.json @@ -1,6 +1,6 @@ { "name": "@cerc-io/tracing-client", - "version": "0.2.64", + "version": "0.2.65", "description": "ETH VM tracing client", "main": "dist/index.js", "scripts": { diff --git a/packages/util/package.json b/packages/util/package.json index 7091c5c1..239e714c 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,13 +1,13 @@ { "name": "@cerc-io/util", - "version": "0.2.64", + "version": "0.2.65", "main": "dist/index.js", "license": "AGPL-3.0", "dependencies": { "@apollo/utils.keyvaluecache": "^1.0.1", "@cerc-io/nitro-node": "^0.1.13", - "@cerc-io/peer": "^0.2.64", - "@cerc-io/solidity-mapper": "^0.2.64", + "@cerc-io/peer": "^0.2.65", + "@cerc-io/solidity-mapper": "^0.2.65", "@cerc-io/ts-channel": "1.0.3-ts-nitro-0.1.1", "@ethersproject/properties": "^5.7.0", "@ethersproject/providers": "^5.4.4", @@ -51,7 +51,7 @@ "yargs": "^17.0.1" }, "devDependencies": { - "@cerc-io/cache": "^0.2.64", + "@cerc-io/cache": "^0.2.65", "@nomiclabs/hardhat-waffle": "^2.0.1", "@types/bunyan": "^1.8.8", "@types/express": "^4.17.14", diff --git a/packages/util/src/payments.ts b/packages/util/src/payments.ts index b6abdf2c..d3940ae0 100644 --- a/packages/util/src/payments.ts +++ b/packages/util/src/payments.ts @@ -13,7 +13,7 @@ import { Response as HTTPResponse } from 'apollo-server-env'; import Channel from '@cerc-io/ts-channel'; import type { ReadWriteChannel } from '@cerc-io/ts-channel'; import type { Voucher } from '@cerc-io/nitro-node'; -import { utils as nitroUtils, ChannelStatus, Destination } from '@cerc-io/nitro-node'; +import { utils as nitroUtils, ChannelStatus } from '@cerc-io/nitro-node'; import { deepCopy } from '@ethersproject/properties'; import { fetchJson } from '@ethersproject/web'; @@ -267,18 +267,15 @@ export class PaymentsManager { } async sendPayment (destChannelId: string, amount: string): Promise<{ - channelId: string, - amount: string, - signature: string + vhash:string, + vsig:string }> { - const dest = new Destination(destChannelId); - const voucher = await this.nitro.node.createVoucher(dest, BigInt(amount ?? 0)); + const voucher = await this.nitro.pay(destChannelId, Number(amount)); assert(voucher.amount); return { - channelId: voucher.channelId.string(), - amount: voucher.amount.toString(), - signature: voucher.signature.toHexString() + vhash: voucher.hash(), + vsig: voucher.signature.toHexString() }; } @@ -492,13 +489,14 @@ export const setupProviderWithPayments = ( } // Send a payment to upstream Nitro node and add details to the request URL - let updatedURL = provider.connection.url; + let headers = {}; + if (paidRPCMethods.includes(method)) { const voucher = await paymentsManager.sendPayment(paymentChannelId, paymentAmount); - updatedURL = `${updatedURL}?channelId=${voucher.channelId}&amount=${voucher.amount}&signature=${voucher.signature}`; + headers = { 'X-Payment': `vhash:${voucher.vhash},vsig:${voucher.vsig}` }; } - const result = fetchJson({ ...provider.connection, url: updatedURL }, JSON.stringify(request), getResult).then((result) => { + const result = fetchJson({ ...provider.connection, headers }, JSON.stringify(request), getResult).then((result) => { provider.emit('debug', { action: 'response', request: request,