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 { processMetaplexAccounts } from './processMetaplexAccounts';
|
||||||
import { processMetaData } from './processMetaData';
|
import { processMetaData } from './processMetaData';
|
||||||
import { processVaultData } from './processVaultData';
|
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) => {
|
export const loadAccounts = async (connection: Connection, all: boolean) => {
|
||||||
const tempCache: MetaState = {
|
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(VAULT_ID).then(forEach(processVaultData)),
|
||||||
connection.getProgramAccounts(AUCTION_ID).then(forEach(processAuctions)),
|
connection.getProgramAccounts(AUCTION_ID).then(forEach(processAuctions)),
|
||||||
connection
|
,
|
||||||
.getProgramAccounts(METADATA_PROGRAM_ID)
|
|
||||||
.then(forEach(processMetaData)),
|
|
||||||
connection
|
connection
|
||||||
.getProgramAccounts(METAPLEX_ID)
|
.getProgramAccounts(METAPLEX_ID)
|
||||||
.then(forEach(processMetaplexAccounts)),
|
.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);
|
await postProcessMetadata(tempCache, all);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ export const METAPLEX_PREFIX = 'metaplex';
|
||||||
export const TOTALS = 'totals';
|
export const TOTALS = 'totals';
|
||||||
export const ORIGINAL_AUTHORITY_LOOKUP_SIZE = 33;
|
export const ORIGINAL_AUTHORITY_LOOKUP_SIZE = 33;
|
||||||
export const MAX_PRIZE_TRACKING_TICKET_SIZE = 1 + 32 + 8 + 8 + 8 + 50;
|
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 {
|
export enum MetaplexKey {
|
||||||
Uninitialized = 0,
|
Uninitialized = 0,
|
||||||
OriginalAuthorityLookupV1 = 1,
|
OriginalAuthorityLookupV1 = 1,
|
||||||
|
|
|
@ -20,6 +20,7 @@ use {
|
||||||
create_or_allocate_account_raw, get_owner_from_token_account,
|
create_or_allocate_account_raw, get_owner_from_token_account,
|
||||||
process_create_metadata_accounts_logic,
|
process_create_metadata_accounts_logic,
|
||||||
process_mint_new_edition_from_master_edition_via_token_logic, transfer_mint_authority,
|
process_mint_new_edition_from_master_edition_via_token_logic, transfer_mint_authority,
|
||||||
|
puff_out_data_fields,
|
||||||
CreateMetadataAccountsLogicArgs, MintNewEditionFromMasterEditionViaTokenLogicArgs,
|
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())?;
|
metadata.serialize(&mut *metadata_account_info.data.borrow_mut())?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -850,10 +850,32 @@ pub fn process_create_metadata_accounts_logic(
|
||||||
metadata.is_mutable = is_mutable;
|
metadata.is_mutable = is_mutable;
|
||||||
metadata.update_authority = *update_authority_info.key;
|
metadata.update_authority = *update_authority_info.key;
|
||||||
|
|
||||||
|
puff_out_data_fields(&mut metadata);
|
||||||
metadata.serialize(&mut *metadata_account_info.data.borrow_mut())?;
|
metadata.serialize(&mut *metadata_account_info.data.borrow_mut())?;
|
||||||
|
|
||||||
Ok(())
|
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 struct MintNewEditionFromMasterEditionViaTokenLogicArgs<'a> {
|
||||||
pub new_metadata_account_info: &'a AccountInfo<'a>,
|
pub new_metadata_account_info: &'a AccountInfo<'a>,
|
||||||
pub new_edition_account_info: &'a AccountInfo<'a>,
|
pub new_edition_account_info: &'a AccountInfo<'a>,
|
||||||
|
|
Loading…
Reference in New Issue