Add preruntime digest (#6713)
* update moonbeam-types-bundle * handle preruntime digest
This commit is contained in:
parent
e94b742861
commit
21c232ff91
@ -46,7 +46,7 @@ function BlockAuthorsBase ({ children }: Props): React.ReactElement<Props> {
|
||||
let lastHeaders: HeaderExtendedWithMapping[] = [];
|
||||
let lastBlockAuthors: string[] = [];
|
||||
let lastBlockNumber = '';
|
||||
const isAuthorIds = isFunction(api.query.authorMapping?.authorIds); // TODO-MOONBEAM reevaluate in a month: 07/16/21
|
||||
// Some blockchains such as Moonbeam need to fetch the author accountId from a mapping
|
||||
const isAuthorMappingWithDeposit = isFunction(api.query.authorMapping?.mappingWithDeposit);
|
||||
|
||||
// subscribe to all validators
|
||||
@ -60,20 +60,19 @@ function BlockAuthorsBase ({ children }: Props): React.ReactElement<Props> {
|
||||
const blockNumber = lastHeader.number.unwrap();
|
||||
let thisBlockAuthor = '';
|
||||
|
||||
// Check for digest type
|
||||
const hasConsensusDigest = lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isConsensus && lastHeader.digest.logs[0].asConsensus[1];
|
||||
const hasPreRuntimeDigest = lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isPreRuntime && lastHeader.digest.logs[0].asPreRuntime[1];
|
||||
|
||||
if (lastHeader.author) {
|
||||
thisBlockAuthor = lastHeader.author.toString();
|
||||
} else if (isAuthorMappingWithDeposit && lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isConsensus && lastHeader.digest.logs[0].asConsensus[1]) {
|
||||
} else if (isAuthorMappingWithDeposit && (hasConsensusDigest || hasPreRuntimeDigest)) { // Check for a Digest
|
||||
// Some blockchains such as Moonbeam need to fetch the author accountId from a mapping
|
||||
thisBlockAuthor = ((await api.query.authorMapping.mappingWithDeposit(lastHeader.digest.logs[0].asConsensus[1])).toHuman() as {
|
||||
thisBlockAuthor = ((await api.query.authorMapping.mappingWithDeposit(hasConsensusDigest ? lastHeader.digest.logs[0].asConsensus[1] : lastHeader.digest.logs[0].asPreRuntime[1])).toHuman() as {
|
||||
account: string;
|
||||
deposit: string;
|
||||
}).account;
|
||||
lastHeader.authorFromMapping = thisBlockAuthor;
|
||||
} else if (isAuthorIds && lastHeader.digest.logs && lastHeader.digest.logs[0] && lastHeader.digest.logs[0].isConsensus && lastHeader.digest.logs[0].asConsensus[1]) {
|
||||
// TODO-MOONBEAM reevaluate in a month: 07/16/21
|
||||
// Some blockchains such as Moonbeam need to fetch the author accountId from a mapping (function call may differ according to pallet version)
|
||||
thisBlockAuthor = (await api.query.authorMapping.authorIds(lastHeader.digest.logs[0].asConsensus[1])).toString();
|
||||
lastHeader.authorFromMapping = thisBlockAuthor;
|
||||
}
|
||||
|
||||
const thisBlockNumber = formatNumber(blockNumber);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user