mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-10-31 22:37:26 +00:00 
			
		
		
		
	Add ibc packet forward middleware for ibc transfer (#1839)
* Add ibc packet forward middleware for ibc transfer * Update changelog for ibc packet forwarding
This commit is contained in:
		
							parent
							
								
									322f2ac056
								
							
						
					
					
						commit
						5c0f27b952
					
				| @ -44,6 +44,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ | |||||||
| - (cosmos-sdk) [#1811] Upgrades app to cosmos-sdk v0.47.7 | - (cosmos-sdk) [#1811] Upgrades app to cosmos-sdk v0.47.7 | ||||||
| - (validator-vesting) [#1832] Add grpc query service to replace removed legacy querier | - (validator-vesting) [#1832] Add grpc query service to replace removed legacy querier | ||||||
| - (incentive) [#1836] Update x/incentive cli to use grpc query client | - (incentive) [#1836] Update x/incentive cli to use grpc query client | ||||||
|  | - (ibc) [#1839] Add ibc packet forward middleware for ibc transfers | ||||||
| 
 | 
 | ||||||
| ## [v0.25.0] | ## [v0.25.0] | ||||||
| 
 | 
 | ||||||
| @ -326,6 +327,7 @@ the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.38.4/CHANGELOG.md). | |||||||
| - [#257](https://github.com/Kava-Labs/kava/pulls/257) Include scripts to run | - [#257](https://github.com/Kava-Labs/kava/pulls/257) Include scripts to run | ||||||
|   large-scale simulations remotely using aws-batch |   large-scale simulations remotely using aws-batch | ||||||
| 
 | 
 | ||||||
|  | [#1839]: https://github.com/Kava-Labs/kava/pull/1839 | ||||||
| [#1836]: https://github.com/Kava-Labs/kava/pull/1836 | [#1836]: https://github.com/Kava-Labs/kava/pull/1836 | ||||||
| [#1832]: https://github.com/Kava-Labs/kava/pull/1832 | [#1832]: https://github.com/Kava-Labs/kava/pull/1832 | ||||||
| [#1811]: https://github.com/Kava-Labs/kava/pull/1811 | [#1811]: https://github.com/Kava-Labs/kava/pull/1811 | ||||||
|  | |||||||
							
								
								
									
										48
									
								
								app/app.go
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								app/app.go
									
									
									
									
									
								
							| @ -79,6 +79,9 @@ import ( | |||||||
| 	upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" | 	upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" | ||||||
| 	upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" | 	upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" | ||||||
| 	upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" | 	upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" | ||||||
|  | 	"github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward" | ||||||
|  | 	packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper" | ||||||
|  | 	packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types" | ||||||
| 	transfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" | 	transfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" | ||||||
| 	ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" | 	ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" | ||||||
| 	ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" | 	ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" | ||||||
| @ -86,7 +89,7 @@ import ( | |||||||
| 	ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client" | 	ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client" | ||||||
| 	ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client" | 	ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client" | ||||||
| 	ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" | 	ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" | ||||||
| 	porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" | 	ibcporttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" | ||||||
| 	ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" | 	ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" | ||||||
| 	ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" | 	ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" | ||||||
| 	solomachine "github.com/cosmos/ibc-go/v7/modules/light-clients/06-solomachine" | 	solomachine "github.com/cosmos/ibc-go/v7/modules/light-clients/06-solomachine" | ||||||
| @ -199,6 +202,7 @@ var ( | |||||||
| 		ibc.AppModuleBasic{}, | 		ibc.AppModuleBasic{}, | ||||||
| 		ibctm.AppModuleBasic{}, | 		ibctm.AppModuleBasic{}, | ||||||
| 		solomachine.AppModuleBasic{}, | 		solomachine.AppModuleBasic{}, | ||||||
|  | 		packetforward.AppModuleBasic{}, | ||||||
| 		upgrade.AppModuleBasic{}, | 		upgrade.AppModuleBasic{}, | ||||||
| 		evidence.AppModuleBasic{}, | 		evidence.AppModuleBasic{}, | ||||||
| 		authzmodule.AppModuleBasic{}, | 		authzmodule.AppModuleBasic{}, | ||||||
| @ -307,6 +311,7 @@ type App struct { | |||||||
| 	crisisKeeper          crisiskeeper.Keeper | 	crisisKeeper          crisiskeeper.Keeper | ||||||
| 	slashingKeeper        slashingkeeper.Keeper | 	slashingKeeper        slashingkeeper.Keeper | ||||||
| 	ibcKeeper             *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
 | 	ibcKeeper             *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
 | ||||||
|  | 	packetForwardKeeper   *packetforwardkeeper.Keeper | ||||||
| 	evmKeeper             *evmkeeper.Keeper | 	evmKeeper             *evmkeeper.Keeper | ||||||
| 	evmutilKeeper         evmutilkeeper.Keeper | 	evmutilKeeper         evmutilkeeper.Keeper | ||||||
| 	feeMarketKeeper       feemarketkeeper.Keeper | 	feeMarketKeeper       feemarketkeeper.Keeper | ||||||
| @ -375,7 +380,7 @@ func NewApp( | |||||||
| 
 | 
 | ||||||
| 	keys := sdk.NewKVStoreKeys( | 	keys := sdk.NewKVStoreKeys( | ||||||
| 		authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, | 		authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, | ||||||
| 		distrtypes.StoreKey, slashingtypes.StoreKey, | 		distrtypes.StoreKey, slashingtypes.StoreKey, packetforwardtypes.StoreKey, | ||||||
| 		govtypes.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, | 		govtypes.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, | ||||||
| 		upgradetypes.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey, | 		upgradetypes.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey, | ||||||
| 		evmtypes.StoreKey, feemarkettypes.StoreKey, authzkeeper.StoreKey, | 		evmtypes.StoreKey, feemarkettypes.StoreKey, authzkeeper.StoreKey, | ||||||
| @ -429,6 +434,7 @@ func NewApp( | |||||||
| 	savingsSubspace := app.paramsKeeper.Subspace(savingstypes.ModuleName) | 	savingsSubspace := app.paramsKeeper.Subspace(savingstypes.ModuleName) | ||||||
| 	ibcSubspace := app.paramsKeeper.Subspace(ibcexported.ModuleName) | 	ibcSubspace := app.paramsKeeper.Subspace(ibcexported.ModuleName) | ||||||
| 	ibctransferSubspace := app.paramsKeeper.Subspace(ibctransfertypes.ModuleName) | 	ibctransferSubspace := app.paramsKeeper.Subspace(ibctransfertypes.ModuleName) | ||||||
|  | 	packetforwardSubspace := app.paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable()) | ||||||
| 	feemarketSubspace := app.paramsKeeper.Subspace(feemarkettypes.ModuleName) | 	feemarketSubspace := app.paramsKeeper.Subspace(feemarkettypes.ModuleName) | ||||||
| 	evmSubspace := app.paramsKeeper.Subspace(evmtypes.ModuleName) | 	evmSubspace := app.paramsKeeper.Subspace(evmtypes.ModuleName) | ||||||
| 	evmutilSubspace := app.paramsKeeper.Subspace(evmutiltypes.ModuleName) | 	evmutilSubspace := app.paramsKeeper.Subspace(evmutiltypes.ModuleName) | ||||||
| @ -551,23 +557,49 @@ func NewApp( | |||||||
| 
 | 
 | ||||||
| 	app.evmutilKeeper.SetEvmKeeper(app.evmKeeper) | 	app.evmutilKeeper.SetEvmKeeper(app.evmKeeper) | ||||||
| 
 | 
 | ||||||
|  | 	// It's important to note that the PFM Keeper must be initialized before the Transfer Keeper
 | ||||||
|  | 	app.packetForwardKeeper = packetforwardkeeper.NewKeeper( | ||||||
|  | 		appCodec, | ||||||
|  | 		keys[packetforwardtypes.StoreKey], | ||||||
|  | 		nil, // will be zero-value here, reference is set later on with SetTransferKeeper.
 | ||||||
|  | 		app.ibcKeeper.ChannelKeeper, | ||||||
|  | 		app.distrKeeper, | ||||||
|  | 		app.bankKeeper, | ||||||
|  | 		app.ibcKeeper.ChannelKeeper, | ||||||
|  | 		govAuthAddrStr, | ||||||
|  | 	) | ||||||
|  | 
 | ||||||
| 	app.transferKeeper = ibctransferkeeper.NewKeeper( | 	app.transferKeeper = ibctransferkeeper.NewKeeper( | ||||||
| 		appCodec, | 		appCodec, | ||||||
| 		keys[ibctransfertypes.StoreKey], | 		keys[ibctransfertypes.StoreKey], | ||||||
| 		ibctransferSubspace, | 		ibctransferSubspace, | ||||||
| 		app.ibcKeeper.ChannelKeeper, | 		app.packetForwardKeeper, | ||||||
| 		app.ibcKeeper.ChannelKeeper, | 		app.ibcKeeper.ChannelKeeper, | ||||||
| 		&app.ibcKeeper.PortKeeper, | 		&app.ibcKeeper.PortKeeper, | ||||||
| 		app.accountKeeper, | 		app.accountKeeper, | ||||||
| 		app.bankKeeper, | 		app.bankKeeper, | ||||||
| 		scopedTransferKeeper, | 		scopedTransferKeeper, | ||||||
| 	) | 	) | ||||||
|  | 	app.packetForwardKeeper.SetTransferKeeper(app.transferKeeper) | ||||||
| 	transferModule := transfer.NewAppModule(app.transferKeeper) | 	transferModule := transfer.NewAppModule(app.transferKeeper) | ||||||
| 	transferIBCModule := transfer.NewIBCModule(app.transferKeeper) | 
 | ||||||
|  | 	// allow ibc packet forwarding for ibc transfers.
 | ||||||
|  | 	// transfer stack contains (from top to bottom):
 | ||||||
|  | 	// - Packet Forward Middleware
 | ||||||
|  | 	// - Transfer
 | ||||||
|  | 	var transferStack ibcporttypes.IBCModule | ||||||
|  | 	transferStack = transfer.NewIBCModule(app.transferKeeper) | ||||||
|  | 	transferStack = packetforward.NewIBCMiddleware( | ||||||
|  | 		transferStack, | ||||||
|  | 		app.packetForwardKeeper, | ||||||
|  | 		0, // retries on timeout
 | ||||||
|  | 		packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, | ||||||
|  | 		packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, | ||||||
|  | 	) | ||||||
| 
 | 
 | ||||||
| 	// Create static IBC router, add transfer route, then set and seal it
 | 	// Create static IBC router, add transfer route, then set and seal it
 | ||||||
| 	ibcRouter := porttypes.NewRouter() | 	ibcRouter := ibcporttypes.NewRouter() | ||||||
| 	ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) | 	ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) | ||||||
| 	app.ibcKeeper.SetRouter(ibcRouter) | 	app.ibcKeeper.SetRouter(ibcRouter) | ||||||
| 
 | 
 | ||||||
| 	app.auctionKeeper = auctionkeeper.NewKeeper( | 	app.auctionKeeper = auctionkeeper.NewKeeper( | ||||||
| @ -789,6 +821,7 @@ func NewApp( | |||||||
| 		slashing.NewAppModule(appCodec, app.slashingKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper, slashingSubspace), | 		slashing.NewAppModule(appCodec, app.slashingKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper, slashingSubspace), | ||||||
| 		consensus.NewAppModule(appCodec, app.consensusParamsKeeper), | 		consensus.NewAppModule(appCodec, app.consensusParamsKeeper), | ||||||
| 		ibc.NewAppModule(app.ibcKeeper), | 		ibc.NewAppModule(app.ibcKeeper), | ||||||
|  | 		packetforward.NewAppModule(app.packetForwardKeeper, packetforwardSubspace), | ||||||
| 		evm.NewAppModule(app.evmKeeper, app.accountKeeper), | 		evm.NewAppModule(app.evmKeeper, app.accountKeeper), | ||||||
| 		feemarket.NewAppModule(app.feeMarketKeeper, feemarketSubspace), | 		feemarket.NewAppModule(app.feeMarketKeeper, feemarketSubspace), | ||||||
| 		upgrade.NewAppModule(&app.upgradeKeeper), | 		upgrade.NewAppModule(&app.upgradeKeeper), | ||||||
| @ -870,6 +903,7 @@ func NewApp( | |||||||
| 		earntypes.ModuleName, | 		earntypes.ModuleName, | ||||||
| 		routertypes.ModuleName, | 		routertypes.ModuleName, | ||||||
| 		consensusparamtypes.ModuleName, | 		consensusparamtypes.ModuleName, | ||||||
|  | 		packetforwardtypes.ModuleName, | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	// Warning: Some end blockers must run before others. Ensure the dependencies are understood before modifying this list.
 | 	// Warning: Some end blockers must run before others. Ensure the dependencies are understood before modifying this list.
 | ||||||
| @ -914,6 +948,7 @@ func NewApp( | |||||||
| 		communitytypes.ModuleName, | 		communitytypes.ModuleName, | ||||||
| 		metricstypes.ModuleName, | 		metricstypes.ModuleName, | ||||||
| 		consensusparamtypes.ModuleName, | 		consensusparamtypes.ModuleName, | ||||||
|  | 		packetforwardtypes.ModuleName, | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	// Warning: Some init genesis methods must run before others. Ensure the dependencies are understood before modifying this list
 | 	// Warning: Some init genesis methods must run before others. Ensure the dependencies are understood before modifying this list
 | ||||||
| @ -956,6 +991,7 @@ func NewApp( | |||||||
| 		routertypes.ModuleName, | 		routertypes.ModuleName, | ||||||
| 		metricstypes.ModuleName, | 		metricstypes.ModuleName, | ||||||
| 		consensusparamtypes.ModuleName, | 		consensusparamtypes.ModuleName, | ||||||
|  | 		packetforwardtypes.ModuleName, | ||||||
| 		crisistypes.ModuleName, // runs the invariants at genesis, should run after other modules
 | 		crisistypes.ModuleName, // runs the invariants at genesis, should run after other modules
 | ||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								ci/env/kava-protonet/genesis.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								ci/env/kava-protonet/genesis.json
									
									
									
									
										vendored
									
									
								
							| @ -3000,6 +3000,12 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "params": null, |     "params": null, | ||||||
|  |     "packetfowardmiddleware": { | ||||||
|  |       "params": { | ||||||
|  |         "fee_percentage": "0.000000000000000000" | ||||||
|  |       }, | ||||||
|  |       "in_flight_packets": {} | ||||||
|  |     }, | ||||||
|     "pricefeed": { |     "pricefeed": { | ||||||
|       "params": { |       "params": { | ||||||
|         "markets": [ |         "markets": [ | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @ -13,6 +13,7 @@ require ( | |||||||
| 	github.com/cosmos/cosmos-sdk v0.47.7 | 	github.com/cosmos/cosmos-sdk v0.47.7 | ||||||
| 	github.com/cosmos/go-bip39 v1.0.0 | 	github.com/cosmos/go-bip39 v1.0.0 | ||||||
| 	github.com/cosmos/gogoproto v1.4.10 | 	github.com/cosmos/gogoproto v1.4.10 | ||||||
|  | 	github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.2 | ||||||
| 	github.com/cosmos/ibc-go/v7 v7.3.1 | 	github.com/cosmos/ibc-go/v7 v7.3.1 | ||||||
| 	github.com/ethereum/go-ethereum v1.10.26 | 	github.com/ethereum/go-ethereum v1.10.26 | ||||||
| 	github.com/evmos/ethermint v0.21.0 | 	github.com/evmos/ethermint v0.21.0 | ||||||
| @ -133,6 +134,7 @@ require ( | |||||||
| 	github.com/holiman/uint256 v1.2.1 // indirect | 	github.com/holiman/uint256 v1.2.1 // indirect | ||||||
| 	github.com/huandu/skiplist v1.2.0 // indirect | 	github.com/huandu/skiplist v1.2.0 // indirect | ||||||
| 	github.com/huin/goupnp v1.0.3 // indirect | 	github.com/huin/goupnp v1.0.3 // indirect | ||||||
|  | 	github.com/iancoleman/orderedmap v0.2.0 // indirect | ||||||
| 	github.com/improbable-eng/grpc-web v0.15.0 // indirect | 	github.com/improbable-eng/grpc-web v0.15.0 // indirect | ||||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||||
| 	github.com/jackpal/go-nat-pmp v1.0.2 // indirect | 	github.com/jackpal/go-nat-pmp v1.0.2 // indirect | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @ -416,6 +416,8 @@ github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoK | |||||||
| github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= | github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= | ||||||
| github.com/cosmos/iavl v0.20.1 h1:rM1kqeG3/HBT85vsZdoSNsehciqUQPWrR4BYmqE2+zg= | github.com/cosmos/iavl v0.20.1 h1:rM1kqeG3/HBT85vsZdoSNsehciqUQPWrR4BYmqE2+zg= | ||||||
| github.com/cosmos/iavl v0.20.1/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= | github.com/cosmos/iavl v0.20.1/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= | ||||||
|  | github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.2 h1:6zjj+yIpMbCTRI2eJ2fXuflElENs3mrUSLH/TSWL8fk= | ||||||
|  | github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.2/go.mod h1:UvDmcGIWJPIytq+Q78/ff5NTOsuX/7IrNgEugTW5i0s= | ||||||
| github.com/cosmos/ibc-go/v7 v7.3.1 h1:bil1IjnHdyWDASFYKfwdRiNtFP6WK3osW7QFEAgU4I8= | github.com/cosmos/ibc-go/v7 v7.3.1 h1:bil1IjnHdyWDASFYKfwdRiNtFP6WK3osW7QFEAgU4I8= | ||||||
| github.com/cosmos/ibc-go/v7 v7.3.1/go.mod h1:wvx4pPBofe5ZdMNV3OFRxSI4auEP5Qfqf8JXLLNV04g= | github.com/cosmos/ibc-go/v7 v7.3.1/go.mod h1:wvx4pPBofe5ZdMNV3OFRxSI4auEP5Qfqf8JXLLNV04g= | ||||||
| github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= | github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= | ||||||
| @ -813,6 +815,8 @@ github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj | |||||||
| github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= | github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= | ||||||
| github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= | github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= | ||||||
| github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= | github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= | ||||||
|  | github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= | ||||||
|  | github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= | ||||||
| github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | ||||||
| github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | ||||||
| github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= | github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= | ||||||
| @ -1292,6 +1296,8 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe | |||||||
| go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||||
| go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= | go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= | ||||||
|  | go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= | ||||||
|  | go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= | ||||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||||
| go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= | go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= | ||||||
| go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= | go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Draco
						Draco