From e989c475366506fc2237978ac3dea0e390b27c1d Mon Sep 17 00:00:00 2001 From: Marc-Aurele Besner <82244926+marc-aurele-besner@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:29:55 -0500 Subject: [PATCH 1/3] removing proof of ownership (signature) from registerOperator --- packages/auto-consensus/src/staking.ts | 31 +++++--------------- packages/auto-consensus/src/types/staking.ts | 3 +- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/packages/auto-consensus/src/staking.ts b/packages/auto-consensus/src/staking.ts index adad87d0..56abcf29 100644 --- a/packages/auto-consensus/src/staking.ts +++ b/packages/auto-consensus/src/staking.ts @@ -70,29 +70,14 @@ export const withdrawals = async ( export const registerOperator = (params: RegisterOperatorParams) => { try { - const { - api, - senderAddress, - Operator, - domainId, - amountToStake, - minimumNominatorStake, - nominationTax, - } = params - - const message = createAccountIdType(api, senderAddress) - const signature = Operator.sign(message) - - return api.tx.domains.registerOperator( - parseString(domainId), - parseString(amountToStake), - { - signingKey: signingKey(Operator.publicKey), - minimumNominatorStake: parseString(minimumNominatorStake), - nominationTax: parseString(nominationTax), - }, - signature, - ) + const { api, signingKey, domainId, amountToStake, minimumNominatorStake, nominationTax } = + params + + return api.tx.domains.registerOperator(parseString(domainId), parseString(amountToStake), { + signingKey, + minimumNominatorStake: parseString(minimumNominatorStake), + nominationTax: parseString(nominationTax), + }) } catch (error) { console.error('error', error) throw new Error('Error creating register operator tx.' + error) diff --git a/packages/auto-consensus/src/types/staking.ts b/packages/auto-consensus/src/types/staking.ts index 27dd2cee..b01e73ba 100644 --- a/packages/auto-consensus/src/types/staking.ts +++ b/packages/auto-consensus/src/types/staking.ts @@ -120,8 +120,7 @@ export type StringNumberOrBigInt = string | number | bigint export type RegisterOperatorParams = { api: ApiPromise - senderAddress: string - Operator: KeyringPair + signingKey: string domainId: StringNumberOrBigInt amountToStake: StringNumberOrBigInt minimumNominatorStake: StringNumberOrBigInt From d4ec78a99694bce053590ee1f2b00b72639e8132 Mon Sep 17 00:00:00 2001 From: Marc-Aurele Besner <82244926+marc-aurele-besner@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:00:38 -0500 Subject: [PATCH 2/3] improve registerOperator to support publicKey --- packages/auto-consensus/src/staking.ts | 11 ++++++++--- packages/auto-consensus/src/types/staking.ts | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/auto-consensus/src/staking.ts b/packages/auto-consensus/src/staking.ts index 56abcf29..3bfd19b8 100644 --- a/packages/auto-consensus/src/staking.ts +++ b/packages/auto-consensus/src/staking.ts @@ -1,7 +1,7 @@ // file: src/staking.ts import type { Api } from '@autonomys/auto-utils' -import { createAccountIdType, signingKey } from '@autonomys/auto-utils' +import { signingKey as signingKeyFn } from '@autonomys/auto-utils' import type { NominateOperatorParams, RegisterOperatorParams, @@ -70,8 +70,13 @@ export const withdrawals = async ( export const registerOperator = (params: RegisterOperatorParams) => { try { - const { api, signingKey, domainId, amountToStake, minimumNominatorStake, nominationTax } = - params + const { api, domainId, amountToStake, minimumNominatorStake, nominationTax, publicKey } = params + let signingKey = params.signingKey + + if (!signingKey && !publicKey) throw new Error('Signing key or public key not provided') + else if (!signingKey && publicKey) signingKey = signingKeyFn(publicKey) + + if (!signingKey) throw new Error('Signing key not provided') return api.tx.domains.registerOperator(parseString(domainId), parseString(amountToStake), { signingKey, diff --git a/packages/auto-consensus/src/types/staking.ts b/packages/auto-consensus/src/types/staking.ts index b01e73ba..10545976 100644 --- a/packages/auto-consensus/src/types/staking.ts +++ b/packages/auto-consensus/src/types/staking.ts @@ -120,11 +120,12 @@ export type StringNumberOrBigInt = string | number | bigint export type RegisterOperatorParams = { api: ApiPromise - signingKey: string domainId: StringNumberOrBigInt amountToStake: StringNumberOrBigInt minimumNominatorStake: StringNumberOrBigInt nominationTax: StringNumberOrBigInt + signingKey?: string + publicKey?: Uint8Array } export type StakingParams = { From 8b9fb09a5f88723b81a28e2db51fdae1be5c1f07 Mon Sep 17 00:00:00 2001 From: Marc-Aurele Besner <82244926+marc-aurele-besner@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:00:53 -0500 Subject: [PATCH 3/3] fix example --- examples/next/src/components/actions/register.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/next/src/components/actions/register.tsx b/examples/next/src/components/actions/register.tsx index 3cd973ae..cd0158da 100644 --- a/examples/next/src/components/actions/register.tsx +++ b/examples/next/src/components/actions/register.tsx @@ -31,12 +31,11 @@ export const RegisterOperator = () => { await handleTx( await registerOperator({ api: selectedWallet.api, - senderAddress: selectedWallet.accounts[0].address, - Operator: operatorAccounts[0], domainId, amountToStake, minimumNominatorStake, nominationTax, + publicKey: operatorAccounts[0].publicKey, }), setErrorForm, )