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, ) diff --git a/packages/auto-consensus/src/staking.ts b/packages/auto-consensus/src/staking.ts index adad87d0..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,29 +70,19 @@ 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, 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, + 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..10545976 100644 --- a/packages/auto-consensus/src/types/staking.ts +++ b/packages/auto-consensus/src/types/staking.ts @@ -120,12 +120,12 @@ export type StringNumberOrBigInt = string | number | bigint export type RegisterOperatorParams = { api: ApiPromise - senderAddress: string - Operator: KeyringPair domainId: StringNumberOrBigInt amountToStake: StringNumberOrBigInt minimumNominatorStake: StringNumberOrBigInt nominationTax: StringNumberOrBigInt + signingKey?: string + publicKey?: Uint8Array } export type StakingParams = {