Skip to content

Commit

Permalink
perf: change parameter types of hasOracle, isOracleOnline, chainName …
Browse files Browse the repository at this point in the history
…to bytes32 (#898)

Co-authored-by: todd <[email protected]>
  • Loading branch information
zakir-code and todd-woko authored Jan 15, 2025
1 parent b2816fc commit e704368
Show file tree
Hide file tree
Showing 13 changed files with 75 additions and 123 deletions.
35 changes: 2 additions & 33 deletions contract/bridge_fee_oracle.sol.go

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions contract/crosschain.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,13 @@ func (args *ExecuteClaimArgs) Validate() error {
}

type HasOracleArgs struct {
Chain string `abi:"_chain"`
Chain common.Hash `abi:"_chain"`
ExternalAddress common.Address `abi:"_externalAddress"`
}

func (args *HasOracleArgs) Validate() error {
if args.Chain == "" {
return errors.New("empty chain")
if args.Chain == (common.Hash{}) {
return errors.New("invalid chain")
}
if IsZeroEthAddress(args.ExternalAddress) {
return errors.New("invalid external address")
Expand All @@ -107,13 +107,13 @@ func (args *HasOracleArgs) Validate() error {
}

type IsOracleOnlineArgs struct {
Chain string `abi:"_chain"`
Chain common.Hash `abi:"_chain"`
ExternalAddress common.Address `abi:"_externalAddress"`
}

func (args *IsOracleOnlineArgs) Validate() error {
if args.Chain == "" {
return errors.New("empty chain")
if args.Chain == (common.Hash{}) {
return errors.New("invalid chain")
}
if IsZeroEthAddress(args.ExternalAddress) {
return errors.New("invalid external address")
Expand Down
38 changes: 19 additions & 19 deletions contract/icrosschain.sol.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions precompiles/crosschain/has_oracle.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,19 @@ func (m *HasOracleMethod) IsReadonly() bool {
return true
}

func (m *HasOracleMethod) Run(evm *vm.EVM, contract *vm.Contract) ([]byte, error) {
args, err := m.UnpackInput(contract.Input)
func (m *HasOracleMethod) Run(evm *vm.EVM, vmContract *vm.Contract) ([]byte, error) {
args, err := m.UnpackInput(vmContract.Input)
if err != nil {
return nil, err
}
stateDB := evm.StateDB.(types.ExtStateDB)

router, has := m.Keeper.router.GetRoute(args.Chain)
chainName := contract.Byte32ToString(args.Chain)
router, has := m.Keeper.router.GetRoute(chainName)
if !has {
return nil, fmt.Errorf("chain not support: %s", args.Chain)
}
hasOracle := router.HasOracleAddrByExternalAddr(stateDB.Context(), fxtypes.ExternalAddrToStr(args.Chain, args.ExternalAddress.Bytes()))
hasOracle := router.HasOracleAddrByExternalAddr(stateDB.Context(), fxtypes.ExternalAddrToStr(chainName, args.ExternalAddress.Bytes()))
return m.PackOutput(hasOracle)
}

Expand Down
6 changes: 3 additions & 3 deletions precompiles/crosschain/has_oracle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func (suite *CrosschainPrecompileTestSuite) TestHasOracle() {
malleate: func() (contract.HasOracleArgs, error) {
oracle := suite.SetOracle(true)
return contract.HasOracleArgs{
Chain: suite.chainName,
Chain: contract.MustStrToByte32(suite.chainName),
ExternalAddress: types.ExternalAddrToHexAddr(suite.chainName, oracle.ExternalAddress),
}, nil
},
Expand All @@ -40,7 +40,7 @@ func (suite *CrosschainPrecompileTestSuite) TestHasOracle() {
name: "not has oracle",
malleate: func() (contract.HasOracleArgs, error) {
return contract.HasOracleArgs{
Chain: ethtypes.ModuleName,
Chain: contract.MustStrToByte32(ethtypes.ModuleName),
ExternalAddress: helpers.GenHexAddress(),
}, nil
},
Expand All @@ -50,7 +50,7 @@ func (suite *CrosschainPrecompileTestSuite) TestHasOracle() {
name: "invalid chain",
malleate: func() (contract.HasOracleArgs, error) {
return contract.HasOracleArgs{
Chain: "invalid_chain",
Chain: contract.MustStrToByte32("invalid_chain"),
ExternalAddress: helpers.GenHexAddress(),
}, fmt.Errorf("invalid module name: %s: evm transaction execution failed", "invalid_chain")
},
Expand Down
9 changes: 5 additions & 4 deletions precompiles/crosschain/is_oracle_online.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,20 @@ func (i *IsOracleOnlineMethod) IsReadonly() bool {
return true
}

func (i *IsOracleOnlineMethod) Run(evm *vm.EVM, contract *vm.Contract) ([]byte, error) {
args, err := i.UnpackInput(contract.Input)
func (i *IsOracleOnlineMethod) Run(evm *vm.EVM, vmContract *vm.Contract) ([]byte, error) {
args, err := i.UnpackInput(vmContract.Input)
if err != nil {
return nil, err
}
stateDB := evm.StateDB.(types.ExtStateDB)

router, has := i.Keeper.router.GetRoute(args.Chain)
chainName := contract.Byte32ToString(args.Chain)
router, has := i.Keeper.router.GetRoute(chainName)
if !has {
return nil, fmt.Errorf("chain not support: %s", args.Chain)
}

oracleAddr, has := router.GetOracleAddrByExternalAddr(stateDB.Context(), fxtypes.ExternalAddrToStr(args.Chain, args.ExternalAddress.Bytes()))
oracleAddr, has := router.GetOracleAddrByExternalAddr(stateDB.Context(), fxtypes.ExternalAddrToStr(chainName, args.ExternalAddress.Bytes()))
if !has {
return i.PackOutput(false)
}
Expand Down
Loading

0 comments on commit e704368

Please sign in to comment.