Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: fix nonce
Browse files Browse the repository at this point in the history
joepegler committed Dec 19, 2024
1 parent aa5983f commit b1bb733
Showing 2 changed files with 34 additions and 21 deletions.
3 changes: 2 additions & 1 deletion src/sdk/account/toNexusAccount.ts
Original file line number Diff line number Diff line change
@@ -402,6 +402,7 @@ export const toNexusAccount = async (
const getNonce = async (parameters?: {
key?: bigint
validationMode?: "0x00" | "0x01"
moduleAddress?: Address
}): Promise<bigint> => {
try {
const TIMESTAMP_ADJUSTMENT = 16777215n
@@ -410,7 +411,7 @@ export const toNexusAccount = async (
const key: string = concat([
toHex(defaultedKey, { size: 3 }),
defaultedValidationMode,
module.address as Hex
parameters?.moduleAddress ?? (module.address as Hex)
])

const accountAddress = await getCounterFactualAddress()
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { getAccount } from "@rhinestone/module-sdk/account"
import {
OWNABLE_VALIDATOR_ADDRESS,
type Session,
SmartSessionMode,
decodeSmartSessionSignature,
encodeSmartSessionSignature,
encodeValidationData,
getEnableSessionDetails,
getOwnableValidatorMockSignature,
getSmartSessionsValidator,
getSudoPolicy
} from "@rhinestone/module-sdk/module"
@@ -19,15 +21,14 @@ import {
createPublicClient,
createWalletClient,
encodeFunctionData,
getAddress,
encodePacked
getAddress
} from "viem"
import {
entryPoint07Address,
getUserOperationHash
} from "viem/account-abstraction"
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"
import { afterAll, beforeAll, describe, expect, test } from "vitest"
import { beforeAll, describe, expect, test } from "vitest"
import { CounterAbi } from "../../../test/__contracts/abi/CounterAbi"
import { testAddresses } from "../../../test/callDatas"
import { toNetwork } from "../../../test/testSetup"
@@ -38,10 +39,6 @@ import {
type NexusClient,
createSmartAccountClient
} from "../../clients/createSmartAccountClient"
import {
MAINNET_ADDRESS_K1_VALIDATOR_ADDRESS,
SIMPLE_SESSION_VALIDATOR_ADDRESS
} from "../../constants"
import { generateSalt } from "./Helpers"

describe("modules.smartSessions.enable.mode.dx", async () => {
@@ -161,8 +158,11 @@ describe("modules.smartSessions.enable.mode.dx", async () => {
}

const session: Session = {
sessionValidator: SIMPLE_SESSION_VALIDATOR_ADDRESS,
sessionValidatorInitData: sessionPublicKey,
sessionValidator: OWNABLE_VALIDATOR_ADDRESS,
sessionValidatorInitData: encodeValidationData({
threshold: 1,
owners: [sessionPublicKey]
}),
salt: generateSalt(),
userOpPolicies: [],
erc7739Policies: {
@@ -204,18 +204,25 @@ describe("modules.smartSessions.enable.mode.dx", async () => {
message: { raw: permissionEnableHash }
})

const signature = encodeSmartSessionSignature(sessionDetails)

const decodededSignature = decodeSmartSessionSignature({
signature,
account: nexusAccount
const nonce = await nexusClient.account.getNonce({
// @ts-ignore
moduleAddress: OWNABLE_VALIDATOR_ADDRESS
})

expect(decodededSignature.mode).toBe(SmartSessionMode.UNSAFE_ENABLE)
expect(decodededSignature.permissionId).toBe(sessionDetails.permissionId)
expect(decodededSignature.signature).toBe(sessionDetails.signature)
console.log({ nonce })

// const signature = encodeSmartSessionSignature(sessionDetails)

// const decodededSignature = decodeSmartSessionSignature({
// signature,
// account: nexusAccount
// })

console.log({ decodededSignature })
// expect(decodededSignature.mode).toBe(SmartSessionMode.UNSAFE_ENABLE)
// expect(decodededSignature.permissionId).toBe(sessionDetails.permissionId)
// expect(decodededSignature.signature).toBe(sessionDetails.signature)

// console.log({ decodededSignature })

const calls = [
{
@@ -233,10 +240,15 @@ describe("modules.smartSessions.enable.mode.dx", async () => {

console.log({ calls })

sessionDetails.signature = getOwnableValidatorMockSignature({
threshold: 1
})

const userOperation = await nexusClient.prepareUserOperation({
account: nexusClient.account,
calls,
signature
nonce,
signature: encodeSmartSessionSignature(sessionDetails)
})

const userOpHashToSign = getUserOperationHash({

0 comments on commit b1bb733

Please sign in to comment.