wormchain: add test for accountant modify

This commit is contained in:
Conor Patrick 2023-02-14 03:01:46 +00:00
parent 4640b6ae73
commit b5ead3204a
6 changed files with 2769 additions and 795 deletions

View File

@ -250,7 +250,7 @@ async function main() {
contract: addresses["global_accountant.wasm"], contract: addresses["global_accountant.wasm"],
msg: toUtf8( msg: toUtf8(
JSON.stringify({ JSON.stringify({
submit_v_a_as: { submit_vaas: {
vaas: accountingRegistrations, vaas: accountingRegistrations,
}, },
}) })

File diff suppressed because it is too large Load Diff

View File

@ -1,777 +0,0 @@
package keeper
import (
"encoding/base64"
)
func init() {
wasm, err := base64.StdEncoding.DecodeString(_EXAMPLE_WASM_CONTRACT_B64_GZIP)
if err != nil {
panic(err)
}
EXAMPLE_WASM_CONTRACT_GZIP = wasm
}
var EXAMPLE_WASM_CONTRACT_GZIP = []byte{}
// To generate this:
//
// 1. pick any cosmwasm contract project and ensure the minimal
// & permissive implementations of the entry points: instantiate, execute, migrate.
//
// 2. Update `.cargo/config.toml` with these optimizations.
// [profile.release]
// opt-level = "s"
// lto = true
// strip = true
//
// 3. Compile: `cargo build --target wasm32-unknown-unknown --release`
// 4. Generate base64 gzip: `cat target/wasm32-unknown-unknown/release/cw_nameservice.wasm|gzip |base64`
// 5. Copy here.
var _EXAMPLE_WASM_CONTRACT_B64_GZIP = `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
4/Lj7BO88fpJesnqMO42P2ncb3zH+K6xK/eDzA+Nh40f67vtXxj/az1m/D7caz1p/N18Ws+dfPpZ
Fy182wc/+KH/fMs7333rpz5/3ScdN9N85lmv+PPO71p19c0tr3jlho994u4vnrZ75Bvf9NYPxsiI
uHjRwuXtr/vMZxvGuV7WrxvbPGv2HR995EeZlq1vv8PNnn7WilVve8eIrssf+P0fXrP0iX37L138
vvdPnnJy42Uf2HbLh7fffsddn79/h+PnRp8w++w5F992+0Pf2uYed3zxpWed/b+P/2H/V79mhS95
6csap8+cfd75Fyy69LJXIO4tWda+oqP3qtdvePP2j919z+DOT9zd2fWld/578T9t05pkrjD1KZP7
N51gTq0dZ52UOdE+1T7Xqjml/2POSdZJVqM3w7/o5RtbMmOyXv3pc2aZy7xM0xi7YDbY+jkzrQX2
FCvrZtxzwpOtXKbZnG0f71o5d9H8lun56e5kL7vxZZcsONU7ZczxLxtXNzZzETRwbv44N+uc552c
Wee3nnWKc7qddS52dDsw7f63LD3xPC/bf9u/F+f4WSc/araTbZ5oje3/3BnLL82dl8nOndNwnndp
fr6b7f/r3OwJ5rz5LWaNl3VmudmNzce5p5vjXqHXTstvfv+KdX7/jjdfsCw/0BSMedvHNs275XOb
ZrmnWK9zXpadm220R22657XtC6xZ7ohzECXe86Q38MNTMrf+78bptfoJTo3lbbz+TVaHnTczbvCO
JfMyfWf0/zXb660dPfc/cCm8MnNc/xs3zjPf0Fo7emDReMfp/8Gp9lkFfe0k83jL2HjO+BGzbX3j
zlM2/br/bxMusLKWsXnEuRec2f+VMxzdusxumGFsrJloLc+9Itv/iZkn5CdaGVgRTv/7Nj9ijTDz
5pXW5Q6sr9qcNRMG1+gVL9q4OHcC9KXZq4GsGbf/my/NDjhD0nDxezkq+gAZD2cGRKvx7HUW/KFK
KfLxKq+EevF0BogPA6xssW7t5X1drHYFnEqav+pC+m9q2mYr1N5uL9H+bdQ2beTYcHwuXDL+DxO3
nXpKUzix67bdE407lkw68eklk7V/hM0f3L+k+Rn9F816ttByUv4XLR+vaZs1pf6WWU3j2s7784m3
XHDOjLZFe0u3XLywq3DJB+6/5RLtO22Xtn/3lku1HxcWa7t/cdknftn2ysf3FF6987FbXh1qv3/1
Xn3Da7S1mqtNAgbDgP/p5/lNowO9HaibYejWS/QTG17rz85k9HpLzwAxsE81z/BOqdfDFihgeUDF
3Kxxgj4bi1seZMkax+uGMQuohoUshX6iYeo+vtvoXbPOGAM0ZTa2BbldM2ucqJ8OZXNQshGqh1pN
G0iOa/hUK3YJGjXwfZwxy0haOUE/T7d0qFz39It1w815S3Uj47vzjQbillpqdGjR9vWTMvoKS3eg
U8ZxhmUGVh4eHb1WB9ibJxgnwv/OMXTX0w0/owMt19cZRX29aRkZ3TF/AkCA3rpYo+E5WUNvGj/V
aoJ3W2/M5IwQBqmbM3XqiDnbM4ybTD2vu9igaXztHE3/r4Jm3qAvCTVnlaFZejY0FhkaUlX9OMPW
32McPzKvv8w7zp9sNukIspP1lzvIjeVgXFP06VCrYdgw7lMMT/89gk0HZiUI8Eik/1J/l62ZMEqr
0bT0j0D9mrHInOtPtf5Tb66dAOPMmlOhTlc/0zzJ1r2z9JwxIwPLSb/cRFACUPQP6KY3miCr62P0
Gte0/8vDwYxFqDo4UTgJv4W+OfDbYFzmYUpJp+J6uwmTamsZ3fgLzAlghL4V2rP0MNvo0Ew5hjkZ
AA6ME+S+ZAx0BWr5D8fEWgGK52FTugazO8O28Ul3ajXY4DT9bOtiSNcmG2OB8TYt2/MM90TrRlNr
saZ5eo0+xtZrodYRVKO9XN8GZc60AALuGldb0r8XeEWxbs8Wshvk/U4Qv/JvMvB+I+Dvt3DW/Cr8
fQjOnP8fkFLH7Rs5AgA=`

View File

@ -31,6 +31,11 @@ import (
) )
func WormholeKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { func WormholeKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) {
k, _, _, ctx := WormholeKeeperAndWasmd(t)
return k, ctx
}
func WormholeKeeperAndWasmd(t testing.TB) (*keeper.Keeper, wasmkeeper.Keeper, *wasmkeeper.PermissionedKeeper, sdk.Context) {
keys := sdk.NewKVStoreKeys( keys := sdk.NewKVStoreKeys(
authtypes.StoreKey, authtypes.StoreKey,
paramstypes.StoreKey, paramstypes.StoreKey,
@ -86,7 +91,7 @@ func WormholeKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) {
nil, nil,
) )
supportedFeatures := "iterator,staking,stargate" supportedFeatures := "iterator,staking,stargate,wormhole"
appapp.WormholeKeeper = *k appapp.WormholeKeeper = *k
appapp.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) appapp.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey])
@ -113,6 +118,7 @@ func WormholeKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) {
wasmDir, wasmDir,
wasm.DefaultWasmConfig(), wasm.DefaultWasmConfig(),
supportedFeatures, supportedFeatures,
wasmkeeper.WithQueryPlugins(keeper.NewCustomQueryHandler(appapp.WormholeKeeper)),
) )
ctx := sdk.NewContext(stateStore, tmproto.Header{ ctx := sdk.NewContext(stateStore, tmproto.Header{
Time: time.Now(), Time: time.Now(),
@ -132,5 +138,5 @@ func WormholeKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) {
appapp.WormholeKeeper.SetWasmdKeeper(permissionedWasmKeeper) appapp.WormholeKeeper.SetWasmdKeeper(permissionedWasmKeeper)
k.SetWasmdKeeper(permissionedWasmKeeper) k.SetWasmdKeeper(permissionedWasmKeeper)
return k, ctx return k, wasmKeeper, permissionedWasmKeeper, ctx
} }

View File

@ -2,8 +2,13 @@ package keeper_test
import ( import (
"bytes" "bytes"
"encoding/base64"
"encoding/binary" "encoding/binary"
"encoding/hex"
"fmt"
"math/big"
"testing" "testing"
"time"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -77,7 +82,7 @@ func TestWasmdStoreCode(t *testing.T) {
msgServer := keeper.NewMsgServerImpl(*k) msgServer := keeper.NewMsgServerImpl(*k)
// create governance to store code // create governance to store code
payload := createWasmStoreCodePayload(keepertest.EXAMPLE_WASM_CONTRACT_GZIP) payload := createWasmStoreCodePayload(keepertest.ACCOUNTANT_WASM_B64_GZIP)
v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload) v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal() vBz, err := v.Marshal()
assert.NoError(t, err) assert.NoError(t, err)
@ -85,7 +90,7 @@ func TestWasmdStoreCode(t *testing.T) {
// store code should work // store code should work
res, err := msgServer.StoreCode(context, &types.MsgStoreCode{ res, err := msgServer.StoreCode(context, &types.MsgStoreCode{
Signer: signer.String(), Signer: signer.String(),
WASMByteCode: keepertest.EXAMPLE_WASM_CONTRACT_GZIP, WASMByteCode: keepertest.ACCOUNTANT_WASM_B64_GZIP,
Vaa: vBz, Vaa: vBz,
}) })
_ = res _ = res
@ -94,14 +99,14 @@ func TestWasmdStoreCode(t *testing.T) {
// replay attack does not work. // replay attack does not work.
_, err = msgServer.StoreCode(context, &types.MsgStoreCode{ _, err = msgServer.StoreCode(context, &types.MsgStoreCode{
Signer: signer.String(), Signer: signer.String(),
WASMByteCode: keepertest.EXAMPLE_WASM_CONTRACT_GZIP, WASMByteCode: keepertest.ACCOUNTANT_WASM_B64_GZIP,
Vaa: vBz, Vaa: vBz,
}) })
assert.ErrorIs(t, err, types.ErrVAAAlreadyExecuted) assert.ErrorIs(t, err, types.ErrVAAAlreadyExecuted)
// modified wasm byte code does not verify // modified wasm byte code does not verify
bad_wasm := make([]byte, len(keepertest.EXAMPLE_WASM_CONTRACT_GZIP)) bad_wasm := make([]byte, len(keepertest.ACCOUNTANT_WASM_B64_GZIP))
copy(bad_wasm, keepertest.EXAMPLE_WASM_CONTRACT_GZIP) copy(bad_wasm, keepertest.ACCOUNTANT_WASM_B64_GZIP)
bad_wasm[100] = bad_wasm[100] ^ 0x40 bad_wasm[100] = bad_wasm[100] ^ 0x40
// create vaa with the hash of the "valid" wasm // create vaa with the hash of the "valid" wasm
v = generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload) v = generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
@ -114,7 +119,7 @@ func TestWasmdStoreCode(t *testing.T) {
assert.ErrorIs(t, err, types.ErrInvalidHash) assert.ErrorIs(t, err, types.ErrInvalidHash)
// Sending to wrong module is error // Sending to wrong module is error
payload_wrong_module := createWasmStoreCodePayload(keepertest.EXAMPLE_WASM_CONTRACT_GZIP) payload_wrong_module := createWasmStoreCodePayload(keepertest.ACCOUNTANT_WASM_B64_GZIP)
// tamper with the module id // tamper with the module id
payload_wrong_module[16] = 0xff payload_wrong_module[16] = 0xff
v = generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload_wrong_module) v = generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload_wrong_module)
@ -146,13 +151,13 @@ func TestWasmdInstantiateContract(t *testing.T) {
msgServer := keeper.NewMsgServerImpl(*k) msgServer := keeper.NewMsgServerImpl(*k)
// First we need to upload code that we can instantiate. // First we need to upload code that we can instantiate.
payload := createWasmStoreCodePayload(keepertest.EXAMPLE_WASM_CONTRACT_GZIP) payload := createWasmStoreCodePayload(keepertest.ACCOUNTANT_WASM_B64_GZIP)
v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload) v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal() vBz, err := v.Marshal()
assert.NoError(t, err) assert.NoError(t, err)
res, err := msgServer.StoreCode(context, &types.MsgStoreCode{ res, err := msgServer.StoreCode(context, &types.MsgStoreCode{
Signer: signer.String(), Signer: signer.String(),
WASMByteCode: keepertest.EXAMPLE_WASM_CONTRACT_GZIP, WASMByteCode: keepertest.ACCOUNTANT_WASM_B64_GZIP,
Vaa: vBz, Vaa: vBz,
}) })
assert.NoError(t, err) assert.NoError(t, err)
@ -272,7 +277,7 @@ func TestWasmdMigrateContract(t *testing.T) {
// First we need to (1) upload some codes and (2) instantiate. // First we need to (1) upload some codes and (2) instantiate.
// (1) upload // (1) upload
payload := createWasmStoreCodePayload(keepertest.EXAMPLE_WASM_CONTRACT_GZIP) payload := createWasmStoreCodePayload(keepertest.ACCOUNTANT_WASM_B64_GZIP)
code_ids := []uint64{} code_ids := []uint64{}
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload) v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
@ -280,7 +285,7 @@ func TestWasmdMigrateContract(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
res, err := msgServer.StoreCode(context, &types.MsgStoreCode{ res, err := msgServer.StoreCode(context, &types.MsgStoreCode{
Signer: signer.String(), Signer: signer.String(),
WASMByteCode: keepertest.EXAMPLE_WASM_CONTRACT_GZIP, WASMByteCode: keepertest.ACCOUNTANT_WASM_B64_GZIP,
Vaa: vBz, Vaa: vBz,
}) })
assert.NoError(t, err) assert.NoError(t, err)
@ -411,5 +416,98 @@ func TestWasmdMigrateContract(t *testing.T) {
Vaa: vBz, Vaa: vBz,
}) })
assert.ErrorIs(t, err, types.ErrUnknownGovernanceAction) assert.ErrorIs(t, err, types.ErrUnknownGovernanceAction)
}
// This specifically tests the modify vaa in accountant
func TestWasmdAccountantContractModify(t *testing.T) {
k, wasmd, permissionedWasmd, ctx := keepertest.WormholeKeeperAndWasmd(t)
_ = permissionedWasmd
guardians, privateKeys := createNGuardianValidator(k, ctx, 10)
_ = privateKeys
k.SetConfig(ctx, types.Config{
GovernanceEmitter: vaa.GovernanceEmitter[:],
GovernanceChain: uint32(vaa.GovernanceChain),
ChainId: uint32(vaa.ChainIDWormchain),
GuardianSetExpiration: 86400,
})
signer_bz := [20]byte{}
signer := sdk.AccAddress(signer_bz[:])
set := createNewGuardianSet(k, ctx, guardians)
context := sdk.WrapSDKContext(ctx)
msgServer := keeper.NewMsgServerImpl(*k)
// First we need to (1) upload some codes and (2) instantiate.
// (1) upload
payload := createWasmStoreCodePayload(keepertest.ACCOUNTANT_WASM_B64_GZIP)
v := generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, err := v.Marshal()
assert.NoError(t, err)
res, err := msgServer.StoreCode(context, &types.MsgStoreCode{
Signer: signer.String(),
WASMByteCode: keepertest.ACCOUNTANT_WASM_B64_GZIP,
Vaa: vBz,
})
assert.NoError(t, err)
code_id := res.CodeID
// (2) instantiate
payload = createWasmInstantiatePayload(code_id, "accountant", "{}")
v = generateVaa(set.Index, privateKeys, vaa.ChainID(vaa.GovernanceChain), payload)
vBz, _ = v.Marshal()
instantiate, err := msgServer.InstantiateContract(context, &types.MsgInstantiateContract{
Signer: signer.String(),
CodeID: code_id,
Label: "accountant",
Msg: []byte("{}"),
Vaa: vBz,
})
require.NoError(t, err)
contract_addr, err := sdk.AccAddressFromBech32(instantiate.Address)
require.NoError(t, err)
token_address := [32]byte{}
for i := 0; i < len(token_address); i++ {
token_address[i] = 0x7c
}
// construct the modify balance vaa
modify_msg := vaa.BodyTokenBridgeModifyBalance{
Module: "TokenBridge",
TargetChainID: vaa.ChainIDWormchain,
Sequence: uint64(lastestSequence),
ChainId: vaa.ChainIDSolana,
TokenChain: vaa.ChainIDSolana,
TokenAddress: token_address,
Kind: 1, // Add
Amount: big.NewInt(1),
Reason: "test modify",
}
ts := time.Date(2012, 12, 12, 12, 12, 12, 12, time.UTC)
modify_vaa := vaa.CreateGovernanceVAA(ts, 1, 1, set.Index, modify_msg.Serialize())
*modify_vaa = signVaa(*modify_vaa, privateKeys)
vBz, err = modify_vaa.Marshal()
require.NoError(t, err)
// construct the `SubmitVAAs` payload
vBzBase64 := base64.RawStdEncoding.EncodeToString(vBz)
execute_msg := fmt.Sprintf(`{"submit_vaas": {"vaas": ["%s"]}}`, vBzBase64)
fmt.Println("submit_vaas: ", execute_msg)
// first query the balance and expect an error
token_address_hex := hex.EncodeToString(token_address[:])
query_msg := fmt.Sprintf(`{"balance" : { "chain_id": %d, "token_chain": %d, "token_address": "%s"}}`, vaa.ChainIDSolana, vaa.ChainIDSolana, token_address_hex)
_, err = wasmd.QuerySmart(ctx, contract_addr, []byte(query_msg))
require.Error(t, err)
// Now we can test sending Modify VAA to accountant
wasmResponse, err := permissionedWasmd.Execute(ctx, contract_addr, signer, []byte(execute_msg), []sdk.Coin{})
_ = wasmResponse
require.NoError(t, err)
// Query the balance and expect no error
_, err = wasmd.QuerySmart(ctx, contract_addr, []byte(query_msg))
require.NoError(t, err)
} }

View File

@ -174,6 +174,12 @@ func TestVerifySignature(t *testing.T) {
var lastestSequence = 1 var lastestSequence = 1
func signVaa(vaaToSign vaa.VAA, signers []*ecdsa.PrivateKey) vaa.VAA {
for i, key := range signers {
vaaToSign.AddSignature(key, uint8(i))
}
return vaaToSign
}
func generateVaa(index uint32, signers []*ecdsa.PrivateKey, emitterChain vaa.ChainID, payload []byte) vaa.VAA { func generateVaa(index uint32, signers []*ecdsa.PrivateKey, emitterChain vaa.ChainID, payload []byte) vaa.VAA {
v := vaa.VAA{ v := vaa.VAA{
Version: uint8(1), Version: uint8(1),
@ -188,10 +194,7 @@ func generateVaa(index uint32, signers []*ecdsa.PrivateKey, emitterChain vaa.Cha
Payload: payload, Payload: payload,
} }
lastestSequence = lastestSequence + 1 lastestSequence = lastestSequence + 1
for i, key := range signers { return signVaa(v, signers)
v.AddSignature(key, uint8(i))
}
return v
} }
func resignVaa(v vaa.VAA, signers []*ecdsa.PrivateKey) vaa.VAA { func resignVaa(v vaa.VAA, signers []*ecdsa.PrivateKey) vaa.VAA {
v.Signatures = []*vaa.Signature{} v.Signatures = []*vaa.Signature{}