public async Task <RequiredAcs> GetRequiredAcsInContractsAsync(Hash blockHash, long blockHeight)
        {
            var tx = new Transaction
            {
                From       = FromAddress,
                To         = ConfigurationContractAddress,
                MethodName = nameof(ConfigurationContainer.ConfigurationStub.GetConfiguration),
                Params     = new StringValue {
                    Value = RequiredAcsInContractsConfigurationNameProvider.Name
                }.ToByteString(),
                Signature = ByteString.CopyFromUtf8(KernelConstants.SignaturePlaceholder)
            };

            var returned = await _transactionReadOnlyExecutionService.ExecuteAsync <BytesValue>(
                new ChainContext
            {
                BlockHash   = blockHash,
                BlockHeight = blockHeight
            }, tx, TimestampHelper.GetUtcNow(), false);

            var requiredAcsInContracts = new RequiredAcsInContracts();

            requiredAcsInContracts.MergeFrom(returned.Value);
            return(new RequiredAcs
            {
                AcsList = requiredAcsInContracts.AcsList.ToList(),
                RequireAll = requiredAcsInContracts.RequireAll
            });
        }
        public async Task <RequiredAcs> GetRequiredAcsInContractsAsync(Hash blockHash, long blockHeight)
        {
            var chainContext = new ChainContext
            {
                BlockHash   = blockHash,
                BlockHeight = blockHeight
            };

            var returned =
                await _configurationService.GetConfigurationDataAsync(
                    RequiredAcsInContractsConfigurationName, chainContext);

            var requiredAcsInContracts = new RequiredAcsInContracts();

            requiredAcsInContracts.MergeFrom(returned);
            return(new RequiredAcs
            {
                AcsList = requiredAcsInContracts.AcsList.ToList(),
                RequireAll = requiredAcsInContracts.RequireAll
            });
        }