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: curl https://get.ignite.com/cli@v0.23.0 | bash && mv ignite /usr/local/bin/
- run: cd wormchain && make proto -B && make test - 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. # Run Go linters, Go tests and other outside-of-Tilt things.
lint-and-tests: lint-and-tests:
# The linter is slow enough that we want to run it on the self-hosted runner # 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 { 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 { 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 { func (r BodyWormchainStoreCode) Serialize() []byte {
return serializeBridgeGovernanceVaa(WasmdModuleStr, ActionStoreCode, ChainIDWormchain, r.WasmHash) return serializeBridgeGovernanceVaa(WasmdModuleStr, ActionStoreCode, ChainIDWormchain, r.WasmHash[:])
} }
func (r BodyWormchainInstantiateContract) Serialize() []byte { 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 { if len(module) > 32 {
panic("module longer than 32 byte") panic("module longer than 32 byte")
} }

View File

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