Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reuse rationalized sig meta #1541

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
262bd58
Save record to state outside user transaction
May 22, 2021
bbe5d74
Purge expired records/short-lived entities from state before beginnin…
May 22, 2021
98ac4e9
Add license header; fix typo in unit test
May 22, 2021
139efd2
Remove unused stats tracker
May 22, 2021
f82dd05
Rename RecordsHistorian.addNewEntities() to noteNewExpirationEvents()
May 22, 2021
e2d8529
Create NodeInfo and InvariantChecks to simplify unit-test of AwarePro…
May 23, 2021
97e9eac
Add AwareProcessLogic unit tests
May 23, 2021
66f826c
Extract node accounts from NodeInfo when context is available
May 23, 2021
f967383
Fix unit test
May 23, 2021
e63a4fc
Confirm RecordCreationSuite runs in CI
May 23, 2021
5f29cc6
Implement TxnFeeChargingPolicy in terms of injected StagedCharging; d…
May 24, 2021
711fa3f
initial changes
May 24, 2021
3d4237b
changes createExpiringRecord to use ExpirableTxnRecord
May 25, 2021
9945c49
Begin implementation of NarratedCharging
May 25, 2021
2aff08c
Merge remote-tracking branch 'origin/master' into 01459-01422-IncAcco…
May 25, 2021
90ababb
Fix unit test
May 25, 2021
f5ca711
Merge branch '01459-01422-IncAccountsInNodeInfo' into 01461-01459-Sim…
May 25, 2021
5fcc9f8
Add Builder to ExpirableTxnRecord
May 25, 2021
9d509f0
enable all tests
May 25, 2021
c75e262
Remove ItemizableFeeCharging and collaborators
May 25, 2021
28c3e5c
Reenable CI
May 25, 2021
acdcd71
remove commented code
May 25, 2021
fabdc5a
Merge branch 'master' into 1393-M-construct-ExpirableTxnRecord
May 25, 2021
a420039
fix a test
May 25, 2021
eb10640
temporarily disable failing tests
May 26, 2021
bbfea9f
And include fee exemptions
May 26, 2021
537f13f
set tokens and token adjustments seperately
May 27, 2021
d392ae2
change name
May 27, 2021
0993f1b
fix commented tests
May 27, 2021
77957dc
remove injected creator
May 27, 2021
513d217
change name
May 27, 2021
53504ae
Move builders to ExpiringCreations
May 27, 2021
e11d777
Merge remote-tracking branch 'origin/master' into 01461-M-SimplifyFee…
May 27, 2021
882187a
Use isIndexOutOfBounds
May 27, 2021
2442b94
add No-Op tests
May 27, 2021
f68af8c
Introduce TxnChargingPolicyAgent
May 27, 2021
fb99fe4
fix failing AwareTransactionContextTest
May 27, 2021
12264f4
increase code coverage in ExpiringCreationsTest
May 28, 2021
4657330
Add javadocs
May 28, 2021
b175580
fix RecordCacheTest
May 28, 2021
1584c6e
Use ServicesContext in ExpiringCreations
May 28, 2021
cf70d54
remove unused getter
May 28, 2021
71028ff
Merge 'master' into branch 1393-M-construct-ExpirableTxnRecord
May 28, 2021
1c04843
fix RecordCache
May 28, 2021
8da0db8
fix newly introduced code smells
May 28, 2021
b13649e
fix code smells
May 28, 2021
08db8c8
Need more collaborators
May 28, 2021
176f87a
Extract ChargingPolicyAgent
May 29, 2021
d69077f
Merge branch 'master-plus-sdk-0.15.0-alpha.1' into 01461-M0150-Simpli…
May 29, 2021
7b39584
Introduce ExpandHandleSpan
May 29, 2021
8496dea
Resolve merge conflicts
May 29, 2021
535e51b
Avoid intermediate use of TransactionReceipt
May 29, 2021
03a27c5
Delay ExpirableTxnRecord.asGrpc() until RecordStreamObject.serialize()
May 29, 2021
c0e7555
Remove unnecessary ByteString wrapper of accessor hash
May 30, 2021
d8a3f08
Remove unnecessary Timestamp field in AwareTxnCtx
May 30, 2021
3c58087
Avoid re-creating ExchangeRates
May 30, 2021
04a91aa
Make null tokenRelsLedger explicit
May 30, 2021
6478780
Sort list of changed/perished keys rather than stream
May 30, 2021
d0a9d80
Omit sort as discovery order works fine
May 30, 2021
42f2d64
Adopt new g4m paradigm more fully
May 30, 2021
d839b4b
Throw if setter called on immutable MerkleAccountState
May 30, 2021
a868279
Stabilize ScheduleExecutionSpecs.executionTriggersOnceTopicHasSatisfi…
May 30, 2021
51ed173
Remove gratuitious stream creation
May 30, 2021
c9e0ffd
Configure QueueThread capacities with requested hedera.recordStream.q…
May 30, 2021
dd15466
Avoid re-extracting memo, sigMap info from the gRPC txn
May 30, 2021
4832cba
Misc minor simplifications
May 30, 2021
b74b268
Introduce NonBlockingHandoff
May 30, 2021
944475a
Try restructuring handoff
May 30, 2021
54d41a4
See if Mockito verify can return null
May 30, 2021
f2115ba
Accept that Mockito.verify can throw NPE in CircleCI in NonBlockingHa…
May 30, 2021
de6dcff
Begin removal of obsolete PubKeyToSigBytesProvider
May 31, 2021
5560247
Complete removal of PubKeyToSigBytesProvider
May 31, 2021
fedcfd0
Create RationalizedSigMeta
May 31, 2021
fdc0c83
Before removing unnecessary factories
May 31, 2021
be69e26
Complete removal of unneeded factories
May 31, 2021
001660d
Complete reuse of sig meta deduced in Rationalization
May 31, 2021
11fedd2
Omit superfluous ByteString wrapper
May 31, 2021
545b2c3
Merge remote-tracking branch 'origin/master-plus-sdk-0.15.0-alpha.1' …
Jun 4, 2021
a553b52
Resolve merge issue
Jun 4, 2021
893c1e1
Fix more merge issues
Jun 4, 2021
d347111
Initialize flag in AwareProcessLogic for zero-byte memo
Jun 4, 2021
3869ea8
Merge branch '01499-0150M-ExpandPtaInitFields' into 01500-01499-Creat…
Jun 4, 2021
c3fd99b
More merge resolution
Jun 4, 2021
5693e9d
Merge remote-tracking branch 'origin/master-plus-sdk-0.15.0-alpha.1' …
Jun 5, 2021
dac5b47
Stabilize tests sensitive to threading effects in CI
Jun 5, 2021
4d7dee5
Merge branch '01500-M0150-CreateNonBlockingHandoff' into 01501-01500-…
Jun 5, 2021
8f0dff1
Remove unused fields
Jun 5, 2021
5395cad
Merge remote-tracking branch 'origin/master-plus-sdk-0.15.0' into 015…
Jun 7, 2021
986c405
Fix code smells
Jun 7, 2021
722c46a
Add Javadoc for HederaToPlatformSigOps.rationalizeIn param
Jun 7, 2021
80be16d
Add license headers
Jun 8, 2021
eab3620
Add Javadoc to RationalizedSigMeta
Jun 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import com.hedera.services.context.properties.BootstrapProperties;
import com.hedera.services.context.properties.StandardizedPropertySources;
import com.hedera.services.exceptions.ContextNotFoundException;
import com.hedera.services.sigs.sourcing.ScopedSigBytesProvider;
import com.hedera.services.sigs.sourcing.SigMapPubKeyToSigBytes;
import com.hedera.services.state.merkle.MerkleAccount;
import com.hedera.services.state.merkle.MerkleBlobMeta;
import com.hedera.services.state.merkle.MerkleDiskFs;
Expand Down Expand Up @@ -284,11 +284,8 @@ public synchronized void handleTransaction(
public void expandSignatures(SwirldTransaction platformTxn) {
try {
final var accessor = ctx.expandHandleSpan().track(platformTxn);
expandIn(
accessor,
ctx.lookupRetryingKeyOrder(),
new ScopedSigBytesProvider(accessor),
ctx.sigFactoryCreator()::createScopedFactory);
final var pkToSigFn = new SigMapPubKeyToSigBytes(accessor.getSigMap());
expandIn(accessor, ctx.lookupRetryingKeyOrder(), pkToSigFn);
} catch (InvalidProtocolBufferException e) {
log.warn("expandSignatures called with non-gRPC txn!", e);
} catch (Exception race) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,9 @@
import com.hedera.services.records.TxnAwareRecordsHistorian;
import com.hedera.services.records.TxnIdRecentHistory;
import com.hedera.services.security.ops.SystemOpPolicies;
import com.hedera.services.sigs.factories.SigFactoryCreator;
import com.hedera.services.sigs.metadata.DelegatingSigMetadataLookup;
import com.hedera.services.sigs.order.HederaSigningOrder;
import com.hedera.services.sigs.sourcing.DefaultSigBytesProvider;
import com.hedera.services.sigs.sourcing.SigMapPubKeyToSigBytes;
import com.hedera.services.sigs.verification.PrecheckKeyReqs;
import com.hedera.services.sigs.verification.PrecheckVerifier;
import com.hedera.services.sigs.verification.SyncVerifier;
Expand Down Expand Up @@ -309,11 +308,9 @@
import com.hedera.services.usage.crypto.CryptoOpsUsage;
import com.hedera.services.usage.file.FileOpsUsage;
import com.hedera.services.usage.schedule.ScheduleOpsUsage;
import com.hedera.services.utils.JvmSystemExits;
import com.hedera.services.utils.MiscUtils;
import com.hedera.services.utils.Pause;
import com.hedera.services.utils.SleepingPause;
import com.hedera.services.utils.SystemExits;
import com.hederahashgraph.api.proto.java.AccountID;
import com.hederahashgraph.api.proto.java.HederaFunctionality;
import com.hederahashgraph.api.proto.java.TokenID;
Expand Down Expand Up @@ -424,8 +421,6 @@
public class ServicesContext {
private static final Logger log = LogManager.getLogger(ServicesContext.class);

private SystemExits systemExits = new JvmSystemExits();

/* Injected dependencies. */
ServicesState state;

Expand All @@ -443,7 +438,6 @@ public class ServicesContext {
private HederaFs hfs;
private NodeInfo nodeInfo;
private StateView currentView;
private AccountID accountId;
private AnswerFlow answerFlow;
private HcsAnswers hcsAnswers;
private FileNumbers fileNums;
Expand Down Expand Up @@ -501,7 +495,6 @@ public class ServicesContext {
private NetworkController networkGrpc;
private GrpcServerManager grpc;
private TxnResponseHelper txnResponseHelper;
private SigFactoryCreator sigFactoryCreator;
private BlobStorageSource bytecodeDb;
private HapiOpPermissions hapiOpPermissions;
private EntityAutoRenewal entityAutoRenewal;
Expand Down Expand Up @@ -622,13 +615,6 @@ public void rebuildStoreViewsIfPresent() {
}
}

public SigFactoryCreator sigFactoryCreator() {
if (sigFactoryCreator == null) {
sigFactoryCreator = new SigFactoryCreator();
}
return sigFactoryCreator;
}

public NonBlockingHandoff nonBlockingHandoff() {
if (nonBlockingHandoff == null) {
nonBlockingHandoff = new NonBlockingHandoff(recordStreamManager(), nodeLocalProperties());
Expand Down Expand Up @@ -754,10 +740,7 @@ public LedgerValidator ledgerValidator() {

public InHandleActivationHelper activationHelper() {
if (activationHelper == null) {
activationHelper = new InHandleActivationHelper(
backedKeyOrder(),
characteristics(),
txnCtx()::accessor);
activationHelper = new InHandleActivationHelper(characteristics(), txnCtx()::accessor);
}
return activationHelper;
}
Expand Down Expand Up @@ -1172,7 +1155,8 @@ public PrecheckVerifier precheckVerifier() {
if (precheckVerifier == null) {
Predicate<TransactionBody> isQueryPayment = queryPaymentTestFor(effectiveNodeAccount());
PrecheckKeyReqs reqs = new PrecheckKeyReqs(keyOrder(), lookupRetryingKeyOrder(), isQueryPayment);
precheckVerifier = new PrecheckVerifier(syncVerifier(), reqs, DefaultSigBytesProvider.DEFAULT_SIG_BYTES);
precheckVerifier = new PrecheckVerifier(
syncVerifier(), reqs, accessor -> new SigMapPubKeyToSigBytes(accessor.getSigMap()));
}
return precheckVerifier;
}
Expand Down Expand Up @@ -2124,10 +2108,6 @@ public void setScheduleStore(ScheduleStore scheduleStore) {
this.scheduleStore = scheduleStore;
}

void setSystemExits(SystemExits systemExits) {
this.systemExits = systemExits;
}

private AccountID effectiveNodeAccount() {
final var info = nodeInfo();
/* If we do not have a self account, we must be zero-stake and will never process a query payment. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.hedera.services.legacy.core.jproto.JKey;
import com.hedera.services.sigs.PlatformSigOps;
import com.hedera.services.sigs.factories.BodySigningSigFactory;
import com.hedera.services.sigs.sourcing.SigMapPubKeyToSigBytes;
import com.hedera.services.sigs.verification.SyncVerifier;
import com.hedera.services.state.merkle.MerkleAccount;
import com.hedera.services.state.merkle.MerkleEntityId;
Expand All @@ -39,7 +40,6 @@

import static com.hedera.services.keys.HederaKeyActivation.ONLY_IF_SIG_IS_VALID;
import static com.hedera.services.keys.HederaKeyActivation.isActive;
import static com.hedera.services.sigs.sourcing.DefaultSigBytesProvider.DEFAULT_SIG_BYTES;
import static com.hedera.services.state.merkle.MerkleEntityId.fromAccountId;
import static java.util.stream.Collectors.toList;

Expand Down Expand Up @@ -71,12 +71,13 @@ public boolean allRequiredKeysAreActive(Set<AccountID> touched) {
if (requiredKeys.isEmpty()) {
return true;
} else {
final var accessor = txnCtx.accessor();
return check.allKeysAreActive(
requiredKeys,
syncVerifier,
txnCtx.accessor(),
accessor,
PlatformSigOps::createEd25519PlatformSigsFrom,
DEFAULT_SIG_BYTES::allPartiesSigBytesFor,
new SigMapPubKeyToSigBytes(accessor.getSigMap()),
BodySigningSigFactory::new,
(key, sigsFn) -> isActive(key, sigsFn, ONLY_IF_SIG_IS_VALID),
HederaKeyActivation::pkToSigMapFrom);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@
import com.hedera.services.legacy.core.jproto.JKey;
import com.hedera.services.legacy.core.jproto.JKeyList;
import com.hedera.services.legacy.core.jproto.JThresholdKey;
import com.hedera.services.legacy.crypto.SignatureStatus;
import com.hedera.services.sigs.order.HederaSigningOrder;
import com.hedera.services.sigs.order.SigningOrderResult;
import com.hedera.services.sigs.order.SigningOrderResultFactory;
import com.hedera.services.utils.TxnAccessor;
import com.swirlds.common.crypto.TransactionSignature;
import com.swirlds.common.crypto.VerificationStatus;
Expand Down Expand Up @@ -62,21 +58,19 @@ private HederaKeyActivation(){
* taken together, activate the payer's Hedera key.
*
* @param accessor the txn to evaluate.
* @param keyOrder a resource to determine the payer's Hedera key.
* @param summaryFactory a resource to summarize the result of the key determination.
* @return whether the payer's Hedera key is active.
* @return whether the payer's Hedera key is active
*/
public static boolean payerSigIsActive(
TxnAccessor accessor,
HederaSigningOrder keyOrder,
SigningOrderResultFactory<SignatureStatus> summaryFactory
) {
SigningOrderResult<SignatureStatus> payerSummary = keyOrder.keysForPayer(accessor.getTxn(), summaryFactory);
public static boolean payerSigIsActive(TxnAccessor accessor) {
final var sigMeta = accessor.getSigMeta();

if (sigMeta == null) {
throw new IllegalArgumentException("Cannot test payer sig activation without rationalized sig meta");
}
if (!sigMeta.couldRationalizePayer()) {
return false;
}

return isActive(
payerSummary.getPayerKey(),
pkToSigMapFrom(accessor.getPlatformTxn().getSignatures()),
ONLY_IF_SIG_IS_VALID);
return isActive(sigMeta.payerKey(), sigMeta.pkToVerifiedSigFn(), ONLY_IF_SIG_IS_VALID);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,9 @@
*/

import com.hedera.services.legacy.core.jproto.JKey;
import com.hedera.services.sigs.order.HederaSigningOrder;
import com.hedera.services.utils.TxnAccessor;
import com.hederahashgraph.api.proto.java.TransactionBody;
import com.swirlds.common.crypto.TransactionSignature;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.Collections;
import java.util.List;
Expand All @@ -36,7 +33,6 @@
import java.util.function.Supplier;

import static com.hedera.services.keys.HederaKeyTraversal.visitSimpleKeys;
import static com.hedera.services.sigs.Rationalization.IN_HANDLE_SUMMARY_FACTORY;

/**
* Provides information about the Ed25519 keys that compose the Hedera keys
Expand All @@ -49,36 +45,24 @@
* @author Michael Tinker
*/
public class InHandleActivationHelper {
private static final Logger log = LogManager.getLogger(InHandleActivationHelper.class);

private static final List<JKey> NO_OTHER_PARTIES = null;
private static final TxnAccessor NO_LAST_ACCESSOR = null;
private static final Function<byte[], TransactionSignature> NO_LAST_SIGS_FN = null;

static Activation activation = HederaKeyActivation::isActive;
static Function<
List<TransactionSignature>,
Function<byte[], TransactionSignature>> sigsFnSource = HederaKeyActivation::pkToSigMapFrom;

private final HederaSigningOrder keyOrderer;
private final CharacteristicsFactory characteristics;
private final Supplier<TxnAccessor> accessorSource;

private List<JKey> otherParties = NO_OTHER_PARTIES;
private TxnAccessor accessor = NO_LAST_ACCESSOR;
private Function<byte[], TransactionSignature> sigsFn = NO_LAST_SIGS_FN;

public InHandleActivationHelper(
HederaSigningOrder keyOrderer,
CharacteristicsFactory characteristics,
Supplier<TxnAccessor> accessorSource
) {
this.keyOrderer = keyOrderer;
public InHandleActivationHelper(CharacteristicsFactory characteristics, Supplier<TxnAccessor> accessorSource) {
this.characteristics = characteristics;
this.accessorSource = accessorSource;
}


/**
* Returns true if the set of Ed25519 signing keys for the active transaction
* suffice to meet the signing requirements of all Hedera keys prerequisite
Expand Down Expand Up @@ -150,16 +134,13 @@ private boolean arePartiesActive(
private void ensureUpToDate() {
var current = accessorSource.get();
if (accessor != current) {
var otherOrderingResult = keyOrderer.keysForOtherParties(current.getTxn(), IN_HANDLE_SUMMARY_FACTORY);
if (otherOrderingResult.hasErrorReport()) {
var errorReport = otherOrderingResult.getErrorReport();
log.debug("Allowing active other-party sigs: {} ({})!", errorReport, errorReport.getResponseCode());
otherParties = Collections.emptyList();
final var sigMeta = current.getSigMeta();
if (sigMeta.couldRationalizeOthers()) {
otherParties = sigMeta.othersReqSigs();
} else {
otherParties = otherOrderingResult.getOrderedKeys();
otherParties = Collections.emptyList();
}
var sigs = current.getPlatformTxn().getSignatures();
sigsFn = sigsFnSource.apply(sigs);
sigsFn = sigMeta.pkToVerifiedSigFn();
accessor = current;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import com.hedera.services.sigs.sourcing.PubKeyToSigBytes;
import com.hedera.services.sigs.verification.SyncVerifier;
import com.hedera.services.utils.TxnAccessor;
import com.hederahashgraph.api.proto.java.Transaction;
import com.swirlds.common.crypto.TransactionSignature;

import java.util.List;
Expand All @@ -39,13 +38,12 @@ public static boolean allKeysAreActive(
SyncVerifier syncVerifier,
TxnAccessor accessor,
PlatformSigsFactory sigsFactory,
Function<Transaction, PubKeyToSigBytes> sigBytesProvider,
PubKeyToSigBytes sigBytes,
Function<TxnAccessor, TxnScopedPlatformSigFactory> scopedSigProvider,
BiPredicate<JKey, Function<byte[], TransactionSignature>> isActive,
Function<List<TransactionSignature>, Function<byte[], TransactionSignature>> sigsFnProvider
) {
var sigFactory = scopedSigProvider.apply(accessor);
var sigBytes = sigBytesProvider.apply(accessor.getSignedTxnWrapper());

var creationResult = sigsFactory.createEd25519From(keys, sigBytes, sigFactory);
if (creationResult.hasFailed()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import com.hedera.services.sigs.sourcing.PubKeyToSigBytes;
import com.hedera.services.sigs.verification.SyncVerifier;
import com.hedera.services.utils.TxnAccessor;
import com.hederahashgraph.api.proto.java.Transaction;
import com.swirlds.common.crypto.TransactionSignature;

import java.util.List;
Expand All @@ -40,7 +39,7 @@ boolean allKeysAreActive(
SyncVerifier syncVerifier,
TxnAccessor accessor,
PlatformSigsFactory sigsFactory,
Function<Transaction, PubKeyToSigBytes> sigBytesProvider,
PubKeyToSigBytes pkToSigFn,
Function<TxnAccessor, TxnScopedPlatformSigFactory> scopedSigProvider,
BiPredicate<JKey, Function<byte[], TransactionSignature>> isActive,
Function<List<TransactionSignature>, Function<byte[], TransactionSignature>> sigsFnProvider);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
import com.google.protobuf.InvalidProtocolBufferException;
import com.hedera.services.context.ServicesContext;
import com.hedera.services.legacy.crypto.SignatureStatus;
import com.hedera.services.sigs.sourcing.ScopedSigBytesProvider;
import com.hedera.services.sigs.factories.BodySigningSigFactory;
import com.hedera.services.sigs.sourcing.SigMapPubKeyToSigBytes;
import com.hedera.services.state.logic.ServicesTxnManager;
import com.hedera.services.state.submerkle.ExpirableTxnRecord;
import com.hedera.services.stream.RecordStreamObject;
Expand All @@ -42,7 +43,6 @@
import static com.hedera.services.keys.HederaKeyActivation.payerSigIsActive;
import static com.hedera.services.legacy.crypto.SignatureStatusCode.SUCCESS_VERIFY_ASYNC;
import static com.hedera.services.sigs.HederaToPlatformSigOps.rationalizeIn;
import static com.hedera.services.sigs.Rationalization.IN_HANDLE_SUMMARY_FACTORY;
import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.FAIL_INVALID;
import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.INVALID_ACCOUNT_ID;
import static com.hederahashgraph.api.proto.java.ResponseCodeEnum.INVALID_CONTRACT_ID;
Expand Down Expand Up @@ -200,21 +200,20 @@ private void process(TxnAccessor accessor) {

private boolean hasActivePayerSig(TxnAccessor accessor) {
try {
return payerSigIsActive(accessor, ctx.backedKeyOrder(), IN_HANDLE_SUMMARY_FACTORY);
return payerSigIsActive(accessor);
} catch (Exception edgeCase) {
log.warn("Almost inconceivably, when testing payer sig activation:", edgeCase);
}
return false;
}

private SignatureStatus rationalizeWithPreConsensusSigs(TxnAccessor accessor) {
var sigProvider = new ScopedSigBytesProvider(accessor);
var sigStatus = rationalizeIn(
accessor,
ctx.syncVerifier(),
ctx.backedKeyOrder(),
sigProvider,
ctx.sigFactoryCreator()::createScopedFactory);
new SigMapPubKeyToSigBytes(accessor.getSigMap()),
new BodySigningSigFactory(accessor));
if (!sigStatus.isError()) {
if (sigStatus.getStatusCode() == SUCCESS_VERIFY_ASYNC) {
ctx.speedometers().cycleAsyncVerifications();
Expand Down
Loading