@@ -9,7 +9,6 @@ use ergo_lib::{
99 ergotree_ir:: chain:: {
1010 address:: Address ,
1111 ergo_box:: { ErgoBox , NonMandatoryRegisterId } ,
12- token:: Token ,
1312 } ,
1413 ergotree_ir:: serialization:: SigmaSerializable ,
1514 wallet:: {
@@ -24,16 +23,17 @@ use std::convert::TryInto;
2423
2524use crate :: {
2625 box_kind:: {
27- make_pool_box_candidate_unchecked, BallotBox , PoolBox , PoolBoxWrapper , VoteBallotBoxWrapper ,
26+ make_pool_box_candidate_unchecked, BallotBox , CastBallotBoxVoteParameters , PoolBox ,
27+ PoolBoxWrapper , VoteBallotBoxWrapper ,
2828 } ,
2929 cli_commands:: ergo_explorer_transaction_link,
3030 contracts:: pool:: PoolContract ,
3131 node_interface:: { SignTransaction , SubmitTransaction } ,
3232 oracle_config:: BASE_FEE ,
3333 oracle_state:: { OraclePool , PoolBoxSource , StageError , UpdateBoxSource , VoteBallotBoxesSource } ,
3434 oracle_types:: BlockHeight ,
35- pool_config:: { CastBallotBoxVoteParameters , PoolConfig , POOL_CONFIG } ,
36- spec_token:: TokenIdKind ,
35+ pool_config:: { PoolConfig , POOL_CONFIG } ,
36+ spec_token:: { RewardTokenId , SpecToken , TokenIdKind } ,
3737 wallet:: { WalletDataError , WalletDataSource } ,
3838} ;
3939use derive_more:: From ;
@@ -77,7 +77,7 @@ pub fn update_pool(
7777 tx_signer : & dyn SignTransaction ,
7878 tx_submit : & dyn SubmitTransaction ,
7979 new_pool_box_hash_str : Option < String > ,
80- new_reward_tokens : Option < Token > ,
80+ new_reward_tokens : Option < SpecToken < RewardTokenId > > ,
8181 height : BlockHeight ,
8282) -> Result < ( ) , UpdatePoolError > {
8383 info ! ( "Opening pool_config_updated.yaml" ) ;
@@ -137,9 +137,9 @@ fn display_update_diff(
137137 old_pool_config : & PoolConfig ,
138138 new_pool_config : & PoolConfig ,
139139 old_pool_box : PoolBoxWrapper ,
140- new_reward_tokens : Option < Token > ,
140+ new_reward_tokens : Option < SpecToken < RewardTokenId > > ,
141141) {
142- let new_tokens = new_reward_tokens. unwrap_or_else ( || old_pool_box. reward_token ( ) . into ( ) ) ;
142+ let new_tokens = new_reward_tokens. unwrap_or_else ( || old_pool_box. reward_token ( ) ) ;
143143 let new_pool_contract =
144144 PoolContract :: checked_load ( & new_pool_config. pool_box_wrapper_inputs . contract_inputs )
145145 . unwrap ( ) ;
@@ -189,7 +189,7 @@ fn build_update_pool_box_tx(
189189 wallet : & dyn WalletDataSource ,
190190 update_box : & dyn UpdateBoxSource ,
191191 new_pool_contract : PoolContract ,
192- new_reward_tokens : Option < Token > ,
192+ new_reward_tokens : Option < SpecToken < RewardTokenId > > ,
193193 height : BlockHeight ,
194194 change_address : Address ,
195195) -> Result < TransactionContext < UnsignedTransaction > , UpdatePoolError > {
@@ -202,13 +202,12 @@ fn build_update_pool_box_tx(
202202 . sigma_serialize_bytes ( )
203203 . unwrap ( ) ,
204204 ) ;
205- let reward_tokens = new_reward_tokens. unwrap_or_else ( || old_pool_box. reward_token ( ) . into ( ) ) ;
206205 let vote_parameters = CastBallotBoxVoteParameters {
207206 pool_box_address_hash : pool_box_hash,
208- reward_token_id : reward_tokens. token_id ,
209- reward_token_quantity : * reward_tokens. amount . as_u64 ( ) ,
207+ reward_token_opt : new_reward_tokens. clone ( ) ,
210208 update_box_creation_height : update_box. get_box ( ) . creation_height as i32 ,
211209 } ;
210+ let reward_tokens = new_reward_tokens. unwrap_or_else ( || old_pool_box. reward_token ( ) ) ;
212211 // Find ballot boxes that are voting for the new pool hash
213212 let mut sorted_ballot_boxes = ballot_boxes. get_ballot_boxes ( ) ?;
214213 // Sort in descending order of ballot token amounts. If two boxes have the same amount of ballot tokens, also compare box value, in case some boxes were incorrectly created below minStorageRent
@@ -278,11 +277,12 @@ fn build_update_pool_box_tx(
278277 }
279278
280279 let target_balance = * BASE_FEE ;
281- let target_tokens = if reward_tokens. token_id != old_pool_box. reward_token ( ) . token_id ( ) {
282- vec ! [ reward_tokens. clone( ) ]
283- } else {
284- vec ! [ ]
285- } ;
280+ let target_tokens =
281+ if reward_tokens. token_id . token_id ( ) != old_pool_box. reward_token ( ) . token_id ( ) {
282+ vec ! [ reward_tokens. clone( ) . into( ) ]
283+ } else {
284+ vec ! [ ]
285+ } ;
286286 let box_selector = SimpleBoxSelector :: new ( ) ;
287287 let selection = box_selector. select ( unspent_boxes, target_balance, & target_tokens) ?;
288288 let mut input_boxes = vec ! [ old_pool_box. get_box( ) . clone( ) , update_box. get_box( ) . clone( ) ] ;
@@ -321,7 +321,7 @@ fn build_update_pool_box_tx(
321321 change_address,
322322 ) ;
323323
324- if reward_tokens. token_id != old_pool_box. reward_token ( ) . token_id ( ) {
324+ if reward_tokens. token_id . token_id ( ) != old_pool_box. reward_token ( ) . token_id ( ) {
325325 tx_builder. set_token_burn_permit ( vec ! [ old_pool_box. reward_token( ) . into( ) ] ) ;
326326 }
327327
@@ -379,7 +379,7 @@ mod tests {
379379 generate_token_ids, make_wallet_unspent_box, BallotBoxesMock , PoolBoxMock ,
380380 UpdateBoxMock , WalletDataMock ,
381381 } ,
382- spec_token:: { RefreshTokenId , SpecToken , TokenIdKind } ,
382+ spec_token:: { RefreshTokenId , RewardTokenId , SpecToken , TokenIdKind } ,
383383 } ;
384384
385385 use super :: build_update_pool_box_tx;
@@ -405,8 +405,8 @@ mod tests {
405405 token_id : token_ids. reward_token_id . clone ( ) ,
406406 amount : 1500 . try_into ( ) . unwrap ( ) ,
407407 } ;
408- let new_reward_tokens = Token {
409- token_id : force_any_tokenid ( ) ,
408+ let new_reward_tokens = SpecToken {
409+ token_id : RewardTokenId :: from_token_id_unchecked ( force_any_tokenid ( ) ) ,
410410 amount : force_any_val ( ) ,
411411 } ;
412412 dbg ! ( & new_reward_tokens) ;
@@ -498,7 +498,7 @@ mod tests {
498498 amount : 1 . try_into ( ) . unwrap ( ) ,
499499 } ,
500500 pool_box_hash,
501- new_reward_tokens. clone ( ) ,
501+ Some ( new_reward_tokens. clone ( ) ) ,
502502 ballot_contract. min_storage_rent ( ) ,
503503 height,
504504 )
@@ -524,7 +524,7 @@ mod tests {
524524 // create a wallet box with new reward tokens
525525 secret. public_image ( ) ,
526526 BASE_FEE . checked_mul_u32 ( 4_000_000_000 ) . unwrap ( ) ,
527- Some ( vec ! [ new_reward_tokens. clone( ) ] . try_into ( ) . unwrap ( ) ) ,
527+ Some ( vec ! [ new_reward_tokens. clone( ) . into ( ) ] . try_into ( ) . unwrap ( ) ) ,
528528 ) ;
529529 let change_address = AddressEncoder :: unchecked_parse_network_address_from_str (
530530 "9iHyKxXs2ZNLMp9N9gbUT9V8gTbsV7HED1C1VhttMfBUMPDyF7r" ,
0 commit comments