0.1.0-rc.1 • Published 4 years ago

gaster v0.1.0-rc.1

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

Setup

  • Install node package manager npm

  • Install Gaster from npm:

npm install [-g] gaster
  • Or install Gaster from github:
npm install [-g] 'https://github.com/exyte/gaster'

Usage

CLI

$ gaster <address> <options>
  • <address>: string Smart contract address

Options:

  • -s, --startblock: number, optional Start block number. Default: smart contract genesis block.
  • -e, --endblock: number, optional End block number. Default: smart contract last transaction block.
  • -n, --net: boolean, optional Network on which specified smart contract is deployed.
  • -a,--abi: string, optional Path to *.json file with Ethereum smart contracts' ABIs in appropriate format.
  • -r,--recursive: boolean, optional Search transactions recursively through the hierarchy of smart contracts.

ABI JSON Format:

Acceptable format (array of objects):

[
    {
        "address": address1, // address of smart contract
        "abi": abi1, // ABI of smart contract
        "alias": alias // Name of smart contract, optional
    },
    {
        "address": address2,
        "abi": abi2
    },
    ...
]
    

Output:

Transaction information is saved in CSV format. Columns:

  • address — address of the smart contract (receiving party of the transaction)
  • caller — the sending party of the transaction
  • timeStamp — timestamp when the transaction was mined
  • blockNumber — number of block in which the transaction was recorded
  • gasUsed — the exact units of gas that was used for the transaction
  • gasPrice — cost per unit of gas specified for the transaction
  • gas — maximum amount of gas provided for the transaction
  • alias — alias of the smart contract
  • itxs — internal transactions (traces) related to the transaction
  • input — encoded input data
  • method — method called in the transaction
  • parameters — transaction method parameters decoded with ABI of smart contract
  • features — parameters' features

CSV file name has format:

<contract alias>_<startblock>_<endblock>_<batch number>.csv

  • contract alias — smart contract alias, if the alias was not found, it will be "unidentified"
  • startblock — block number on which the search was started
  • endblock — block number on which the search was ended
  • batch number — all smart contract transactions are divided into batches of 1000 transactions

Example:

In terminal run:

gaster 0xF324A8f3e0DbeD9059e5acBfC6C53a31A82b6AfB -s 7713731 -e 7713749 --net ropsten -r

The output should be:

Gaster_7713731_7713749_0.csv

addresscallertimeStampblockNumbergasUsedgasPricegasaliasitxsinputmethodpropertiesfeatures
0xf324a8f3e0dbed9059e5acbfc6c53a31a82b6afb0x4ca389faad549add7124f2b215266ce162d964e715868394857713731557513100000557513Gaster[]0x60806...10032Contract creation Gaster{}[]
0xf324a8f3e0dbed9059e5acbfc6c53a31a82b6afb0x4ca389faad549add7124f2b215266ce162d964e715868396167713738245028100000245028Gaster[{""from"":""0xf324a8f3e0dbed9059e5acbfc6c53a31a82b6afb"",""to"":"""",""contractAddress"":""0x43c685a1a11b8310a21b876d6c7099db62b4dcc9"",""type"":""create"",""input"":"""",""timeStamp"":""1586839616""}]0xfebb0f7ebar{}[]
0xf324a8f3e0dbed9059e5acbfc6c53a31a82b6afb0x4ca389faad549add7124f2b215266ce162d964e7158683970877137446426210000064262Gaster[]0xc5d1c9...00000foo{""term"":""a"",""_store"":""hello""}[{""name"":""_store"",""type"":""length"",""value"":5}]
0xf324a8f3e0dbed9059e5acbfc6c53a31a82b6afb0x4ca389faad549add7124f2b215266ce162d964e7158683979777137476762810000068260Gaster[{""from"":""0xf324a8f3e0dbed9059e5acbfc6c53a31a82b6afb"",""to"":""0x43c685a1a11b8310a21b876d6c7099db62b4dcc9"",""contractAddress"":"""",""type"":""call"",""input"":"""",""timeStamp"":""1586839797""}]0xf32ca...00000qux{""term"":""64"",""_store"":""hi""}[{""name"":""_store"",""type"":""length"",""value"":2}]

Chaster_7713731_7713749_0.csv

addresscallertimeStampblockNumbergasUsedgasPricegasaliasitxsinputmethodpropertiesfeatures
0x43c685a1a11b8310a21b876d6c7099db62b4dcc90x4ca389faad549add7124f2b215266ce162d964e7158683983377137493510710000036507Chaster[]0xc5d1c9...00000foo{""term"":""3e8"",""_store"":""hey""}[{""name"":""_store"",""type"":""length"",""value"":3}]

Library

Example:

const { getGasStats } = require('gaster');

const main = async () => {
      const address = '0xF324A8f3e0DbeD9059e5acBfC6C53a31A82b6AfB';
      const options = {
        net: NetworkName.ROPSTEN,
        recursive: true
      };
      const result = await getGasStats(address, options);
      return result;
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

Gaster is available under the MIT license. See the LICENSE file for more info.