@@ -20,7 +20,7 @@ def set_test_params(self):
2020 self .extra_args = [
2121 args + ["-acceptunlimitedissuances=1" ],
2222 args + ["-acceptunlimitedissuances=1" ],
23- args , # node 2 blocks unblinded issuances out of moneyrange
23+ args , # node 2 blocks unblinded issuances out of moneyrange (default -acceptunlimitedissuances=0)
2424 ]
2525
2626 def setup_network (self , split = False ):
@@ -61,6 +61,12 @@ def run_test(self):
6161 self .generate (self .nodes [0 ], 1 )
6262 assert_equal (self .nodes [0 ].getbalance ()[unblinded_asset ], 500_000_000 )
6363
64+ self .log .info ("Issue more than 21 million of a unblinded reissuance token" )
65+ issuance = self .nodes [0 ].issueasset (300_000_000 , 100_000_000 , False )
66+ self .generate (self .nodes [0 ], 1 )
67+ assert_equal (self .nodes [0 ].getbalance ()[issuance ['asset' ]], 300_000_000 )
68+ assert_equal (self .nodes [0 ].getbalance ()[issuance ['token' ]], 100_000_000 )
69+
6470 # send more than 21 million of that asset
6571 addr = self .nodes [1 ].getnewaddress ()
6672 self .nodes [0 ].sendtoaddress (address = addr , amount = 22_000_000 , assetlabel = asset )
@@ -130,5 +136,40 @@ def run_test(self):
130136 assert (asset not in self .nodes [0 ].getbalance ())
131137 assert_equal (self .nodes [2 ].getbalance ()[asset ], 300_000_000 )
132138
139+ self .log .info ("Reissue more than 21 million of a unblinded non-policy asset on node 2 - rejected from mempool" )
140+ issuance = self .nodes [2 ].issueasset (3_000_000 , 100 , False )
141+ asset = issuance ['asset' ]
142+ unblinded_asset = issuance ['asset' ]
143+ self .generate (self .nodes [2 ], 1 )
144+ assert_equal (self .nodes [2 ].getbalance ()[unblinded_asset ], 3_000_000 )
145+ reissuance = self .nodes [2 ].reissueasset (unblinded_asset , 200_000_000 )
146+ reissuance_tx = self .nodes [2 ].gettransaction (reissuance ["txid" ])
147+ assert_raises_rpc_error (- 26 , "issuance-out-of-range" , self .nodes [2 ].sendrawtransaction , reissuance_tx ['hex' ])
148+ # transaction should be accepted on node 0
149+ self .nodes [0 ].sendrawtransaction (reissuance_tx ["hex" ])
150+ assert (reissuance ['txid' ] in self .nodes [0 ].getrawmempool ())
151+ assert (reissuance ['txid' ] not in self .nodes [2 ].getrawmempool ())
152+ self .generate (self .nodes [0 ], 1 )
153+ assert (asset not in self .nodes [0 ].getbalance ())
154+ assert_equal (self .nodes [2 ].getbalance ()[asset ], 203_000_000 )
155+
156+ self .log .info ("Issue more than 21 million reissuance tokens on node 2 - rejected from mempool" )
157+ issuance = self .nodes [2 ].issueasset (3_000_000 , 200_000_000 , False )
158+ asset = issuance ['asset' ]
159+ token = issuance ['token' ]
160+ issuance_tx = self .nodes [2 ].gettransaction (issuance ["txid" ])
161+ assert_raises_rpc_error (- 26 , "issuance-out-of-range" , self .nodes [2 ].sendrawtransaction , issuance_tx ['hex' ])
162+ self .generate (self .nodes [0 ], 1 )
163+ assert (asset not in self .nodes [2 ].getbalance ())
164+ assert (token not in self .nodes [2 ].getbalance ())
165+ # transaction should be accepted on node 0
166+ self .nodes [0 ].sendrawtransaction (issuance_tx ["hex" ])
167+ assert (issuance ['txid' ] in self .nodes [0 ].getrawmempool ())
168+ assert (issuance ['txid' ] not in self .nodes [2 ].getrawmempool ())
169+ self .generate (self .nodes [0 ], 1 )
170+ assert (asset not in self .nodes [0 ].getbalance ())
171+ assert_equal (self .nodes [2 ].getbalance ()[asset ], 3_000_000 )
172+ assert_equal (self .nodes [2 ].getbalance ()[token ], 200_000_000 )
173+
133174if __name__ == '__main__' :
134175 WalletTest ().main ()
0 commit comments