Node fix register chain vaa format error (#2100)

* Node: Fix register chain VAA format error

Change-Id: If60ae2e072da025029b8a817272d8175585baa7d

* sdk_tests: adding sdk vaa tests

* sdk/vaa: share governance serialization

Co-authored-by: Bruce Riley <briley@jumptrading.com>
Co-authored-by: Evan Gray <battledingo@gmail.com>
This commit is contained in:
jumpsiegel 2022-12-12 13:58:38 -06:00 committed by GitHub
parent f39acdbe1c
commit 82651e4c55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 9 deletions

View File

@ -237,6 +237,16 @@ jobs:
- run: curl https://get.ignite.com/cli@v0.23.0 | bash && mv ignite /usr/local/bin/
- run: cd wormchain && make proto -B && make test
# Verify go sdk unit tests
sdk_vaa:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: "1.19.3"
- run: cd sdk/vaa && go test
# Run Go linters, Go tests and other outside-of-Tilt things.
lint-and-tests:
# The linter is slow enough that we want to run it on the self-hosted runner

View File

@ -99,22 +99,26 @@ func (b BodyGuardianSetUpdate) Serialize() []byte {
}
func (r BodyTokenBridgeRegisterChain) Serialize() []byte {
return serializeBridgeGovernanceVaa(r.Module, 1, r.ChainID, r.EmitterAddress)
payload := &bytes.Buffer{}
MustWrite(payload, binary.BigEndian, r.ChainID)
payload.Write(r.EmitterAddress[:])
// target chain 0 = universal
return serializeBridgeGovernanceVaa(r.Module, 1, 0, payload.Bytes())
}
func (r BodyTokenBridgeUpgradeContract) Serialize() []byte {
return serializeBridgeGovernanceVaa(r.Module, 2, r.TargetChainID, r.NewContract)
return serializeBridgeGovernanceVaa(r.Module, 2, r.TargetChainID, r.NewContract[:])
}
func (r BodyWormchainStoreCode) Serialize() []byte {
return serializeBridgeGovernanceVaa(WasmdModuleStr, ActionStoreCode, ChainIDWormchain, r.WasmHash)
return serializeBridgeGovernanceVaa(WasmdModuleStr, ActionStoreCode, ChainIDWormchain, r.WasmHash[:])
}
func (r BodyWormchainInstantiateContract) Serialize() []byte {
return serializeBridgeGovernanceVaa(WasmdModuleStr, ActionInstantiateContract, ChainIDWormchain, r.InstantiationParamsHash)
return serializeBridgeGovernanceVaa(WasmdModuleStr, ActionInstantiateContract, ChainIDWormchain, r.InstantiationParamsHash[:])
}
func serializeBridgeGovernanceVaa(module string, actionId GovernanceAction, chainId ChainID, payload [32]byte) []byte {
func serializeBridgeGovernanceVaa(module string, actionId GovernanceAction, chainId ChainID, payload []byte) []byte {
if len(module) > 32 {
panic("module longer than 32 byte")
}

View File

@ -53,7 +53,7 @@ func TestBodyContractUpgradeSerialize(t *testing.T) {
bodyContractUpgrade := BodyContractUpgrade{ChainID: 1, NewContract: addr}
expected := "00000000000000000000000000000000000000000000000000000000436f72650100010000000000000000000000000000000000000000000000000000000000000004"
serializedBodyContractUpgrade := bodyContractUpgrade.Serialize()
assert.Equal(t, hex.EncodeToString(serializedBodyContractUpgrade), expected)
assert.Equal(t, expected, hex.EncodeToString(serializedBodyContractUpgrade))
}
func TestBodyGuardianSetUpdateSerialize(t *testing.T) {
@ -64,7 +64,7 @@ func TestBodyGuardianSetUpdateSerialize(t *testing.T) {
bodyGuardianSetUpdate := BodyGuardianSetUpdate{Keys: keys, NewIndex: uint32(1)}
expected := "00000000000000000000000000000000000000000000000000000000436f726502000000000001025aaeb6053f3e94c9b9a09f33669435e7ef1beaed5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"
serializedBodyGuardianSetUpdate := bodyGuardianSetUpdate.Serialize()
assert.Equal(t, hex.EncodeToString(serializedBodyGuardianSetUpdate), expected)
assert.Equal(t, expected, hex.EncodeToString(serializedBodyGuardianSetUpdate))
}
func TestBodyTokenBridgeRegisterChainSerialize(t *testing.T) {
@ -73,7 +73,7 @@ func TestBodyTokenBridgeRegisterChainSerialize(t *testing.T) {
bodyTokenBridgeRegisterChain := BodyTokenBridgeRegisterChain{Module: module, ChainID: 1, EmitterAddress: addr}
expected := "000000000000000000000000000000000000000000000000000000007465737401000000010000000000000000000000000000000000000000000000000000000000000004"
serializedBodyTokenBridgeRegisterChain := bodyTokenBridgeRegisterChain.Serialize()
assert.Equal(t, hex.EncodeToString(serializedBodyTokenBridgeRegisterChain), expected)
assert.Equal(t, expected, hex.EncodeToString(serializedBodyTokenBridgeRegisterChain))
}
func TestBodyTokenBridgeUpgradeContractSerialize(t *testing.T) {
@ -82,5 +82,5 @@ func TestBodyTokenBridgeUpgradeContractSerialize(t *testing.T) {
bodyTokenBridgeUpgradeContract := BodyTokenBridgeUpgradeContract{Module: module, TargetChainID: 1, NewContract: addr}
expected := "00000000000000000000000000000000000000000000000000000000746573740200010000000000000000000000000000000000000000000000000000000000000004"
serializedBodyTokenBridgeUpgradeContract := bodyTokenBridgeUpgradeContract.Serialize()
assert.Equal(t, hex.EncodeToString(serializedBodyTokenBridgeUpgradeContract), expected)
assert.Equal(t, expected, hex.EncodeToString(serializedBodyTokenBridgeUpgradeContract))
}