Skip to content

Commit

Permalink
Removed Account from core to minimize dependencies between compon…
Browse files Browse the repository at this point in the history
…ents
  • Loading branch information
marcvelmer committed Dec 13, 2023
1 parent e12c1dd commit e74602c
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 30 deletions.
12 changes: 9 additions & 3 deletions src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ export class VocdoniSDKClient {
this.fetchAccountInfo(),
this.fetchChainId(),
this.fileService.calculateCID(JSON.stringify(account.generateMetadata())),
]).then((data) => AccountCore.generateUpdateAccountTransaction(data[0], account, data[2]));
]).then((data) => AccountCore.generateUpdateAccountTransaction(data[0].address, data[0].nonce, account, data[2]));

return this.setAccountInfo(accountData);
}
Expand Down Expand Up @@ -431,7 +431,7 @@ export class VocdoniSDKClient {
return Promise.all([this.fetchAccountInfo(), faucet])
.then(([account, faucet]) => {
const faucetPackage = this.faucetService.parseFaucetPackage(faucet);
const collectFaucetTx = AccountCore.generateCollectFaucetTransaction(account, faucetPackage);
const collectFaucetTx = AccountCore.generateCollectFaucetTransaction(account.nonce, faucetPackage);
return this.accountService.signTransaction(collectFaucetTx.tx, collectFaucetTx.message, this.wallet);
})
.then((signedTx) => this.chainService.submitTx(signedTx))
Expand Down Expand Up @@ -519,7 +519,13 @@ export class VocdoniSDKClient {
key: ElectionCreationSteps.ESTIMATE_BLOCK_TIMES,
};

const electionTxData = await ElectionCore.generateNewElectionTransaction(election, cid, blocks, account);
const electionTxData = ElectionCore.generateNewElectionTransaction(
election,
cid,
blocks,
account.address,
account.nonce
);
yield {
key: ElectionCreationSteps.GENERATE_TX,
};
Expand Down
28 changes: 9 additions & 19 deletions src/core/account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { Buffer } from 'buffer';
import { Account, AccountMetadata } from '../types';
import { TransactionCore } from './transaction';
import { strip0x } from '../util/common';
import { AccountData, CensusProof, FaucetPackage } from '../services';
import { CensusProof, FaucetPackage } from '../services';
import { TxMessage } from '../util/constants';

export abstract class AccountCore extends TransactionCore {
Expand Down Expand Up @@ -48,23 +48,13 @@ export abstract class AccountCore extends TransactionCore {
}

public static generateUpdateAccountTransaction(
accountData: AccountData,
address: string,
nonce: number,
account: Account,
cid: string
): { tx: Uint8Array; metadata: string; message: string } {
const message = TxMessage.UPDATE_ACCOUNT.replace('{address}', strip0x(accountData.address).toLowerCase()).replace(
'{uri}',
cid
);
const txData = this.prepareSetAccountData(
{
address: accountData.address,
nonce: accountData.nonce,
metadata: account.generateMetadata(),
cid,
},
false
);
const message = TxMessage.UPDATE_ACCOUNT.replace('{address}', strip0x(address).toLowerCase()).replace('{uri}', cid);
const txData = this.prepareSetAccountData({ address, nonce, metadata: account.generateMetadata(), cid }, false);
return {
message,
...this.generateSetAccountTransaction(txData),
Expand All @@ -87,10 +77,10 @@ export abstract class AccountCore extends TransactionCore {
}

public static generateCollectFaucetTransaction(
accountData: AccountData,
nonce: number,
faucetPackage: FaucetPackage
): { tx: Uint8Array; message: string } {
const txData = this.prepareCollectFaucetData(accountData, faucetPackage);
const txData = this.prepareCollectFaucetData(nonce, faucetPackage);
const message = TxMessage.COLLECT_FAUCET;
const collectFaucet = CollectFaucetTx.fromPartial(txData);
const tx = Tx.encode({
Expand Down Expand Up @@ -183,9 +173,9 @@ export abstract class AccountCore extends TransactionCore {
};
}

private static prepareCollectFaucetData(accountData: AccountData, faucetPackage: FaucetPackage) {
private static prepareCollectFaucetData(nonce: number, faucetPackage: FaucetPackage) {
return {
nonce: accountData.nonce,
nonce,
faucetPackage: this.prepareFaucetPackage(faucetPackage),
};
}
Expand Down
18 changes: 10 additions & 8 deletions src/core/election.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { AllElectionStatus, CensusType, ElectionStatus, UnpublishedElection } fr
import { TransactionCore } from './transaction';
import { Buffer } from 'buffer';
import { strip0x } from '../util/common';
import { AccountData, ChainCosts, ChainData } from '../services';
import { ChainCosts, ChainData } from '../services';
import { TxMessage } from '../util/constants';

export abstract class ElectionCore extends TransactionCore {
Expand Down Expand Up @@ -68,13 +68,14 @@ export abstract class ElectionCore extends TransactionCore {
return { tx, message };
}

public static async generateNewElectionTransaction(
public static generateNewElectionTransaction(
election: UnpublishedElection,
cid: string,
blocks: { actual: number; start: number; end: number },
accountData: AccountData
): Promise<{ tx: Uint8Array; metadata: string; message: string }> {
const txData = this.prepareElectionData(election, cid, blocks, accountData);
address: string,
nonce: number
): { tx: Uint8Array; metadata: string; message: string } {
const txData = this.prepareElectionData(election, cid, blocks, address, nonce);

const newProcess = NewProcessTx.fromPartial({
txtype: TxType.NEW_PROCESS,
Expand All @@ -93,14 +94,15 @@ export abstract class ElectionCore extends TransactionCore {
election: UnpublishedElection,
cid: string,
blocks: { actual: number; start: number; end: number },
accountData: AccountData
address: string,
nonce: number
): { metadata: string; electionData: object } {
return {
metadata: Buffer.from(JSON.stringify(election.generateMetadata()), 'utf8').toString('base64'),
electionData: {
nonce: accountData.nonce,
nonce: nonce,
process: {
entityId: Uint8Array.from(Buffer.from(accountData.address, 'hex')),
entityId: Uint8Array.from(Buffer.from(address, 'hex')),
startBlock: election.startDate ? blocks.start : 0,
blockCount: blocks.end - (election.startDate ? blocks.start : blocks.actual),
censusRoot: Uint8Array.from(Buffer.from(election.census.censusId, 'hex')),
Expand Down

0 comments on commit e74602c

Please sign in to comment.