GithubHelp home page GithubHelp logo

coinaddr's Introduction

CoinAddr

Build Status Github Repo Pypi Version Pypi License Pypi Wheel Pypi Versions

Maintainer

Joe Black | [email protected] | github

Introduction

A cryptocurrency address inspection/validation library for python.

Supported currencies

  • bitcoin
  • bitcoin-cash
  • litecoin
  • ethereum
  • ethereum-classic
  • ether-zero
  • dogecoin
  • dashcoin
  • neocoin
  • ripple

Installation

pip3 install coinaddr

Usage

>>> import coinaddr
>>> coinaddr.validate('btc', b'1BoatSLRHtKNngkdXEeobR76b53LETtpyT')
ValidationResult(name='bitcoin', ticker='btc', address=b'1BoatSLRHtKNngkdXEeobR76b53LETtpyT', valid=True, network='main')

Extending

Currencies

To add a new currency, simply instantiate a new coinaddr.currency.Currency class. It will be automatically registered.

from coinaddr import Currency
Currency('testcoin', ticker='ttc', validator='Base58Check',
         networks=dict(
            main=(0x00, 0x05), test=(0x6f, 0xc4)))

To override a default currency, simply instantiate a new currency with that name.

Validators

To add a new validator, simply create a subclass of coinaddr.validation.ValidatorBase with your own implementation that implements the coinaddr.interfaces.IValidator interface. It will be automatically registered.

from zope.interface import implementer
from coinaddr.interfaces import IValidator
from coinaddr import ValidatorBase


@implementer(IValidator)
class NewValidator(ValidatorBase):
    name = 'New'

    @property
    def networks(self):
        return 'testing'

    def validate(self):
        return True

To override a default validator, simply create a new validator with that name.

Changes

coinaddr's People

Contributors

joeblackwaslike avatar lanprijatelj avatar tarceri avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

coinaddr's Issues

Exception when wrong network

Hi, thanks for useful library.

One issue, when checking address with wrong currency, we have exception due to strong typing. Here:

    @property
    def network(self):
        """Return network derived from network version bytes."""
        abytes = base58check.b58decode(
            self.request.address, **self.request.extras)

        nbyte = abytes[0]
        for name, networks in self.request.currency.networks.items():
            if nbyte in networks:
                return name

In case of wrong networks you return None, but expecting string. So we have valid=False and exception.

P.S. more currency structures you can find here: https://github.com/ognus/wallet-address-validator/blob/master/src/currencies.js

not working

coinaddr.validate('ltc', b'1111')

TypeError: ("'network' must be <class 'str'> (got None that is a <class 'NoneType'>).",
print(coinaddr.validate('eth', '111'))

ValidationResult(name='ethereum', ticker='eth', address=b'111', valid=True, network='both')

Not working on windows 10

Hi , I've tried installing coinaddr on windows 10 and i haven't been able the install it , it just throws an error and it seems i can't fix it . Please help with the problem .

I've tried installing with pip install coinaddr and python pip install coinaddr

I'll attach a photo of the error .

IMG_20220607_124426_582

Support EOS and USDT

EOS is the same as ETH and USDT is the same as BTC, so it should be an easy fix to support those two assets.

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.