mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 03:27:26 +00:00 
			
		
		
		
	remove module's legacy code
This commit is contained in:
		
							parent
							
								
									77b817f9b8
								
							
						
					
					
						commit
						6b4e8415da
					
				@ -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/cometbft/cometbft/libs/bytes"
 | 
					 | 
				
			||||||
	"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"
 | 
					 | 
				
			||||||
	"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