Code Monkey home page Code Monkey logo

ethereum's Introduction

ethereum

Build Status

An ethereum RPC 2 client for Dart.

This package provides a client to access the Ethereum JSON RPC API documented here It uses the JSON RPC2 interface and can be configured to use any of the endpoints described except ipc. The client runs on the server using HTTP, and in the browser using both HTTP and web sockets.

The package currently implements most of the eth API and some of the admin API. Work is ongoing to complete the implementation of the admin API.

The mapping of Ethereum RPC data types to Dart types is as follows :-

  • boolean - bool
  • string - String
  • quantity - int
  • data - BigInt

Examples can be found in the examples directory, also the unit test suite contains examples of calling every API interface.

The package was tested against a geth client.

ethereum's People

Contributors

shamblett avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ethereum's Issues

Dart 2 updates

Any issues relating to the Dart upgrade will be tracked here

Capability to unlock an account?

I had previously been developing a simple app to record data into the Ethereum blockchain, and had used the web3.js package because I was in a javascript/Angular/browser world. I've now switched over to a flutter/dart native device application and will be trying to use this package. I had made some accounts using 'geth', and then, in my application, enabled them to send transactions with 'eth.personal.unlockAccount(....)', providing the method with a dynamically-decided-on account. I see here that sending a transaction had a comment that the account must be unlocked, suggesting no inbuilt/automatic way of unlocking an account. Does this package provide any mechanism to do that? I see a 'geth --unlock --password ...', but this suggests firing up another geth instance. I also see a 'geth attach', but this suggests that it sets up an interactive javascript environment to the geth node, and I'm not clear if that's usable. So I'm not clear on how to programmatically unlock an account. I guess one might permanently unlock any accounts that might send transactions, but that seems rather insecure. Any thoughts or guidance on how I might approach this? Thanks.

Ethereum Mnemonics

I have a requirement of generating 12 word mnemonics in flutter app. Is there a way in this library to do this. Moreover , I have a node.js code and how can I run it inside webview flutter.

Can you help a beginner ?

hey there!
I'm eager to implement this and start using this package. I only know Flutter, no idea of React or JavaScript development. Can you give me some guidance about how to implement this and the main functions available to use it?
Use geth goerli and metamask.
Appreciate any help! Telegram: @itsencrypted or [email protected]

Tk you!

I want to use port 443.

Hi

I want to use port 443 at url.
but, code if (!puri.hasPort) in Ethereum::_validateUri() dose not work.

I had setting port 443, but .hasPort is always false.
How can I use 443 port?

Thank you.

getBlockByNumber returns null on Quorum

Hi,

I have this to try out on Quorum.

  Future<EthereumBlock> getBlockByNumber(int blockNumber) async {
    final block = EthereumDefaultBlock()..number = blockNumber;
    return await ethClient.eth.getBlockByNumber(block, full: false);
  }

All I have on the response was:

Ethereum Block :
  Number : null
  Hash : null
  Parent Hash : null
  Miner : null
  Difficulty : null
  Gas Used : null
  Time : null
}

Should be the same for ethereum, or quorum as nothing much has changed I guess.
Can you point in the right direction on how to get the block info?

Thanks.

why not support https?

 void connectParameters(String scheme, String? hostname, [int? port]) {
    if (hostname == null) {
      throw ArgumentError.notNull('Ethereum::connectParameters - hostname');
    }
    if ((scheme != rpcHttpScheme) && (scheme != rpcWsScheme)) {
      throw FormatException(
          'Ethereum::connectParameters - invalid scheme $scheme');
    }
    int? uriPort;
    if (port != null) {
      uriPort = port;
    }
    final uri = Uri(scheme: scheme, host: hostname, port: uriPort);
    _validateUri(uri);
  }

use safeParse to convert address to BigInt

As Ethereum address may start from 0x0..., therefore, use safeParse to convert address to BigInt will lost the leading 0. After that, when convert the BigInt back to address, the beginning 0 will be eat.
This happen during call the "getBalance" function. For example, in /test/ethereum_common.dart, when call client.eth.getBalance, the address is convert from String to BigInt, and inside the getBalance, this same BigInt is convert to String, unfortunately, the leading 0 is cut during conversion.
By the way, "Future getBalance" return an int, which will be wrong when the balance is big enough., so here return BigInt, i.e. "Future getBalance"

Interface update tracker

Raised for users to add what they would like the package to support, also this will track any re-implementation work if the Ethereum RPC interface is updated.

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.