Skip to content

Commit 326c660

Browse files
Move warp payload to avalanchego (#923)
* Integrating Warp Payload Types into AvalancheGo for Cross-VM Compatibility This fixes ava-labs/avalanchego#2050 and ava-labs/avalanchego#2116 * Update types * Do not update go.sum * Fixed more type changes from the migration * Drop the alias `avalancheWarpPayload` The alias is not longer needed --------- Co-authored-by: Aaron Buchwald <aaron.buchwald56@gmail.com>
1 parent 4c873c1 commit 326c660

File tree

11 files changed

+59
-318
lines changed

11 files changed

+59
-318
lines changed

plugin/evm/block.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ import (
1313
"github.com/ethereum/go-ethereum/log"
1414
"github.com/ethereum/go-ethereum/rlp"
1515

16+
"github.com/ava-labs/avalanchego/vms/platformvm/warp/payload"
1617
"github.com/ava-labs/subnet-evm/core"
1718
"github.com/ava-labs/subnet-evm/core/rawdb"
1819
"github.com/ava-labs/subnet-evm/core/types"
1920
"github.com/ava-labs/subnet-evm/params"
2021
"github.com/ava-labs/subnet-evm/precompile/precompileconfig"
2122
"github.com/ava-labs/subnet-evm/predicate"
22-
"github.com/ava-labs/subnet-evm/warp/payload"
2323
"github.com/ava-labs/subnet-evm/x/warp"
2424

2525
"github.com/ava-labs/avalanchego/ids"
@@ -132,7 +132,7 @@ func (b *Block) handlePrecompileAccept(rules *params.Rules, sharedMemoryWriter *
132132

133133
// If Warp is enabled, add the block hash as an unsigned message to the warp backend.
134134
if rules.IsPrecompileEnabled(warp.ContractAddress) {
135-
blockHashPayload, err := payload.NewBlockHashPayload(b.ethBlock.Hash())
135+
blockHashPayload, err := payload.NewHash(ids.ID(b.ethBlock.Hash().Bytes()))
136136
if err != nil {
137137
return fmt.Errorf("failed to create block hash payload: %w", err)
138138
}

plugin/evm/vm_warp_test.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/ava-labs/avalanchego/utils/set"
2222
"github.com/ava-labs/avalanchego/vms/components/chain"
2323
avalancheWarp "github.com/ava-labs/avalanchego/vms/platformvm/warp"
24+
"github.com/ava-labs/avalanchego/vms/platformvm/warp/payload"
2425
"github.com/ava-labs/subnet-evm/core"
2526
"github.com/ava-labs/subnet-evm/core/rawdb"
2627
"github.com/ava-labs/subnet-evm/core/types"
@@ -29,7 +30,6 @@ import (
2930
"github.com/ava-labs/subnet-evm/precompile/contract"
3031
"github.com/ava-labs/subnet-evm/predicate"
3132
subnetEVMUtils "github.com/ava-labs/subnet-evm/utils"
32-
warpPayload "github.com/ava-labs/subnet-evm/warp/payload"
3333
"github.com/ava-labs/subnet-evm/x/warp"
3434
"github.com/ethereum/go-ethereum/common"
3535
"github.com/ethereum/go-ethereum/crypto"
@@ -62,9 +62,9 @@ func TestSendWarpMessage(t *testing.T) {
6262
logsSub := vm.eth.APIBackend.SubscribeAcceptedLogsEvent(acceptedLogsChan)
6363
defer logsSub.Unsubscribe()
6464

65-
payload := utils.RandomBytes(100)
65+
payloadData := utils.RandomBytes(100)
6666

67-
warpSendMessageInput, err := warp.PackSendWarpMessage(payload)
67+
warpSendMessageInput, err := warp.PackSendWarpMessage(payloadData)
6868
require.NoError(err)
6969

7070
// Submit a transaction to trigger sending a warp message
@@ -128,10 +128,10 @@ func TestValidateWarpMessage(t *testing.T) {
128128
require := require.New(t)
129129
sourceChainID := ids.GenerateTestID()
130130
sourceAddress := common.HexToAddress("0x376c47978271565f56DEB45495afa69E59c16Ab2")
131-
payload := []byte{1, 2, 3}
132-
addressedPayload, err := warpPayload.NewAddressedPayload(
133-
sourceAddress,
134-
payload,
131+
payloadData := []byte{1, 2, 3}
132+
addressedPayload, err := payload.NewAddressedCall(
133+
sourceAddress.Bytes(),
134+
payloadData,
135135
)
136136
require.NoError(err)
137137
unsignedMessage, err := avalancheWarp.NewUnsignedMessage(testNetworkID, sourceChainID, addressedPayload.Bytes())
@@ -143,7 +143,7 @@ func TestValidateWarpMessage(t *testing.T) {
143143
uint32(0),
144144
sourceChainID,
145145
sourceAddress,
146-
payload,
146+
payloadData,
147147
)
148148
require.NoError(err)
149149

@@ -154,10 +154,10 @@ func TestValidateInvalidWarpMessage(t *testing.T) {
154154
require := require.New(t)
155155
sourceChainID := ids.GenerateTestID()
156156
sourceAddress := common.HexToAddress("0x376c47978271565f56DEB45495afa69E59c16Ab2")
157-
payload := []byte{1, 2, 3}
158-
addressedPayload, err := warpPayload.NewAddressedPayload(
159-
sourceAddress,
160-
payload,
157+
payloadData := []byte{1, 2, 3}
158+
addressedPayload, err := payload.NewAddressedCall(
159+
sourceAddress.Bytes(),
160+
payloadData,
161161
)
162162
require.NoError(err)
163163
unsignedMessage, err := avalancheWarp.NewUnsignedMessage(testNetworkID, sourceChainID, addressedPayload.Bytes())
@@ -177,7 +177,7 @@ func TestValidateWarpBlockHash(t *testing.T) {
177177
require := require.New(t)
178178
sourceChainID := ids.GenerateTestID()
179179
blockHash := ids.GenerateTestID()
180-
blockHashPayload, err := warpPayload.NewBlockHashPayload(common.Hash(blockHash))
180+
blockHashPayload, err := payload.NewHash(blockHash)
181181
require.NoError(err)
182182
unsignedMessage, err := avalancheWarp.NewUnsignedMessage(testNetworkID, sourceChainID, blockHashPayload.Bytes())
183183
require.NoError(err)
@@ -198,7 +198,7 @@ func TestValidateInvalidWarpBlockHash(t *testing.T) {
198198
require := require.New(t)
199199
sourceChainID := ids.GenerateTestID()
200200
blockHash := ids.GenerateTestID()
201-
blockHashPayload, err := warpPayload.NewBlockHashPayload(common.Hash(blockHash))
201+
blockHashPayload, err := payload.NewHash(blockHash)
202202
require.NoError(err)
203203
unsignedMessage, err := avalancheWarp.NewUnsignedMessage(testNetworkID, sourceChainID, blockHashPayload.Bytes())
204204
require.NoError(err)
@@ -389,11 +389,11 @@ func TestReceiveWarpMessage(t *testing.T) {
389389
logsSub := vm.eth.APIBackend.SubscribeAcceptedLogsEvent(acceptedLogsChan)
390390
defer logsSub.Unsubscribe()
391391

392-
payload := utils.RandomBytes(100)
392+
payloadData := utils.RandomBytes(100)
393393

394-
addressedPayload, err := warpPayload.NewAddressedPayload(
395-
testEthAddrs[0],
396-
payload,
394+
addressedPayload, err := payload.NewAddressedCall(
395+
testEthAddrs[0].Bytes(),
396+
payloadData,
397397
)
398398
require.NoError(err)
399399
unsignedMessage, err := avalancheWarp.NewUnsignedMessage(
@@ -531,7 +531,7 @@ func TestReceiveWarpMessage(t *testing.T) {
531531
Message: warp.WarpMessage{
532532
SourceChainID: common.Hash(vm.ctx.ChainID),
533533
OriginSenderAddress: testEthAddrs[0],
534-
Payload: payload,
534+
Payload: payloadData,
535535
},
536536
Valid: true,
537537
})

tests/warp/warp_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/ava-labs/avalanchego/utils/crypto/bls"
2222
"github.com/ava-labs/avalanchego/utils/set"
2323
avalancheWarp "github.com/ava-labs/avalanchego/vms/platformvm/warp"
24+
"github.com/ava-labs/avalanchego/vms/platformvm/warp/payload"
2425
"github.com/ava-labs/subnet-evm/core/types"
2526
"github.com/ava-labs/subnet-evm/ethclient"
2627
"github.com/ava-labs/subnet-evm/interfaces"
@@ -30,7 +31,6 @@ import (
3031
"github.com/ava-labs/subnet-evm/tests/utils"
3132
"github.com/ava-labs/subnet-evm/tests/utils/runner"
3233
warpBackend "github.com/ava-labs/subnet-evm/warp"
33-
warpPayload "github.com/ava-labs/subnet-evm/warp/payload"
3434
"github.com/ava-labs/subnet-evm/x/warp"
3535
"github.com/ethereum/go-ethereum/common"
3636
"github.com/ethereum/go-ethereum/crypto"
@@ -54,7 +54,7 @@ var (
5454
chainID = big.NewInt(99999)
5555
fundedKey *ecdsa.PrivateKey
5656
fundedAddress common.Address
57-
payload = []byte{1, 2, 3}
57+
testPayload = []byte{1, 2, 3}
5858
txSigner = types.LatestSignerForChainID(chainID)
5959
)
6060

@@ -188,7 +188,7 @@ var _ = ginkgo.Describe("[Warp]", ginkgo.Ordered, func() {
188188
startingNonce, err := chainAWSClient.NonceAt(ctx, fundedAddress, nil)
189189
gomega.Expect(err).Should(gomega.BeNil())
190190

191-
packedInput, err := warp.PackSendWarpMessage(payload)
191+
packedInput, err := warp.PackSendWarpMessage(testPayload)
192192
gomega.Expect(err).Should(gomega.BeNil())
193193
tx := types.NewTx(&types.DynamicFeeTx{
194194
ChainID: chainID,
@@ -377,9 +377,9 @@ var _ = ginkgo.Describe("[Warp]", ginkgo.Ordered, func() {
377377

378378
rpcURI := toRPCURI(chainAURIs[0], blockchainIDA.String())
379379
senderAddress := common.HexToAddress("0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC")
380-
addressedPayload, err := warpPayload.NewAddressedPayload(
381-
senderAddress,
382-
payload,
380+
addressedPayload, err := payload.NewAddressedCall(
381+
senderAddress.Bytes(),
382+
testPayload,
383383
)
384384
gomega.Expect(err).Should(gomega.BeNil())
385385
expectedUnsignedMessage, err := avalancheWarp.NewUnsignedMessage(
@@ -391,7 +391,7 @@ var _ = ginkgo.Describe("[Warp]", ginkgo.Ordered, func() {
391391

392392
os.Setenv("SENDER_ADDRESS", senderAddress.Hex())
393393
os.Setenv("SOURCE_CHAIN_ID", "0x"+blockchainIDA.Hex())
394-
os.Setenv("PAYLOAD", "0x"+common.Bytes2Hex(payload))
394+
os.Setenv("PAYLOAD", "0x"+common.Bytes2Hex(testPayload))
395395
os.Setenv("EXPECTED_UNSIGNED_MESSAGE", "0x"+hex.EncodeToString(expectedUnsignedMessage.Bytes()))
396396

397397
cmdPath := "./contracts"

warp/payload/addressed_payload.go

Lines changed: 0 additions & 60 deletions
This file was deleted.

warp/payload/block_hash_payload.go

Lines changed: 0 additions & 57 deletions
This file was deleted.

warp/payload/codec.go

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)