Exemple #1
0
        public void Bech32Address_Encode()
        {
            var addr     = "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4";
            var hex_prog = "751e76e8199196d454941c45d1b3a323f1433bd6";
            var bc2      = new Bech32Address(AddressNetwork.Main, 0, hex_prog.FromHex());

            Assert.Equal(addr, bc2.ToString());
        }
Exemple #2
0
        public async Task <GetUnspentAddressesResponse> GetUnspentAddressesAsync(GetUnspentAddressesRequest request)
        {
            var nodeInfo = await this.Client.GetNodeInfoAsync();

            var state = new InMemoryBip44GeneratorState
            {
                AccountIndex = request.AccountIndex,
                AddressIndex = request.AddressOptions.StartIndex,
                IsInternal   = false
            };

            var unspentAddresses = new List <Bech32Address>();
            var isFirst          = true;
            var zeroCount        = 0;

            var foundAll = false;

            do
            {
                var bip32Path = Bip44AddressGenerator.GenerateAddress(state, isFirst);
                isFirst = false;

                var addressSeed = request.Seed.GenerateSeedFromPath(bip32Path);
                var address     = Ed25519Address.FromPublicKey(addressSeed.KeyPair.PublicKey);

                var addressWithBalance = await this.Client.GetAddressFromEd25519Async(address.Address);

                if (addressWithBalance.Balance == 0)
                {
                    zeroCount++;
                    if (zeroCount >= request.AddressOptions.ZeroCount)
                    {
                        foundAll = true;
                    }
                }
                else
                {
                    unspentAddresses.Add(Bech32Address.FromEd25519Address(addressWithBalance, bip32Path, nodeInfo.Bech32Hrp));

                    if (unspentAddresses.Count == request.AddressOptions.RequiredCount)
                    {
                        foundAll = true;
                    }
                }
            } while (!foundAll);

            return(new GetUnspentAddressesResponse(unspentAddresses));
        }
        public void TestAddressCreationFromEd25519AddressAndBip31Path()
        {
            var expectedAddressBech32Address = "iota1qq97h4hsl6l67v45cal2ue64k8vrg7xueyv9cv7rrr2tpgjt54xks8esknu";

            var address = new Ed25519Address
            {
                Address = "0bebd6f0febfaf32b4c77eae6755b1d83478dcc9185c33c318d4b0a24ba54d68", Balance = 100, DustAllowed = true
            };

            var path   = Bip44AddressGenerator.GenerateAddress(1, 1, false);
            var actual = Bech32Address.FromEd25519Address(address, path, "iota");

            Assert.AreEqual(expectedAddressBech32Address, actual.Address);
            Assert.AreEqual(path.ToString(), actual.Path.ToString());
            Assert.AreEqual(address.Balance, actual.Balance);
        }
Exemple #4
0
        public void Bech32Address_Decode()
        {
            var bc1 = new Bech32Address("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4");

            Assert.Equal("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", bc1.ToString());
        }
 public TransferOutput(Bech32Address receiver, long amount)
 {
     Receiver = receiver.ToEd25519Address();
     Amount   = amount;
 }