tx

package
v12.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 3, 2024 License: LGPL-3.0 Imports: 31 Imported by: 0

Documentation

Overview

Copyright 2022 Serv Foundation This file is part of the Serv Network packages.

Serv is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The Serv packages are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with the Serv packages. If not, see https://github.com/twobitedd/serv/blob/main/LICENSE

Copyright 2022 Serv Foundation This file is part of the Serv Network packages.

Serv is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The Serv packages are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with the Serv packages. If not, see https://github.com/twobitedd/serv/blob/main/LICENSE

Copyright 2022 Serv Foundation This file is part of the Serv Network packages.

Serv is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The Serv packages are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with the Serv packages. If not, see https://github.com/twobitedd/serv/blob/main/LICENSE

Copyright 2022 Serv Foundation This file is part of the Serv Network packages.

Serv is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The Serv packages are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with the Serv packages. If not, see https://github.com/twobitedd/serv/blob/main/LICENSE

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultFee = sdk.NewCoin(utils.BaseDenom, sdk.NewIntFromUint64(uint64(feeAmt))) // 0.01 SERV
)

Functions

func CreateEIP712CosmosTx

func CreateEIP712CosmosTx(
	ctx sdk.Context,
	appServ *app.Serv,
	args EIP712TxArgs,
) (sdk.Tx, error)

CreateEIP712CosmosTx creates a cosmos tx for typed data according to EIP712. Also, signs the tx with the provided messages and private key. It returns the signed transaction and an error

func CreateEthTx

func CreateEthTx(
	ctx sdk.Context,
	appServ *app.Serv,
	privKey cryptotypes.PrivKey,
	from sdk.AccAddress,
	dest sdk.AccAddress,
	amount *big.Int,
	nonceIncrement int,
) (*evmtypes.MsgEthereumTx, error)

CreateEthTx is a helper function to create and sign an Ethereum transaction.

If the given private key is not nil, it will be used to sign the transaction.

It offers the ability to increment the nonce by a given amount in case one wants to set up multiple transactions that are supposed to be executed one after another. Should this not be the case, just pass in zero.

func GasLimit

func GasLimit(ctx sdk.Context, from common.Address, data evmtypes.HexString, queryClientEvm evmtypes.QueryClient) (uint64, error)

GasLimit estimates the gas limit for the provided parameters. To achieve this, need to provide the corresponding QueryClient to call the `eth_estimateGas` rpc method. If not provided, returns a default value

func GenerateAddress

func GenerateAddress() common.Address

GenerateAddress generates an Ethereum address.

func NewAccAddressAndKey

func NewAccAddressAndKey() (sdk.AccAddress, *ethsecp256k1.PrivKey)

NewAccAddressAndKey generates a private key and its corresponding Cosmos SDK address.

func NewAddrKey

func NewAddrKey() (common.Address, *ethsecp256k1.PrivKey)

NewAddrKey generates an Ethereum address and its corresponding private key.

func NewSigner

func NewSigner(sk cryptotypes.PrivKey) keyring.Signer

func PrepareCosmosTx

func PrepareCosmosTx(
	ctx sdk.Context,
	appServ *app.Serv,
	args CosmosTxArgs,
) (authsigning.Tx, error)

PrepareCosmosTx creates a cosmos tx and signs it with the provided messages and private key. It returns the signed transaction and an error

func PrepareEIP712CosmosTx

func PrepareEIP712CosmosTx(
	ctx sdk.Context,
	appServ *app.Serv,
	args EIP712TxArgs,
) (client.TxBuilder, error)

PrepareEIP712CosmosTx creates a cosmos tx for typed data according to EIP712. Also, signs the tx with the provided messages and private key. It returns the tx builder with the signed transaction and an error

func PrepareEthTx

func PrepareEthTx(
	txCfg client.TxConfig,
	appServ *app.Serv,
	priv cryptotypes.PrivKey,
	msgs ...sdk.Msg,
) (authsigning.Tx, error)

PrepareEthTx creates an ethereum tx and signs it with the provided messages and private key. It returns the signed transaction and an error

Types

type CosmosTxArgs

type CosmosTxArgs struct {
	// TxCfg is the client transaction config
	TxCfg client.TxConfig
	// Priv is the private key that will be used to sign the tx
	Priv cryptotypes.PrivKey
	// ChainID is the chain's id on cosmos format, e.g. 'serv_43970-1'
	ChainID string
	// Gas to be used on the tx
	Gas uint64
	// GasPrice to use on tx
	GasPrice *sdkmath.Int
	// Fees is the fee to be used on the tx (amount and denom)
	Fees sdk.Coins
	// FeeGranter is the account address of the fee granter
	FeeGranter sdk.AccAddress
	// Msgs slice of messages to include on the tx
	Msgs []sdk.Msg
}

CosmosTxArgs contains the params to create a cosmos tx

type EIP712TxArgs

type EIP712TxArgs struct {
	CosmosTxArgs       CosmosTxArgs
	UseLegacyExtension bool
	UseLegacyTypedData bool
}

type InvalidTx

type InvalidTx struct{}

InvalidTx defines a type, which satisfies the sdk.Tx interface, but holds no valid transaction information.

NOTE: This is used for testing purposes, to serve the edge case of invalid data being passed to functions.

func (InvalidTx) GetMsgs

func (InvalidTx) GetMsgs() []sdk.Msg

func (InvalidTx) ValidateBasic

func (InvalidTx) ValidateBasic() error

type Signer

type Signer struct {
	// contains filtered or unexported fields
}

Signer defines a type that is used on testing for signing MsgEthereumTx

func (Signer) Sign

func (s Signer) Sign(_ string, msg []byte) ([]byte, cryptotypes.PubKey, error)

Sign signs the message using the underlying private key

func (Signer) SignByAddress

func (s Signer) SignByAddress(address sdk.Address, msg []byte) ([]byte, cryptotypes.PubKey, error)

SignByAddress sign byte messages with a user key providing the address.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL