Giter VIP home page Giter VIP logo

gwei-monads's Introduction

fist-full-of-monads

nodejs

Abstract

fist-full-of-monads module enables transaction-dependent computation to be composed without executing the transaction or specifying the Web3 Provider until later.

The requirements for a transaction, particularly gas costs, can be checked in the client code rather than in a protocol library. This is used for benchmarking yGwei/GasEVO.

Usage

Support for multiple architectures

using ES6

import Transaction from 'fist-full-of-monads';
import * as utils from 'fist-full-of-monads/lib/utils';

using ES5

var Transaction = require('fist-full-of-monads');
var utils = require('fist-full-of-monads');

const httpProvider = new Web3.providers.HttpProvider('http://localhost:8545');
const tx = Transaction({
  options: {
    from: '0xe8d3266f3c4f083ab8864b5e04aea7b087044e49',
    to: '0x7967c4f4512195ba83ae8f08ca30f7b145be6cf8',
    value: 1000000,
  },
});

const minedTx = tx.map((txhash, provider) => utils.waitForReceipt(txhash, provider));
const gas = await minedTx.getQuickestGasEstimate(httpProvider);

minedTx.transact(httpProvider)
  .then((receipt) => {
    ...
  })

as a library

function transferTokens(sender, to, amount) {
  const web3 = new Web3();
  const TokenContract = web3.eth.contract(Token.abi).at(Token.address);
  const data = TokenContract.transfer.getData(to, amount);
  const options = { data, from: sender, to: Token.address };
  return Transaction({ options });
}

const tx = transferTokens(
  '0xe8d3266f3c4f083ab8864b5e04aea7b087044e49',
  '0x7967c4f4512195ba83ae8f08ca30f7b145be6cf8',
  1000000
);

const txhash = await tx.transact(provider);

Citation

@incollection{evoprotocol,
    title      = {fist-full-of-monadss},
    year       = {2020},
    booktitle  = {Transactional Benchmarking in Ethereum Virtual Machine},
    series     = {EVO Protocol},
    source      = {https://github.com/evoprotocol/fist-full-of-monads},
}

License

Apache-2.0

gwei-monads's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.