@agoric/cosmos 0.35.0-u19.2 → 0.35.0-u20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -18
- package/app/app.go +1 -1
- package/app/upgrade.go +38 -93
- package/app/upgrade_test.go +63 -0
- package/git-revision.txt +1 -1
- package/package.json +2 -2
- package/types/address_hooks.go +3 -10
- package/types/address_hooks_test.go +31 -31
- package/types/codec.go +23 -0
- package/types/ibc_packet.go +64 -0
- package/types/ibc_packet_test.go +117 -0
- package/x/vibc/keeper/triggers.go +5 -31
- package/x/vibc/types/expected_keepers.go +1 -0
- package/x/vibc/types/ibc_module.go +26 -16
- package/x/vibc/types/receiver.go +15 -15
- package/x/vstorage/README.md +0 -8
- package/x/vstorage/keeper/keeper.go +38 -4
- package/x/vstorage/types/path_keys.go +7 -8
- package/x/vtransfer/handler.go +4 -2
- package/x/vtransfer/ibc_middleware_test.go +4 -5
- package/x/vtransfer/keeper/keeper.go +33 -43
- package/e2e_test/Makefile +0 -29
- package/e2e_test/README.md +0 -100
- package/e2e_test/go.mod +0 -239
- package/e2e_test/go.sum +0 -1323
- package/e2e_test/ibc_conformance_test.go +0 -56
- package/e2e_test/pfm_test.go +0 -613
- package/e2e_test/util.go +0 -271
|
@@ -10,12 +10,14 @@ import (
|
|
|
10
10
|
"github.com/cosmos/cosmos-sdk/store/prefix"
|
|
11
11
|
storetypes "github.com/cosmos/cosmos-sdk/store/types"
|
|
12
12
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
sdkioerrors "cosmossdk.io/errors"
|
|
15
|
+
sdktypeserrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
14
16
|
|
|
15
17
|
capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper"
|
|
16
18
|
capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
|
|
17
19
|
|
|
18
|
-
"github.com/Agoric/agoric-sdk/golang/cosmos/types"
|
|
20
|
+
agtypes "github.com/Agoric/agoric-sdk/golang/cosmos/types"
|
|
19
21
|
"github.com/Agoric/agoric-sdk/golang/cosmos/vm"
|
|
20
22
|
"github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc"
|
|
21
23
|
vibctypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc/types"
|
|
@@ -92,7 +94,7 @@ func (i4 *ics4Wrapper) SendPacket(
|
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
var strippedData []byte
|
|
95
|
-
_, err =
|
|
97
|
+
_, err = agtypes.ExtractBaseAddressFromData(i4.k.cdc, data, agtypes.RoleSender, &strippedData)
|
|
96
98
|
if err != nil {
|
|
97
99
|
return sequence, err
|
|
98
100
|
}
|
|
@@ -105,7 +107,7 @@ func (i4 *ics4Wrapper) SendPacket(
|
|
|
105
107
|
|
|
106
108
|
// Store the original data if it is hooked for later retrieval by middleware.
|
|
107
109
|
if !i4.k.debug.DoNotStore && !bytes.Equal(strippedData, data) {
|
|
108
|
-
packetStore, packetKey := i4.k.PacketStore(ctx,
|
|
110
|
+
packetStore, packetKey := i4.k.PacketStore(ctx, agtypes.PacketSrc, sourcePort, sourceChannel, sequence)
|
|
109
111
|
packetStore.Set(packetKey, data)
|
|
110
112
|
}
|
|
111
113
|
|
|
@@ -118,14 +120,8 @@ func (i4 *ics4Wrapper) WriteAcknowledgement(
|
|
|
118
120
|
packet ibcexported.PacketI,
|
|
119
121
|
ack ibcexported.Acknowledgement,
|
|
120
122
|
) error {
|
|
121
|
-
origPacket :=
|
|
122
|
-
|
|
123
|
-
packet.GetSourcePort(), packet.GetSourceChannel(),
|
|
124
|
-
packet.GetDestPort(), packet.GetDestChannel(),
|
|
125
|
-
clienttypes.MustParseHeight(packet.GetTimeoutHeight().String()),
|
|
126
|
-
packet.GetTimeoutTimestamp(),
|
|
127
|
-
)
|
|
128
|
-
packetStore, packetKey := i4.k.PacketStoreFromOrigin(ctx, types.PacketDst, packet)
|
|
123
|
+
origPacket := agtypes.CopyToIBCPacket(packet)
|
|
124
|
+
packetStore, packetKey := i4.k.PacketStoreFromOrigin(ctx, agtypes.PacketDst, packet)
|
|
129
125
|
if packetStore.Has(packetKey) {
|
|
130
126
|
origPacket.Data = packetStore.Get(packetKey)
|
|
131
127
|
packetStore.Delete(packetKey)
|
|
@@ -209,20 +205,20 @@ func sequencePath(sequence uint64) string {
|
|
|
209
205
|
// PacketStore returns a new KVStore for storing packet data, and a key for
|
|
210
206
|
// that store. The KVStore is divided into src or dst PacketOrigins because we
|
|
211
207
|
// need to record separate data for packets travelling in each direction.
|
|
212
|
-
func (k Keeper) PacketStore(ctx sdk.Context, ourOrigin
|
|
208
|
+
func (k Keeper) PacketStore(ctx sdk.Context, ourOrigin agtypes.PacketOrigin, ourPort string, ourChannel string, sequence uint64) (storetypes.KVStore, []byte) {
|
|
213
209
|
key := fmt.Sprintf("%s/%s/%s", ourOrigin, channelPath(ourPort, ourChannel), sequencePath(sequence))
|
|
214
210
|
packetKey := []byte(key)
|
|
215
211
|
return prefix.NewStore(ctx.KVStore(k.key), []byte(packetDataStoreKeyPrefix)), packetKey
|
|
216
212
|
}
|
|
217
213
|
|
|
218
|
-
func (k Keeper) PacketStoreFromOrigin(ctx sdk.Context, ourOrigin
|
|
214
|
+
func (k Keeper) PacketStoreFromOrigin(ctx sdk.Context, ourOrigin agtypes.PacketOrigin, packet ibcexported.PacketI) (storetypes.KVStore, []byte) {
|
|
219
215
|
var ourPort, ourChannel string
|
|
220
216
|
|
|
221
217
|
switch ourOrigin {
|
|
222
|
-
case
|
|
218
|
+
case agtypes.PacketSrc:
|
|
223
219
|
ourPort = packet.GetSourcePort()
|
|
224
220
|
ourChannel = packet.GetSourceChannel()
|
|
225
|
-
case
|
|
221
|
+
case agtypes.PacketDst:
|
|
226
222
|
ourPort = packet.GetDestPort()
|
|
227
223
|
ourChannel = packet.GetDestChannel()
|
|
228
224
|
default:
|
|
@@ -236,10 +232,10 @@ func (k Keeper) PacketStoreFromOrigin(ctx sdk.Context, ourOrigin types.PacketOri
|
|
|
236
232
|
// Many error acknowledgments are sent synchronously, but most cases instead return nil
|
|
237
233
|
// to tell the IBC system that acknowledgment is async (i.e., that WriteAcknowledgement
|
|
238
234
|
// will be called later, after the VM has dealt with the packet).
|
|
239
|
-
func (k Keeper) InterceptOnRecvPacket(ctx sdk.Context, ibcModule porttypes.IBCModule, packet
|
|
235
|
+
func (k Keeper) InterceptOnRecvPacket(ctx sdk.Context, ibcModule porttypes.IBCModule, packet ibcexported.PacketI, relayer sdk.AccAddress) ibcexported.Acknowledgement {
|
|
240
236
|
// Pass every (stripped-receiver) inbound packet to the wrapped IBC module.
|
|
241
|
-
var strippedPacket
|
|
242
|
-
_, err :=
|
|
237
|
+
var strippedPacket agtypes.IBCPacket
|
|
238
|
+
_, err := agtypes.ExtractBaseAddressFromPacket(k.cdc, packet, agtypes.RoleReceiver, &strippedPacket)
|
|
243
239
|
if err != nil {
|
|
244
240
|
return channeltypes.NewErrorAcknowledgement(err)
|
|
245
241
|
}
|
|
@@ -249,16 +245,16 @@ func (k Keeper) InterceptOnRecvPacket(ctx sdk.Context, ibcModule porttypes.IBCMo
|
|
|
249
245
|
capName := host.ChannelCapabilityPath(portID, channelID)
|
|
250
246
|
chanCap, ok := k.vibcKeeper.GetCapability(ctx, capName)
|
|
251
247
|
if !ok {
|
|
252
|
-
err :=
|
|
248
|
+
err := sdkioerrors.Wrapf(channeltypes.ErrChannelCapabilityNotFound, "could not retrieve channel capability at: %s", capName)
|
|
253
249
|
return channeltypes.NewErrorAcknowledgement(err)
|
|
254
250
|
}
|
|
255
251
|
|
|
256
252
|
if !k.debug.DoNotStore && !bytes.Equal(strippedPacket.GetData(), packet.GetData()) {
|
|
257
|
-
packetStore, packetKey := k.PacketStore(ctx,
|
|
253
|
+
packetStore, packetKey := k.PacketStore(ctx, agtypes.PacketDst, portID, channelID, packet.GetSequence())
|
|
258
254
|
packetStore.Set(packetKey, packet.GetData())
|
|
259
255
|
}
|
|
260
256
|
|
|
261
|
-
ack := ibcModule.OnRecvPacket(ctx, strippedPacket, relayer)
|
|
257
|
+
ack := ibcModule.OnRecvPacket(ctx, agtypes.CopyToChannelPacket(strippedPacket), relayer)
|
|
262
258
|
if ack == nil {
|
|
263
259
|
// Already declared to be an async ack. Will be cleaned up by ics4Wrapper.WriteAcknowledgement.
|
|
264
260
|
return nil
|
|
@@ -274,23 +270,23 @@ func (k Keeper) InterceptOnRecvPacket(ctx sdk.Context, ibcModule porttypes.IBCMo
|
|
|
274
270
|
func (k Keeper) InterceptOnAcknowledgementPacket(
|
|
275
271
|
ctx sdk.Context,
|
|
276
272
|
ibcModule porttypes.IBCModule,
|
|
277
|
-
packet
|
|
273
|
+
packet ibcexported.PacketI,
|
|
278
274
|
acknowledgement []byte,
|
|
279
275
|
relayer sdk.AccAddress,
|
|
280
276
|
) error {
|
|
281
|
-
baseSender, err :=
|
|
277
|
+
baseSender, err := agtypes.ExtractBaseAddressFromData(k.cdc, packet.GetData(), agtypes.RoleSender, nil)
|
|
282
278
|
if err != nil {
|
|
283
279
|
return err
|
|
284
280
|
}
|
|
285
281
|
|
|
286
|
-
origPacket := packet
|
|
287
|
-
packetStore, packetKey := k.PacketStoreFromOrigin(ctx,
|
|
282
|
+
origPacket := agtypes.CopyToIBCPacket(packet)
|
|
283
|
+
packetStore, packetKey := k.PacketStoreFromOrigin(ctx, agtypes.PacketSrc, packet)
|
|
288
284
|
if packetStore.Has(packetKey) {
|
|
289
285
|
origPacket.Data = packetStore.Get(packetKey)
|
|
290
286
|
packetStore.Delete(packetKey)
|
|
291
287
|
}
|
|
292
288
|
|
|
293
|
-
modErr := ibcModule.OnAcknowledgementPacket(ctx, packet, acknowledgement, relayer)
|
|
289
|
+
modErr := ibcModule.OnAcknowledgementPacket(ctx, agtypes.CopyToChannelPacket(packet), acknowledgement, relayer)
|
|
294
290
|
|
|
295
291
|
// If the sender is not a watched account, we're done.
|
|
296
292
|
if !k.targetIsWatched(ctx, baseSender) {
|
|
@@ -312,23 +308,23 @@ func (k Keeper) InterceptOnAcknowledgementPacket(
|
|
|
312
308
|
func (k Keeper) InterceptOnTimeoutPacket(
|
|
313
309
|
ctx sdk.Context,
|
|
314
310
|
ibcModule porttypes.IBCModule,
|
|
315
|
-
packet
|
|
311
|
+
packet ibcexported.PacketI,
|
|
316
312
|
relayer sdk.AccAddress,
|
|
317
313
|
) error {
|
|
318
|
-
baseSender, err :=
|
|
314
|
+
baseSender, err := agtypes.ExtractBaseAddressFromData(k.cdc, packet.GetData(), agtypes.RoleSender, nil)
|
|
319
315
|
if err != nil {
|
|
320
316
|
return err
|
|
321
317
|
}
|
|
322
318
|
|
|
323
|
-
origPacket := packet
|
|
324
|
-
packetStore, packetKey := k.PacketStoreFromOrigin(ctx,
|
|
319
|
+
origPacket := agtypes.CopyToIBCPacket(packet)
|
|
320
|
+
packetStore, packetKey := k.PacketStoreFromOrigin(ctx, agtypes.PacketSrc, packet)
|
|
325
321
|
if packetStore.Has(packetKey) {
|
|
326
322
|
origPacket.Data = packetStore.Get(packetKey)
|
|
327
323
|
packetStore.Delete(packetKey)
|
|
328
324
|
}
|
|
329
325
|
|
|
330
326
|
// Pass every stripped-sender timeout to the wrapped IBC module.
|
|
331
|
-
modErr := ibcModule.OnTimeoutPacket(ctx, packet, relayer)
|
|
327
|
+
modErr := ibcModule.OnTimeoutPacket(ctx, agtypes.CopyToChannelPacket(packet), relayer)
|
|
332
328
|
|
|
333
329
|
// If the sender is not a watched account, we're done.
|
|
334
330
|
if !k.targetIsWatched(ctx, baseSender) {
|
|
@@ -349,16 +345,10 @@ func (k Keeper) InterceptOnTimeoutPacket(
|
|
|
349
345
|
// targeted account, and if so, delegates to the VM.
|
|
350
346
|
func (k Keeper) InterceptWriteAcknowledgement(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement) (ibcexported.Acknowledgement, ibcexported.PacketI) {
|
|
351
347
|
// Get the base receiver from the packet, without computing a stripped packet.
|
|
352
|
-
baseReceiver, err :=
|
|
353
|
-
|
|
354
|
-
origPacket :=
|
|
355
|
-
|
|
356
|
-
packet.GetSourcePort(), packet.GetSourceChannel(),
|
|
357
|
-
packet.GetDestPort(), packet.GetDestChannel(),
|
|
358
|
-
clienttypes.MustParseHeight(packet.GetTimeoutHeight().String()),
|
|
359
|
-
packet.GetTimeoutTimestamp(),
|
|
360
|
-
)
|
|
361
|
-
packetStore, packetKey := k.PacketStoreFromOrigin(ctx, types.PacketDst, packet)
|
|
348
|
+
baseReceiver, err := agtypes.ExtractBaseAddressFromPacket(k.cdc, packet, agtypes.RoleReceiver, nil)
|
|
349
|
+
|
|
350
|
+
origPacket := agtypes.CopyToIBCPacket(packet)
|
|
351
|
+
packetStore, packetKey := k.PacketStoreFromOrigin(ctx, agtypes.PacketDst, packet)
|
|
362
352
|
if packetStore.Has(packetKey) {
|
|
363
353
|
origPacket.Data = packetStore.Get(packetKey)
|
|
364
354
|
packetStore.Delete(packetKey)
|
|
@@ -440,7 +430,7 @@ func (k Keeper) Receive(cctx context.Context, jsonRequest string) (jsonReply str
|
|
|
440
430
|
case "BRIDGE_TARGET_UNREGISTER":
|
|
441
431
|
prefixStore.Delete([]byte(msg.Target))
|
|
442
432
|
default:
|
|
443
|
-
return "",
|
|
433
|
+
return "", sdkioerrors.Wrapf(sdktypeserrors.ErrUnknownRequest, "unknown action type: %s", msg.Type)
|
|
444
434
|
}
|
|
445
435
|
return "true", nil
|
|
446
436
|
}
|
package/e2e_test/Makefile
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# It is possible to use environment variables to change how the tests run
|
|
2
|
-
# - `E2ETEST_CHAINNAME0` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the first chain
|
|
3
|
-
# - `E2ETEST_CHAINNAME1` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the second chain
|
|
4
|
-
# - `E2ETEST_CHAINNAME2` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the third chain
|
|
5
|
-
# - `E2ETEST_CHAINNAME3` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the fourth chain
|
|
6
|
-
# - `E2ETEST_CHAINIMAGE_AGORIC` - the value of this will be used specific the repository & version of docker image to use for the agoric chain. a valid value must have a semicolon and be formatted as `repository:tag`. ex: `E2ETEST_CHAINIMAGE_AGORIC="ghcr.io/agoric/agoricinterchain:latest"`
|
|
7
|
-
# - `E2ETEST_RELAYERNAME` - set to `"cosmos"` or `"hermes"` to choose the relayer type
|
|
8
|
-
# - `E2ETEST_BLOCKS_TO_WAIT` - set to a number to control how many blocks to wait for an ACK from an IBC transfer and how many blocks to wait for TX settlement.
|
|
9
|
-
all: TestConformance TestPFM
|
|
10
|
-
|
|
11
|
-
# build - Sanity compile the tests
|
|
12
|
-
build:
|
|
13
|
-
go test -c -o ./bin/agoricinterchaintest
|
|
14
|
-
|
|
15
|
-
# TestPFM - use 4 chains to test PFM
|
|
16
|
-
TestPFM:
|
|
17
|
-
# Add a 20min timeout since tests are slow
|
|
18
|
-
# Add failfast since each test depends on the next
|
|
19
|
-
go test -failfast -timeout 20m -v -run ^TestPFM
|
|
20
|
-
|
|
21
|
-
# TestConformance - use 2 chains to test basic IBC conformance
|
|
22
|
-
TestConformance:
|
|
23
|
-
# Add a 20min timeout since tests are slow
|
|
24
|
-
go test -timeout 20m -v -run ^TestConformance
|
|
25
|
-
|
|
26
|
-
# TestChainPair - Minimal version of TestConformance does less permutations
|
|
27
|
-
TestChainPair:
|
|
28
|
-
# Add a 20min timeout since tests are slow
|
|
29
|
-
go test -timeout 20m -v -run ^TestChainPair
|
package/e2e_test/README.md
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# e2e_test
|
|
2
|
-
|
|
3
|
-
This independent golang project contains tests that validate IBC conformance and PFM functionality using a fork of Strangelove's `interchaintest`.
|
|
4
|
-
- upstream: https://github.com/strangelove-ventures/interchaintest
|
|
5
|
-
- fork: https://github.com/Agoric-labs/interchaintest
|
|
6
|
-
|
|
7
|
-
This project has its own `go.mod` since `interchaintest` pulls in version of cosmos-sdk, cometBFT, & ibc-go that differ from those `agd` would use.
|
|
8
|
-
|
|
9
|
-
## To Build
|
|
10
|
-
|
|
11
|
-
In order to sanity check that the tests build use:
|
|
12
|
-
```
|
|
13
|
-
$ make build
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Note this is not build or run by CI since:
|
|
17
|
-
- It takes up to 40 minutes run the tests.
|
|
18
|
-
- These tests validate proper functionality of the cosmos IBC module and apps. This functionality does not regularly change.
|
|
19
|
-
- These tests require a docker image that is currently difficult to produce.
|
|
20
|
-
- Changes to files outside this directory should not be able to cause this directory to fail to compile. This tool lives in its own bubble.
|
|
21
|
-
|
|
22
|
-
## To Run Tests
|
|
23
|
-
|
|
24
|
-
To run all the tests:
|
|
25
|
-
```
|
|
26
|
-
$ make
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
To test IBC Conformance only:
|
|
30
|
-
```
|
|
31
|
-
$ make TestConformance
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
To test PFM functionality only:
|
|
35
|
-
```
|
|
36
|
-
$ make TestPFM
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Customizing Test Runs
|
|
40
|
-
|
|
41
|
-
It is possible to use environment variables to change how the tests run
|
|
42
|
-
|
|
43
|
-
- `E2ETEST_CHAINNAME0` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the first chain
|
|
44
|
-
- `E2ETEST_CHAINNAME1` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the second chain
|
|
45
|
-
- `E2ETEST_CHAINNAME2` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the third chain
|
|
46
|
-
- `E2ETEST_CHAINNAME3` - set to `"agoric"`, `"gaia"`, or another chain known by interchaintest to choose which chain runs as the fourth chain
|
|
47
|
-
- `E2ETEST_CHAINIMAGE_AGORIC` - the value of this will be used specific the repository & version of docker image to use for the agoric chain. a valid value must have a semicolon and be formatted as `repository:tag`. ex: `E2ETEST_CHAINIMAGE_AGORIC="ghcr.io/agoric/agoricinterchain:latest"`
|
|
48
|
-
- `E2ETEST_RELAYERNAME` - set to `"cosmos"` or `"hermes"` to choose the relayer type
|
|
49
|
-
- `E2ETEST_BLOCKS_TO_WAIT` - set to a number to control how many blocks to wait for an ACK from an IBC transfer and how many blocks to wait for TX settlement.
|
|
50
|
-
|
|
51
|
-
ex:
|
|
52
|
-
```
|
|
53
|
-
# run PFM tests with the:
|
|
54
|
-
# - first chains as agoric
|
|
55
|
-
# - the second chain as osmosis
|
|
56
|
-
# - the third chain as stride
|
|
57
|
-
# - the fourth chain as gaia
|
|
58
|
-
# - use the hermes relayer
|
|
59
|
-
# - note `-timeout 20m` which is included because these tests can be very slow
|
|
60
|
-
$ E2ETEST_CHAINNAME0=agoric E2ETEST_CHAINNAME1=osmosis E2ETEST_CHAINNAME2=stride E2ETEST_CHAINNAME3=gaia E2ETEST_RELAYERNAME=hermes go test -timeout 20m -v -run ^TestPacketForwardMiddleware
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Debugging Flakes
|
|
64
|
-
|
|
65
|
-
`error in transaction (code: 6): failed to execute message; message index: 0: 809C699215C5BC041D4035479D28C30EAB11DBC5953E45D4545346B78482D82C: denomination trace not found`
|
|
66
|
-
- Flakey `interchaintest` has failed to properly run commands on relayers
|
|
67
|
-
|
|
68
|
-
`Wrong user balance on chain<blah> expected[<foo>>] actual[<bar>]`
|
|
69
|
-
- If you see `error in transaction (code: 6): failed to execute message; message index: 0: 809C699215C5BC041D4035479D28C30EAB11DBC5953E45D4545346B78482D82C: denomination trace not found` immediately below this error then the relayer fell over.
|
|
70
|
-
- If not, it's possible the test simply didn't wait enough blocks for the transactions to settle
|
|
71
|
-
|
|
72
|
-
If the tests terminate abnormally they may leave Docker containers or volumes stranded. These are safe to delete.
|
|
73
|
-
|
|
74
|
-
## Details on the Custom Fork of `interchaintest`
|
|
75
|
-
|
|
76
|
-
The [Agoric custom fork of interchaintest](https://github.com/Agoric-labs/interchaintest) is necessary because the agoric chain does not include the `x/crisis` module. However, `interchaintest` passes `agd` unsupported command line arguments to configure `x/crisis`. The fork contains a patch to skip these command line arguments when `interchaintest.ChainSpec.ChainConfig.NoCrisisModule` is set.
|
|
77
|
-
|
|
78
|
-
The exact git tag version of Agoric custom fork of interchaintest must be specified in the `go.mod` for this test suite. It is important to update that tag in the fork and in `go.mod` whenever the fork has a new update.
|
|
79
|
-
|
|
80
|
-
## Building a Compatible Docker Image
|
|
81
|
-
|
|
82
|
-
`interchaintest` relies on a partner tool [`heighliner`](https://github.com/strangelove-ventures/heighliner). `heighliner` modified Docker images to make them compatible with `interchaintest`. To build an Agoric compatible docker image:
|
|
83
|
-
|
|
84
|
-
Get the Agoric compatible changes (one time):
|
|
85
|
-
```
|
|
86
|
-
$ git clone git@github.com:strangelove-ventures/heighliner.git
|
|
87
|
-
$ cd heighliner
|
|
88
|
-
$ git remote add toliaqat git@github.com:toliaqat/heighliner.git
|
|
89
|
-
$ git pull toliaqat
|
|
90
|
-
$ git merge remotes/toliaqat/main
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
For each new image:
|
|
94
|
-
- edit `dockerfile/agoric/Dockerfile` in the heighliner checkout to point to the proper base image. Likely you'll want to use an a3p-integration image.
|
|
95
|
-
- then:
|
|
96
|
-
```
|
|
97
|
-
$ go build
|
|
98
|
-
$ ./heighliner build -c agoric -g main -t agoric:heighliner-agoric
|
|
99
|
-
```
|
|
100
|
-
- then run agoricinterchaintests with `E2ETEST_CHAINIMAGE_AGORIC=agoric:heighliner-agoric`
|
package/e2e_test/go.mod
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
module github.com/Agoric/agoric-sdk/golang/cosmos/e2e_test
|
|
2
|
-
|
|
3
|
-
go 1.20
|
|
4
|
-
|
|
5
|
-
require (
|
|
6
|
-
github.com/agoric-labs/interchaintest/v6 v6.0.1-agoriclabs
|
|
7
|
-
github.com/cosmos/cosmos-sdk v0.46.13
|
|
8
|
-
github.com/cosmos/ibc-go/v6 v6.2.0
|
|
9
|
-
github.com/stretchr/testify v1.9.0
|
|
10
|
-
go.uber.org/zap v1.26.0
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
require (
|
|
14
|
-
cloud.google.com/go v0.110.4 // indirect
|
|
15
|
-
cloud.google.com/go/compute v1.21.0 // indirect
|
|
16
|
-
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
|
17
|
-
cloud.google.com/go/iam v1.1.1 // indirect
|
|
18
|
-
cloud.google.com/go/storage v1.30.1 // indirect
|
|
19
|
-
cosmossdk.io/errors v1.0.0-beta.7 // indirect
|
|
20
|
-
cosmossdk.io/math v1.4.0 // indirect
|
|
21
|
-
filippo.io/edwards25519 v1.0.0-rc.1 // indirect
|
|
22
|
-
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
|
23
|
-
github.com/99designs/keyring v1.2.2 // indirect
|
|
24
|
-
github.com/BurntSushi/toml v1.3.2 // indirect
|
|
25
|
-
github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect
|
|
26
|
-
github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 // indirect
|
|
27
|
-
github.com/Microsoft/go-winio v0.6.0 // indirect
|
|
28
|
-
github.com/StirlingMarketingGroup/go-namecase v1.0.0 // indirect
|
|
29
|
-
github.com/armon/go-metrics v0.4.1 // indirect
|
|
30
|
-
github.com/avast/retry-go/v4 v4.3.4 // indirect
|
|
31
|
-
github.com/aws/aws-sdk-go v1.40.45 // indirect
|
|
32
|
-
github.com/beorn7/perks v1.0.1 // indirect
|
|
33
|
-
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
|
34
|
-
github.com/bgentry/speakeasy v0.1.0 // indirect
|
|
35
|
-
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
|
|
36
|
-
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect
|
|
37
|
-
github.com/centrifuge/go-substrate-rpc-client/v4 v4.0.10 // indirect
|
|
38
|
-
github.com/cespare/xxhash v1.1.0 // indirect
|
|
39
|
-
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
|
40
|
-
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
|
|
41
|
-
github.com/cockroachdb/apd/v2 v2.0.2 // indirect
|
|
42
|
-
github.com/confio/ics23/go v0.9.0 // indirect
|
|
43
|
-
github.com/cosmos/btcutil v1.0.5 // indirect
|
|
44
|
-
github.com/cosmos/cosmos-proto v1.0.0-alpha8 // indirect
|
|
45
|
-
github.com/cosmos/go-bip39 v1.0.0 // indirect
|
|
46
|
-
github.com/cosmos/gorocksdb v1.2.0 // indirect
|
|
47
|
-
github.com/cosmos/iavl v0.19.6 // indirect
|
|
48
|
-
github.com/cosmos/ledger-cosmos-go v0.12.4 // indirect
|
|
49
|
-
github.com/danieljoos/wincred v1.1.2 // indirect
|
|
50
|
-
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
51
|
-
github.com/deckarep/golang-set v1.8.0 // indirect
|
|
52
|
-
github.com/decred/base58 v1.0.3 // indirect
|
|
53
|
-
github.com/decred/dcrd/crypto/blake256 v1.0.0 // indirect
|
|
54
|
-
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 // indirect
|
|
55
|
-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
|
|
56
|
-
github.com/dgraph-io/badger/v2 v2.2007.4 // indirect
|
|
57
|
-
github.com/dgraph-io/ristretto v0.1.0 // indirect
|
|
58
|
-
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect
|
|
59
|
-
github.com/docker/distribution v2.8.1+incompatible // indirect
|
|
60
|
-
github.com/docker/docker v24.0.1+incompatible // indirect
|
|
61
|
-
github.com/docker/go-connections v0.4.0 // indirect
|
|
62
|
-
github.com/docker/go-units v0.5.0 // indirect
|
|
63
|
-
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
64
|
-
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
|
|
65
|
-
github.com/ethereum/go-ethereum v1.10.17 // indirect
|
|
66
|
-
github.com/felixge/httpsnoop v1.0.1 // indirect
|
|
67
|
-
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
|
68
|
-
github.com/go-kit/kit v0.12.0 // indirect
|
|
69
|
-
github.com/go-kit/log v0.2.1 // indirect
|
|
70
|
-
github.com/go-logfmt/logfmt v0.5.1 // indirect
|
|
71
|
-
github.com/go-stack/stack v1.8.1 // indirect
|
|
72
|
-
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
|
|
73
|
-
github.com/gogo/gateway v1.1.0 // indirect
|
|
74
|
-
github.com/gogo/protobuf v1.3.3 // indirect
|
|
75
|
-
github.com/golang/glog v1.1.0 // indirect
|
|
76
|
-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
|
77
|
-
github.com/golang/protobuf v1.5.3 // indirect
|
|
78
|
-
github.com/golang/snappy v0.0.4 // indirect
|
|
79
|
-
github.com/google/btree v1.1.2 // indirect
|
|
80
|
-
github.com/google/go-cmp v0.5.9 // indirect
|
|
81
|
-
github.com/google/s2a-go v0.1.4 // indirect
|
|
82
|
-
github.com/google/uuid v1.3.0 // indirect
|
|
83
|
-
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
|
|
84
|
-
github.com/googleapis/gax-go/v2 v2.11.0 // indirect
|
|
85
|
-
github.com/gorilla/handlers v1.5.1 // indirect
|
|
86
|
-
github.com/gorilla/mux v1.8.0 // indirect
|
|
87
|
-
github.com/gorilla/websocket v1.5.0 // indirect
|
|
88
|
-
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect
|
|
89
|
-
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
|
|
90
|
-
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
|
|
91
|
-
github.com/gtank/merlin v0.1.1 // indirect
|
|
92
|
-
github.com/gtank/ristretto255 v0.1.2 // indirect
|
|
93
|
-
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
|
94
|
-
github.com/hashicorp/go-getter v1.6.1 // indirect
|
|
95
|
-
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
|
|
96
|
-
github.com/hashicorp/go-safetemp v1.0.0 // indirect
|
|
97
|
-
github.com/hashicorp/go-version v1.6.0 // indirect
|
|
98
|
-
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
|
|
99
|
-
github.com/hashicorp/hcl v1.0.0 // indirect
|
|
100
|
-
github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect
|
|
101
|
-
github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 // indirect
|
|
102
|
-
github.com/inconshreveable/mousetrap v1.0.1 // indirect
|
|
103
|
-
github.com/ipfs/go-cid v0.2.0 // indirect
|
|
104
|
-
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
|
105
|
-
github.com/jmhodges/levigo v1.0.0 // indirect
|
|
106
|
-
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
|
107
|
-
github.com/klauspost/compress v1.16.0 // indirect
|
|
108
|
-
github.com/klauspost/cpuid/v2 v2.2.3 // indirect
|
|
109
|
-
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
|
|
110
|
-
github.com/libp2p/go-libp2p v0.22.0 // indirect
|
|
111
|
-
github.com/libp2p/go-openssl v0.1.0 // indirect
|
|
112
|
-
github.com/magiconair/properties v1.8.6 // indirect
|
|
113
|
-
github.com/manifoldco/promptui v0.9.0 // indirect
|
|
114
|
-
github.com/mattn/go-isatty v0.0.18 // indirect
|
|
115
|
-
github.com/mattn/go-pointer v0.0.1 // indirect
|
|
116
|
-
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
|
|
117
|
-
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect
|
|
118
|
-
github.com/minio/sha256-simd v1.0.0 // indirect
|
|
119
|
-
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
|
120
|
-
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
|
|
121
|
-
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
|
122
|
-
github.com/mr-tron/base58 v1.2.0 // indirect
|
|
123
|
-
github.com/mtibben/percent v0.2.1 // indirect
|
|
124
|
-
github.com/multiformats/go-base32 v0.0.4 // indirect
|
|
125
|
-
github.com/multiformats/go-base36 v0.1.0 // indirect
|
|
126
|
-
github.com/multiformats/go-multiaddr v0.6.0 // indirect
|
|
127
|
-
github.com/multiformats/go-multibase v0.1.1 // indirect
|
|
128
|
-
github.com/multiformats/go-multicodec v0.5.0 // indirect
|
|
129
|
-
github.com/multiformats/go-multihash v0.2.1 // indirect
|
|
130
|
-
github.com/multiformats/go-varint v0.0.6 // indirect
|
|
131
|
-
github.com/opencontainers/go-digest v1.0.0 // indirect
|
|
132
|
-
github.com/opencontainers/image-spec v1.1.0-rc2 // indirect
|
|
133
|
-
github.com/pelletier/go-toml v1.9.5 // indirect
|
|
134
|
-
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
|
|
135
|
-
github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect
|
|
136
|
-
github.com/pierrec/xxHash v0.1.5 // indirect
|
|
137
|
-
github.com/pkg/errors v0.9.1 // indirect
|
|
138
|
-
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
139
|
-
github.com/prometheus/client_golang v1.14.0 // indirect
|
|
140
|
-
github.com/prometheus/client_model v0.3.0 // indirect
|
|
141
|
-
github.com/prometheus/common v0.42.0 // indirect
|
|
142
|
-
github.com/prometheus/procfs v0.9.0 // indirect
|
|
143
|
-
github.com/rakyll/statik v0.1.7 // indirect
|
|
144
|
-
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
|
|
145
|
-
github.com/regen-network/cosmos-proto v0.3.1 // indirect
|
|
146
|
-
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
147
|
-
github.com/rs/cors v1.8.2 // indirect
|
|
148
|
-
github.com/sasha-s/go-deadlock v0.3.1 // indirect
|
|
149
|
-
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
|
|
150
|
-
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
|
151
|
-
github.com/spf13/afero v1.9.2 // indirect
|
|
152
|
-
github.com/spf13/cast v1.5.0 // indirect
|
|
153
|
-
github.com/spf13/cobra v1.6.1 // indirect
|
|
154
|
-
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
|
155
|
-
github.com/spf13/pflag v1.0.5 // indirect
|
|
156
|
-
github.com/spf13/viper v1.14.0 // indirect
|
|
157
|
-
github.com/subosito/gotenv v1.4.1 // indirect
|
|
158
|
-
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
|
|
159
|
-
github.com/tendermint/go-amino v0.16.0 // indirect
|
|
160
|
-
github.com/tendermint/tendermint v0.34.29 // indirect
|
|
161
|
-
github.com/tendermint/tm-db v0.6.7 // indirect
|
|
162
|
-
github.com/tidwall/btree v1.5.0 // indirect
|
|
163
|
-
github.com/ulikunitz/xz v0.5.8 // indirect
|
|
164
|
-
github.com/vedhavyas/go-subkey v1.0.3 // indirect
|
|
165
|
-
github.com/zondax/hid v0.9.2 // indirect
|
|
166
|
-
github.com/zondax/ledger-go v0.14.3 // indirect
|
|
167
|
-
go.etcd.io/bbolt v1.3.6 // indirect
|
|
168
|
-
go.opencensus.io v0.24.0 // indirect
|
|
169
|
-
go.uber.org/multierr v1.11.0 // indirect
|
|
170
|
-
golang.org/x/crypto v0.15.0 // indirect
|
|
171
|
-
golang.org/x/exp v0.0.0-20230310171629-522b1b587ee0 // indirect
|
|
172
|
-
golang.org/x/mod v0.10.0 // indirect
|
|
173
|
-
golang.org/x/net v0.18.0 // indirect
|
|
174
|
-
golang.org/x/oauth2 v0.10.0 // indirect
|
|
175
|
-
golang.org/x/sync v0.3.0 // indirect
|
|
176
|
-
golang.org/x/sys v0.14.0 // indirect
|
|
177
|
-
golang.org/x/term v0.14.0 // indirect
|
|
178
|
-
golang.org/x/text v0.14.0 // indirect
|
|
179
|
-
golang.org/x/tools v0.9.3 // indirect
|
|
180
|
-
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
|
181
|
-
google.golang.org/api v0.126.0 // indirect
|
|
182
|
-
google.golang.org/appengine v1.6.7 // indirect
|
|
183
|
-
google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect
|
|
184
|
-
google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect
|
|
185
|
-
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
|
|
186
|
-
google.golang.org/grpc v1.58.3 // indirect
|
|
187
|
-
google.golang.org/protobuf v1.31.0 // indirect
|
|
188
|
-
gopkg.in/ini.v1 v1.67.0 // indirect
|
|
189
|
-
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
|
|
190
|
-
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
191
|
-
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
192
|
-
lukechampine.com/blake3 v1.1.7 // indirect
|
|
193
|
-
lukechampine.com/uint128 v1.2.0 // indirect
|
|
194
|
-
modernc.org/cc/v3 v3.40.0 // indirect
|
|
195
|
-
modernc.org/ccgo/v3 v3.16.13 // indirect
|
|
196
|
-
modernc.org/libc v1.22.5 // indirect
|
|
197
|
-
modernc.org/mathutil v1.5.0 // indirect
|
|
198
|
-
modernc.org/memory v1.5.0 // indirect
|
|
199
|
-
modernc.org/opt v0.1.3 // indirect
|
|
200
|
-
modernc.org/sqlite v1.23.1 // indirect
|
|
201
|
-
modernc.org/strutil v1.1.3 // indirect
|
|
202
|
-
modernc.org/token v1.0.1 // indirect
|
|
203
|
-
sigs.k8s.io/yaml v1.4.0 // indirect
|
|
204
|
-
)
|
|
205
|
-
|
|
206
|
-
// Some replace copied from https://github.com/gjermundgaraba/ibctest/blob/110aa579a5a889b2af760bed4f3d90e0d2475e7a/go.mod
|
|
207
|
-
// Some replace from https://github.com/nymlab/cheqd-node-interchaintest/blob/main/go.mod
|
|
208
|
-
// For agoric-labs forks, following https://stackoverflow.com/questions/72312460/how-to-replace-a-go-module-with-a-major-version-to-a-fork-master
|
|
209
|
-
replace (
|
|
210
|
-
github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d
|
|
211
|
-
github.com/ChainSafe/go-schnorrkel/1 => github.com/ChainSafe/go-schnorrkel v1.0.0
|
|
212
|
-
|
|
213
|
-
github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
|
|
214
|
-
|
|
215
|
-
github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27
|
|
216
|
-
github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7
|
|
217
|
-
)
|
|
218
|
-
|
|
219
|
-
// Agoric-specific replacements:
|
|
220
|
-
replace (
|
|
221
|
-
// We need a fork of cosmos-sdk until all of the differences are merged.
|
|
222
|
-
github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.46.16-alpha.agoric.2.5
|
|
223
|
-
|
|
224
|
-
// Pick up an IAVL race fix.
|
|
225
|
-
github.com/cosmos/iavl => github.com/cosmos/iavl v0.19.7
|
|
226
|
-
|
|
227
|
-
// Use a version of ibc-go that is compatible with the above forks.
|
|
228
|
-
github.com/cosmos/ibc-go/v6 => github.com/agoric-labs/ibc-go/v6 v6.3.1-alpha.agoric.4
|
|
229
|
-
|
|
230
|
-
// use cometbft
|
|
231
|
-
// Use our fork at least until post-v0.34.14 is released with
|
|
232
|
-
// https://github.com/tendermint/tendermint/issue/6899 resolved.
|
|
233
|
-
// github.com/tendermint/tendermint => github.com/agoric-labs/cometbft v0.34.30-alpha.agoric.1
|
|
234
|
-
|
|
235
|
-
// For testing against a local cosmos-sdk, ibc-go, or cometbft
|
|
236
|
-
// github.com/cosmos/cosmos-sdk => ../../../forks/cosmos-sdk
|
|
237
|
-
// github.com/cosmos/ibc-go/v6 => ../../../forks/ibc-go/v6
|
|
238
|
-
// github.com/tendermint/tendermint => ../../../forks/cometbft
|
|
239
|
-
)
|