Work in progress on speed fix
This commit is contained in:
parent
397ceff70b
commit
bc97c0c678
|
@ -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);
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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(())
|
||||
}
|
||||
|
|
|
@ -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>,
|
||||
|
|
Loading…
Reference in New Issue