2323import time
2424from concurrent .futures import ThreadPoolExecutor
2525
26- from typing import List , Optional
26+ from typing import List , Optional , Union
2727from .address import ADDRESS_BCRT1_P2SH_OP_TRUE
2828from .authproxy import JSONRPCException
2929from test_framework .masternodes import check_banned , check_punished
@@ -1216,7 +1216,7 @@ def get_node(self, test: BitcoinTestFramework) -> TestNode:
12161216 return test .nodes [self .nodeIdx ]
12171217
12181218 def register (self , node : TestNode , submit : bool , collateral_txid : Optional [str ] = None , collateral_vout : Optional [int ] = None ,
1219- ipAndPort : Optional [str ] = None , ownerAddr : Optional [str ] = None , pubKeyOperator : Optional [str ] = None , votingAddr : Optional [str ] = None ,
1219+ ipAndPort : Union [str , List [ str ], None ] = None , ownerAddr : Optional [str ] = None , pubKeyOperator : Optional [str ] = None , votingAddr : Optional [str ] = None ,
12201220 operator_reward : Optional [int ] = None , rewards_address : Optional [str ] = None , fundsAddr : Optional [str ] = None ,
12211221 platform_node_id : Optional [str ] = None , platform_p2p_port : Optional [int ] = None , platform_http_port : Optional [int ] = None ,
12221222 expected_assert_code : Optional [int ] = None , expected_assert_msg : Optional [str ] = None ) -> Optional [str ]:
@@ -1236,7 +1236,7 @@ def register(self, node: TestNode, submit: bool, collateral_txid: Optional[str]
12361236 args = [
12371237 collateral_txid or self .collateral_txid ,
12381238 collateral_vout or self .collateral_vout ,
1239- ipAndPort or f'127.0.0.1:{ self .nodePort } ' ,
1239+ ipAndPort or [ f'127.0.0.1:{ self .nodePort } ' ] ,
12401240 ownerAddr or self .ownerAddr ,
12411241 pubKeyOperator or self .pubKeyOperator ,
12421242 votingAddr or self .votingAddr ,
@@ -1271,7 +1271,7 @@ def register(self, node: TestNode, submit: bool, collateral_txid: Optional[str]
12711271
12721272 return ret
12731273
1274- def register_fund (self , node : TestNode , submit : bool , collateral_address : Optional [str ] = None , ipAndPort : Optional [str ] = None ,
1274+ def register_fund (self , node : TestNode , submit : bool , collateral_address : Optional [str ] = None , ipAndPort : Union [str , List [ str ], None ] = None ,
12751275 ownerAddr : Optional [str ] = None , pubKeyOperator : Optional [str ] = None , votingAddr : Optional [str ] = None ,
12761276 operator_reward : Optional [int ] = None , rewards_address : Optional [str ] = None , fundsAddr : Optional [str ] = None ,
12771277 platform_node_id : Optional [str ] = None , platform_p2p_port : Optional [int ] = None , platform_http_port : Optional [int ] = None ,
@@ -1299,7 +1299,7 @@ def register_fund(self, node: TestNode, submit: bool, collateral_address: Option
12991299 # Common arguments shared between regular masternodes and EvoNodes
13001300 args = [
13011301 collateral_address or self .collateral_address ,
1302- ipAndPort or f'127.0.0.1:{ self .nodePort } ' ,
1302+ ipAndPort or [ f'127.0.0.1:{ self .nodePort } ' ] ,
13031303 ownerAddr or self .ownerAddr ,
13041304 pubKeyOperator or self .pubKeyOperator ,
13051305 votingAddr or self .votingAddr ,
@@ -1410,7 +1410,7 @@ def update_registrar(self, node: TestNode, submit: bool, pubKeyOperator: Optiona
14101410
14111411 return ret
14121412
1413- def update_service (self , node : TestNode , submit : bool , ipAndPort : Optional [str ] = None , platform_node_id : Optional [str ] = None , platform_p2p_port : Optional [int ] = None ,
1413+ def update_service (self , node : TestNode , submit : bool , ipAndPort : Union [str , List [ str ], None ] = None , platform_node_id : Optional [str ] = None , platform_p2p_port : Optional [int ] = None ,
14141414 platform_http_port : Optional [int ] = None , address_operator : Optional [str ] = None , fundsAddr : Optional [str ] = None ,
14151415 expected_assert_code : Optional [int ] = None , expected_assert_msg : Optional [str ] = None ) -> Optional [str ]:
14161416 if (expected_assert_code and not expected_assert_msg ) or (not expected_assert_code and expected_assert_msg ):
@@ -1442,7 +1442,7 @@ def update_service(self, node: TestNode, submit: bool, ipAndPort: Optional[str]
14421442 # Common arguments shared between regular masternodes and EvoNodes
14431443 args = [
14441444 self .proTxHash ,
1445- ipAndPort or f'127.0.0.1:{ self .nodePort } ' ,
1445+ ipAndPort or [ f'127.0.0.1:{ self .nodePort } ' ] ,
14461446 self .keyOperator ,
14471447 ]
14481448 address_funds = fundsAddr or self .fundsAddr
@@ -1643,7 +1643,7 @@ def dynamically_prepare_masternode(self, idx, node_p2p_port, evo=False, rnd=None
16431643 mn .bury_tx (self , genIdx = 0 , txid = collateral_txid , depth = 1 )
16441644 collateral_vout = mn .get_collateral_vout (self .nodes [0 ], collateral_txid )
16451645
1646- ipAndPort = '127.0.0.1:%d' % node_p2p_port
1646+ ipAndPort = [ '127.0.0.1:%d' % node_p2p_port ]
16471647 operatorReward = idx
16481648
16491649 # platform_node_id, platform_p2p_port and platform_http_port are ignored for regular masternodes
@@ -1709,7 +1709,7 @@ def prepare_masternode(self, idx):
17091709 self .nodes [0 ].sendtoaddress (mn .fundsAddr , 0.001 )
17101710
17111711 port = p2p_port (len (self .nodes ) + idx )
1712- ipAndPort = '127.0.0.1:%d' % port
1712+ ipAndPort = [ '127.0.0.1:%d' % port ]
17131713 operatorReward = idx
17141714
17151715 submit = (idx % 4 ) < 2
0 commit comments