コード例 #1
0
ファイル: wrappers_test.py プロジェクト: euri10/iota.lib.py
    def test_router_aliasing(self):
        """
    The router will try to re-use existing adapter instances.
    """
        wrapper1 = RoutingWrapper('http://localhost:14265')
        adapter_default = wrapper1.adapter

        # The router will try to minimize the number of adapter instances
        # that it creates from URIs.
        wrapper1.add_route('alpha', 'http://localhost:14265').add_route(
            'bravo', 'http://localhost:14265')

        # Two routes with the same URI => same adapter instance.
        self.assertIs(
            wrapper1.get_adapter('bravo'),
            wrapper1.get_adapter('alpha'),
        )

        # "127.0.0.1" != "localhost", so separate adapters created.
        wrapper1.add_route('charlie', 'http://127.0.0.1:14265')
        self.assertIsNot(
            wrapper1.get_adapter('charlie'),
            wrapper1.get_adapter('alpha'),
        )

        # Providing an adapter instance bypasses the whole setup.
        wrapper1.add_route('delta', HttpAdapter('http://localhost:14265'))
        self.assertIsNot(
            wrapper1.get_adapter('delta'),
            wrapper1.get_adapter('alpha'),
        )

        # The default adapter is always kept separate, even if it URI
        # matches a routing adapter.
        self.assertIsNot(
            wrapper1.get_adapter('foo'),
            wrapper1.get_adapter('alpha'),
        )

        # Aliased adapters are not shared between routers.
        wrapper2 = RoutingWrapper(adapter_default)

        wrapper2.add_route('echo', 'http://localhost:14265')
        self.assertIsNot(
            wrapper2.get_adapter('echo'),
            wrapper1.get_adapter('alpha'),
        )
コード例 #2
0
ファイル: wrappers_test.py プロジェクト: grendias/iota.lib.py
  def test_router_aliasing(self):
    """
    The router will try to re-use existing adapter instances.
    """
    wrapper1 = RoutingWrapper('http://localhost:14265')
    adapter_default = wrapper1.adapter

    # The router will try to minimize the number of adapter instances
    # that it creates from URIs.
    wrapper1\
      .add_route('alpha', 'http://localhost:14265')\
      .add_route('bravo', 'http://localhost:14265')\

    # Two routes with the same URI => same adapter instance.
    self.assertIs(
      wrapper1.get_adapter('bravo'),
      wrapper1.get_adapter('alpha'),
    )

    # "127.0.0.1" != "localhost", so separate adapters created.
    wrapper1.add_route('charlie', 'http://127.0.0.1:14265')
    self.assertIsNot(
      wrapper1.get_adapter('charlie'),
      wrapper1.get_adapter('alpha'),
    )

    # Providing an adapter instance bypasses the whole setup.
    wrapper1.add_route('delta', HttpAdapter('http://localhost:14265'))
    self.assertIsNot(
      wrapper1.get_adapter('delta'),
      wrapper1.get_adapter('alpha'),
    )

    # The default adapter is always kept separate, even if it URI
    # matches a routing adapter.
    self.assertIsNot(
      wrapper1.get_adapter('foo'),
      wrapper1.get_adapter('alpha'),
    )

    # Aliased adapters are not shared between routers.
    wrapper2 = RoutingWrapper(adapter_default)

    wrapper2.add_route('echo', 'http://localhost:14265')
    self.assertIsNot(
      wrapper2.get_adapter('echo'),
      wrapper1.get_adapter('alpha'),
    )
コード例 #3
0
def batch_transfer(filename,
                   node_uri,
                   seed,
                   amount_of_seeds=100,
                   amount_per_seed=10000,
                   batch_size=25,
                   depth=3,
                   tag='GIFT',
                   message='',
                   pow_node_uri=None):
    needed_funds = amount_of_seeds * amount_per_seed
    print('You are about to spend %s iota spread out over %s addresses.' %
          (needed_funds, amount_of_seeds))
    print('Checking your seeds balance...')

    if pow_node_uri:
        router = RoutingWrapper(node_uri)
        router.add_route('attachToTangle', pow_node_uri)
        api = Iota(router, seed)
    else:
        api = Iota(node_uri, seed)

    inputs = api.get_inputs()
    balance = inputs['totalBalance']

    if balance < needed_funds:
        print(
            "You don't have enough funds available on your SEED, please make sure your seed has at least %si available!"
            % needed_funds)
        return

    print(
        'You have enough available to transfer the %si, Generating %d seeds and addresses now...'
        % (needed_funds, amount_of_seeds))

    seedlist = []
    for i in range(amount_of_seeds):
        random_seed = ''.join(
            [choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ9') for x in range(81)])
        gen = AddressGenerator(random_seed)
        new_addr = gen.get_addresses(0, 1, 2)[0]
        seedlist.append((random_seed, new_addr))
        print('.', sep='', end='', flush=True)

    print('\n')

    with open(filename, 'w') as fh:
        writer = csv.writer(fh)
        writer.writerow(['Seed', 'Address', 'Iota'])

        for gseed, gaddr in seedlist:
            writer.writerow([gseed, gaddr, amount_per_seed])

    print('All seeds and addresses are now available in %s!' % filename)

    amount_of_bundles = (amount_of_seeds // batch_size) + 1

    if amount_of_seeds % batch_size == 0:
        amount_of_bundles -= 1

    print(
        'We will generate and send %d bundles containing %d transactions per bundle max, this can take a while...'
        % (amount_of_bundles, batch_size))

    from_addr = None
    for i in range(amount_of_bundles):
        sliced = seedlist[i * batch_size:(i + 1) * batch_size]
        print('Starting transfer of bundle %d containing %d seeds...' %
              (i + 1, len(sliced)))

        transfers = []
        for gseed, gaddr in sliced:
            transfers.append(
                ProposedTransaction(
                    address=gaddr,
                    value=amount_per_seed,
                    tag=Tag(tag),
                    message=TryteString.from_string(message),
                ))

        bundle = api.send_transfer(depth=depth, transfers=transfers)

        for tx in bundle['bundle'].transactions:
            if tx.current_index == tx.last_index:
                print('Remainder:', tx.current_index, tx.address, tx.value)
                from_addr = tx.address

                if amount_per_seed == 0:
                    continue

                print(
                    'Waiting for the TX to confirm and the remainder address (%s) to fill...'
                    % tx.address)
                while True:
                    balances = api.get_balances([tx.address], 100)
                    if balances['balances'][0] > 0:
                        break
                    else:
                        print('...', sep='', end='', flush=True)

                    sleep(5)

                print('\n')

        print('Transfer complete.')

    print('All done!')
コード例 #4
0
"""
Simple example using the RoutingWrapper to route API requests to
different nodes.

References:

- https://pyota.readthedocs.io/en/develop/adapters.html#routingwrapper
"""
from iota import Address, Iota, ProposedTransaction, Tag, TryteString
from iota.adapter.wrappers import RoutingWrapper

# Send PoW requests to local node.
# All other requests go to light wallet node.
router = RoutingWrapper('http://service.iotasupport.com:14265')
router.add_route('attachToTangle', 'http://localhost:14265')

api = Iota(router, seed=b'SEED9GOES9HERE')

# Example of sending a transfer using the adapter.
bundle = api.send_transfer(
    depth=3,
    transfers=[
        ProposedTransaction(
            # Recipient of the transfer.
            address=Address(
                # b'TESTVALUE9DONTUSEINPRODUCTION99999FBFFTG'
                # b'QFWEHEL9KCAFXBJBXGE9HID9XCOHFIDABHDG9AHDR'
            ),

            # Amount of IOTA to transfer.
            # This value may be zero.
コード例 #5
0
ファイル: wrappers_test.py プロジェクト: a7xr/iota_2.0.5
  def test_router_aliasing(self):
    """
    The router will try to re-use existing adapter instances.
    """
    wrapper1 = RoutingWrapper('http://localhost:14265')
    print_var_type_n_val(var001 = wrapper1, pointer = "#2345trezGH-(")#2345trezGH-(
# Value: 
# # <iota.adapter.wrappers.RoutingWrapper object at 0x0000024C271B17B8>

# Type: <class 'iota.adapter.wrappers.RoutingWrapper'>
    adapter_default = wrapper1.adapter
    print_var_type_n_val(var001 = adapter_default, pointer = "#SDFGnbvc1234098QSDnbe")#SDFGnbvc1234098QSDnbe
# Value: 
# # <iota.adapter.HttpAdapter object at 0x0000024C25E7AB70>

# Type: <class 'iota.adapter.HttpAdapter'>

    # The router will try to minimize the number of adapter instances
    # that it creates from URIs.
    wrapper1\
      .add_route('alpha', 'http://localhost:14265')\
      .add_route('bravo', 'http://localhost:14265')\

    print_var_type_n_val(var001 = wrapper1, pointer = "#2345trezGH2345YTRE")#2345trezGH2345YTRE
# Value: 
# # <iota.adapter.wrappers.RoutingWrapper object at 0x000001601AD6FD68>

# Type: <class 'iota.adapter.wrappers.RoutingWrapper'>
    # Two routes with the same URI => same adapter instance.
    self.assertIs(
      wrapper1.get_adapter('bravo'),
      wrapper1.get_adapter('alpha'),
    )

    # "127.0.0.1" != "localhost", so separate adapters created.
    wrapper1.add_route('charlie', 'http://127.0.0.1:14265')
    self.assertIsNot(
      wrapper1.get_adapter('charlie'),
      wrapper1.get_adapter('alpha'),
    )

    # Providing an adapter instance bypasses the whole setup.
    wrapper1.add_route('delta', HttpAdapter('http://localhost:14265'))
    self.assertIsNot(
      wrapper1.get_adapter('delta'),
      wrapper1.get_adapter('alpha'),
    )

    # The default adapter is always kept separate, even if it URI
    # matches a routing adapter.
    self.assertIsNot(
      wrapper1.get_adapter('foo'),
      wrapper1.get_adapter('alpha'),
    )

    # Aliased adapters are not shared between routers.
    wrapper2 = RoutingWrapper(adapter_default)

    wrapper2.add_route('echo', 'http://localhost:14265')
    self.assertIsNot(
      wrapper2.get_adapter('echo'),
      wrapper1.get_adapter('alpha'),
    )