Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(genesis_bridge): revised genesis bridge impl #565

Merged
merged 25 commits into from
Oct 9, 2024

Conversation

mtsitrin
Copy link
Collaborator

Description


Closes #XXX

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow-up issues.

PR review checkboxes:

I have...

  • Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
  • Targeted PR against the correct branch
  • included the correct type prefix in the PR title
  • Linked to the GitHub issue with discussion and accepted design
  • Targets only one GitHub issue
  • Wrote unit and integration tests
  • Wrote relevant migration scripts if necessary
  • All CI checks have passed
  • Added relevant godoc comments
  • Add an issue in the e2e-tests repo if necessary

SDK Checklist

  • Import/Export Genesis
  • Registered Invariants
  • Registered Events
  • Updated openapi.yaml
  • No usage of go map
  • No usage of time.Now()
  • Used fixed point arithmetic and not float arithmetic
  • Avoid panicking in Begin/End block as much as possible
  • No unexpected math Overflow
  • Used sendCoin and not SendCoins
  • Out-of-block compute is bounded
  • No serialized ID at the end of store keys
  • UInt to byte conversion should use BigEndian

Full security checklist here


For Reviewer:

  • Confirmed the correct type prefix in the PR title
  • Reviewers assigned
  • Confirmed all author checklist items have been addressed

After reviewer approval:

  • In case the PR targets the main branch, PR should not be squash merge in order to keep meaningful git history.
  • In case the PR targets a release branch, PR must be rebased.

@mtsitrin mtsitrin linked an issue Sep 30, 2024 that may be closed by this pull request
@mtsitrin mtsitrin marked this pull request as ready for review October 1, 2024 11:47
@mtsitrin mtsitrin requested a review from a team as a code owner October 1, 2024 11:47
@omritoptix omritoptix changed the title feat(genesis_bridge): revised genesis bridge impl feat(genesis_[bridge): revised genesis bridge impl Oct 4, 2024
@omritoptix omritoptix changed the title feat(genesis_[bridge): revised genesis bridge impl feat(genesis-bridge): revised genesis bridge impl Oct 4, 2024
omritoptix
omritoptix previously approved these changes Oct 4, 2024
Copy link
Contributor

@omritoptix omritoptix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice job!
few small suggestions/comments.


// Create the genesis info
genesisInfo := types.GenesisInfo{
GenesisChecksum: "", // TODO: populate checksum value
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

possibly a quick win to validate using json checksum.

golang:

package main

import (
	"crypto/sha256"
	"encoding/hex"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"sort"
)

func getJSONChecksum(filePath string) (string, error) {
	fileContent, err := ioutil.ReadFile(filePath)
	if err != nil {
		return "", err
	}

	var jsonObject map[string]interface{}
	err = json.Unmarshal(fileContent, &jsonObject)
	if err != nil {
		return "", err
	}

	keys := make([]string, 0, len(jsonObject))
	for k := range jsonObject {
		keys = append(keys, k)
	}
	sort.Strings(keys)

	sortedJSON, err := json.Marshal(jsonObject)
	if err != nil {
		return "", err
	}

	hash := sha256.Sum256(sortedJSON)
	return hex.EncodeToString(hash[:]), nil
}

func main() {
	checksum, err := getJSONChecksum("path/to/your/file.json")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println("Checksum:", checksum)
}

and roller can use same method for vadlidate it or through cli:

jq -cS . file.json | sha256sum

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added separate issue #569

x/hub-genesis/keeper/genesis_transfer.go Outdated Show resolved Hide resolved
}

// validate the funds in the module account are equal to the sum of the funds in the genesis accounts
expectedTotal := math.ZeroInt()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we check somewhere the maximun number of genesis accounts allowed?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on the hub side

@mtsitrin mtsitrin changed the title feat(genesis-bridge): revised genesis bridge impl feat(genesis_bridge): revised genesis bridge impl Oct 7, 2024
@omritoptix omritoptix merged commit 623826e into main Oct 9, 2024
7 checks passed
@omritoptix omritoptix deleted the mtsitrin/561-revised-genesis-bridge-impl branch October 9, 2024 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Revised genesis bridge - impl
2 participants