Skip to content

Commit

Permalink
Fix: Elrond estimate gas fee (#137)
Browse files Browse the repository at this point in the history
* Fix: Elrond gas limit estimation

* Inc version
  • Loading branch information
isra67 authored Sep 3, 2021
1 parent f995fc5 commit 3aea2cd
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 35 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@tatumio/tatum",
"version": "1.24.0",
"version": "1.24.1",
"description": "Tatum API client allows browsers and Node.js clients to interact with Tatum API.",
"main": "dist/src/index.js",
"repository": "https://github.com/tatumio/tatum-js",
Expand Down
28 changes: 28 additions & 0 deletions src/model/request/egld/EgldBasicTransaction.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import {IsHexadecimal, IsNotEmpty, IsNumberString, IsOptional, Length, MaxLength, Min} from 'class-validator';

export class EgldBasicTransaction {
@IsNotEmpty()
@IsNumberString()
public value: string;

@IsNotEmpty()
@Length(62, 62)
public receiver: string;

@IsNotEmpty()
@Length(62, 62)
public sender: string;

@IsOptional()
@MaxLength(130000)
@IsHexadecimal()
public data?: string;

@IsNotEmpty()
@MaxLength(128)
public chainID: string;

@IsNotEmpty()
@Min(0)
public version: number;
}
32 changes: 3 additions & 29 deletions src/model/request/egld/EgldSendTransaction.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,11 @@
import {IsHexadecimal, IsNotEmpty, IsNumberString, IsOptional, Length, MaxLength, Min} from 'class-validator';
import {IsNotEmpty, IsOptional, Min} from 'class-validator';

// import {PrivateKeyOrSignatureId} from './PrivateKeyOrSignatureId';

export class EgldSendTransaction {
import {EgldBasicTransaction} from './EgldBasicTransaction'
export class EgldSendTransaction extends EgldBasicTransaction {
@IsNotEmpty()
@Min(0)
public nonce: number;

@IsNotEmpty()
@IsNumberString()
public value: string;

@IsNotEmpty()
@Length(62, 62)
public receiver: string;

@IsNotEmpty()
@Length(62, 62)
public sender: string;

@IsNotEmpty()
@Min(0)
public gasPrice: number;
Expand All @@ -27,19 +14,6 @@ export class EgldSendTransaction {
@Min(0)
public gasLimit: number;

@IsOptional()
@MaxLength(130000)
@IsHexadecimal()
public data?: string;

@IsNotEmpty()
@MaxLength(128)
public chainID: string;

@IsNotEmpty()
@Min(0)
public version: number;

@IsOptional()
public signature?: string;
}
1 change: 1 addition & 0 deletions src/model/request/egld/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
export * from './EgldSendTransaction'
export * from './EgldEsdtTransaction'
export * from './EgldBasicTransaction'
export * from './EsdtToken'
export * from './EsdtIssue'
export * from './EsdtTransfer'
Expand Down
18 changes: 13 additions & 5 deletions src/transaction/egld.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
CreateRecord,
Currency,
EgldEsdtTransaction,
EgldBasicTransaction,
EgldSendTransaction,
EsdtAddOrBurnNftQuantity,
EsdtControlChanges,
Expand Down Expand Up @@ -48,18 +49,25 @@ export const egldGetConfig = async () => {
*/
export const egldGetGasPrice = async (): Promise<number> => {
const { data } = await egldGetConfig();
const { config } = data;
return config?.erd_min_gas_price || 1000000000
const price = data?.config?.erd_min_gas_price;
if (price) {
return price;
}
throw Error(data?.data?.returnMessage || 'egld.gasPrice.error')
}

/**
* Estimate Gas limit for the transaction.
*/
export const egldGetGasLimit = async (tx: EgldSendTransaction): Promise<number> => {
export const egldGetGasLimit = async (tx: EgldBasicTransaction): Promise<number> => {
const gasStationUrl = await getEgldClient();
const {data} = await axios.post(`${gasStationUrl}/${process.env.TATUM_API_KEY}/transaction/cost`, tx);
return data?.data?.txGasUnits || 50000;
}
const gas = data?.data?.txGasUnits;
if (gas) {
return gas;
}
throw Error(data?.data?.returnMessage || 'egld.gasLimit.error')
}

/**
* Sign transaction
Expand Down

0 comments on commit 3aea2cd

Please sign in to comment.