egg-ethereum

1.0.2 • Public • Published

egg-ethereum

NPM version build status Test coverage David deps Known Vulnerabilities npm download

Install

$ npm i egg-ethereum --save

Usage

// {app_root}/config/plugin.js
exports.ethereum = {
  enable: true,
  package: 'egg-ethereum',
};

Configuration

// {app_root}/config/config.default.js
exports.ethereum = {
    // ethereum node
    httpProvider: 'https://rinkeby.infura.io/metamask'
    // Whether to enable parameter verification
    validate: true
};

see config/config.default.js for more detail.

how to use

All methods of the plugin will check the parameters and throw an exception if the parameters are wrong. To disable it, set validate to false in the configuration.

Mounting an instance on the app

app.web3

The app has created a web3 instance for you at startup

App.web3
App.web3.eth
...

app.GasTool

GasTool is a class that has already created an instance of it for you at the beginning.

Attributes

gasLimit - fuel fee limit, default value is '0x44364c5bb0000' gas- the fuel fee provided by the initiator, the default value is '0x13880'

methods

  1. setGas(gas): override the default value    Parameters:      - Object - an object containing gas and gasLimit, which can contain only one of them
  2. getLastestGas(): Get the fuel cost of the transaction    return value:    Object- contains the following information:        - gasPrice- current gas price. This value is determined by the median of the gas prices of the last few blocks.        - gas- the fuel fee provided by the originator        - gasLimit - oil fee limit

Mounting methods on the app

app.createAccounts([amount])

Create one or more Ethereum accounts

Whether asynchronous: yes

parameter

  • amount (optional) - int type, create quantity, default value is 1

return value
Array - multiple account objects

[
    {
        "address": "0x34673af9cacf9af6d61e52f264527af2165d0c29",
        "privatekey": "d5a34df6bd6334fe77cfb07edc2c0288db598bb9186ca577f2c5997373d6b93f",
        "publickey": "b39988cc26dbe84223faa05d0472ab277476e6367db79b39789427bee55f69ade7094b3b81f4c37c2711a53e3f9e57423141db70802302365a0f60ec239760ad"
    },
    {
        "address": "0xf826251e60306d778a9c62e20f5d3f92cc4ac3a8",
        "privatekey": "f2cb16bab57e253407b68cfcdbdcae70a37c8a25c1eb1a1fee60199c59c1d97a",
        "publickey": "798c99c689b7b6ece946b5ea85bd010977f9382904eb0aafe5f7633a1c6230cfd3f6c2e3f2190c61724843404eedcbef357a30cb6f0335d5c1b36f8005d79de3"
    }
]

app.isValidAddress(address)

Check if it is a valid Ethereum address

Whether asynchronous: no

Parameter

  • address-String type, Ethereum address

return value
boolean- indicates that the address is invalid when the return value is false

app.isValidPrivate(privatekey)

Check if it is a valid private key

Whether asynchronous: no

Parameter

  • privatekey-String type, account private key

return value
boolean- indicates that the private key is invalid when the return value is false

app.getBalance(address[,tokenAddress])

Get account balance

Whether asynchronous: yes

Parameter

  • address-String type, Ethereum address
  • tokenAddress (optional) - String type, token contract address, if empty, query Eth balance

return value
Object- balance object

  • balance-String type, balance
  • decimals-String type, precision
  {
      "decimals": "18",
      "balance": "0"
  }

app.getTokenInfo(address)

Query ERC20 specification token information

Whether asynchronous: yes

Parameter

  • address-String type, token contract address

return value
Object-token information object

  • name-String type, token name
  • symbol-String type, token symbol
  • decimals -String type, the precision of the token
  {
      "name": "TIC",
      "symbol": "TIC",
      "decimals": "18"
  }

app.getTransactionInfo(txHash)

Get transaction information based on transaction hash

Whether asynchronous: yes

Parameter

  • txHash-String type, transaction hash value

return value
Object - a transaction object (if the transaction is completed, it also contains receipt information)

{
        "blockHash": "0xf1f0b73dafd2bf44dcec2157a83a2efa16766e44d89f34380713b865294d243d",
        "blockNumber": 3014689,
        "from": "0x34673af9cacf9af6d61e52f264527af2165d0c29",
        "gas": 80000,
        "gasPrice": "1000000086",
        "hash": "0xd1fb747c4a42035a981f73f525b583e929bd7b42abdc233a0e696753295eeae6",
        "input": "0xa9059cbb000000000000000000000000f826251e60306d778a9c62e20f5d3f92cc4ac3a8000000000000000000000000000000000000000000000000002386f26fc10000",
        "nonce": 1,
        "r": "0x19aa0861dede0f87790a753314eeb58144ba834b997ca3628b65f79983f282f1",
        "s": "0x72937a832a17b6409f8209c3a3d650a60e09afe7eb6f23b21810b1c5cb0f2bf9",
        "to": "0x0519751ee117747b12cad3b9259c5d0845894fb8",
        "transactionIndex": 3,
        "v": "0x1b",
        "value": "0",
        "contractAddress": null,
        "cumulativeGasUsed": 186438,
        "gasUsed": 53271,
        "logs": [
            {
                "address": "0x0519751EE117747b12cAd3B9259c5d0845894fB8",
                "blockHash": "0xf1f0b73dafd2bf44dcec2157a83a2efa16766e44d89f34380713b865294d243d",
                "blockNumber": 3014689,
                "data": "0x000000000000000000000000000000000000000000000000002386f26fc10000",
                "logIndex": 1,
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
                    "0x00000000000000000000000034673af9cacf9af6d61e52f264527af2165d0c29",
                    "0x000000000000000000000000f826251e60306d778a9c62e20f5d3f92cc4ac3a8"
                ],
                "transactionHash": "0xd1fb747c4a42035a981f73f525b583e929bd7b42abdc233a0e696753295eeae6",
                "transactionIndex": 3,
                "id": "log_f78df7fd"
            }
        ],
        "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000200000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        "status": true,
        "transactionHash": "0xd1fb747c4a42035a981f73f525b583e929bd7b42abdc233a0e696753295eeae6"
}

View transaction object properties

View transactionReceipt object properties

app.sendTokenTransaction(txParam)

Send token transactions

Whether asynchronous: yes

Parameter

  • txParam-Object type, transaction initial parameter object, should contain the following information:
  • from- sender address
  • privatekey-private key
  • to-recipient address
  • amount-transaction amount
  • tokenAddress - token contract address

return value
Object-object contains the following properties

  • listener-event object
  • txHash-transaction hash
  • txParams-transaction parameters
  {
      "listener": {},
      "txHash": "0xd1fb747c4a42035a981f73f525b583e929bd7b42abdc233a0e696753295eeae6",
      "txParams": {
          "from": "0x34673af9cacf9af6d61e52f264527af2165d0c29",
          "nonce": "0x1",
          "gasPrice": "0x3b9aca56",
          "gasLimit": "0x44364c5bb0000",
          "to": "0x0519751ee117747b12cad3b9259c5d0845894fb8",
          "value": "0x0",
          "gas": "0x13880",
          "data": "0xa9059cbb000000000000000000000000f826251e60306d778a9c62e20f5d3f92cc4ac3a8000000000000000000000000000000000000000000000000002386f26fc10000"
      }
  }

app.sendEthTransaction(txParam)

Send ETH transactions

Whether asynchronous: yes

Parameter

  • txParam-Object type, transaction initial parameter object, should contain the following information:
    • from- sender address
    • privatekey-private key
    • to-recipient address
    • amount-transaction amount

return value
Object-object contains the following properties

  • listener-event object
  • txHash-transaction hash
  • txParams-transaction parameters
  {
      "listener": {},
      "txHash": "0x3b39cdee2bc420abf29e8200c6aa1bed866dce34ac9e3d17bee20477e5185654",
      "txParams": {
          "from": "0x34673af9cacf9af6d61e52f264527af2165d0c29",
          "nonce": "0x0",
          "gasPrice": "0x3b9aecb9",
          "gasLimit": "0x44364c5bb0000",
          "to": "0xf826251e60306d778a9c62e20f5d3f92cc4ac3a8",
          "value": "0x2386f26fc10000",
          "gas": "0x13880",
          "data": "0x"
      }
  }

app.ethSign(params,privatekey)

Transaction signature

Whether asynchronous: no

Parameter

  • params-Object type, should contain the following information:
    • from- sender address
    • nonce - the number of transactions sent by the specified address
    • gasPrice- current gas price. This value is determined by the median of the gas prices of the last few blocks.
    • gas- the fuel fee provided by the originator
    • gasLimit - oil fee limit
    • to-recipient address (or contract address if it is a token transaction)
    • value-the transaction amount (or '0x0' if it is a token transaction)
    • data- If the token transaction is a token transaction, the ETH transaction is '0x'
  • privatekey-String type, sender private key return value
    Object-object contains the following properties
  • tx-signed transaction data
  • txHash-transaction hash

app.estimateGas(from,to,amount[,tokenAddress])

Estimated fuel fee

Whether asynchronous: yes

Parameter

  • from- sender address
  • to-recipient address
  • amount-transaction amount
  • tokenAddress (optional) - token contract address

return value
string-expected cost

app.getGasCost(gasPrice, gasUsed)

Calculate fuel costs

Whether asynchronous: no

Parameter   - gasPrice - the current gas price, which is determined by the median of the gas prices of the last few blocks   - gasUsed - consumption quantity

return value string-expected cost

Questions & Suggestions

Please open an issue here.

License

MIT

Dependents (0)

Package Sidebar

Install

npm i egg-ethereum

Weekly Downloads

0

Version

1.0.2

License

MIT

Unpacked Size

38 kB

Total Files

11

Last publish

Collaborators

  • iamljw