Skip to content

Commit

Permalink
Revert "feat(cross-chain): add callbackGasPrice to cross-chain package (
Browse files Browse the repository at this point in the history
#121)"

This reverts commit dd9cbde.
  • Loading branch information
yutianwu committed Mar 12, 2023
1 parent a6e2432 commit 2bd2015
Show file tree
Hide file tree
Showing 22 changed files with 122 additions and 245 deletions.
1 change: 1 addition & 0 deletions math/uint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -370,4 +370,5 @@ func (s *uintTestSuite) TestUintBigEndian() {
u2 = u2.SetBytes(u1b)

s.Require().Equal(u1, u2)

}
16 changes: 8 additions & 8 deletions proto/cosmos/auth/v1beta1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ service Query {
option (google.api.http).get = "/cosmos/auth/v1beta1/module_accounts/{name}";
}

// // Bech32Prefix queries bech32Prefix
// //
// // Since: cosmos-sdk 0.46
// rpc Bech32Prefix(Bech32PrefixRequest) returns (Bech32PrefixResponse) {
// option (google.api.http).get = "/cosmos/auth/v1beta1/bech32";
// }
// // Bech32Prefix queries bech32Prefix
// //
// // Since: cosmos-sdk 0.46
// rpc Bech32Prefix(Bech32PrefixRequest) returns (Bech32PrefixResponse) {
// option (google.api.http).get = "/cosmos/auth/v1beta1/bech32";
// }

// AddressBytesToString converts Account Address bytes to string
//
Expand Down Expand Up @@ -138,12 +138,12 @@ message QueryModuleAccountByNameResponse {
//// Bech32PrefixRequest is the request type for Bech32Prefix rpc method.
////
//// Since: cosmos-sdk 0.46
// message Bech32PrefixRequest {}
//message Bech32PrefixRequest {}

//// Bech32PrefixResponse is the response type for Bech32Prefix rpc method.
////
//// Since: cosmos-sdk 0.46
// message Bech32PrefixResponse {
//message Bech32PrefixResponse {
// string bech32_prefix = 1;
//}

Expand Down
2 changes: 0 additions & 2 deletions proto/cosmos/crosschain/v1/event.proto
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,4 @@ message EventCrossChain {
string relayer_fee = 8;
// Relayer fee for the ACK or FAIL_ACK package of this cross chain package
string ack_relayer_fee = 9;
// Callback gas price the ACK or FAIL_ACK package
string callback_gas_price = 10;
}
2 changes: 1 addition & 1 deletion proto/cosmos/crosschain/v1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ message QueryParamsResponse {
// QueryCrossChainPackageRequest is the request type for the Query/CrossChainPackage RPC method.
message QueryCrossChainPackageRequest {
uint32 channel_id = 1;
uint64 sequence = 2;
uint64 sequence = 2;
}

// QueryCrossChainPackageResponse is the response type for the Query/CrossChainPackage RPC method.
Expand Down
2 changes: 1 addition & 1 deletion proto/cosmos/crypto/eth/bls/keys.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import "gogoproto/gogo.proto";
option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/eth/bls";

// PubKey defines a bls public key
// Key is the compressed form of the pubkey.
// Key is the compressed form of the pubkey.
message PubKey {
option (gogoproto.goproto_stringer) = false;

Expand Down
8 changes: 4 additions & 4 deletions proto/cosmos/gashub/v1alpha1/gashub.proto
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ message Params {

// MsgGasParams defines gas for a msg type
message MsgGasParams {
option (gogoproto.equal) = true;
option (gogoproto.equal) = true;

string msg_type_url = 1 [(gogoproto.customname) = "MsgTypeUrl"];
string msg_type_url = 1 [(gogoproto.customname) = "MsgTypeUrl"];
// gas_params is the oneof that represents either fixed_gas_params or dynamic_gas_params
oneof gas_params {
// fixed_type specifies fixed type gas params.
Expand All @@ -34,14 +34,14 @@ message MsgGasParams {
}
// FixedGasParams defines the parameters for fixed gas type.
message FixedGasParams {
option (gogoproto.equal) = true;
option (gogoproto.equal) = true;

uint64 fixed_gas = 1 [(gogoproto.customname) = "FixedGas"];
}

// DynamicGasParams defines the parameters for dynamic gas type.
message DynamicGasParams {
option (gogoproto.equal) = true;
option (gogoproto.equal) = true;

uint64 fixed_gas = 1 [(gogoproto.customname) = "FixedGas"];
uint64 gas_per_item = 2 [(gogoproto.customname) = "GasPerItem"];
Expand Down
2 changes: 1 addition & 1 deletion proto/cosmos/gashub/v1alpha1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ message MsgUpdateMsgGasParams {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;

string from = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string from = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
repeated MsgGasParams new_params_set = 2;
}

Expand Down
3 changes: 1 addition & 2 deletions proto/cosmos/oracle/v1/event.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
syntax = "proto3";
package cosmos.oracle.v1;


option go_package = "github.com/cosmos/cosmos-sdk/x/oracle/types";

// EventPackageClaim is emitted when a cross chain package is processed
Expand All @@ -26,6 +27,4 @@ message EventPackageClaim {
string relayer_fee = 9;
// Relayer fee paid for the ACK or FAIL_ACK package
string ack_relayer_fee = 10;
// Callback gas price the ACK or FAIL_ACK package
string callback_gas_price = 11;
}
16 changes: 8 additions & 8 deletions proto/cosmos/oracle/v1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ message MsgClaim {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;

string from_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
uint32 src_chain_id = 2;
uint32 dest_chain_id = 3;
uint64 sequence = 4;
uint64 timestamp = 5;
bytes payload = 6;
repeated fixed64 vote_address_set = 7;
bytes agg_signature = 8;
string from_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
uint32 src_chain_id = 2;
uint32 dest_chain_id = 3;
uint64 sequence = 4;
uint64 timestamp = 5;
bytes payload = 6;
repeated fixed64 vote_address_set = 7;
bytes agg_signature = 8;
}

// MsgClaimResponse defines the Msg/Claim response type
Expand Down
4 changes: 2 additions & 2 deletions proto/cosmos/params/v1beta1/params.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ message ParameterChangeProposal {
string title = 1;
string description = 2;
repeated ParamChange changes = 3 [(gogoproto.nullable) = false];
bool cross_chain = 4; // flag for cross chain proposal
repeated string addresses = 5; // used with cross_chain field to specify destination smart contract address(es)
bool cross_chain = 4; // flag for cross chain proposal
repeated string addresses = 5; // used with cross_chain field to specify destination smart contract address(es)
}

// ParamChange defines an individual parameter change, for use in
Expand Down
4 changes: 2 additions & 2 deletions proto/cosmos/slashing/v1beta1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ message MsgImpeach {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;

string from = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string from = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}

// MsgImpeachResponse defines the Msg/Impeach response type.
Expand Down
6 changes: 3 additions & 3 deletions proto/cosmos/staking/v1beta1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ message MsgCreateValidator {

string from = 8 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string relayer_address = 9 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string relayer_bls_key = 10;
string relayer_bls_key = 10;
}

// MsgCreateValidatorResponse defines the Msg/CreateValidator response type.
Expand All @@ -87,8 +87,8 @@ message MsgEditValidator {
string min_self_delegation = 4
[(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"];

string relayer_address = 5 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string relayer_bls_key = 6; // The BLS pubkey for the authorized relayer
string relayer_address = 5 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string relayer_bls_key = 6; // The BLS pubkey for the authorized relayer
}

// MsgEditValidatorResponse defines the Msg/EditValidator response type.
Expand Down
12 changes: 6 additions & 6 deletions proto/cosmos/tx/v1beta1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -102,30 +102,30 @@ message SignDocEip712 {
// chain_id is the identifier of the chain this transaction targets.
// It prevents signed transactions from being used on another chain by an
// attacker.
uint64 chain_id = 1 [(gogoproto.jsontag) = "chain_id"];
uint64 chain_id = 1[(gogoproto.jsontag) = "chain_id"];

// account_number is the account number of the account in state.
uint64 account_number = 2 [(gogoproto.jsontag) = "account_number"];
uint64 account_number = 2[(gogoproto.jsontag) = "account_number"];

// sequence is the sequence number of the signing account.
uint64 sequence = 3 [(gogoproto.jsontag) = "sequence"];
uint64 sequence = 3[(gogoproto.jsontag) = "sequence"];

// Fee is the fee and gas limit for the transaction. The first signer is the
// primary signer and the one which pays the fee. The fee can be calculated
// based on the cost of evaluating the body and doing signature verification
// of the signers. This can be estimated via simulation.
Fee fee = 4 [(gogoproto.nullable) = false];
Fee fee = 4[(gogoproto.nullable) = false];

// msg is the msg in the EIP712 transaction.
google.protobuf.Any msg = 5;

// timeout_height is the transaction's timeout height (if set).
uint64 timeout_height = 6 [(gogoproto.jsontag) = "timeout_height"];
uint64 timeout_height = 6[(gogoproto.jsontag) = "timeout_height"];

// memo is any arbitrary note/comment to be added to the transaction.
// WARNING: in clients, any publicly exposed text should not be called memo,
// but should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122).
string memo = 7 [(gogoproto.jsontag) = "memo"];
string memo = 7[(gogoproto.jsontag) = "memo"];

// Tip is the optional tip used for transactions fees paid in another denom.
// It should be left empty if the signer is not the tipper for this
Expand Down
34 changes: 12 additions & 22 deletions types/cross_chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,11 @@ func (c ExecuteResult) ErrMsg() string {
}

const (
CrossChainFeeLength = 32
CallbackGasPriceLength = 32
PackageTypeLength = 1
TimestampLength = 8
CrossChainFeeLength = 32
PackageTypeLength = 1
TimestampLength = 8

SynPackageHeaderLength = 2*CrossChainFeeLength + CallbackGasPriceLength + TimestampLength + PackageTypeLength
SynPackageHeaderLength = 2*CrossChainFeeLength + TimestampLength + PackageTypeLength
AckPackageHeaderLength = CrossChainFeeLength + TimestampLength + PackageTypeLength
)

Expand All @@ -81,14 +80,10 @@ type PackageHeader struct {
RelayerFee *big.Int // relayer fee is the relayer fee paid to relayer src source chain to dest chain
// ack relayer fee is the relayer fee paid to relayer for the ack or fail ack package if there is any
// Ack and FailAck packages don't have ack relayer fee, since there is no corresponding ack or fail ack packages
AckRelayerFee *big.Int
CallbackGasPrice *big.Int
AckRelayerFee *big.Int
}

var (
NilAckRelayerFee = big.NewInt(0) // For ack packages, the ack relayer fee should be nil, and it would not be encoded into package header
NilCallbackGasPrice = big.NewInt(0) // For ack packages, the callback gas price should be nil, and it would not be encoded into package header
)
var NilAckRelayerFee = big.NewInt(0) // For ack packages, the ack relayer fee should be nil, and it would not be encoded into package header

func EncodePackageHeader(header PackageHeader) []byte {
packageHeader := make([]byte, GetPackageHeaderLength(header.PackageType))
Expand All @@ -104,10 +99,7 @@ func EncodePackageHeader(header PackageHeader) []byte {
// add ack relayer fee to header for syn package
if header.PackageType == SynCrossChainPackageType {
ackRelayerFeeLength := len(header.AckRelayerFee.Bytes())
copy(packageHeader[AckPackageHeaderLength:AckPackageHeaderLength+ackRelayerFeeLength], header.AckRelayerFee.Bytes())

callbackGasPriceLength := len(header.CallbackGasPrice.Bytes())
copy(packageHeader[SynPackageHeaderLength-callbackGasPriceLength:SynPackageHeaderLength], header.CallbackGasPrice.Bytes())
copy(packageHeader[SynPackageHeaderLength-ackRelayerFeeLength:SynPackageHeaderLength], header.AckRelayerFee.Bytes())
}

return packageHeader
Expand All @@ -134,16 +126,14 @@ func DecodePackageHeader(packageHeader []byte) (PackageHeader, error) {
relayerFee := big.NewInt(0).SetBytes(packageHeader[PackageTypeLength+TimestampLength : AckPackageHeaderLength])

header := PackageHeader{
PackageType: packageType,
Timestamp: timestamp,
RelayerFee: relayerFee,
AckRelayerFee: big.NewInt(0),
CallbackGasPrice: big.NewInt(0),
PackageType: packageType,
Timestamp: timestamp,
RelayerFee: relayerFee,
AckRelayerFee: big.NewInt(0),
}

if packageType == SynCrossChainPackageType {
header.AckRelayerFee = big.NewInt(0).SetBytes(packageHeader[AckPackageHeaderLength : AckPackageHeaderLength+CrossChainFeeLength])
header.CallbackGasPrice = big.NewInt(0).SetBytes(packageHeader[SynPackageHeaderLength-CallbackGasPriceLength : SynPackageHeaderLength])
header.AckRelayerFee = big.NewInt(0).SetBytes(packageHeader[AckPackageHeaderLength:SynPackageHeaderLength])
}

return header, nil
Expand Down
2 changes: 1 addition & 1 deletion x/auth/tx/eip712_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package tx
import (
"fmt"
"testing"
"time"

"github.com/stretchr/testify/require"

Expand All @@ -20,6 +19,7 @@ import (
"github.com/cosmos/cosmos-sdk/x/feegrant"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
"github.com/cosmos/cosmos-sdk/x/group"
"time"
)

func TestEIP712Handler(t *testing.T) {
Expand Down
30 changes: 14 additions & 16 deletions x/crosschain/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func (k Keeper) SetParams(ctx sdk.Context, params types.Params) {

// CreateRawIBCPackageWithFee creates a cross chain package with given cross chain fee
func (k Keeper) CreateRawIBCPackageWithFee(ctx sdk.Context, channelID sdk.ChannelID,
packageType sdk.CrossChainPackageType, packageLoad []byte, relayerFee *big.Int, ackRelayerFee *big.Int, callbackGasPrice *big.Int,
packageType sdk.CrossChainPackageType, packageLoad []byte, relayerFee *big.Int, ackRelayerFee *big.Int,
) (uint64, error) {
if packageType == sdk.SynCrossChainPackageType && k.GetChannelSendPermission(ctx, k.GetDestChainID(), channelID) != sdk.ChannelAllow {
return 0, fmt.Errorf("channel %d is not allowed to write syn package", channelID)
Expand All @@ -96,28 +96,26 @@ func (k Keeper) CreateRawIBCPackageWithFee(ctx sdk.Context, channelID sdk.Channe

// Assemble the package header
packageHeader := sdk.EncodePackageHeader(sdk.PackageHeader{
PackageType: packageType,
Timestamp: uint64(ctx.BlockTime().Unix()),
RelayerFee: relayerFee,
AckRelayerFee: ackRelayerFee,
CallbackGasPrice: callbackGasPrice,
PackageType: packageType,
Timestamp: uint64(ctx.BlockTime().Unix()),
RelayerFee: relayerFee,
AckRelayerFee: ackRelayerFee,
})

kvStore.Set(key, append(packageHeader, packageLoad...))

k.IncrSendSequence(ctx, channelID)

err := ctx.EventManager().EmitTypedEvent(&types.EventCrossChain{
SrcChainId: uint32(k.GetSrcChainID()),
DestChainId: uint32(k.GetDestChainID()),
ChannelId: uint32(channelID),
Sequence: sequence,
PackageType: uint32(packageType),
Timestamp: uint64(ctx.BlockTime().Unix()),
PackageLoad: hex.EncodeToString(packageLoad),
RelayerFee: relayerFee.String(),
AckRelayerFee: ackRelayerFee.String(),
CallbackGasPrice: callbackGasPrice.String(),
SrcChainId: uint32(k.GetSrcChainID()),
DestChainId: uint32(k.GetDestChainID()),
ChannelId: uint32(channelID),
Sequence: sequence,
PackageType: uint32(packageType),
Timestamp: uint64(ctx.BlockTime().Unix()),
PackageLoad: hex.EncodeToString(packageLoad),
RelayerFee: relayerFee.String(),
AckRelayerFee: ackRelayerFee.String(),
})
if err != nil {
return 0, err
Expand Down
Loading

0 comments on commit 2bd2015

Please sign in to comment.