public bool IsWitness(Address address) { if (address.IsInterop) { return(false); } if (address == Address.Null) { return(false); } if (address == this.Chain.Address /*|| address == this.Address*/) { return(false); } if (address == this.EntryAddress) { return(true); } using (var m = new ProfileMarker("validatedWitnesses.Contains")) if (validatedWitnesses.Contains(address)) { return(true); } if (address.IsSystem) { var org = Nexus.GetOrganizationByAddress(RootStorage, address); if (org != null) { this.ConsumeGas(10000); var result = org.IsWitness(Transaction); if (result) { validatedWitnesses.Add(address); } return(result); } else { return(address == CurrentContext.Address); } } if (this.Transaction == null) { return(false); } bool accountResult; if (address.IsUser && Nexus.HasGenesis && OptimizedHasAddressScript(RootStorage, address)) { using (var m = new ProfileMarker("InvokeTriggerOnAccount")) accountResult = InvokeTriggerOnAccount(address, AccountTrigger.OnWitness, address); } else { using (var m = new ProfileMarker("Transaction.IsSignedBy")) accountResult = this.Transaction.IsSignedBy(address); } if (accountResult) { validatedWitnesses.Add(address); } return(accountResult); }