Example #1
0
        private async Task UpdateSmartContractAddressesAsync(BlockHeader blockHeader,
                                                             ISmartContractAddressNameProvider smartContractAddressNameProvider)
        {
            var t = new Transaction()
            {
                From       = _smartContractAddressService.GetZeroSmartContractAddress(),
                To         = _smartContractAddressService.GetZeroSmartContractAddress(),
                MethodName = nameof(Acs0.ACS0Container.ACS0Stub.GetContractAddressByName),
                Params     = smartContractAddressNameProvider.ContractName.ToByteString()
            };

            var transactionResult =
                (await _transactionExecutingService.ExecuteAsync(
                     new ChainContext()
            {
                BlockHash = blockHeader.GetHash(), BlockHeight = blockHeader.Height
            }, t,
                     TimestampHelper.GetUtcNow()));

            if (!transactionResult.IsSuccessful())
            {
                throw new InvalidOperationException();
            }

            var address = Address.Parser.ParseFrom(transactionResult.ReturnValue);

            if (!address.Value.IsEmpty)
            {
                _smartContractAddressService.SetAddress(smartContractAddressNameProvider.ContractName, address);
            }
        }
Example #2
0
        private async Task UpdateSmartContractAddressesAsync(BlockHeader blockHeader,
                                                             ISmartContractAddressNameProvider smartContractAddressNameProvider)
        {
            var transaction = new Transaction()
            {
                From       = _smartContractAddressService.GetZeroSmartContractAddress(),
                To         = _smartContractAddressService.GetZeroSmartContractAddress(),
                MethodName = nameof(Acs0.ACS0Container.ACS0Stub.GetContractAddressByName),
                Params     = smartContractAddressNameProvider.ContractName.ToByteString()
            };
            var address = await _transactionExecutingService.ExecuteAsync <Address>(
                new ChainContext { BlockHash = blockHeader.GetHash(), BlockHeight = blockHeader.Height }, transaction,
                TimestampHelper.GetUtcNow(), true);

            if (!address.Value.IsEmpty)
            {
                _smartContractAddressService.SetAddress(smartContractAddressNameProvider.ContractName, address);
            }
        }