mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-10-31 18:27:26 +00:00 
			
		
		
		
	remove module's legacy code
This commit is contained in:
		
							parent
							
								
									f8cf8525a4
								
							
						
					
					
						commit
						b7ae5a4254
					
				| @ -1,57 +0,0 @@ | |||||||
| package v0_16 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
| 
 |  | ||||||
| 	"github.com/0glabs/0g-chain/x/bep3/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| // resetSwapForZeroHeight updates swap expiry/close heights to work when the chain height is reset to zero.
 |  | ||||||
| func resetSwapForZeroHeight(swap types.AtomicSwap) types.AtomicSwap { |  | ||||||
| 	switch status := swap.Status; status { |  | ||||||
| 	case types.SWAP_STATUS_COMPLETED: |  | ||||||
| 		// Reset closed block to one so completed swaps are not held in long term storage too long.
 |  | ||||||
| 		swap.ClosedBlock = 1 |  | ||||||
| 	case types.SWAP_STATUS_OPEN: |  | ||||||
| 		switch dir := swap.Direction; dir { |  | ||||||
| 		case types.SWAP_DIRECTION_INCOMING: |  | ||||||
| 			// Open incoming swaps can be expired safely. They haven't been claimed yet, so the outgoing swap on bnb will just timeout.
 |  | ||||||
| 			// The chain downtime cannot be accurately predicted, so it's easier to expire than to recalculate a correct expire height.
 |  | ||||||
| 			swap.ExpireHeight = 1 |  | ||||||
| 			swap.Status = types.SWAP_STATUS_EXPIRED |  | ||||||
| 		case types.SWAP_DIRECTION_OUTGOING: |  | ||||||
| 			// Open outgoing swaps should be extended to allow enough time to claim after the chain launches.
 |  | ||||||
| 			// They cannot be expired as there could be an open/claimed bnb swap.
 |  | ||||||
| 			swap.ExpireHeight = 1 + 24686 // default timeout used when sending swaps from 0g
 |  | ||||||
| 		case types.SWAP_DIRECTION_UNSPECIFIED: |  | ||||||
| 		default: |  | ||||||
| 			panic(fmt.Sprintf("unknown bep3 swap direction '%s'", dir)) |  | ||||||
| 		} |  | ||||||
| 	case types.SWAP_STATUS_EXPIRED: |  | ||||||
| 		// Once a swap is marked expired the expire height is ignored. However reset to 1 to be sure.
 |  | ||||||
| 		swap.ExpireHeight = 1 |  | ||||||
| 	case types.SWAP_STATUS_UNSPECIFIED: |  | ||||||
| 	default: |  | ||||||
| 		panic(fmt.Sprintf("unknown bep3 swap status '%s'", status)) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return swap |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func resetSwapsForZeroHeight(oldSwaps types.AtomicSwaps) types.AtomicSwaps { |  | ||||||
| 	newSwaps := make(types.AtomicSwaps, len(oldSwaps)) |  | ||||||
| 	for i, oldSwap := range oldSwaps { |  | ||||||
| 		swap := resetSwapForZeroHeight(oldSwap) |  | ||||||
| 		newSwaps[i] = swap |  | ||||||
| 	} |  | ||||||
| 	return newSwaps |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func Migrate(oldState types.GenesisState) *types.GenesisState { |  | ||||||
| 	return &types.GenesisState{ |  | ||||||
| 		PreviousBlockTime: oldState.PreviousBlockTime, |  | ||||||
| 		Params:            oldState.Params, |  | ||||||
| 		AtomicSwaps:       resetSwapsForZeroHeight(oldState.AtomicSwaps), |  | ||||||
| 		Supplies:          oldState.Supplies, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @ -1,176 +0,0 @@ | |||||||
| package v0_16 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"path/filepath" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| 
 |  | ||||||
| 	sdkmath "cosmossdk.io/math" |  | ||||||
| 	"github.com/cosmos/cosmos-sdk/codec" |  | ||||||
| 	sdk "github.com/cosmos/cosmos-sdk/types" |  | ||||||
| 	"github.com/stretchr/testify/suite" |  | ||||||
| 	"github.com/tendermint/tendermint/libs/bytes" |  | ||||||
| 
 |  | ||||||
| 	app "github.com/0glabs/0g-chain/app" |  | ||||||
| 	"github.com/0glabs/0g-chain/chaincfg" |  | ||||||
| 	"github.com/0glabs/0g-chain/x/bep3/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| type migrateTestSuite struct { |  | ||||||
| 	suite.Suite |  | ||||||
| 
 |  | ||||||
| 	addresses   []sdk.AccAddress |  | ||||||
| 	v16genstate types.GenesisState |  | ||||||
| 	cdc         codec.Codec |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) SetupTest() { |  | ||||||
| 	chaincfg.SetSDKConfig() |  | ||||||
| 
 |  | ||||||
| 	s.v16genstate = types.GenesisState{ |  | ||||||
| 		PreviousBlockTime: time.Date(2021, 4, 8, 15, 0, 0, 0, time.UTC), |  | ||||||
| 		Params:            types.Params{}, |  | ||||||
| 		Supplies:          types.AssetSupplies{}, |  | ||||||
| 		AtomicSwaps:       types.AtomicSwaps{}, |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	config := app.MakeEncodingConfig() |  | ||||||
| 	s.cdc = config.Marshaler |  | ||||||
| 
 |  | ||||||
| 	_, accAddresses := app.GeneratePrivKeyAddressPairs(10) |  | ||||||
| 	s.addresses = accAddresses |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_JSON() { |  | ||||||
| 	// Migrate v16 bep3 to v17
 |  | ||||||
| 	file := filepath.Join("testdata", "v16-bep3.json") |  | ||||||
| 	data, err := ioutil.ReadFile(file) |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	err = s.cdc.UnmarshalJSON(data, &s.v16genstate) |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	genstate := Migrate(s.v16genstate) |  | ||||||
| 
 |  | ||||||
| 	// Compare expect v16 bep3 json with migrated json
 |  | ||||||
| 	actual := s.cdc.MustMarshalJSON(genstate) |  | ||||||
| 	file = filepath.Join("testdata", "v17-bep3.json") |  | ||||||
| 	expected, err := ioutil.ReadFile(file) |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	s.Require().JSONEq(string(expected), string(actual)) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_Swaps() { |  | ||||||
| 	type swap struct { |  | ||||||
| 		ExpireHeight uint64 |  | ||||||
| 		CloseBlock   int64 |  | ||||||
| 		Status       types.SwapStatus |  | ||||||
| 		Direction    types.SwapDirection |  | ||||||
| 	} |  | ||||||
| 	testcases := []struct { |  | ||||||
| 		name    string |  | ||||||
| 		oldSwap swap |  | ||||||
| 		newSwap swap |  | ||||||
| 	}{ |  | ||||||
| 		{ |  | ||||||
| 			name: "incoming open swap", |  | ||||||
| 			oldSwap: swap{ |  | ||||||
| 				// expire and close not set in open swaps
 |  | ||||||
| 				Status:    types.SWAP_STATUS_OPEN, |  | ||||||
| 				Direction: types.SWAP_DIRECTION_INCOMING, |  | ||||||
| 			}, |  | ||||||
| 			newSwap: swap{ |  | ||||||
| 				ExpireHeight: 1, |  | ||||||
| 				Status:       types.SWAP_STATUS_EXPIRED, |  | ||||||
| 				Direction:    types.SWAP_DIRECTION_INCOMING, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			name: "outgoing open swap", |  | ||||||
| 			oldSwap: swap{ |  | ||||||
| 				// expire and close not set in open swaps
 |  | ||||||
| 				Status:    types.SWAP_STATUS_OPEN, |  | ||||||
| 				Direction: types.SWAP_DIRECTION_OUTGOING, |  | ||||||
| 			}, |  | ||||||
| 			newSwap: swap{ |  | ||||||
| 				ExpireHeight: 24687, |  | ||||||
| 				Status:       types.SWAP_STATUS_OPEN, |  | ||||||
| 				Direction:    types.SWAP_DIRECTION_OUTGOING, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			name: "completed swap", |  | ||||||
| 			oldSwap: swap{ |  | ||||||
| 				ExpireHeight: 1000, |  | ||||||
| 				CloseBlock:   900, |  | ||||||
| 				Status:       types.SWAP_STATUS_COMPLETED, |  | ||||||
| 				Direction:    types.SWAP_DIRECTION_INCOMING, |  | ||||||
| 			}, |  | ||||||
| 			newSwap: swap{ |  | ||||||
| 				ExpireHeight: 1000, |  | ||||||
| 				CloseBlock:   1, |  | ||||||
| 				Status:       types.SWAP_STATUS_COMPLETED, |  | ||||||
| 				Direction:    types.SWAP_DIRECTION_INCOMING, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			name: "expired swap", |  | ||||||
| 			oldSwap: swap{ |  | ||||||
| 				ExpireHeight: 1000, |  | ||||||
| 				CloseBlock:   900, |  | ||||||
| 				Status:       types.SWAP_STATUS_EXPIRED, |  | ||||||
| 				Direction:    types.SWAP_DIRECTION_INCOMING, |  | ||||||
| 			}, |  | ||||||
| 			newSwap: swap{ |  | ||||||
| 				ExpireHeight: 1, |  | ||||||
| 				CloseBlock:   900, |  | ||||||
| 				Status:       types.SWAP_STATUS_EXPIRED, |  | ||||||
| 				Direction:    types.SWAP_DIRECTION_INCOMING, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for _, tc := range testcases { |  | ||||||
| 		s.Run(tc.name, func() { |  | ||||||
| 			oldSwaps := types.AtomicSwaps{ |  | ||||||
| 				{ |  | ||||||
| 					Amount:              sdk.NewCoins(sdk.NewCoin("bnb", sdkmath.NewInt(12))), |  | ||||||
| 					RandomNumberHash:    bytes.HexBytes{}, |  | ||||||
| 					ExpireHeight:        tc.oldSwap.ExpireHeight, |  | ||||||
| 					Timestamp:           1110, |  | ||||||
| 					Sender:              s.addresses[0], |  | ||||||
| 					Recipient:           s.addresses[1], |  | ||||||
| 					RecipientOtherChain: s.addresses[0].String(), |  | ||||||
| 					SenderOtherChain:    s.addresses[1].String(), |  | ||||||
| 					ClosedBlock:         tc.oldSwap.CloseBlock, |  | ||||||
| 					Status:              tc.oldSwap.Status, |  | ||||||
| 					CrossChain:          true, |  | ||||||
| 					Direction:           tc.oldSwap.Direction, |  | ||||||
| 				}, |  | ||||||
| 			} |  | ||||||
| 			expectedSwaps := types.AtomicSwaps{ |  | ||||||
| 				{ |  | ||||||
| 					Amount:              sdk.NewCoins(sdk.NewCoin("bnb", sdkmath.NewInt(12))), |  | ||||||
| 					RandomNumberHash:    bytes.HexBytes{}, |  | ||||||
| 					ExpireHeight:        tc.newSwap.ExpireHeight, |  | ||||||
| 					Timestamp:           1110, |  | ||||||
| 					Sender:              s.addresses[0], |  | ||||||
| 					Recipient:           s.addresses[1], |  | ||||||
| 					RecipientOtherChain: s.addresses[0].String(), |  | ||||||
| 					SenderOtherChain:    s.addresses[1].String(), |  | ||||||
| 					ClosedBlock:         tc.newSwap.CloseBlock, |  | ||||||
| 					Status:              tc.newSwap.Status, |  | ||||||
| 					CrossChain:          true, |  | ||||||
| 					Direction:           tc.newSwap.Direction, |  | ||||||
| 				}, |  | ||||||
| 			} |  | ||||||
| 			s.v16genstate.AtomicSwaps = oldSwaps |  | ||||||
| 			genState := Migrate(s.v16genstate) |  | ||||||
| 			s.Require().Len(genState.AtomicSwaps, 1) |  | ||||||
| 			s.Equal(expectedSwaps, genState.AtomicSwaps) |  | ||||||
| 		}) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func TestMigrateTestSuite(t *testing.T) { |  | ||||||
| 	suite.Run(t, new(migrateTestSuite)) |  | ||||||
| } |  | ||||||
							
								
								
									
										212
									
								
								x/bep3/legacy/v0_17/testdata/v16-bep3.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										212
									
								
								x/bep3/legacy/v0_17/testdata/v16-bep3.json
									
									
									
									
										vendored
									
									
								
							| @ -1,212 +0,0 @@ | |||||||
| { |  | ||||||
|   "atomic_swaps": [ |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "1999955998", |  | ||||||
|           "denom": "btcb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "838115", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_INCOMING", |  | ||||||
|       "expire_height": "838627", |  | ||||||
|       "random_number_hash": "6F1CF8F2E13A0C0F0A359F54E47E4E265D766B8E006D2F00BDF994ABDEF1E9E4", |  | ||||||
|       "recipient": "kava1fl2hs6y9vz986g5v52pdan9ga923n9mn5cxxkw", |  | ||||||
|       "recipient_other_chain": "bnb1xz3xqf4p2ygrw9lhp5g5df4ep4nd20vsywnmpr", |  | ||||||
|       "sender": "kava14qsmvzprqvhwmgql9fr0u3zv9n2qla8zhnm5pc", |  | ||||||
|       "sender_other_chain": "bnb19k9wuv2j7c7ck8tmc7kav0r0cnt3esmkrpf25x", |  | ||||||
|       "status": "SWAP_STATUS_COMPLETED", |  | ||||||
|       "timestamp": "1636034914" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "19000000000", |  | ||||||
|           "denom": "bnb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "1712118", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_OUTGOING", |  | ||||||
|       "expire_height": "1736797", |  | ||||||
|       "random_number_hash": "280EB832A37F2265CC82F3957CE603AAD57BAD7038B876A1F28953AFA29FA1C3", |  | ||||||
|       "recipient": "kava1r4v2zdhdalfj2ydazallqvrus9fkphmglhn6u6", |  | ||||||
|       "recipient_other_chain": "bnb18nsgj50zvc4uq93w4j0ltz5gaxhwv7aq4qnq0p", |  | ||||||
|       "sender": "kava1zw6gg4ztvly7zf25pa33mclav3spvj3ympxxna", |  | ||||||
|       "sender_other_chain": "bnb1jh7uv2rm6339yue8k4mj9406k3509kr4wt5nxn", |  | ||||||
|       "status": "SWAP_STATUS_COMPLETED", |  | ||||||
|       "timestamp": "1641976566" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "999595462080", |  | ||||||
|           "denom": "busd" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "787122", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_INCOMING", |  | ||||||
|       "expire_height": "811799", |  | ||||||
|       "random_number_hash": "BFB7CC82DA0E0C8556AC37843F5AB136B9A7A066054368F5948944282B414D83", |  | ||||||
|       "recipient": "kava1eufgf0w9d7hf5mgtek4zr2upkxag9stmzx6unl", |  | ||||||
|       "recipient_other_chain": "bnb10zq89008gmedc6rrwzdfukjk94swynd7dl97w8", |  | ||||||
|       "sender": "kava1hh4x3a4suu5zyaeauvmv7ypf7w9llwlfufjmuu", |  | ||||||
|       "sender_other_chain": "bnb1vl3wn4x8kqajg2j9wxa5y5amgzdxchutkxr6at", |  | ||||||
|       "status": "SWAP_STATUS_EXPIRED", |  | ||||||
|       "timestamp": "1635694492" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "999595462080", |  | ||||||
|           "denom": "busd" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "787122", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_OUTGOING", |  | ||||||
|       "expire_height": "811799", |  | ||||||
|       "random_number_hash": "BFB7CC82DA0E0C8556AC37843F5AB136B9A7A066054368F5948944282B414D83", |  | ||||||
|       "recipient": "kava1hh4x3a4suu5zyaeauvmv7ypf7w9llwlfufjmuu", |  | ||||||
|       "recipient_other_chain": "bnb1vl3wn4x8kqajg2j9wxa5y5amgzdxchutkxr6at", |  | ||||||
|       "sender": "kava1eufgf0w9d7hf5mgtek4zr2upkxag9stmzx6unl", |  | ||||||
|       "sender_other_chain": "bnb10zq89008gmedc6rrwzdfukjk94swynd7dl97w8", |  | ||||||
|       "status": "SWAP_STATUS_EXPIRED", |  | ||||||
|       "timestamp": "1635694492" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "1000000", |  | ||||||
|           "denom": "btcb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "0", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_OUTGOING", |  | ||||||
|       "expire_height": "1730589", |  | ||||||
|       "random_number_hash": "A74EA1AB58D312FDF1E872D18583CACCF294E639DDA4F303939E9ADCEC081D93", |  | ||||||
|       "recipient": "kava14qsmvzprqvhwmgql9fr0u3zv9n2qla8zhnm5pc", |  | ||||||
|       "recipient_other_chain": "bnb1lhk5ndlgf5wz55t8k35cqj6h9l3m4l5ek2w7q6", |  | ||||||
|       "sender": "kava1d2u28azje7rhqyjtxc2ex8q0cxxpw7dfm7ltq5", |  | ||||||
|       "sender_other_chain": "bnb1xz3xqf4p2ygrw9lhp5g5df4ep4nd20vsywnmpr", |  | ||||||
|       "status": "SWAP_STATUS_OPEN", |  | ||||||
|       "timestamp": "1641934114" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "1000000", |  | ||||||
|           "denom": "btcb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "0", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_INCOMING", |  | ||||||
|       "expire_height": "1740000", |  | ||||||
|       "random_number_hash": "39E9ADCEC081D93A74EA1A83CACCF294E639DDA4F3039B58D312FDF1E872D185", |  | ||||||
|       "recipient": "kava1d2u28azje7rhqyjtxc2ex8q0cxxpw7dfm7ltq5", |  | ||||||
|       "recipient_other_chain": "bnb1xz3xqf4p2ygrw9lhp5g5df4ep4nd20vsywnmpr", |  | ||||||
|       "sender": "kava14qsmvzprqvhwmgql9fr0u3zv9n2qla8zhnm5pc", |  | ||||||
|       "sender_other_chain": "bnb1lhk5ndlgf5wz55t8k35cqj6h9l3m4l5ek2w7q6", |  | ||||||
|       "status": "SWAP_STATUS_OPEN", |  | ||||||
|       "timestamp": "1641934114" |  | ||||||
|     } |  | ||||||
|   ], |  | ||||||
|   "params": { |  | ||||||
|     "asset_params": [ |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "0", |  | ||||||
|         "denom": "btcb", |  | ||||||
|         "deputy_address": "kava1kla4wl0ccv7u85cemvs3y987hqk0afcv7vue84", |  | ||||||
|         "fixed_fee": "2", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "2000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "3", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "100000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "144", |  | ||||||
|         "denom": "xrpb", |  | ||||||
|         "deputy_address": "kava14q5sawxdxtpap5x5sgzj7v4sp3ucncjlpuk3hs", |  | ||||||
|         "fixed_fee": "100000", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "250000000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "100001", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "2000000000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "714", |  | ||||||
|         "denom": "bnb", |  | ||||||
|         "deputy_address": "kava1agcvt07tcw0tglu0hmwdecsnuxp2yd45f3avgm", |  | ||||||
|         "fixed_fee": "1000", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "500000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "1001", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "100000000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "727", |  | ||||||
|         "denom": "busd", |  | ||||||
|         "deputy_address": "kava1j9je7f6s0v6k7dmgv6u5k5ru202f5ffsc7af04", |  | ||||||
|         "fixed_fee": "20000", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "100000000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "20001", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "2000000000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     ] |  | ||||||
|   }, |  | ||||||
|   "previous_block_time": "1970-01-01T00:00:00Z", |  | ||||||
|   "supplies": [ |  | ||||||
|     { |  | ||||||
|       "current_supply": { |  | ||||||
|         "amount": "30467559434006", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       }, |  | ||||||
|       "incoming_supply": { |  | ||||||
|         "amount": "0", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       }, |  | ||||||
|       "outgoing_supply": { |  | ||||||
|         "amount": "0", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       }, |  | ||||||
|       "time_elapsed": "0s", |  | ||||||
|       "time_limited_current_supply": { |  | ||||||
|         "amount": "0", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   ] |  | ||||||
| } |  | ||||||
							
								
								
									
										212
									
								
								x/bep3/legacy/v0_17/testdata/v17-bep3.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										212
									
								
								x/bep3/legacy/v0_17/testdata/v17-bep3.json
									
									
									
									
										vendored
									
									
								
							| @ -1,212 +0,0 @@ | |||||||
| { |  | ||||||
|   "atomic_swaps": [ |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "1999955998", |  | ||||||
|           "denom": "btcb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "1", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_INCOMING", |  | ||||||
|       "expire_height": "838627", |  | ||||||
|       "random_number_hash": "6F1CF8F2E13A0C0F0A359F54E47E4E265D766B8E006D2F00BDF994ABDEF1E9E4", |  | ||||||
|       "recipient": "kava1fl2hs6y9vz986g5v52pdan9ga923n9mn5cxxkw", |  | ||||||
|       "recipient_other_chain": "bnb1xz3xqf4p2ygrw9lhp5g5df4ep4nd20vsywnmpr", |  | ||||||
|       "sender": "kava14qsmvzprqvhwmgql9fr0u3zv9n2qla8zhnm5pc", |  | ||||||
|       "sender_other_chain": "bnb19k9wuv2j7c7ck8tmc7kav0r0cnt3esmkrpf25x", |  | ||||||
|       "status": "SWAP_STATUS_COMPLETED", |  | ||||||
|       "timestamp": "1636034914" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "19000000000", |  | ||||||
|           "denom": "bnb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "1", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_OUTGOING", |  | ||||||
|       "expire_height": "1736797", |  | ||||||
|       "random_number_hash": "280EB832A37F2265CC82F3957CE603AAD57BAD7038B876A1F28953AFA29FA1C3", |  | ||||||
|       "recipient": "kava1r4v2zdhdalfj2ydazallqvrus9fkphmglhn6u6", |  | ||||||
|       "recipient_other_chain": "bnb18nsgj50zvc4uq93w4j0ltz5gaxhwv7aq4qnq0p", |  | ||||||
|       "sender": "kava1zw6gg4ztvly7zf25pa33mclav3spvj3ympxxna", |  | ||||||
|       "sender_other_chain": "bnb1jh7uv2rm6339yue8k4mj9406k3509kr4wt5nxn", |  | ||||||
|       "status": "SWAP_STATUS_COMPLETED", |  | ||||||
|       "timestamp": "1641976566" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "999595462080", |  | ||||||
|           "denom": "busd" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "787122", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_INCOMING", |  | ||||||
|       "expire_height": "1", |  | ||||||
|       "random_number_hash": "BFB7CC82DA0E0C8556AC37843F5AB136B9A7A066054368F5948944282B414D83", |  | ||||||
|       "recipient": "kava1eufgf0w9d7hf5mgtek4zr2upkxag9stmzx6unl", |  | ||||||
|       "recipient_other_chain": "bnb10zq89008gmedc6rrwzdfukjk94swynd7dl97w8", |  | ||||||
|       "sender": "kava1hh4x3a4suu5zyaeauvmv7ypf7w9llwlfufjmuu", |  | ||||||
|       "sender_other_chain": "bnb1vl3wn4x8kqajg2j9wxa5y5amgzdxchutkxr6at", |  | ||||||
|       "status": "SWAP_STATUS_EXPIRED", |  | ||||||
|       "timestamp": "1635694492" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "999595462080", |  | ||||||
|           "denom": "busd" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "787122", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_OUTGOING", |  | ||||||
|       "expire_height": "1", |  | ||||||
|       "random_number_hash": "BFB7CC82DA0E0C8556AC37843F5AB136B9A7A066054368F5948944282B414D83", |  | ||||||
|       "recipient": "kava1hh4x3a4suu5zyaeauvmv7ypf7w9llwlfufjmuu", |  | ||||||
|       "recipient_other_chain": "bnb1vl3wn4x8kqajg2j9wxa5y5amgzdxchutkxr6at", |  | ||||||
|       "sender": "kava1eufgf0w9d7hf5mgtek4zr2upkxag9stmzx6unl", |  | ||||||
|       "sender_other_chain": "bnb10zq89008gmedc6rrwzdfukjk94swynd7dl97w8", |  | ||||||
|       "status": "SWAP_STATUS_EXPIRED", |  | ||||||
|       "timestamp": "1635694492" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "1000000", |  | ||||||
|           "denom": "btcb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "0", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_OUTGOING", |  | ||||||
|       "expire_height": "24687", |  | ||||||
|       "random_number_hash": "A74EA1AB58D312FDF1E872D18583CACCF294E639DDA4F303939E9ADCEC081D93", |  | ||||||
|       "recipient": "kava14qsmvzprqvhwmgql9fr0u3zv9n2qla8zhnm5pc", |  | ||||||
|       "recipient_other_chain": "bnb1lhk5ndlgf5wz55t8k35cqj6h9l3m4l5ek2w7q6", |  | ||||||
|       "sender": "kava1d2u28azje7rhqyjtxc2ex8q0cxxpw7dfm7ltq5", |  | ||||||
|       "sender_other_chain": "bnb1xz3xqf4p2ygrw9lhp5g5df4ep4nd20vsywnmpr", |  | ||||||
|       "status": "SWAP_STATUS_OPEN", |  | ||||||
|       "timestamp": "1641934114" |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "amount": [ |  | ||||||
|         { |  | ||||||
|           "amount": "1000000", |  | ||||||
|           "denom": "btcb" |  | ||||||
|         } |  | ||||||
|       ], |  | ||||||
|       "closed_block": "0", |  | ||||||
|       "cross_chain": true, |  | ||||||
|       "direction": "SWAP_DIRECTION_INCOMING", |  | ||||||
|       "expire_height": "1", |  | ||||||
|       "random_number_hash": "39E9ADCEC081D93A74EA1A83CACCF294E639DDA4F3039B58D312FDF1E872D185", |  | ||||||
|       "recipient": "kava1d2u28azje7rhqyjtxc2ex8q0cxxpw7dfm7ltq5", |  | ||||||
|       "recipient_other_chain": "bnb1xz3xqf4p2ygrw9lhp5g5df4ep4nd20vsywnmpr", |  | ||||||
|       "sender": "kava14qsmvzprqvhwmgql9fr0u3zv9n2qla8zhnm5pc", |  | ||||||
|       "sender_other_chain": "bnb1lhk5ndlgf5wz55t8k35cqj6h9l3m4l5ek2w7q6", |  | ||||||
|       "status": "SWAP_STATUS_EXPIRED", |  | ||||||
|       "timestamp": "1641934114" |  | ||||||
|     } |  | ||||||
|   ], |  | ||||||
|   "params": { |  | ||||||
|     "asset_params": [ |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "0", |  | ||||||
|         "denom": "btcb", |  | ||||||
|         "deputy_address": "kava1kla4wl0ccv7u85cemvs3y987hqk0afcv7vue84", |  | ||||||
|         "fixed_fee": "2", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "2000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "3", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "100000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "144", |  | ||||||
|         "denom": "xrpb", |  | ||||||
|         "deputy_address": "kava14q5sawxdxtpap5x5sgzj7v4sp3ucncjlpuk3hs", |  | ||||||
|         "fixed_fee": "100000", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "250000000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "100001", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "2000000000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "714", |  | ||||||
|         "denom": "bnb", |  | ||||||
|         "deputy_address": "kava1agcvt07tcw0tglu0hmwdecsnuxp2yd45f3avgm", |  | ||||||
|         "fixed_fee": "1000", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "500000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "1001", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "100000000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "active": true, |  | ||||||
|         "coin_id": "727", |  | ||||||
|         "denom": "busd", |  | ||||||
|         "deputy_address": "kava1j9je7f6s0v6k7dmgv6u5k5ru202f5ffsc7af04", |  | ||||||
|         "fixed_fee": "20000", |  | ||||||
|         "max_block_lock": "86400", |  | ||||||
|         "max_swap_amount": "100000000000000", |  | ||||||
|         "min_block_lock": "24686", |  | ||||||
|         "min_swap_amount": "20001", |  | ||||||
|         "supply_limit": { |  | ||||||
|           "limit": "2000000000000000", |  | ||||||
|           "time_based_limit": "0", |  | ||||||
|           "time_limited": false, |  | ||||||
|           "time_period": "0s" |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     ] |  | ||||||
|   }, |  | ||||||
|   "previous_block_time": "1970-01-01T00:00:00Z", |  | ||||||
|   "supplies": [ |  | ||||||
|     { |  | ||||||
|       "current_supply": { |  | ||||||
|         "amount": "30467559434006", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       }, |  | ||||||
|       "incoming_supply": { |  | ||||||
|         "amount": "0", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       }, |  | ||||||
|       "outgoing_supply": { |  | ||||||
|         "amount": "0", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       }, |  | ||||||
|       "time_elapsed": "0s", |  | ||||||
|       "time_limited_current_supply": { |  | ||||||
|         "amount": "0", |  | ||||||
|         "denom": "bnb" |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   ] |  | ||||||
| } |  | ||||||
| @ -1,53 +0,0 @@ | |||||||
| package v0_15 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"time" |  | ||||||
| 
 |  | ||||||
| 	sdkmath "cosmossdk.io/math" |  | ||||||
| 	sdk "github.com/cosmos/cosmos-sdk/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| const ( |  | ||||||
| 	// ModuleName The name that will be used throughout the module
 |  | ||||||
| 	ModuleName = "issuance" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| // GenesisState is the state that must be provided at genesis for the issuance module
 |  | ||||||
| type GenesisState struct { |  | ||||||
| 	Params   Params        `json:"params" yaml:"params"` |  | ||||||
| 	Supplies AssetSupplies `json:"supplies" yaml:"supplies"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Params governance parameters for the issuance module
 |  | ||||||
| type Params struct { |  | ||||||
| 	Assets Assets `json:"assets" yaml:"assets"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Assets slice of Asset
 |  | ||||||
| type Assets []Asset |  | ||||||
| 
 |  | ||||||
| // Asset type for assets in the issuance module
 |  | ||||||
| type Asset struct { |  | ||||||
| 	Owner            sdk.AccAddress   `json:"owner" yaml:"owner"` |  | ||||||
| 	Denom            string           `json:"denom" yaml:"denom"` |  | ||||||
| 	BlockedAddresses []sdk.AccAddress `json:"blocked_addresses" yaml:"blocked_addresses"` |  | ||||||
| 	Paused           bool             `json:"paused" yaml:"paused"` |  | ||||||
| 	Blockable        bool             `json:"blockable" yaml:"blockable"` |  | ||||||
| 	RateLimit        RateLimit        `json:"rate_limit" yaml:"rate_limit"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // RateLimit parameters for rate-limiting the supply of an issued asset
 |  | ||||||
| type RateLimit struct { |  | ||||||
| 	Active     bool          `json:"active" yaml:"active"` |  | ||||||
| 	Limit      sdkmath.Int   `json:"limit" yaml:"limit"` |  | ||||||
| 	TimePeriod time.Duration `json:"time_period" yaml:"time_period"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // AssetSupplies is a slice of AssetSupply
 |  | ||||||
| type AssetSupplies []AssetSupply |  | ||||||
| 
 |  | ||||||
| // AssetSupply contains information about an asset's rate-limited supply (the total supply of the asset is tracked in the top-level supply module)
 |  | ||||||
| type AssetSupply struct { |  | ||||||
| 	CurrentSupply sdk.Coin      `json:"current_supply"  yaml:"current_supply"` |  | ||||||
| 	TimeElapsed   time.Duration `json:"time_elapsed" yaml:"time_elapsed"` |  | ||||||
| } |  | ||||||
| @ -1,48 +0,0 @@ | |||||||
| package v0_16 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	v015issuance "github.com/0glabs/0g-chain/x/issuance/legacy/v0_15" |  | ||||||
| 	v016issuance "github.com/0glabs/0g-chain/x/issuance/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| func migrateParams(params v015issuance.Params) v016issuance.Params { |  | ||||||
| 	assets := make([]v016issuance.Asset, len(params.Assets)) |  | ||||||
| 	for i, asset := range params.Assets { |  | ||||||
| 		blockedAddresses := make([]string, len(asset.BlockedAddresses)) |  | ||||||
| 		for i, addr := range asset.BlockedAddresses { |  | ||||||
| 			blockedAddresses[i] = addr.String() |  | ||||||
| 		} |  | ||||||
| 		assets[i] = v016issuance.Asset{ |  | ||||||
| 			Owner:            asset.Owner.String(), |  | ||||||
| 			Denom:            asset.Denom, |  | ||||||
| 			BlockedAddresses: blockedAddresses, |  | ||||||
| 			Paused:           asset.Paused, |  | ||||||
| 			Blockable:        asset.Blockable, |  | ||||||
| 			RateLimit: v016issuance.RateLimit{ |  | ||||||
| 				Active:     asset.RateLimit.Active, |  | ||||||
| 				Limit:      asset.RateLimit.Limit, |  | ||||||
| 				TimePeriod: asset.RateLimit.TimePeriod, |  | ||||||
| 			}, |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return v016issuance.Params{Assets: assets} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func migrateSupplies(oldSupplies v015issuance.AssetSupplies) []v016issuance.AssetSupply { |  | ||||||
| 	supplies := make([]v016issuance.AssetSupply, len(oldSupplies)) |  | ||||||
| 	for i, supply := range oldSupplies { |  | ||||||
| 		supplies[i] = v016issuance.AssetSupply{ |  | ||||||
| 			CurrentSupply: supply.CurrentSupply, |  | ||||||
| 			TimeElapsed:   supply.TimeElapsed, |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return supplies |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Migrate converts v0.15 issuance state and returns it in v0.16 format
 |  | ||||||
| func Migrate(oldState v015issuance.GenesisState) *v016issuance.GenesisState { |  | ||||||
| 	return &v016issuance.GenesisState{ |  | ||||||
| 		Params:   migrateParams(oldState.Params), |  | ||||||
| 		Supplies: migrateSupplies(oldState.Supplies), |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @ -1,177 +0,0 @@ | |||||||
| package v0_16 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| 
 |  | ||||||
| 	sdkmath "cosmossdk.io/math" |  | ||||||
| 	"github.com/cosmos/cosmos-sdk/codec" |  | ||||||
| 	sdk "github.com/cosmos/cosmos-sdk/types" |  | ||||||
| 	"github.com/stretchr/testify/suite" |  | ||||||
| 
 |  | ||||||
| 	app "github.com/0glabs/0g-chain/app" |  | ||||||
| 	"github.com/0glabs/0g-chain/chaincfg" |  | ||||||
| 	v015issuance "github.com/0glabs/0g-chain/x/issuance/legacy/v0_15" |  | ||||||
| 	v016issuance "github.com/0glabs/0g-chain/x/issuance/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| type migrateTestSuite struct { |  | ||||||
| 	suite.Suite |  | ||||||
| 
 |  | ||||||
| 	addresses   []sdk.AccAddress |  | ||||||
| 	v15genstate v015issuance.GenesisState |  | ||||||
| 	cdc         codec.Codec |  | ||||||
| 	legacyCdc   *codec.LegacyAmino |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) SetupTest() { |  | ||||||
| 	chaincfg.SetSDKConfig() |  | ||||||
| 
 |  | ||||||
| 	s.v15genstate = v015issuance.GenesisState{ |  | ||||||
| 		Params:   v015issuance.Params{}, |  | ||||||
| 		Supplies: v015issuance.AssetSupplies{}, |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	config := app.MakeEncodingConfig() |  | ||||||
| 	s.cdc = config.Marshaler |  | ||||||
| 
 |  | ||||||
| 	legacyCodec := codec.NewLegacyAmino() |  | ||||||
| 	s.legacyCdc = legacyCodec |  | ||||||
| 
 |  | ||||||
| 	_, accAddresses := app.GeneratePrivKeyAddressPairs(10) |  | ||||||
| 	s.addresses = accAddresses |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_JSON() { |  | ||||||
| 	// Migrate v15 issuance to v16
 |  | ||||||
| 	data := `{ |  | ||||||
| 		"params": { |  | ||||||
| 			"assets": [ |  | ||||||
| 				{ |  | ||||||
| 					"blockable": true, |  | ||||||
| 					"blocked_addresses": null, |  | ||||||
| 					"denom": "hbtc", |  | ||||||
| 					"owner": "0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8", |  | ||||||
| 					"paused": false, |  | ||||||
| 					"rate_limit": { |  | ||||||
| 						"active": false, |  | ||||||
| 						"limit": "0", |  | ||||||
| 						"time_period": "0" |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			] |  | ||||||
| 		}, |  | ||||||
| 		"supplies": [ |  | ||||||
| 			{ |  | ||||||
| 				"current_supply": { "denom": "ua0gi", "amount": "100" }, |  | ||||||
| 				"time_elapsed": "3600000000000" |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				"current_supply": { "denom": "bnb", "amount": "300" }, |  | ||||||
| 				"time_elapsed": "300000000000" |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	}` |  | ||||||
| 	err := s.legacyCdc.UnmarshalJSON([]byte(data), &s.v15genstate) |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	genstate := Migrate(s.v15genstate) |  | ||||||
| 
 |  | ||||||
| 	// Compare expect v16 issuance json with migrated json
 |  | ||||||
| 	expected := `{ |  | ||||||
| 		"params": { |  | ||||||
| 			"assets": [ |  | ||||||
| 				{ |  | ||||||
| 					"blockable": true, |  | ||||||
| 					"blocked_addresses": [], |  | ||||||
| 					"denom": "hbtc", |  | ||||||
| 					"owner": "0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8", |  | ||||||
| 					"paused": false, |  | ||||||
| 					"rate_limit": { |  | ||||||
| 						"active": false, |  | ||||||
| 						"limit": "0", |  | ||||||
| 						"time_period": "0s" |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			] |  | ||||||
| 		}, |  | ||||||
| 		"supplies": [ |  | ||||||
| 			{ |  | ||||||
| 				"current_supply": { "denom": "ua0gi", "amount": "100" }, |  | ||||||
| 				"time_elapsed": "3600s" |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				"current_supply": { "denom": "bnb", "amount": "300" }, |  | ||||||
| 				"time_elapsed": "300s" |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	}` |  | ||||||
| 	actual := s.cdc.MustMarshalJSON(genstate) |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	s.Require().JSONEq(expected, string(actual)) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_Params() { |  | ||||||
| 	s.v15genstate.Params = v015issuance.Params{ |  | ||||||
| 		Assets: v015issuance.Assets{ |  | ||||||
| 			{ |  | ||||||
| 				Owner:            s.addresses[0], |  | ||||||
| 				Denom:            "ua0gi", |  | ||||||
| 				BlockedAddresses: s.addresses[1:2], |  | ||||||
| 				Paused:           true, |  | ||||||
| 				Blockable:        true, |  | ||||||
| 				RateLimit: v015issuance.RateLimit{ |  | ||||||
| 					Active:     true, |  | ||||||
| 					Limit:      sdkmath.NewInt(10), |  | ||||||
| 					TimePeriod: 1 * time.Hour, |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	expectedParams := v016issuance.Params{ |  | ||||||
| 		Assets: []v016issuance.Asset{ |  | ||||||
| 			{ |  | ||||||
| 				Owner:            s.addresses[0].String(), |  | ||||||
| 				Denom:            "ua0gi", |  | ||||||
| 				BlockedAddresses: []string{s.addresses[1].String()}, |  | ||||||
| 				Paused:           true, |  | ||||||
| 				Blockable:        true, |  | ||||||
| 				RateLimit: v016issuance.RateLimit{ |  | ||||||
| 					Active:     true, |  | ||||||
| 					Limit:      sdkmath.NewInt(10), |  | ||||||
| 					TimePeriod: 1 * time.Hour, |  | ||||||
| 				}, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	genState := Migrate(s.v15genstate) |  | ||||||
| 	s.Require().Equal(expectedParams, genState.Params) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_Supplies() { |  | ||||||
| 	s.v15genstate.Supplies = v015issuance.AssetSupplies{ |  | ||||||
| 		{ |  | ||||||
| 			CurrentSupply: sdk.NewCoin("ua0gi", sdkmath.NewInt(100)), |  | ||||||
| 			TimeElapsed:   time.Duration(1 * time.Hour), |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			CurrentSupply: sdk.NewCoin("bnb", sdkmath.NewInt(300)), |  | ||||||
| 			TimeElapsed:   time.Duration(5 * time.Minute), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	expected := []v016issuance.AssetSupply{ |  | ||||||
| 		{ |  | ||||||
| 			CurrentSupply: sdk.NewCoin("ua0gi", sdkmath.NewInt(100)), |  | ||||||
| 			TimeElapsed:   time.Duration(1 * time.Hour), |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			CurrentSupply: sdk.NewCoin("bnb", sdkmath.NewInt(300)), |  | ||||||
| 			TimeElapsed:   time.Duration(5 * time.Minute), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	genState := Migrate(s.v15genstate) |  | ||||||
| 	s.Require().Equal(expected, genState.Supplies) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func TestIssuanceMigrateTestSuite(t *testing.T) { |  | ||||||
| 	suite.Run(t, new(migrateTestSuite)) |  | ||||||
| } |  | ||||||
| @ -1,46 +0,0 @@ | |||||||
| package v0_15 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"time" |  | ||||||
| 
 |  | ||||||
| 	sdk "github.com/cosmos/cosmos-sdk/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| const ( |  | ||||||
| 	// ModuleName The name that will be used throughout the module
 |  | ||||||
| 	ModuleName = "pricefeed" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| // GenesisState - pricefeed state that must be provided at genesis
 |  | ||||||
| type GenesisState struct { |  | ||||||
| 	Params       Params       `json:"params" yaml:"params"` |  | ||||||
| 	PostedPrices PostedPrices `json:"posted_prices" yaml:"posted_prices"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Params params for pricefeed. Can be altered via governance
 |  | ||||||
| type Params struct { |  | ||||||
| 	Markets Markets `json:"markets" yaml:"markets"` //  Array containing the markets supported by the pricefeed
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Markets array type for oracle
 |  | ||||||
| type Markets []Market |  | ||||||
| 
 |  | ||||||
| // Market an asset in the pricefeed
 |  | ||||||
| type Market struct { |  | ||||||
| 	MarketID   string           `json:"market_id" yaml:"market_id"` |  | ||||||
| 	BaseAsset  string           `json:"base_asset" yaml:"base_asset"` |  | ||||||
| 	QuoteAsset string           `json:"quote_asset" yaml:"quote_asset"` |  | ||||||
| 	Oracles    []sdk.AccAddress `json:"oracles" yaml:"oracles"` |  | ||||||
| 	Active     bool             `json:"active" yaml:"active"` |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // PostedPrices type for an array of PostedPrice
 |  | ||||||
| type PostedPrices []PostedPrice |  | ||||||
| 
 |  | ||||||
| // PostedPrice price for market posted by a specific oracle
 |  | ||||||
| type PostedPrice struct { |  | ||||||
| 	MarketID      string         `json:"market_id" yaml:"market_id"` |  | ||||||
| 	OracleAddress sdk.AccAddress `json:"oracle_address" yaml:"oracle_address"` |  | ||||||
| 	Price         sdk.Dec        `json:"price" yaml:"price"` |  | ||||||
| 	Expiry        time.Time      `json:"expiry" yaml:"expiry"` |  | ||||||
| } |  | ||||||
| @ -1,134 +0,0 @@ | |||||||
| package v0_16 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	v015pricefeed "github.com/0glabs/0g-chain/x/pricefeed/legacy/v0_15" |  | ||||||
| 	v016pricefeed "github.com/0glabs/0g-chain/x/pricefeed/types" |  | ||||||
| 	"github.com/cosmos/cosmos-sdk/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| var NewIBCMarkets = []v016pricefeed.Market{ |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "atom:usd", |  | ||||||
| 		BaseAsset:  "atom", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "atom:usd:30", |  | ||||||
| 		BaseAsset:  "atom", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "akt:usd", |  | ||||||
| 		BaseAsset:  "akt", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "akt:usd:30", |  | ||||||
| 		BaseAsset:  "akt", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "luna:usd", |  | ||||||
| 		BaseAsset:  "luna", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "luna:usd:30", |  | ||||||
| 		BaseAsset:  "luna", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "osmo:usd", |  | ||||||
| 		BaseAsset:  "osmo", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "osmo:usd:30", |  | ||||||
| 		BaseAsset:  "osmo", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "ust:usd", |  | ||||||
| 		BaseAsset:  "ust", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		MarketID:   "ust:usd:30", |  | ||||||
| 		BaseAsset:  "ust", |  | ||||||
| 		QuoteAsset: "usd", |  | ||||||
| 		Oracles:    nil, |  | ||||||
| 		Active:     true, |  | ||||||
| 	}, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func migrateParams(params v015pricefeed.Params) v016pricefeed.Params { |  | ||||||
| 	markets := make(v016pricefeed.Markets, len(params.Markets)) |  | ||||||
| 	for i, market := range params.Markets { |  | ||||||
| 		markets[i] = v016pricefeed.Market{ |  | ||||||
| 			MarketID:   market.MarketID, |  | ||||||
| 			BaseAsset:  market.BaseAsset, |  | ||||||
| 			QuoteAsset: market.QuoteAsset, |  | ||||||
| 			Oracles:    market.Oracles, |  | ||||||
| 			Active:     market.Active, |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	markets = addIbcMarkets(markets) |  | ||||||
| 
 |  | ||||||
| 	return v016pricefeed.Params{Markets: markets} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func addIbcMarkets(markets v016pricefeed.Markets) v016pricefeed.Markets { |  | ||||||
| 	var oracles []types.AccAddress |  | ||||||
| 
 |  | ||||||
| 	if len(markets) > 0 { |  | ||||||
| 		oracles = markets[0].Oracles |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for _, newMarket := range NewIBCMarkets { |  | ||||||
| 		// newMarket is a copy, should not affect other uses of NewIBCMarkets
 |  | ||||||
| 		newMarket.Oracles = oracles |  | ||||||
| 		markets = append(markets, newMarket) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return markets |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func migratePostedPrices(oldPostedPrices v015pricefeed.PostedPrices) v016pricefeed.PostedPrices { |  | ||||||
| 	newPrices := make(v016pricefeed.PostedPrices, len(oldPostedPrices)) |  | ||||||
| 	for i, price := range oldPostedPrices { |  | ||||||
| 		newPrices[i] = v016pricefeed.PostedPrice{ |  | ||||||
| 			MarketID:      price.MarketID, |  | ||||||
| 			OracleAddress: price.OracleAddress, |  | ||||||
| 			Price:         price.Price, |  | ||||||
| 			Expiry:        price.Expiry, |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return newPrices |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Migrate converts v0.15 pricefeed state and returns it in v0.16 format
 |  | ||||||
| func Migrate(oldState v015pricefeed.GenesisState) *v016pricefeed.GenesisState { |  | ||||||
| 	return &v016pricefeed.GenesisState{ |  | ||||||
| 		Params:       migrateParams(oldState.Params), |  | ||||||
| 		PostedPrices: migratePostedPrices(oldState.PostedPrices), |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @ -1,353 +0,0 @@ | |||||||
| package v0_16 |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| 
 |  | ||||||
| 	"github.com/cosmos/cosmos-sdk/codec" |  | ||||||
| 	sdk "github.com/cosmos/cosmos-sdk/types" |  | ||||||
| 	"github.com/stretchr/testify/suite" |  | ||||||
| 
 |  | ||||||
| 	app "github.com/0glabs/0g-chain/app" |  | ||||||
| 	"github.com/0glabs/0g-chain/chaincfg" |  | ||||||
| 	v015pricefeed "github.com/0glabs/0g-chain/x/pricefeed/legacy/v0_15" |  | ||||||
| 	v016pricefeed "github.com/0glabs/0g-chain/x/pricefeed/types" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| type migrateTestSuite struct { |  | ||||||
| 	suite.Suite |  | ||||||
| 
 |  | ||||||
| 	addresses   []sdk.AccAddress |  | ||||||
| 	v15genstate v015pricefeed.GenesisState |  | ||||||
| 	cdc         codec.Codec |  | ||||||
| 	legacyCdc   *codec.LegacyAmino |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) SetupTest() { |  | ||||||
| 	chaincfg.SetSDKConfig() |  | ||||||
| 
 |  | ||||||
| 	s.v15genstate = v015pricefeed.GenesisState{ |  | ||||||
| 		Params:       v015pricefeed.Params{}, |  | ||||||
| 		PostedPrices: v015pricefeed.PostedPrices{}, |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	config := app.MakeEncodingConfig() |  | ||||||
| 	s.cdc = config.Marshaler |  | ||||||
| 
 |  | ||||||
| 	legacyCodec := codec.NewLegacyAmino() |  | ||||||
| 	s.legacyCdc = legacyCodec |  | ||||||
| 
 |  | ||||||
| 	_, accAddresses := app.GeneratePrivKeyAddressPairs(10) |  | ||||||
| 	s.addresses = accAddresses |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_JSON() { |  | ||||||
| 	// Migrate v15 pricefeed to v16
 |  | ||||||
| 	v15Params := `{ |  | ||||||
| 		"params": { |  | ||||||
| 			"markets": [ |  | ||||||
| 				{ |  | ||||||
| 					"active": true, |  | ||||||
| 					"base_asset": "bnb", |  | ||||||
| 					"market_id": "bnb:usd", |  | ||||||
| 					"oracles": ["0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8"], |  | ||||||
| 					"quote_asset": "usd" |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"active": true, |  | ||||||
| 					"base_asset": "bnb", |  | ||||||
| 					"market_id": "bnb:usd:30", |  | ||||||
| 					"oracles": ["0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8"], |  | ||||||
| 					"quote_asset": "usd" |  | ||||||
| 				} |  | ||||||
| 			] |  | ||||||
| 		}, |  | ||||||
| 		"posted_prices": [ |  | ||||||
| 			{ |  | ||||||
| 				"expiry": "2022-07-20T00:00:00Z", |  | ||||||
| 				"market_id": "bnb:usd", |  | ||||||
| 				"oracle_address": "0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8", |  | ||||||
| 				"price": "215.962650000000001782" |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				"expiry": "2022-07-20T00:00:00Z", |  | ||||||
| 				"market_id": "bnb:usd:30", |  | ||||||
| 				"oracle_address": "0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8", |  | ||||||
| 				"price": "217.962650000000001782" |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	}` |  | ||||||
| 
 |  | ||||||
| 	expectedV16Params := `{ |  | ||||||
| 		"params": { |  | ||||||
| 			"markets": [ |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "bnb:usd", |  | ||||||
| 					"base_asset": "bnb", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "bnb:usd:30", |  | ||||||
| 					"base_asset": "bnb", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "atom:usd", |  | ||||||
| 					"base_asset": "atom", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "atom:usd:30", |  | ||||||
| 					"base_asset": "atom", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "akt:usd", |  | ||||||
| 					"base_asset": "akt", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "akt:usd:30", |  | ||||||
| 					"base_asset": "akt", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "luna:usd", |  | ||||||
| 					"base_asset": "luna", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "luna:usd:30", |  | ||||||
| 					"base_asset": "luna", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "osmo:usd", |  | ||||||
| 					"base_asset": "osmo", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "osmo:usd:30", |  | ||||||
| 					"base_asset": "osmo", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "ust:usd", |  | ||||||
| 					"base_asset": "ust", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				}, |  | ||||||
| 				{ |  | ||||||
| 					"market_id": "ust:usd:30", |  | ||||||
| 					"base_asset": "ust", |  | ||||||
| 					"quote_asset": "usd", |  | ||||||
| 					"oracles": [ |  | ||||||
| 						"0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8" |  | ||||||
| 					], |  | ||||||
| 					"active": true |  | ||||||
| 				} |  | ||||||
| 			] |  | ||||||
| 		}, |  | ||||||
| 		"posted_prices": [ |  | ||||||
| 			{ |  | ||||||
| 				"market_id": "bnb:usd", |  | ||||||
| 				"oracle_address": "0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8", |  | ||||||
| 				"price": "215.962650000000001782", |  | ||||||
| 				"expiry": "2022-07-20T00:00:00Z" |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				"market_id": "bnb:usd:30", |  | ||||||
| 				"oracle_address": "0g1ffv7nhd3z6sych2qpqkk03ec6hzkmufyhp5hf8", |  | ||||||
| 				"price": "217.962650000000001782", |  | ||||||
| 				"expiry": "2022-07-20T00:00:00Z" |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	}` |  | ||||||
| 
 |  | ||||||
| 	err := s.legacyCdc.UnmarshalJSON([]byte(v15Params), &s.v15genstate) |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	genstate := Migrate(s.v15genstate) |  | ||||||
| 
 |  | ||||||
| 	// v16 pricefeed json should be the same as v15 but with IBC markets added
 |  | ||||||
| 	actual := s.cdc.MustMarshalJSON(genstate) |  | ||||||
| 
 |  | ||||||
| 	s.Require().NoError(err) |  | ||||||
| 	s.Require().JSONEq(expectedV16Params, string(actual)) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_Params() { |  | ||||||
| 	s.v15genstate.Params = v015pricefeed.Params{ |  | ||||||
| 		Markets: v015pricefeed.Markets{ |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "market-1", |  | ||||||
| 				BaseAsset:  "a0gi", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	expectedParams := v016pricefeed.Params{ |  | ||||||
| 		Markets: v016pricefeed.Markets{ |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "market-1", |  | ||||||
| 				BaseAsset:  "a0gi", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "atom:usd", |  | ||||||
| 				BaseAsset:  "atom", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "atom:usd:30", |  | ||||||
| 				BaseAsset:  "atom", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "akt:usd", |  | ||||||
| 				BaseAsset:  "akt", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "akt:usd:30", |  | ||||||
| 				BaseAsset:  "akt", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "luna:usd", |  | ||||||
| 				BaseAsset:  "luna", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "luna:usd:30", |  | ||||||
| 				BaseAsset:  "luna", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "osmo:usd", |  | ||||||
| 				BaseAsset:  "osmo", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "osmo:usd:30", |  | ||||||
| 				BaseAsset:  "osmo", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "ust:usd", |  | ||||||
| 				BaseAsset:  "ust", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 			{ |  | ||||||
| 				MarketID:   "ust:usd:30", |  | ||||||
| 				BaseAsset:  "ust", |  | ||||||
| 				QuoteAsset: "usd", |  | ||||||
| 				Oracles:    s.addresses, |  | ||||||
| 				Active:     true, |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	genState := Migrate(s.v15genstate) |  | ||||||
| 	s.Require().Equal(expectedParams, genState.Params) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func (s *migrateTestSuite) TestMigrate_PostedPrices() { |  | ||||||
| 	s.v15genstate.PostedPrices = v015pricefeed.PostedPrices{ |  | ||||||
| 		{ |  | ||||||
| 			MarketID:      "market-1", |  | ||||||
| 			OracleAddress: s.addresses[0], |  | ||||||
| 			Price:         sdk.MustNewDecFromStr("1.2"), |  | ||||||
| 			Expiry:        time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC), |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			MarketID:      "market-2", |  | ||||||
| 			OracleAddress: s.addresses[1], |  | ||||||
| 			Price:         sdk.MustNewDecFromStr("1.899"), |  | ||||||
| 			Expiry:        time.Date(2021, time.January, 1, 0, 0, 0, 0, time.UTC), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	expected := v016pricefeed.PostedPrices{ |  | ||||||
| 		{ |  | ||||||
| 			MarketID:      "market-1", |  | ||||||
| 			OracleAddress: s.addresses[0], |  | ||||||
| 			Price:         sdk.MustNewDecFromStr("1.2"), |  | ||||||
| 			Expiry:        time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC), |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			MarketID:      "market-2", |  | ||||||
| 			OracleAddress: s.addresses[1], |  | ||||||
| 			Price:         sdk.MustNewDecFromStr("1.899"), |  | ||||||
| 			Expiry:        time.Date(2021, time.January, 1, 0, 0, 0, 0, time.UTC), |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 	genState := Migrate(s.v15genstate) |  | ||||||
| 	s.Require().Equal(expected, genState.PostedPrices) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func TestPriceFeedMigrateTestSuite(t *testing.T) { |  | ||||||
| 	suite.Run(t, new(migrateTestSuite)) |  | ||||||
| } |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Solovyov1796
						Solovyov1796