diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 37c28439c..b888db751 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/sdk/vaa/payloads.go b/sdk/vaa/payloads.go index 3c5bc8481..bfe8015c1 100644 --- a/sdk/vaa/payloads.go +++ b/sdk/vaa/payloads.go @@ -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") } diff --git a/sdk/vaa/payloads_test.go b/sdk/vaa/payloads_test.go index 832e6e8c9..2ac0dc34c 100644 --- a/sdk/vaa/payloads_test.go +++ b/sdk/vaa/payloads_test.go @@ -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)) }