Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bs-eth

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bs-eth

Web3 like library for ReasonML/Bucklescript

  • 0.4.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
decreased by-50%
Maintainers
1
Weekly downloads
 
Created
Source

Really Basic ReasonML web3 like interface

The goal is for this to support most common web3 functionality in ReasonML as well as some less common functionality that I need.

I am currently learning ReasonML and using this as an exercise at implementing something I understand fairly well (web3) using ReasonMl.

This means the API is likely going to change a lot as I learn more about idiomatic ReasonML and fix stupid beginners mistakes.

Setting up a Provider

There is currently support for the following providers that both live in the Providers namespace:

  • Providers.web3(web3provider) which wraps an existing web3 provider eg. MetaMask
  • Providers.http(url) which is configured with a url to a http based provider like infura

Once you have a provider you pass it as a parameter to all the functions in the Eth namespace.

let provider = Providers.http("https://mainnet.infura.io/bs-eth");
netVersion(provider)
|> Repromise.wait(result => switch (result) {
| Ok(netId) => Js.log("we are on the " ++ string_of_int(netId) ++ " chain")
| Error(msg) => Js.log(msg)
});

Calling functions

All functions in the Eth module return typed Belt.Result in a Repromise. So instead of looking out for rejected calls, do a pattern match.

See the List of Methods implemented for more details.

Roadmap

  • Fetch based https provider interface
  • Wrap javascript Web3 provider (a la metamask)
  • Most common JSON-RPC methods implemented (In bold below)
  • Basic Documentation
  • Solidity ABI codec in native reasonml
  • Add support for WebSocket provider
  • Filter support with support for some sort of reactive streams. Maybe wonka
  • Implement complete wrappers for the JSON-RPC apps methods listed below
  • EIP 712 support
  • Add RLP encoder to be able to encode transactions for signing
  • Allow signing in ReasonML using WASM
  • Support for bs-native

Ethereum JSON-RPC Implemented Methods

The RPC methods currently implemented are:

  • eth_accounts as accounts()
  • eth_blockNumber as blockNumber()
  • eth_call as call()
  • eth_coinbase as coinbase()
  • eth_estimateGas as estimateGas()
  • eth_gasPrice as gasPrice()
  • eth_getBalance as balanceOf()
  • eth_getBlockByNumber as blockByNumber
  • eth_getBlockByHash as blockByHash
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getCode
  • eth_getCompilers
  • eth_getFilterChanges
  • eth_getFilterLogs
  • eth_getLogs
  • eth_getStorageAt
  • eth_getTransactionByHash as transactionByHash()
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionCount as transactionCount()
  • eth_getTransactionReceipt as `transactionReceipt()
  • eth_hashrate
  • eth_mining
  • eth_newBlockFilter
  • eth_newFilter (includes log/event filters)
  • eth_protocolVersion
  • eth_sendTransaction as sendTransaction()
  • eth_sendRawTransaction as sendRawTransaction()
  • eth_subscribe (only for websocket connections. "syncing" subscriptions are not yet supported)
  • eth_unsubscribe (only for websocket connections. "syncing" subscriptions are not yet supported)
  • eth_syncing
  • eth_uninstallFilter
  • net_listening
  • net_peerCount
  • net_version as netVersion()

Non-Standard ganache-cli methods:

  • evm_snapshot
  • evm_revert
  • evm_increaseTime
  • evm_mine as mineBlock()

Keywords

FAQs

Package last updated on 05 May 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc