Skip to content

Commit

Permalink
Merge pull request #659 from nevermined-io/feat/permissionles-v7
Browse files Browse the repository at this point in the history
feat: use permissionless v7
  • Loading branch information
eruizgar91 committed May 9, 2024
2 parents cc00a0c + 9e18ee0 commit b174aee
Show file tree
Hide file tree
Showing 8 changed files with 933 additions and 371 deletions.
727 changes: 389 additions & 338 deletions integration/external/Zerodev.test.ts

Large diffs are not rendered by default.

491 changes: 491 additions & 0 deletions integration/external/ZerodevLocal.test.ts

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nevermined-io/sdk",
"version": "3.0.2",
"version": "3.0.3",
"description": "Javascript SDK for connecting with Nevermined Data Platform ",
"main": "./dist/node/sdk.js",
"typings": "./dist/node/sdk.d.ts",
Expand Down Expand Up @@ -50,7 +50,7 @@
},
"homepage": "https://github.com/nevermined-io/sdk-js#readme",
"dependencies": {
"@alchemy/aa-core": "3.11.1",
"@alchemy/aa-core": "3.12.1",
"@apollo/client": "^3.7.16",
"@turnkey/viem": "0.4.16",
"@zerodev/ecdsa-validator": "5.2.3",
Expand Down Expand Up @@ -85,8 +85,8 @@
"@zerodev/ecdsa-validator": "^5.2.3",
"@zerodev/sdk": "^5.2.11",
"@zerodev/session-key": "^5.3.0",
"permissionless": "^0.1.22",
"viem": "^2.9.31"
"permissionless": "^0.1.26",
"viem": "^2.10.2"
},
"devDependencies": {
"@ambire/signature-validator": "^1.3.1",
Expand Down
4 changes: 2 additions & 2 deletions src/keeper/contracts/ContractBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
getInputsOfFunctionFormatted,
getSignatureOfFunction,
} from '../../nevermined/utils/BlockchainViemUtils'
import { ENTRYPOINT_ADDRESS_V06, bundlerActions } from 'permissionless'
import { ENTRYPOINT_ADDRESS_V07, bundlerActions } from 'permissionless'

export abstract class ContractBase extends Instantiable {
public readonly contractName: string
Expand Down Expand Up @@ -214,7 +214,7 @@ export abstract class ContractBase extends Instantiable {
}

// @ts-ignore
const bundlerClient = kernelClient.extend(bundlerActions(ENTRYPOINT_ADDRESS_V06))
const bundlerClient = kernelClient.extend(bundlerActions(ENTRYPOINT_ADDRESS_V07))
const txReceipt = await bundlerClient.waitForUserOperationReceipt({ hash: txHash })

if (progress) {
Expand Down
6 changes: 3 additions & 3 deletions src/models/NvmAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class NvmAccount {
public babySecret?: string
private accountSigner?: Account
private kernelClient?: KernelAccountClient<
'0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',
'0x0000000071727De22E5E9d8BAf0edAc6f37da032',
Transport,
Chain,
any
Expand Down Expand Up @@ -55,7 +55,7 @@ export class NvmAccount {
*/
static async fromZeroDevSigner(
kernelClient: KernelAccountClient<
'0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',
'0x0000000071727De22E5E9d8BAf0edAc6f37da032',
Transport,
Chain,
any
Expand All @@ -70,7 +70,7 @@ export class NvmAccount {

static fromZeroDevSessionKey(
kernelClient: KernelAccountClient<
'0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',
'0x0000000071727De22E5E9d8BAf0edAc6f37da032',
Transport,
Chain,
any
Expand Down
5 changes: 0 additions & 5 deletions src/nevermined/NvmApp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,6 @@ export class NvmApp {
this.fullSDK = await Nevermined.getInstance(config ? config : this.configNVM, ops)

if (config && config.zeroDevProjectId) {
// const signer = this.fullSDK.accounts.getAccount(account as string)
// const smartAccountSigner = await providerToSmartAccountSigner(config.web3Provider, {
// signerAddress: signer.getAddress(),
// })

const kernelClient = await createKernelClient(
account,
config.chainId!,
Expand Down
24 changes: 12 additions & 12 deletions src/nevermined/utils/BlockchainViemUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
serializeSessionKeyAccount,
signerToSessionKeyValidator,
} from '@zerodev/session-key'
import { ENTRYPOINT_ADDRESS_V06 } from 'permissionless'
import { ENTRYPOINT_ADDRESS_V07 } from 'permissionless'
import { EntryPoint } from 'permissionless/types'
import {
Abi,
Expand Down Expand Up @@ -390,33 +390,33 @@ export async function createKernelClient(signer: any, chainId: number, zeroDevPr

const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
signer,
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
})

const account = await createKernelAccount(publicClient, {
plugins: {
sudo: ecdsaValidator,
},
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
})

return createKernelAccountClient({
account,
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
chain: getChain(chainId),
bundlerTransport: http(`https://rpc.zerodev.app/api/v2/bundler/${zeroDevProjectId}`),
middleware: {
sponsorUserOperation: async ({ userOperation }) => {
const paymasterClient = createZeroDevPaymasterClient({
chain: getChain(chainId),
transport: http(`https://rpc.zerodev.app/api/v2/paymaster/${zeroDevProjectId}`),
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
})
const _userOperation =
userOperation as SponsorUserOperationParameters<EntryPoint>['userOperation']
return paymasterClient.sponsorUserOperation({
userOperation: _userOperation,
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
})
},
},
Expand All @@ -425,14 +425,14 @@ export async function createKernelClient(signer: any, chainId: number, zeroDevPr

export async function createSessionKey(signer: any, publicClient: any, permissions: any[]) {
const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
signer,
})
const sessionPrivateKey = generatePrivateKey()
const sessionKeySigner = privateKeyToAccount(sessionPrivateKey)

const sessionKeyValidator = await signerToSessionKeyValidator(publicClient, {
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
signer: sessionKeySigner,
validatorData: {
paymaster: oneAddress,
Expand All @@ -442,7 +442,7 @@ export async function createSessionKey(signer: any, publicClient: any, permissio
},
})
const sessionKeyAccount = await createKernelAccount(publicClient, {
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
plugins: {
sudo: ecdsaValidator,
regular: sessionKeyValidator,
Expand All @@ -459,16 +459,16 @@ export async function getSessionKey(
const chainId = await publicClient.getChainId()
const sessionKeyAccount = await deserializeSessionKeyAccount(
publicClient,
ENTRYPOINT_ADDRESS_V06,
ENTRYPOINT_ADDRESS_V07,
serializedSessionKey,
)
const kernelPaymaster = createZeroDevPaymasterClient({
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
chain: getChain(chainId),
transport: http(`https://rpc.zerodev.app/api/v2/paymaster/${zeroDevProjectId}`),
})
const kernelClient = createKernelAccountClient({
entryPoint: ENTRYPOINT_ADDRESS_V06,
entryPoint: ENTRYPOINT_ADDRESS_V07,
account: sessionKeyAccount,
chain: getChain(chainId),
bundlerTransport: http(`https://rpc.zerodev.app/api/v2/bundler/${zeroDevProjectId}`),
Expand Down
39 changes: 32 additions & 7 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069"
integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==

"@alchemy/aa-core@3.11.1":
version "3.11.1"
resolved "https://registry.yarnpkg.com/@alchemy/aa-core/-/aa-core-3.11.1.tgz#6d0909a7321dfb1a78bcd0d881f729abbdae39b7"
integrity sha512-3lyGVyg0MI8w9OqP0USh6javGQ5af2knBozbzr4uE/IoOcuEtfCl0XsCGNLuvQJ908wSV79Aoomo4LCwy4Gc/g==
"@alchemy/aa-core@3.12.1":
version "3.12.1"
resolved "https://registry.yarnpkg.com/@alchemy/aa-core/-/aa-core-3.12.1.tgz#fd07254d3ae0c3697176fa847d3c947d3726c3e5"
integrity sha512-Zq907/RkBEqf3IV/YPaua6F67z6jLsVY3eDvTVe+1Xt2dVfdR1gkjA8/9Faya1Qvy3+AKoIrNbilGsJ2+kRRzg==
dependencies:
abitype "^0.8.3"
eventemitter3 "^5.0.1"
Expand Down Expand Up @@ -10198,7 +10198,16 @@ string-to-arraybuffer@^1.0.0:
atob-lite "^2.0.0"
is-base64 "^0.1.0"

"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"

string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
Expand Down Expand Up @@ -10300,7 +10309,7 @@ stringify-entities@^4.0.0:
character-entities-html4 "^2.0.0"
character-entities-legacy "^3.0.0"

"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
Expand All @@ -10314,6 +10323,13 @@ strip-ansi@^3.0.0:
dependencies:
ansi-regex "^2.0.0"

strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"

strip-ansi@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
Expand Down Expand Up @@ -11478,7 +11494,16 @@ workerpool@6.2.1:
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==

"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"

wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
Expand Down

0 comments on commit b174aee

Please sign in to comment.