Skip to content

Commit 12658df

Browse files
authored
Add rc5 and set it as default (#934)
1 parent 4c3659e commit 12658df

File tree

11 files changed

+83
-17
lines changed

11 files changed

+83
-17
lines changed

packages/wallet/core/src/state/local/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export interface Store {
6666
export class Provider implements ProviderInterface {
6767
constructor(
6868
private readonly store: Store = new MemoryStore(),
69-
public readonly extensions: Extensions.Extensions = Extensions.Rc4,
69+
public readonly extensions: Extensions.Extensions = Extensions.Rc5,
7070
) {}
7171

7272
getConfiguration(imageHash: Hex.Hex): Promise<Config.Config | undefined> {

packages/wallet/core/src/state/sequence/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ const passkeySigners = [
369369
Extensions.Dev2.passkeys,
370370
Extensions.Rc3.passkeys,
371371
Extensions.Rc4.passkeys,
372+
Extensions.Rc5.passkeys,
372373
].map(Address.checksum)
373374

374375
const recoverSapientSignatureCompactSignature =

packages/wallet/core/test/session-manager.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ const ALL_EXTENSIONS = [
3535
name: 'Rc4',
3636
...Extensions.Rc4,
3737
},
38+
{
39+
name: 'Rc5',
40+
...Extensions.Rc5,
41+
},
3842
]
3943

4044
// Handle the increment call being first or last depending on the session manager version

packages/wallet/dapp-client/src/ChainSessionManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ export class ChainSessionManager {
222222
stateProvider: this.stateProvider,
223223
})
224224
this.sessionManager = new Signers.SessionManager(this.wallet, {
225-
sessionManagerAddress: Extensions.Rc4.sessions,
225+
sessionManagerAddress: Extensions.Rc5.sessions,
226226
provider: this.provider!,
227227
})
228228
this.isInitialized = true
@@ -731,7 +731,7 @@ export class ChainSessionManager {
731731
for (let attempt = 1; attempt <= maxRetries; attempt++) {
732732
try {
733733
const tempManager = new Signers.SessionManager(this.wallet, {
734-
sessionManagerAddress: Extensions.Rc4.sessions,
734+
sessionManagerAddress: Extensions.Rc5.sessions,
735735
provider: this.provider,
736736
})
737737
const topology = await tempManager.getTopology()

packages/wallet/primitives-cli/src/subcommands/address.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const addressCommand: CommandModule = {
4545
.option('creationCode', {
4646
type: 'string',
4747
description: 'Creation code (optional)',
48-
default: Context.Rc4.creationCode,
48+
default: Context.Rc5.creationCode,
4949
})
5050
},
5151
async (argv) => {

packages/wallet/primitives/src/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Abi } from 'ox'
33
export const ZeroAddress = '0x0000000000000000000000000000000000000000' as const
44
export const PlaceholderAddress = '0xffff0000ffff0000ffff0000ffff0000ffff0000' as const
55

6-
export const DefaultGuestAddress = '0x0000000000601fcA38f0cCA649453F6739436d6C' as const
6+
export const DefaultGuestAddress = '0x0000000000006Ac72ed1d192fa28f0058D3F8806' as const
77

88
// ERC1271
99
export const IS_VALID_SIGNATURE = Abi.from([

packages/wallet/primitives/src/context.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,25 @@ export const Rc4_4337: Context = {
7878
},
7979
}
8080

81+
export const Rc5: Context = {
82+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
83+
stage1: '0x0000000000001f3C39d61698ab21131a12134454',
84+
stage2: '0xD0ae8eF93b7DA4eabb32Ec4d81b7a501DCa04D4C',
85+
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
86+
}
87+
88+
export const Rc5_4337: Context = {
89+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
90+
stage1: '0x0000000000009caFdeDb6f64Bf5F31a22124B2a8',
91+
stage2: '0xcBca3328a731deffE6Ce4c2fb51b585c3c37FB92',
92+
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
93+
capabilities: {
94+
erc4337: {
95+
entrypoint: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
96+
},
97+
},
98+
}
99+
81100
export type KnownContext = Context & {
82101
name: string
83102
development: boolean
@@ -91,6 +110,8 @@ export const KnownContexts: KnownContext[] = [
91110
{ name: 'Rc3_4337', development: true, ...Rc3_4337 },
92111
{ name: 'Rc4', development: false, ...Rc4 },
93112
{ name: 'Rc4_4337', development: false, ...Rc4_4337 },
113+
{ name: 'Rc5', development: false, ...Rc5 },
114+
{ name: 'Rc5_4337', development: false, ...Rc5_4337 },
94115
]
95116

96117
export function isKnownContext(context: Context): context is KnownContext {

packages/wallet/primitives/src/extensions/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,11 @@ export const Rc4: Extensions = {
3030
sessions: '0x00000000000030Bcc832F7d657f50D6Be35C92b3',
3131
}
3232

33+
export const Rc5: Extensions = {
34+
passkeys: '0x0000000000005204F3711851EAD52CC9c241499a',
35+
recovery: '0x000000000000AB36D17eB1150116371520565205',
36+
sessions: '0x00000000000030Bcc832F7d657f50D6Be35C92b3',
37+
}
38+
3339
export * as Passkeys from './passkeys.js'
3440
export * as Recovery from './recovery.js'

packages/wallet/primitives/test/address.test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { describe, expect, it } from 'vitest'
22
import { Address, Bytes, Hash, Hex } from 'ox'
33

44
import { from } from '../src/address.js'
5-
import { Context, Dev1, Dev2, Rc3, Rc4 } from '../src/context.js'
5+
import { Context, Dev1, Dev2, Rc3, Rc4, Rc5 } from '../src/context.js'
66
import { Config, hashConfiguration } from '../src/config.js'
77

88
describe('Address', () => {
@@ -134,6 +134,19 @@ describe('Address', () => {
134134
expect(address).not.toBe(dev2Address)
135135
})
136136

137+
it('should work with Rc5 context', () => {
138+
const { stage2, ...rc5Context } = Rc5
139+
const address = from(sampleConfig, rc5Context)
140+
141+
expect(() => Address.assert(address)).not.toThrow()
142+
expect(address).toMatch(/^0x[a-fA-F0-9]{40}$/)
143+
144+
// Should be different from Dev2
145+
const { stage2: _, ...dev2Context } = Dev2
146+
const dev2Address = from(sampleConfig, dev2Context)
147+
expect(address).not.toBe(dev2Address)
148+
})
149+
137150
it('should handle complex topology configurations', () => {
138151
const complexConfig: Config = {
139152
threshold: 2n,

packages/wallet/wdk/src/sequence/manager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ export type ManagerOptions = {
9595
export const ManagerOptionsDefaults = {
9696
verbose: false,
9797

98-
extensions: Extensions.Rc4,
99-
context: Context.Rc4,
100-
context4337: Context.Rc4_4337,
98+
extensions: Extensions.Rc5,
99+
context: Context.Rc5,
100+
context4337: Context.Rc5_4337,
101101
guest: Constants.DefaultGuestAddress,
102102

103103
encryptedPksDb: new CoreSigners.Pk.Encrypted.EncryptedPksDb(),

0 commit comments

Comments
 (0)