bitcoin_flutter 1.0.7

  • Readme
  • Changelog
  • Example
  • Installing
  • 84

pub version

bitcoin_flutter #

A dart Bitcoin library for Flutter.

Released under the terms of the MIT LICENSE.

Inspired by bitcoinjs

Otherwise, pull requests are appreciated.

Installing #

Flutter Packages

Examples #

import 'package:bitcoin_flutter/bitcoin_flutter.dart';
import 'package:bip39/bip39.dart' as bip39;

main() {
  var seed = bip39.mnemonicToSeed("praise you muffin lion enable neck grocery crumble super myself license ghost");
  var hdWallet = new HDWallet(seed);
  print(hdWallet.address);
  // => 12eUJoaWBENQ3tNZE52ZQaHqr3v4tTX4os
  print(hdWallet.pubKey);
  // => 0360729fb3c4733e43bf91e5208b0d240f8d8de239cff3f2ebd616b94faa0007f4
  print(hdWallet.privKey);
  // => 01304181d699cd89db7de6337d597adf5f78dc1f0784c400e41a3bd829a5a226
  print(hdWallet.wif);
  // => KwG2BU1ERd3ndbFUrdpR7ymLZbsd7xZpPKxsgJzUf76A4q9CkBpY
  
  var wallet = Wallet.fromWIF("Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct");
  print(wallet.address);
  // => 19AAjaTUbRjQCMuVczepkoPswiZRhjtg31
  print(wallet.pubKey);
  // => 03aea0dfd576151cb399347aa6732f8fdf027b9ea3ea2e65fb754803f776e0a509
  print(wallet.privKey);
  // => 3095cb26affefcaaa835ff968d60437c7c764da40cdd1a1b497406c7902a8ac9
  print(wallet.wif);
  // => Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct
}

The below examples are implemented as integration tests:

Running the test suite #

dart run test

Complementing Libraries #

  • BIP39 - Mnemonic generation for deterministic keys
  • BIP32 - BIP32
  • Base58 Check - Base58 check encoding/decoding

LICENSE MIT

0.1.1 #

  • HDWallet from Seed implementation
  • Wallet from WIF implementation

1.0.0 #

  • Transaction implementation

1.0.1 #

  • Add derive and derive path for HD Wallet

1.0.2 #

  • Add sign and verify for HD Wallet and Wallet

1.0.3 #

  • Fix bug testnet BIP32

1.0.4 #

  • Add transaction to index

1.0.5 #

  • Add ECPair to index

1.0.6 #

  • Accept non-standard payment

1.0.7 #

  • Try catch getter privKey, base58Priv, wif
  • Possible to create a neutered HD Wallet

example/bitcoin_flutter_example.dart

import 'package:bitcoin_flutter/bitcoin_flutter.dart';
import 'package:bip39/bip39.dart' as bip39;
main() {
  var seed = bip39.mnemonicToSeed(
      "praise you muffin lion enable neck grocery crumble super myself license ghost");
  var hdWallet = new HDWallet.fromSeed(seed);
  print(hdWallet.address);
  // => 12eUJoaWBENQ3tNZE52ZQaHqr3v4tTX4os
  print(hdWallet.pubKey);
  // => 0360729fb3c4733e43bf91e5208b0d240f8d8de239cff3f2ebd616b94faa0007f4
  print(hdWallet.privKey);
  // => 01304181d699cd89db7de6337d597adf5f78dc1f0784c400e41a3bd829a5a226
  print(hdWallet.wif);
  // => KwG2BU1ERd3ndbFUrdpR7ymLZbsd7xZpPKxsgJzUf76A4q9CkBpY

  var wallet =
      Wallet.fromWIF("Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct");
  print(wallet.address);
  // => 19AAjaTUbRjQCMuVczepkoPswiZRhjtg31
  print(wallet.pubKey);
  // => 03aea0dfd576151cb399347aa6732f8fdf027b9ea3ea2e65fb754803f776e0a509
  print(wallet.privKey);
  // => 3095cb26affefcaaa835ff968d60437c7c764da40cdd1a1b497406c7902a8ac9
  print(wallet.wif);
  // => Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  bitcoin_flutter: ^1.0.7

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter pub get

Alternatively, your editor might support pub get or flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:bitcoin_flutter/bitcoin_flutter.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
78
Health:
Code health derived from static analysis. [more]
82
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
84
Learn more about scoring.

We analyzed this package on Nov 15, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.6.0
  • pana: 0.12.21

Platforms

Detected platforms: Flutter, web, other

No platform restriction found in primary library package:bitcoin_flutter/bitcoin_flutter.dart.

Health issues and suggestions

Document public APIs. (-0.63 points)

160 out of 162 API elements have no dartdoc comment.Providing good documentation for libraries, classes, functions, and other API elements improves code readability and helps developers find and use your API.

Fix lib/src/transaction_builder.dart. (-9.54 points)

Analysis of lib/src/transaction_builder.dart reported 20 hints, including:

line 48 col 7: DO use curly braces for all flow control structures.

line 54 col 7: DO use curly braces for all flow control structures.

line 112 col 7: DO use curly braces for all flow control structures.

line 114 col 7: DO use curly braces for all flow control structures.

line 117 col 7: DO use curly braces for all flow control structures.

Fix lib/src/transaction.dart. (-2.96 points)

Analysis of lib/src/transaction.dart reported 6 hints, including:

line 268 col 7: DO use curly braces for all flow control structures.

line 296 col 7: DO use curly braces for all flow control structures.

line 298 col 7: DO use curly braces for all flow control structures.

line 300 col 7: DO use curly braces for all flow control structures.

line 302 col 7: DO use curly braces for all flow control structures.

Fix lib/src/payments/p2pkh.dart. (-2.48 points)

Analysis of lib/src/payments/p2pkh.dart reported 5 hints:

line 27 col 9: DO use curly braces for all flow control structures.

line 39 col 9: DO use curly braces for all flow control structures.

line 41 col 9: DO use curly braces for all flow control structures.

line 56 col 7: DO use curly braces for all flow control structures.

line 86 col 7: DO use curly braces for all flow control structures.

Fix additional 8 files with analysis or formatting issues. (-2.99 points)

Additional issues in the following files:

  • lib/src/utils/script.dart (3 hints)
  • lib/src/ecpair.dart (2 hints)
  • lib/src/bitcoin_flutter_base.dart (1 hint)
  • lib/src/utils/check_types.dart (Run dartfmt to format lib/src/utils/check_types.dart.)
  • lib/src/utils/constants/op.dart (Run dartfmt to format lib/src/utils/constants/op.dart.)
  • lib/src/utils/magic_hash.dart (Run dartfmt to format lib/src/utils/magic_hash.dart.)
  • lib/src/utils/push_data.dart (Run dartfmt to format lib/src/utils/push_data.dart.)
  • lib/src/utils/varuint.dart (Run dartfmt to format lib/src/utils/varuint.dart.)

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.58.0 <3.0.0
bip32 ^1.0.5 1.0.5
bip39 ^1.0.3 1.0.3
bs58check ^1.0.1 1.0.1
hex ^0.1.2 0.1.2
meta ^1.1.5 1.1.8
pointycastle ^1.0.0-rc2 1.0.2
Transitive dependencies
charcode 1.1.2
collection 1.14.12
convert 2.1.1
crypto 2.1.3
typed_data 1.1.6
Dev dependencies
test ^1.0.0