private async Task <byte[]> GetFileDescriptorSetAsync(Address address)
        {
            var chain = await _blockchainService.GetChainAsync();

            var chainContext = new ChainContext()
            {
                BlockHash   = chain.BestChainHash,
                BlockHeight = chain.BestChainHeight
            };

            return(await _transactionReadOnlyExecutionService.GetFileDescriptorSetAsync(chainContext, address));
        }
        public async Task GetFileDescriptorSetAsync_Test()
        {
            var chain = await _smartContractHelper.CreateChainWithGenesisContractAsync();

            var chainContext = new ChainContext
            {
                BlockHash   = chain.BestChainHash,
                BlockHeight = chain.BestChainHeight
            };

            _transactionReadOnlyExecutionService.GetFileDescriptorSetAsync(chainContext, SampleAddress.AddressList[0])
            .ShouldThrow <SmartContractFindRegistrationException>();

            _smartContractExecutiveProvider.GetPool(_defaultContractZeroCodeProvider.ContractZeroAddress).Single()
            .ContractHash.ShouldBe(_defaultContractZeroCodeProvider.DefaultContractZeroRegistration.CodeHash);
            var bytes = await _transactionReadOnlyExecutionService.GetFileDescriptorSetAsync(chainContext,
                                                                                             _defaultContractZeroCodeProvider.ContractZeroAddress);

            var fileDescriptorSet = FileDescriptorSet.Parser.ParseFrom(bytes);

            fileDescriptorSet.ShouldNotBeNull();
            _smartContractExecutiveProvider.GetPool(_defaultContractZeroCodeProvider.ContractZeroAddress).Single()
            .ContractHash.ShouldBe(_defaultContractZeroCodeProvider.DefaultContractZeroRegistration.CodeHash);
        }