Code Monkey home page Code Monkey logo

nodechain's People

Contributors

0xp3gasus avatar bridgedragon avatar hippocampus-web3 avatar phoenix-web3 avatar swappermarket avatar unusedaccount avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nodechain's Issues

Build a Dockerfile for Terra

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We want to create a Dockerfile to build a Terra node. It's mandatory to accept RPC request in the node.

Use Case(s)

XMR private network for development stage

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We want to add support for a private network in development stage. Monero has no "regtest" native network, we will need to set this network from scratch.

Usefull link: Private network XMR

Use Case(s)

Homogenize the response of broadcastTransaction

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

The method broadcastTransaction should returns broadcasted transaction hash for all chains, not only on ETH.

For BTC:

{"id": 1, "jsonrpc": "2.0", "result": {}}

For ETH:

{"id": 1, "jsonrpc": "2.0", "result": {"broadcasted": "0x5f568e62405b620fa7e8bfc52fa7a8fbdc733e804a9a044eb6202cf7f6d87e85"}}

Use Case(s)

We want to show broadcasted tx data in the UI

Configuring CI/CD for the development environment

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to configure Linting, building and Testing for the test/staging environment.

Use Case(s)

Add Websocket support for ERC-20 Tokens

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to implement the methods:

  • subscribeAddressBalance
  • unsubscribeAddressBalance

Through WebSocket connection to be able to have the balance of an address in real-time.

Both methods logic and JSON RPC schemas need to be implemented.

Use Case(s)

Improve nodechain.py script with start / stop options

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

I think nodechain.py should have an option to (start/stop) the application.

Feature Description

The option would be used like:
nodechain.py [arguments] start
nodechain.py [arguments] stop
nodechain.py stop

When the container is already started/stopped, the script would just throw an error.
If we invoke "stop" only with the currency, all instances ran with that currency would be stopped.

Also, the option to auto detect whether the instance is running, would be preserved. It would be only ran if invoked with (start/stop) arguments.

Use Case(s)

Imagine that we use nodechain.py in any script, and the intention of the script is, for example, restarting nodechain. The supposed script wouldn't know the initial status of nodechain in the way that it is acutally made, so it is impossible to create an script that ends in defined state.

If this issue is implemented, it would be as easy as run nodechain.py [arguments] stop, and nodechain.py [arguments] start afterwards, even if the first command prints some kind of error.

Configuring Jenkins for the production environment

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to configure Jenkins for the production environment.

Use Case(s)

Websocket to view the new blocks on each blockchain

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to extract the new blocks that are consolidated in existing blockchains.

This needs to be a Websocket method that listens for new blocks.
Add Web socket support for ETH and BTC for new blocks

Use Case(s)

Split NodeChain into NodeChain-Connector and NodeChain-Nodes

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

I find the organization of the repos a little messy. Sometimes I want to run NodeChain with my own RPC endpoints, and I have to modify the code manually. To improve the workflow, I'm suggesting three different changes.

1. Create a configuration file
Instead of having all RPC endpoints in the code, we could attach a "configuration.json" file that will be parsed by NC. The standard could be something like:

{
  "networks": {
  "bitcoin": {
    "enabled": true,
    "config": {
      "rpc": "http://blahblah",
      "electrumrpc": "http://blahblah"
    }
  },
  "ethereum": {
    "enabled": true,
    "config": {
      "rpc": "https://blabla"
    }
  }
}

NC will take all configurations from that file, and the configuration file will be set up by a configuration script. The first node ("ethereum", "bitcoin")... could be matching with the name of the package

2. Split into two repositories

Not everyone that runs the Connector wants to run the Dockers, and not everyone running the Dockers wants to run the Connector. Instead of this, we could split everything inti two repos. We could, also, update the init script, allowing the user to setup their own RPC endpoints (for those who do not want to run the Connector and just the native Nodes). It could have as default the RPC of the Connectors, to maintain a compatibility.

3. Upload NodeChain-Connector to Docker Hub

I propose, for better organization, uploading the Dockerfiles (and software) to Docker hub. That way, we will keep splitting the Connector code, the Docker-compose and init script code, and the code of the external software.

Docker-composes will have the image of NC, Bitcoin, Electrum... directly pulled from Docker Hub, which will keep the code and workflow cleaner.

Use Case(s)

Improve buildapi.py to handle kill signals

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

There are some errors in the finalization of buildapi.py when you press Ctrl+C. We want to handle this signal to not show any exceptions.

Use Case(s)

Add Websocket support for Bitcoin Cash

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to implement the methods:

  • subscribeToAddressBalance
  • unsubscribeFromAddressBalance
  • subscribeToNewBlocks
  • unsubscribeFromNewBlocks

Through WebSocket connection to be able to have the balance of an address in real-time.

Both methods logic and JSON RPC schemas need to be implemented.

Documentation must be updated before closing this issue.

Use Case(s)

Websocket to view the new blocks on each blockchain

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to extract the new blocks that are consolidated in existing blockchains.

This needs to be a Websocket method that listens for new blocks.

Use Case(s)

Estimate fee per byte too high

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.

Issue

The method getFeePerByte always returns "1000" it's a very high fee. The method returns "1000" without taking into account the confirmations parameter, returns the same for confirmations: 1 and confirmations: 25

image (3)

EnsureHash function improvements

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.

Issue

Improve and use utils.ensureHash (Connector/eth/utils.py) in every input to ensure hash values

Electrum service: no interface to do request on... gave up

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • Operating system (output of cat /etc/os-release):
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
  • Kernel version (output of uname -sr): Linux 4.15.0-143-generic
  • Architecture (output of uname -m): x86_64
  • Link to your source / Gist:

Issue

When you make a request to BTC API, this error is appearing if the method is using Electrum:

E | daemon.CommandsServer | internal error while executing RPC
Traceback (most recent call last):
  File "/usr/src/app/Electrum/electrum/daemon.py", line 209, in handle
    response['result'] = await f(*params)
  File "/usr/src/app/Electrum/electrum/commands.py", line 144, in func_wrapper
    return await func(*args, **kwargs)
  File "/usr/src/app/Electrum/electrum/commands.py", line 492, in getaddressbalance
    out = await self.network.get_balance_for_scripthash(sh)
  File "/usr/src/app/Electrum/electrum/network.py", line 839, in make_reliable_wrapper
    raise BestEffortRequestFailed('no interface to do request on... gave up.')
electrum.network.BestEffortRequestFailed: no interface to do request on... gave up.

Improve logging in startup script

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We should know what is happening while running the startup script. It is proposed to change the version flag to -V and implement a verbose mode for logging (-v)

Use Case(s)

When starting an api, the user may be waiting for a while without knowing whether Nodechain is working or stuck.

Rename stage to network

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

Every "stage" environmental variable or others, should be changed to network

Use Case(s)

Change Swapper strings to Nodechain string

  • I have read the Readme and the docs and believe that my question is not covered.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.

Issue

There's a couple of "Swapper" names into the repository. We should change this "Swapper*" to "Nodechain*" without breaking any functionality.
P.e: packages/swapper-bitcoin-core/... to packages/nodechain-bitcoin-core/...

Plan strategy for the different stages.

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to plan a strategy to follow for the development of the environments to be followed by the CI/CD.

Use Case(s)

  • A user who wants to develop the application will be using a development environment instead of a production environment.
  • A user who wants to deploy one or more nodes will be using a production environment instead of a development environment.

Rename development to regtest

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

Every development (referring of networks) should be changed to stagenet

Use Case(s)

Abstract and standarize getTransaction() method

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

The enpoint "getTransaction" needs to be standardized for all coins. For that, I've created the following standard, subject to changes.

"transaction":{
   "fee":"xxx",
   "block":"xxx",
   "data":"xxx",
   "transfers":[
      {
         "fromAddress":"xxx",
         "toAddress":"xxx",
         "fee":"xxx",
         "amount":"xxx"
      },
      {
         "fromAddress":"xxx",
         "toAddress":"xxx",
         "fee":"xxx",
         "amount":"xxx"
      }
   ]
}

All of the objets above are self-explaining.

  • The unit of the fee, as in all the project, would be in the lowest unit of the currency (satoshi in btc or wei in ethereum).
  • Each of the transfers have its own fee, depending on the amount of the global fee provided by the sender.
  • The "data" object will contain the specific information of the currency (f.e.: fee per byte, size, gas price...)
  • "transaction" will be null when the specified txid does not exist.
  • "block" will be null when unconfirmed.

Docker-compose for the development environment.

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We propose the creation of a docker-compose for the development environment for each of the currencies supported by NodeChain.

These docker-compose shall have the local blockchain instead of using a production or testing blockchain.

Some of the proposed options for the current currencies are:

  • Ganache (ETH)
  • Bitcoin Regtest (BTC)
  • Bitcoin Cash Regtest (BCH)

Use Case(s)

Having local blockchains will allow development to not have long waiting times between transactions.

New RPC method getTransactionCountForAddressess

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

Create new method getTransactionCountForAddressess as we do with method getAddresBalance and getAddressesBalance. The method will receive an array of addresses as param and return something like that:

[
 { address: 'xxxx', transactionCount: '10' },
 { address: 'yyyy', transactionCount: '0' },
 { address: 'zzzz', transactionCount: '3' }
 .....
]

Use Case(s)

Bitcoin wallet needs to discover all addresses used generated from a secret phrase. To address discovery use the BIP44 strategy. This strategy needs to find 20 unused addresses in a row so the wallet consult transaction count information about tens or hundreds of addresses

Add steps to test different blockchains in development mode

  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I have read the Contributing file of the documentation.

Issue

We want to add every step to execute common commands into Bitcoin, Bitcoin Cash and Ethereum nodes in development mode.

For example, if we execute Bitcoin in development mode, we'll need to create wallets and mine some blocks before executing any transaction.

NodeChain Logo-Icon

  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I have read the Contributing file of the documentation.

Issue

We want to create:

  • Logo of NodeChain
  • Icon of NodeChain

Modify Docker-composes architecture for staging and production environment.

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We propose the modification of the architecture in docker-compose for the staging and production environments for each of the currencies supported by NodeChain.

Current {COIN}TESTNET packages, docker-composes and code should be changed to delete the "TESTNET" part.

This change needs to work with the stages planing in #1

We should also change README to explain the new way to use the stages. Also we need to modify buildapi.py to fit the new changes

Use Case(s)

Having local blockchains will allow development to not have long waiting times between transactions.

Add loggers: ERROR, WARN and LOGS

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

To improve the development experience we need to add logs of the following types:

  • ERROR: Any error on execution.
  • WARN: Warnings when executing the application.
  • LOGS: Things to keep in mind when running the application.

Use Case(s)

Isolate Connector and prepare it to accept data from the script

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

It is intended to separate the logic of the Connector from the logic of the APIs. For this we need to take the connector out of all docker-composes and make it standalone.

In addition, the Connector should have a new /refresh endpoint where it will receive some parameters from the startup script with which it will change the variables of the connector.py files of each corresponding API.

Finally, the endpoint system will change from http://any_server/rpc to http://any_server/<COIN>/rpc to be able to route requests to the different blockchains from a single instance of the connector.

Use Case(s)

Implement endpoints for XMR API

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to implement the following endpoints:

  • checkTxProof( )
  • checkSpendProof( )
  • getHeight( )
  • getTransaction( )
  • getBlockByHash( )
  • getBlockByNumber( )
  • estimateFee( )
  • getAddressBalance( )
  • getAddressesBalance( )

Useful links: Wallet-RPC Daemon-RPC

Use Case(s)

REST API Support

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

NodeChain could support everything following HTTP API (along with JSON RPC), which is more modern and in line with standards.

To accomplish this, I suggest making a new decorator, and attaching it to every call. It could look like:

@rpcutils.httpRestMethod
@rpcutils.rpcMethod
def getAddressHistory(id, params):
(...)
return response

That way, we could accomplish this without much effort.

In my opinion, HTTP REST convention should not be followed to the letter. I do not know a reason to do this, that will add a lot of lines of codes (At least by now.)

Use Case(s)

Add endpoint to check syncronization

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

It would be a good idea to implement an endpoint to check if any blockchain is syncing.

A good response template could be:

coin: ETH
syncing: true
<!-- If syncing -->
startingBlock: '0x384',
currentBlock: '0x386',
highestBlock: '0x454'

Use Case(s)

Add a basic support for Monero (XMR)

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

It proposes to add a basic support for Monero. We will consider a basic support:

  • Docker for testnet and mainnet
  • Basic handling of RPC methods
  • At least one NodeChain RPC method.

Use Case(s)

The following methods will be implemented:

  • checkTxProof( ) -> Prove a transaction by checking its signature.
  • checkSpendProof ( ) -> Prove a spend using a signature. Unlike proving a transaction, it does not requires the destination public address.

Method getBalance always fail for transaction with negative unconfirmed balance

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.

Issue

If you request a balance from an address that is in the process of spending its balance getBalance method returns error 400.

You can test it from https://swapper-dev.netlify.app :

  1. Create a wallet
  2. Get some test BTC from a faucet
  3. Withdraw some of your funds
  4. Try to consult again your balance navigating between swap and wallet sections
  5. You going to see 'Loading....' if you go to the network tab on the browser console you can see rpc call failing for getBalance

image

You can reproduce it from the test on this PR:

#69

Prepare startup script to send petitions to the Connector

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

Después de #60 el Conector estará preparado para aceptar peticiones de actualización. Estas peticiones deberán ser enviadas cada vez que se levante una nueva API.

Use Case(s)

  1. The Connector container is built.
  2. Any API is constructed with the parameters desired by the user.
  3. The script sends an update request to /refresh to the Connector.
  4. The Connector updates the data in the files to route the requests it receives to the newly built containers.

Migrate Documentation to Github pages

  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I have read the Contributing file of the documentation.

Issue

To facilitate the visualization of the documentation, it is proposed to transcribe all the documentation to Github Pages.

ETH/BTC Websocket bugs and improves

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • Link to your source / Gist:

Unify ETH/BTC websocket responses
ConnectionResetError: Cannot write to closing transport
TypeError: 'NoneType' object is not subcriptable in getBlockByNumber

Issue

  • ETH and BTC response formats are different, we should unify them.
  • Add address field to subscribeAddressBalance, getAddressBalance and getAddressesBalance in BTC/BCH/ETH
  • Bitcoin WebSocket accumulates messages when you subscribe and unsubscribe from the same address. Instead of sending you a single message, it sends you as many messages as you have subscribed in the past (I suspect because the subscription info is persisted in Electrum and not only in the Connector).
  • After a while of inactivity in the WebSocket and after connecting and disconnecting several times, when the WebSocket should send a message this error trace appears in the connector logs.
  • TypeError: 'NoneType' object is not subcriptable in getBlockByNumber

Convert number fields into string fields

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

In #28 some fields return a decimal. This fields are typed by number, this makes things hard when you need to parse this into a JS code.

We propose to change this number type to string.

Use Case(s)

New RPC method getAddressesUnspent

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

Create new method getAddressesUnspent as we do with method getAddresBalance and getAddressesBalance. The method will receive an array of addresses as param and return something like that:

[
  {
    address: 'xxxx',
    utxos: [
      {
        status: UtxoStatus,
        txHash: string,
        value: string,
        vout: string
      },
      {
        status: UtxoStatus,
        txHash: string,
        value: string,
        vout: string
      }
    ]
  },
  {
    address: 'xxxx',
    utxos: [
      {
        status: UtxoStatus,
        txHash: string,
        value: string,
        vout: string
      },
      {
        status: UtxoStatus,
        txHash: string,
        value: string,
        vout: string
      }
    ]
  }
  ...
]

Use Case(s)

Bitcoin wallet needs to get all UTXOs from a secret phrase. We need to make tens or hundreds of requests to the getAddressUnspent endpoint so it is best to group them into a single request.

getAddressUnspent test is failing with electrs

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.

Issue

After #13 test getAddressUnspent is failing:

========================================================================================== FAILURES ==========================================================================================
___________________________________________________________________________________ testGetAddressUnspent ____________________________________________________________________________________

    def testGetAddressUnspent():
    
        if "getAddressUnspent" not in RPCMethods:
            logger.printError("getAddressUnspent not loaded in RPCMethods")
            assert False
    
        expected = makeElectrumRequest(GET_ADDRESS_UNSPENT_METHOD, [address1])
    
        got = RPCMethods["getAddressUnspent"](0, {
            ADDRESS: address1
        })
    
        txs = []
    
        for tx in expected:
            txs.append(
                {
                    TX_HASH: tx[TX_HASH_SNAKE_CASE],
                    VOUT: str(tx[TX_POS_SNAKE_CASE]),
                    STATUS: {
                        CONFIRMED: tx[HEIGHT] != 0,
                        BLOCK_HEIGHT: str(tx[HEIGHT])
                    },
                    VALUE: str(tx[VALUE])
                }
            )
    
>       assert json.dumps(got, sort_keys=True) == json.dumps(txs, sort_keys=True)
E       assert '[{"status": ..."vout": "0"}]' == '[{"status": ..."vout": "0"}]'
E         - [{"status": {"blockHeight": "4", "confirmed": true}, "txHash": "35875b91efecac90129100f70a03a782cff22f8701b2ca626d76c0bd4b81e3bb", "value": "5000000000", "vout": "0"}, {"status": {"blockHeight": "130", "confirmed": true}, "txHash": "2fc9d214f2c2c9d56fcc2c61512f95c2d998b9fecbcc9918ff46469666dc3ff0", "value": "5000000000", "vout": "0"}, {"status": {"blockHeight": "12", "confirmed": true}, "txHash": "90b891f1552dda17737d4f00446a94dc6ebe27bbde7f89801ddb28a2223c27fe", "value": "5000000000", "vout": "0"}, {"status": {"blockHeight": "93", "confirmed": true}, "txHash": "2a055...
E         
E         ...Full output truncated (2 lines hidden), use '-vv' to show

tests/btc/test_btc.py:410: AssertionError
====================================================================================== warnings summary ======================================================================================
../../../local/lib/python3.7/abc.py:126
  /usr/local/lib/python3.7/abc.py:126: DeprecationWarning: Inheritance class App from web.Application is discouraged
    cls = super().__new__(mcls, name, bases, namespace, **kwargs)

-- Docs: https://docs.pytest.org/en/stable/warnings.html

---------- coverage: platform linux, python 3.7.12-final-0 -----------
Name                         Stmts   Miss  Cover
------------------------------------------------
btc/__init__.py                  1      0   100%
btc/apirpc.py                  239     50    79%
btc/apiws.py                    51      8    84%
btc/connector.py                15      0   100%
btc/constants.py                93      0   100%
btc/utils.py                    54     16    70%
btc/websockets.py               81     27    67%
logger/__init__.py               0      0   100%
logger/logger.py                 8      1    88%
rpcutils/__init__.py             1      0   100%
rpcutils/constants.py           19      0   100%
rpcutils/errorhandler.py        24      9    62%
rpcutils/rpcconnector.py        23      8    65%
rpcutils/rpcutils.py            56     33    41%
wsutils/__init__.py              1      0   100%
wsutils/broker.py               72     25    65%
wsutils/clientwebsocket.py      24     24     0%
wsutils/constants.py             5      0   100%
wsutils/publishers.py            9      1    89%
wsutils/singleton.py             6      0   100%
wsutils/subscribers.py          54     16    70%
wsutils/topics.py                7      0   100%
wsutils/wsutils.py              15      0   100%
------------------------------------------------
TOTAL                          858    218    75%

================================================================================== short test summary info ===================================================================================
FAILED tests/btc/test_btc.py::testGetAddressUnspent - assert '[{"status": ..."vout": "0"}]' == '[{"status": ..."vout": "0"}]'

Writing Wiki for NodeChain repository

  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I have read the Contributing file of the documentation.

Issue

When looking for information about small details of the implementation of the code as well as the use of the application, it is proposed to collect all this information in a Wiki in the NodeChain repository.

We should add some basic commands for every API in development stage.

Update packages version

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We want to update every package to the last stable version.

Use Case(s)

Improve docker-compose networking

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

To improve the structure of the Docker-compose it is proposed to separate the services in different networks to communicate only with necessary services.

Use Case(s)

Enable CORS for NodeChain API

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature. <
    !-- optional but encouraged, we need people like you -->

Feature Request

Feature Description

Add header: 'Access-Control-Allow-Origin': '*' in API responses for supporting CORS in browsers.

Use Case(s)

As a web client, I want to request NodeChain API from my own domain. Now I'm receiving this error on API requests:

image

Improve buildapy.py to accept command line params

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

To improve the execution of NodeChain, it is proposed that the startup script accepts parameters by console

Use Case(s)

buildapi.py --coin="eth" --network="test" --port=60001 --ssl

Standarize decimal responses

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

To standardize all responses that return a decimal number it is proposed to return all such responses in JSON number type.

Due to the poor implementation of the standard number type in languages like Javascript it may cause some problems in the future to return data as Number instead of String.

Use Case(s)

Replace ElectrumX with ElectRS

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

It is proposed to change ElectrumX to ElectRS due to its higher performance.

This task should create its corresponding Dockerfile.

Use Case(s)

Create a configuration file

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

Instead of having all RPC endpoints in the code, we could attach a "configuration.json" file that will be parsed by NC. The standard could be something like:

{
    "name": "bitcoin",
    "token": "btc",
    "networks": {
      "regtest": {
        "dockerComposePath": "./docker-compose/regtest/btc.yml",
        "configurable": [
          "bitcoincoreRpc",
          "electrumRpc",
          "bitcoincorePort",
          "electrumPort"
        ]
        ...
      },
      ...
  },

NC will take all configurations from that file, and the configuration file will be set up by a configuration script. The startup script will pass this information to the connector by making a request

Use Case(s)

I want to run NodeChain with my own RPC endpoints, and I have to modify the code manually. To improve the workflow, I'm suggesting to have a file

Test coverage up to 80%

  • I have read the Contributing file of the documentation.
  • I have searched the issues (including closed ones) and believe that this is not a duplicate.
  • I am willing to lend a hand to help implement this feature.

Feature Request

Feature Description

We need to implement tests for the application that cover at least 80% of its functionalities.

Use Case(s)

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.