Work in progress on speed fix

This commit is contained in:
Jordan Prince 2021-08-10 08:17:36 -05:00
parent 397ceff70b
commit bc97c0c678
4 changed files with 73 additions and 6 deletions

View File

@ -11,7 +11,16 @@ import { processAuctions } from './processAuctions';
import { processMetaplexAccounts } from './processMetaplexAccounts';
import { processMetaData } from './processMetaData';
import { processVaultData } from './processVaultData';
import { Metadata, ParsedAccount } from '../../../../common/dist/lib';
import {
MAX_CREATOR_LEN,
MAX_CREATOR_LIMIT,
Metadata,
ParsedAccount,
} from '../../../../common/dist/lib';
import {
MAX_WHITELISTED_CREATOR_SIZE,
MetaplexKey,
} from '../../models/metaplex';
export const loadAccounts = async (connection: Connection, all: boolean) => {
const tempCache: MetaState = {
@ -47,16 +56,48 @@ export const loadAccounts = async (connection: Connection, all: boolean) => {
}
};
await Promise.all([
await connection
.getProgramAccounts(METAPLEX_ID, {
filters: [
{
dataSize: MAX_WHITELISTED_CREATOR_SIZE,
},
{
memcmp: {
offset: 0,
bytes: MetaplexKey.WhitelistedCreatorV1.toString(),
},
},
],
})
.then(forEach(processMetaplexAccounts));
const promises = [
connection.getProgramAccounts(VAULT_ID).then(forEach(processVaultData)),
connection.getProgramAccounts(AUCTION_ID).then(forEach(processAuctions)),
connection
.getProgramAccounts(METADATA_PROGRAM_ID)
.then(forEach(processMetaData)),
,
connection
.getProgramAccounts(METAPLEX_ID)
.then(forEach(processMetaplexAccounts)),
]);
];
for (let i = 0; i < MAX_CREATOR_LIMIT; i++) {
promises.push(
connection
.getProgramAccounts(METADATA_PROGRAM_ID, {
filters: [
{
memcmp: {
offset: 0,
bytes: MetaplexKey.WhitelistedCreatorV1.toString(),
},
},
],
})
.then(forEach(processMetaData)),
);
}
await Promise.all(promises);
await postProcessMetadata(tempCache, all);

View File

@ -38,6 +38,7 @@ export const METAPLEX_PREFIX = 'metaplex';
export const TOTALS = 'totals';
export const ORIGINAL_AUTHORITY_LOOKUP_SIZE = 33;
export const MAX_PRIZE_TRACKING_TICKET_SIZE = 1 + 32 + 8 + 8 + 8 + 50;
export const MAX_WHITELISTED_CREATOR_SIZE = 2 + 32 + 10;
export enum MetaplexKey {
Uninitialized = 0,
OriginalAuthorityLookupV1 = 1,

View File

@ -20,6 +20,7 @@ use {
create_or_allocate_account_raw, get_owner_from_token_account,
process_create_metadata_accounts_logic,
process_mint_new_edition_from_master_edition_via_token_logic, transfer_mint_authority,
puff_out_data_fields,
CreateMetadataAccountsLogicArgs, MintNewEditionFromMasterEditionViaTokenLogicArgs,
},
},
@ -203,6 +204,8 @@ pub fn process_update_metadata_accounts(
}
}
puff_out_data_fields(&mut metadata);
metadata.serialize(&mut *metadata_account_info.data.borrow_mut())?;
Ok(())
}

View File

@ -850,10 +850,32 @@ pub fn process_create_metadata_accounts_logic(
metadata.is_mutable = is_mutable;
metadata.update_authority = *update_authority_info.key;
puff_out_data_fields(&mut metadata);
metadata.serialize(&mut *metadata_account_info.data.borrow_mut())?;
Ok(())
}
pub fn puff_out_data_fields(metadata: &mut Metadata) {
let mut array_of_zeroes = vec![];
while array_of_zeroes.len() < MAX_NAME_LENGTH - metadata.data.name.len() {
array_of_zeroes.push(0u8);
}
metadata.data.name = metadata.data.name.clone() + std::str::from_utf8(&array_of_zeroes).unwrap();
let mut array_of_zeroes = vec![];
while array_of_zeroes.len() < MAX_SYMBOL_LENGTH - metadata.data.symbol.len() {
array_of_zeroes.push(0u8);
}
metadata.data.symbol = metadata.data.symbol.clone() + std::str::from_utf8(&array_of_zeroes).unwrap();
let mut array_of_zeroes = vec![];
while array_of_zeroes.len() < MAX_URI_LENGTH - metadata.data.uri.len() {
array_of_zeroes.push(0u8);
}
metadata.data.uri = metadata.data.uri.clone() + std::str::from_utf8(&array_of_zeroes).unwrap();
}
pub struct MintNewEditionFromMasterEditionViaTokenLogicArgs<'a> {
pub new_metadata_account_info: &'a AccountInfo<'a>,
pub new_edition_account_info: &'a AccountInfo<'a>,