Giter Site home page Giter Site logo

counterpartyxcp / counterparty-core Goto Github PK

View Code? Open in Web Editor NEW
286.0 61.0 207.0 24.96 MB

Counterparty Protocol Reference Implementation

Home Page: http://counterparty.io

License: MIT License

Python 81.12% Dockerfile 0.05% Rust 0.93% API Blueprint 17.90%

counterparty-core's Introduction

PyTest Bandit CodeQL PyLint

License Scanner Docker Docker Compose

Counterparty Core is the reference implementation of the Counterparty Protocol, an extension to the Bitcoin protocol which implements a number of features that Bitcoin itself does not offer. These include token issuance, a fully decentralized and trustless asset exchange, contracts for difference, native oracles and trustless gaming. Counterparty works by ‘writing in the margins’ of Bitcoin transactions, and all Counterparty transactions are Bitcoin transactions with additional data that the Counterparty software can read and interpret.

See the official project documentation for more information, and for instructions on installing and running the Counterparty software.

counterparty-core's People

Contributors

adamkrellenstein avatar btcdrak avatar chiguireitor avatar cryptcoin-junkey avatar cryptonaut420 avatar deweller avatar droplister avatar gotcha avatar ignat99 avatar jdogresorg avatar jotapea avatar jxchen avatar kanzure avatar khan-faiz avatar littleskunk avatar longhoangwkm avatar mattmarcello avatar millz0r avatar ouziel avatar ouziel-slama avatar ouzielslama avatar pataegrillo avatar rippler avatar robby-d avatar rubensayshi avatar unsystemizer avatar warrenpuffett avatar wasthatawolf avatar windsok avatar wseng 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

counterparty-core's Issues

TX rejected', 'code': -22, unsigned tx:

0100000001c89e23e1f025a50bbf45bf220f1af59800246858700321af5c8e81d02da7996f02000 0003237366139313430316461613038613431373362363265303030653364323562393061313663 37656535326338653138386163ffffffff020000000000000000386a36434e54525052545900000 00a000000000000000100000002540be40000000000000000000000000005e2f540012c00000000 00002710c0670000000000001976a91401daa08a4173b62e000e3d25b90a16c7ee52c8e188ac000 00000

'"NoneType" object is not subscriptable' error from bitcoind returning blank transaction

It seems that bitcoind's getrawtransaction sometimes returns an empty/blank transaction for some people, which causes the following error:

Traceback (most recent call last):
  File "/home/local/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 504, in <module>
    blocks.follow()
  File "/home/local/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 402, in follow
    source, destination, btc_amount, fee, data = get_tx_info(tx)
  File "/home/local/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 307, in get_tx_info
    for vout in tx['vout']:
TypeError: 'NoneType' object is not subscriptable

In my case, I tried rerunning bitcoind with --txindex=1 --reindex=1 to no avail. Same issue (although I'm not ruling out user error on my end :).

This happens due to bitcoind's JSON RPC getrawtransaction returning:

{'result': None, 'id': 0, 'error': {'message': 'No information available about transaction', 'code': -5}}

Two recommended things:

  • Do better error checking from bitcoind api responses (especially where there is an 'error' attribute or "'result': None" in the data output)
  • Figure out why bitcoind is returning this in some cases, and address

Dropped market command

README describes the very useful "market" command, but the latest version does not support it. Is this a mistake in the client or in the docs? And if it's the docs, what is there to replace "market"? What's the new way to view all open orders?

Check -txindex first, time behind second

Currently, if you let bitcoind built its db with -txindex=0, counterpartyd will gradually complain about bitcoind being behind until it is up-to-date. At this time, counterpartyd will complain that -txindex==0. Thus, bitcoind needs to be run with -txindex=1, and the entire index rebuilt.

Instead, let's first check to make sure that the db is built with -txindex==1, and only then check how far behind it is.

TypeError: 'str' does not support the buffer interface

Block: 292989
Send: 2016 CAKE from 1NEXRoL96NKqehPdsXVVV9LVf3F9AgZiBc to 19FCbipRycHLaDF6WV8zpmBDSrh8oqqGrh (cc19e3c26d4ece96bf5eccf411e0752051114a032011244348127047d9a6a79d) [valid]
Block: 292990
Block: 292991
Block: 292992
Block: 292993
Block: 292994
Block: 292995
Block: 292996
Block: 292997
Block: 292998
Block: 292999
Block: 293000
Traceback (most recent call last):
  File "counterpartyd.py", line 795, in <module>
    blocks.follow(db)
  File "/home/bryan/local/counterparty/counterpartyd/lib/blocks.py", line 768, in follow
    source, destination, btc_amount, fee, data = get_tx_info(tx, block_index)
  File "/home/bryan/local/counterparty/counterpartyd/lib/blocks.py", line 570, in get_tx_info
    obj1 = ARC4.new(binascii.unhexlify(tx['vin'][0]['txid']))
TypeError: 'str' does not support the buffer interface

The branch is develop and HEAD is:

bryan@bryan:~/local/counterparty/counterpartyd$ git rev-parse HEAD
14c7814a326de1a65f06bd4b423fe8738c4028f3

counterpartyd crashes in issuance.py on testnet transaction

File "counterpartyd/lib/issuance.py", line 135, in parse
problems = validate(db, tx['source'], tx['destination'], asset, amount, divisible, callable_, call_date, call_price, description, block_index=tx['block_index'])
UnboundLocalError: local variable 'asset' referenced before assignment

The testnet transaction is 9a74a23e488b5704c9f0b8beb17c1f2b59de85a30f99e795b5f8ea0d69287597

How to bet

Hello

I used this command to bet, it's failed.
counterpartyd bet --source xx --feed-address xx --bet-type NotEqual --deadline 2014-03-11-17:00:00+0800 --wager 1 --counterwager 1 --target-value 3750 --leverage 5040 --expiration 20

Error msg is like this:
{'message': 'Server error', 'code': -32000, 'data': {'message': '3', 'args': [3], 'type': 'KeyError'}}
Traceback (most recent call last):
File "F:\Amy\counterpartyd\counterpartyd_build\dist\counterpartyd\counterpartyd.py", line 684, in
args.unsigned)
File "F:\Amy\counterpartyd\counterpartyd_build\dist\counterpartyd\counterpartyd.py", line 136, in cli
unsigned_tx_hex = util.api(method, params)
File "F:\Amy\counterpartyd\counterpartyd_build\dist\counterpartyd\lib\util.py", line 52, in api
raise exceptions.RPCError('{}'.format(response_json['error']))
lib.exceptions.RPCError: {'message': 'Server error', 'code': -32000, 'data': {'message': '3', 'args': [3], 'type': 'KeyError'}}

What's wrong with my command? thanks

I have used a simple python program to check the deadline format. The 2014-03-11-17:00:00+0800 is fine.

address command

Create an address command that lists the history of the address argument, e.g. sends, burns, orders, etc.. (The old address command was renamed to 'balances'.)

Market command error

Impressive project!

I'm on Linux Mint x64 and am getting the the error below when I try to run the market command. I can eliminate the error by removing sortby='Price' on line 43 of counterypartyd.py

It would appear that there are some string types in your price column.

Open Orders Traceback (most recent call last): File "./counterpartyd.py", line 614, in <module> market(args.give_asset, args.get_asset) File "./counterpartyd.py", line 43, in market print(str(table.get_string(sortby='Price'))) File "/home/eric/Seafile/main/counterparty/counterpartyenv/lib/python3.3/site-packages/prettytable.py", line 984, i$ get_string rows = self._get_rows(options) File "/home/eric/Seafile/main/counterparty/counterpartyenv/lib/python3.3/site-packages/prettytable.py", line 933, i$ _get_rows rows.sort(reverse=options["reversesort"], key=options["sort_key"]) TypeError: unorderable types: str() < int()

can't say "no" to "run as on startup" question during installation

This is what I get following the docs using this repo:
https://github.com/xnova/counterpartyd_build

2014-02-28 00:58:28,788|DEBUG: RUNNING COMMAND: sudo ln -sf /home/guy/tmp/ripple/counterpartyd_build/run.py /usr/local/bin/counterpartyd
Start counterpartyd automatically on system startup? (y/n): n
Traceback (most recent call last):
File "./setup.py", line 505, in <module>
    main()
File "./setup.py", line 497, in main
    setup_startup(paths, run_as_user, with_counterwalletd)
File "./setup.py", line 302, in setup_startup
    start_choice = input("Start counterpartyd automatically on system startup? (y/n): ")
File "<string>", line 1, in <module>
NameError: name 'n' is not defined

"insufficient bitcoins" error on send

I am now running into this error when attempting to send using v6.6:

lib.exceptions.RPCError: {'code': -32000, 'data': {'type': 'BalanceError', 'message': 'Insufficient bitcoins at address xxxxxxxxxxxxxxxxxx. (Need 0.0003172 BTC.)', 'args': ['Insufficient bitcoins at address xxxxxxxxxxxxxxxxxxxxxx. (Need 0.0003172 BTC.)']}, 'message': 'Server error'}

There are exactly enough bitcoin at this address:

Fee is calculated to finely

Tried placing an order to get BTC and give and asset on testnet and got the following error:

Traceback (most recent call last):
  File "./counterpartyd.py", line 515, in <module>
    fee_provided = util.devise(db, args.fee_provided, 'BTC', 'input')
  File "/root/counterpartyd/lib/util.py", line 552, in devise
    raise exceptions.QuantityError('Divisible assets have only eight decimal places of precision.')
lib.exceptions.QuantityError: Divisible assets have only eight decimal places of precision.

Upon inspecting util.py I found that, indeed, the fee is calculated beyond 8 places.

PHP wrapper

Hi,

Do you know if anyone is working on a PHP wrapper for this project?

cheers,
Alain

Current version of Counterpartyd 04/03 install breaks Crypto module install

:~$ counterpartyd wallet
Traceback (most recent call last):
  File "/home/bitcoin/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 19, in <module>
    from lib import (config, api, util, exceptions, bitcoin, blocks)
  File "/home/bitcoin/counterpartyd_build/dist/counterpartyd/lib/api.py", line 18, in <module>
    from . import (config, bitcoin, exceptions, util)
  File "/home/bitcoin/counterpartyd_build/dist/counterpartyd/lib/bitcoin.py", line 21, in <module>
    from Crypto.Cipher import ARC4
ImportError: No module named 'Crypto'

@xnova I believe this problem is a regression and was previously fixed in dev, but is now broken in Master.

counterpartyd wallet throws error

I get the following error on v6.7 running on master branch when trying "counterpartyd wallet"

Traceback (most recent call last):
File "/home/user/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 756, in
balance = D(util.devise(db, balance['amount'], balance['asset'], 'output'))
KeyError: 'amount'

AUR packages

Hi, I posted the following to the AUR:

Feedback appreciated. I take it there is a graphical user interface, if so I would like to package this as well with some helpful instruction.

Thanks

Refactor tests to avoid tainting library functions

Unit testing is possible without custom unittest params in library functions. Here's a current example:

def get_inputs(source, total_btc_out, unittest=False, unsigned=False):

This could be refactored to work under both unit testing and normal situations without an explicit parameter called unittest.

This is independent of #19 because unit testing can test these functions regardless of the availability/knowledge of the remote rpc server.

How would you like to fill out the documentation for the WhitePaper?

Just curious as I can look to find other repos with documentation and copy where it might be helpful, but not sure if there are specific feature scopes you wish to cover.

let me know the most help you might need here. I forked a copy and I should get to testing. I'm behind on that as well.

ZeroDivisionError exception on testnet v0.6.10

~/counterpartyd_build$ counterpartyd --testnet --testcoin --bitcoind-rpc-port 18332 --rpc-port 14000 server
Status: RESTART
Block: 208617
Traceback (most recent call last):
File "/home/r/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 801, in
blocks.follow(db)
File "/home/r/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 795, in follow
parse_block(db, block_index, block_time)
File "/home/r/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 79, in parse_block
parse_tx(db, tx)
File "/home/r/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 44, in parse_tx
bet.parse(db, tx, message)
File "/home/r/counterpartyd_build/dist/counterpartyd/lib/bet.py", line 130, in parse
counterwager_quantity = int(util.price(wager_quantity, odds, tx['block_index']))
File "/home/r/counterpartyd_build/dist/counterpartyd/lib/util.py", line 51, in price
return fractions.Fraction(numerator, denominator)
File "/usr/lib/python3.2/fractions.py", line 167, in new
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(0, 0)

Counterpartyd server on develop branch throws pycrypto error

Fetch develop branch and then build from today 03/26/14 while trying to install develop branch.

counterpartyd server

Traceback (most recent call last):
File "/home/bitcoin/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 19, in
from lib import (config, api, util, exceptions, bitcoin, blocks)
File "/home/bitcoin/counterpartyd_build/dist/counterpartyd/lib/api.py", line 18, in
from . import (config, bitcoin, exceptions, util)
File "/home/bitcoin/counterpartyd_build/dist/counterpartyd/lib/bitcoin.py", line 21, in
from Crypto.Cipher import ARC4 ImportError: No module named 'Crypto'

cli send failing in 'Invalid params' RPCError

When trying to send using the counterpartyd cli, a following error occurs:

Traceback (most recent call last):
File "/home/me/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 432, in
args.unsigned)
File "/home/me/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 41, in cli
unsigned_tx_hex = util.api(method, params)
File "/home/me/counterpartyd_build/dist/counterpartyd/lib/util.py", line 50, in api
raise exceptions.RPCError('{}'.format(response_json['error']))
lib.exceptions.RPCError: {'message': 'Invalid params', 'code': -32602}

After a while of digging it appears that the problem is a missing bytes() cast for the txin['scriptPubKey']:

bitcoin.py/serialise():

# List of Inputs.
for i in range(len(inputs)):
    txin = inputs[i]
    s += binascii.unhexlify(bytes(txin['txid'], 'utf-8'))[::-1]         # TxOutHash
    s += txin['vout'].to_bytes(4, byteorder='little')   # TxOutIndex

    # FIXME bytes() cast missing here, should be like above?
    script = binascii.unhexlify(txin['scriptPubKey'])
    s += var_int(int(len(script)))                      # Script length
    s += script                                         # Script
    s += b'\xff' * 4                                    # Sequence

'Invalid params' RPCError still happening on counterpartyd send

I am still seeing this error on Ubuntu 13.10 after updating to version 6.5

EDIT: managed to narrow down the error. The error only occurs when there is exactly enough BTC at the address to perform the send. Right now this amount is 0.0003172 BTC. As long as I have more BTC than that the send works fine.

#49

Send with multiple outputs

There could be a send function that sends some number of different assets types, each in different quantities, to multiple addresses.

Suppose Alice, Bob and Carol are transacting on Counterparty. Alice has 4 foobar and 2 widgets. Using this send feature, Alice would be able to create a single transaction that pays 2 foobar and 1 widget to Bob and 2 foobar and 0 widgets to Carol.

counterpartyd error on develop branch v6.7

After parsing the most recent block, counterpartyd throws the following error on v6.7 develop, but not on master:

Traceback (most recent call last):
File "/home/user/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 796, in
blocks.follow(db)
File "/home/user/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 780, in follow
block_index = reorg(db, block_index) # This increments block_index if no reorg. is needed.
File "/home/user/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 656, in reorg
block_hash_see = bitcoin.get_block_hash(block_index)
File "/home/user/counterpartyd_build/dist/counterpartyd/lib/bitcoin.py", line 60, in get_block_hash
return rpc('getblockhash', [block_index])
File "/home/user/counterpartyd_build/dist/counterpartyd/lib/bitcoin.py", line 153, in rpc
raise exceptions.BitcoindError('{}'.format(response_json['error']))
lib.exceptions.BitcoindError: {'code': -1, 'message': 'Block number out of range.'}

Wrong config path in test suite

test_.py uses hardcoded
os.path.expanduser('~') + '/.bitcoin/bitcoin.conf
which is wrong in Windows. It's handled correctly in counterpartyd.py.

I also believe that the Exception should changed to IOError.

Error when python counterpartyd.py command is executed

Git cloned counterpartyd folder, upon running the command "python counterpartyd.py" got error like,
File "counterpartyd.py", line 24
json_print = lambda x: print(json.dumps(x, sort_keys=True, indent=4))
^
SyntaxError: invalid syntax
Why is that ?

Bet API issue

From Bitcoiner:

CREATE_BET_JSON {'jsonrpc': '2.0', 'params': ['mrjqDF6TgNr6U7a8aAS85qpxPrAcfd9BEk', 'mgrNzWZt2Xm7UZyAGqP2r3FUgHf9PaVCwo', 2, 1396576922, 1, 2, 100, 1, 5040, False], 'method': 'create_bet', 'id': 0}

and got this error:

Code: [Select]

CREATE_BET_RESULTS: {'jsonrpc': '2.0', 'id': 0, 'error': {'message': 'Server error', 'code': -32000, 'data': {'message': "global name 'args' is not defined", 'args': ["global name 'args' is not defined"], 'type': 'NameError'}}}

counterpartyd.conf: cmdline syntax, bitcoind SSL support

I would prefer to run counterpartyd from a systemd service file like this:

[Unit]
Description=Counterpartyd server
Wants=bitcoin.service insight.service
After=bitcoin.service insight.service

[Service]
User=counterparty
Group=counterparty
ExecStart=/usr/bin/counterpartyd \
                   --config-file=/etc/counterparty/counterpartyd.conf        \
                   --data-dir=/usr/share/counterparty                        \
                   --log-file=/var/log/counterparty/counterpartyd-server.log \
                   --verbose --force server

[Install]
WantedBy=multi-user.target

as otherwise anyone running ps aux on the machine can see bitcoind, counterpartyd and insight authentication data in plain sight. It would be better if counterpartyd.conf is installed with 0600 permissions and read from as above.

Is this counterpartyd.conf file ok?

[Default]
bitcoind-rpc-connect=127.0.0.1
bitcoind-rpc-port=8332
bitcoind-rpc-user=bitcoin
bitcoind-rpc-password=secret
rpc-host=0.0.0.0
rpc-port=4000
rpc-user=counterparty
rpc-password=predictions
insight-enable=1
insight-connect=127.0.0.1
insight-port=3000
api-num-threads=100
api-request-queue-size=500

If so, I can't seem to get counterpartyd to run with the above conf file and systemd service. I end up having to pass everything on the cmdline.

This is currently workable if bitcoind, insight and counterpartyd (and counterwalletd for that matter) are running on the same physical machine.

Related, do you have any plans to support bitcoind with SSL enabled?

rpcconnect=127.0.0.1
rpcport=8332
rpcuser=bitcoin
rpcpassword=secret
rpcssl=1
rpcallowip=127.0.0.1
rpcsslcertificatechainfile=/etc/bitcoin/server.cert
rpcsslprivatekeyfile=/etc/bitcoin/server.pem
rpcsslciphers=TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH
txindex=1
server=1
tail -f /var/log/counterparty/counterpartyd-server.log
2014-03-22-T23:10:36-0700 Starting new HTTP connection (3): 127.0.0.1
2014-03-22-T23:10:41-0700 Starting new HTTP connection (4): 127.0.0.1
2014-03-22-T23:10:46-0700 Starting new HTTP connection (5): 127.0.0.1
2014-03-22-T23:10:51-0700 Starting new HTTP connection (6): 127.0.0.1
2014-03-22-T23:10:56-0700 Starting new HTTP connection (7): 127.0.0.1
2014-03-22-T23:11:01-0700 Starting new HTTP connection (8): 127.0.0.1
2014-03-22-T23:11:06-0700 Starting new HTTP connection (9): 127.0.0.1
2014-03-22-T23:11:11-0700 Starting new HTTP connection (10): 127.0.0.1
2014-03-22-T23:11:16-0700 Starting new HTTP connection (11): 127.0.0.1
2014-03-22-T23:11:21-0700 Starting new HTTP connection (12): 127.0.0.1

No such asset: CREDIT

I'm getting a no such asset exception that crashed the server and now I can't start it due to said exception. Don't have time to track it down atm but here's the trace:

Status: RESTART
Block: 282020
Traceback (most recent call last):
  File "./counterpartyd.py", line 625, in <module>
    blocks.follow(db)
  File "/home/eric/Seafile/main/counterparty/counterpartyd/lib/blocks.py", line 526, in follow
    parse_block(db, block_index)
  File "/home/eric/Seafile/main/counterparty/counterpartyd/lib/blocks.py", line 52, in parse_block
    order.parse(db, tx, message)
  File "/home/eric/Seafile/main/counterparty/counterpartyd/lib/order.py", line 114, in parse
    get_amount = util.devise(db, get_amount, get_asset, 'output')
  File "/home/eric/Seafile/main/counterparty/counterpartyd/lib/util.py", line 257, in devise
    if not issuances: raise exceptions.AssetError('No such asset: {}'.format(asset))
lib.exceptions.AssetError: No such asset: CREDIT

tx0_give_remaining

The server has crashed for me, can't get it to work. Here's the error message I got -

Status: RESTART
Block: 286524
Order: sell 20.0 XCP at 0.012 BTC/XCP in 10 blocks, with a provided fee of 0.0001 BTC and a required fee of 0.0024 BTC (d9c5a5ad51540a669af693f2e704f550dda159536ff75443c0bbc9fd7a02e0ab) [valid]
Traceback (most recent call last):
File "/home/adam/counterpartyd_build/dist/counterpartyd/counterpartyd.py", line 694, in
blocks.follow(db)
File "/home/adam/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 678, in follow
parse_block(db, block_index, block_time)
File "/home/adam/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 78, in parse_block
parse_tx(db, tx)
File "/home/adam/counterpartyd_build/dist/counterpartyd/lib/blocks.py", line 35, in parse_tx
order.parse(db, tx, message)
File "/home/adam/counterpartyd_build/dist/counterpartyd/lib/order.py", line 107, in parse
match(db, tx)
File "/home/adam/counterpartyd_build/dist/counterpartyd/lib/order.py", line 160, in match
fee = int(D(tx1['fee_required']) * D(forward_amount) / D(tx0_give_remaining))
UnboundLocalError: local variable 'tx0_give_remaining' referenced before assignment

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.