Giter Site home page Giter Site logo

colorcore's Introduction

Open Assets Reference Implementation

The openassets Python package is the reference implementation of the colored coins Open Assets Protocol.

Open Assets is a protocol for issuing and transferring custom digital tokens in a secure way on the Bitcoin blockchain (or any compatible blockchain).

Requirements

The following items are required for using the openassets package:

Installation

Linux, OSX

Using pip:

$ pip install openassets

Or manually from source, assuming all required modules are installed on your system:

$ python ./setup.py install

Windows

  1. Make sure you have Python 3.4 and pip installed

  2. Open the command prompt: Start Menu > Accessories > Command Prompt

  3. Run the following command:

    pip install openassets
    

Overview

The openassets package contains two submodules: the protocol submodule and the transactions submodule.

protocol submodule

The protocol submodule implements the specification in order to interpret Bitcoin transactions as Open Assets transactions.

Usage

This example requires a Bitcoin Core instance running with RPC enabled and the -txindex=1 parameter:

import asyncio
import bitcoin.rpc
import openassets.protocol

@asyncio.coroutine
def main():
    bitcoin.SelectParams('testnet')

    # Create a RPC client for Bitcoin Core
    rpc_client = bitcoin.rpc.Proxy('http://user:pass@localhost:18332')
    # OutputCache implements the interface required for an output cache provider, but does not perform any caching
    cache = openassets.protocol.OutputCache()
    # The transaction provider is a function returning a transaction given its hash
    transaction_provider = asyncio.coroutine(rpc_client.getrawtransaction)
    # Instantiate the coloring engine
    coloring_engine = openassets.protocol.ColoringEngine(transaction_provider, cache, loop)

    transaction_hash = bitcoin.core.lx('864cbcb4b5e083a98aaeaf94443815025bdfb0d35a6fd00817034018b6752ff5')
    output_index = 1
    colored_output = yield from coloring_engine.get_output(transaction_hash, output_index)

    print(colored_output)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

transactions submodule

The transactions submodule contains functions that can be used to build unsigned Open Assets transactions for various purposes.

Usage

This example requires a Bitcoin Core instance running with RPC enabled and the -txindex=1 parameter:

import asyncio
import bitcoin.rpc
import openassets.protocol
import openassets.transactions

@asyncio.coroutine
def main():
    bitcoin.SelectParams('testnet')

    # Create a RPC client for Bitcoin Core
    rpc_client = bitcoin.rpc.Proxy('http://user:pass@localhost:18332')

    # Output script corresponding to address myLPe3P8SE2DyqRwABRwqezxdZxhkYxXYu (in testnet)
    output_script = bitcoin.core.x('76a914c372d85bc2c54384dbc2cb9ef365eb7f15d4a9b688ac')

    # Initialize the coloring engine
    transaction_provider = asyncio.coroutine(rpc_client.getrawtransaction)
    engine = openassets.protocol.ColoringEngine(transaction_provider, openassets.protocol.OutputCache(), loop)

    # Obtain the unspent output for the local wallet
    unspent_outputs = []
    for output in rpc_client.listunspent():
        if output['scriptPubKey'] == output_script:
            unspent_outputs.append(openassets.transactions.SpendableOutput(
                bitcoin.core.COutPoint(output['outpoint'].hash, output['outpoint'].n),
                (yield from engine.get_output(output['outpoint'].hash, output['outpoint'].n))
            ))

    # The minimum valid value for an output is set to 600 satoshis
    builder = openassets.transactions.TransactionBuilder(600)

    # Create the issuance parameters
    issuance_parameters = openassets.transactions.TransferParameters(
        unspent_outputs=unspent_outputs,    # Unspent outputs the coins are issued from
        to_script=output_script,            # The issued coins are sent back to the same address
        change_script=output_script,        # The bitcoin change is sent back to the same address
        amount=1500)                        # Issue 1,500 units of the asset

    # Create the issuance transaction
    # The metadata is left empty and the fees are set to 0.0001 BTC
    transaction = builder.issue(issuance_parameters, metadata=b'', fees=10000)

    print(transaction)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

License

The MIT License (MIT)

Copyright (c) 2014 Flavien Charlon

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

colorcore's People

Contributors

flavien 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

Watchers

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

colorcore's Issues

bitcoind dependency is onerous

Given the chain.com API to look up addresses and transactions, is a local wallet necessary? Running bitcoind means 30GB of disk to hold the blockchain (as of March 2015). Could a sqlite table of issued assets fill the same job? Thanks.

Exploring transactions for particular asset

It would be great if i'll have possibility to explore transactions only with my asset. Analog of block explorer, but only for one asset. There is quantity of transactions in coinprism explorer, but there is now possibility to look for these transactions.

Unable to see incoming colored transactions

Hi,

When receiving colored coins I would like to know the assets and amount that arrive as soon as I see the transaction in bitcoind.

I have tried listunspent, but it only shows me the transactions with at least 1 confirmation. Is there a way to check the assets that are contained in a transaction without using the coinprism explorer?

Any help is highly appreciated.

Regards,
Ganesh

Send to Multiple receipients

I'm looking at the source of openassets and noticed it is possible to specify multiple destinations but colorcore does not support multiple destinations. Would it be technically possible to implement this? I would do the work but before I start with that I would like to know if it's possible.

The strange thing in openassets is that it would add the same source multiple times.

CBitcoinAddressError

I got the problem when I ran the command "getbalance" on testnet. Why is the address wrong?

Traceback (most recent call last):
File "colorcore.py", line 35, in
colorcore.routing.Program.execute()
File "D:\GitHub\colorcore\colorcore\routing.py", line 64, in execute
router.parse(sys.argv[1:])
File "D:\GitHub\colorcore\colorcore\routing.py", line 338, in parse
func(**args)
File "D:\GitHub\colorcore\colorcore\routing.py", line 255, in decorator
self.event_loop.run_until_complete(coroutine_wrapper())
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\asyncio\base_events.py", line 468, in run_until_complete
return future.result()
File "D:\GitHub\colorcore\colorcore\routing.py", line 240, in coroutine_wrapper
result = yield from function(controller, *args, **kwargs)
File "D:\GitHub\colorcore\colorcore\operations.py", line 61, in getbalance
from_address, min_confirmations=self._as_int(minconf), max_confirmations=self._as_int(maxconf))
File "D:\GitHub\colorcore\colorcore\operations.py", line 339, in _get_unspent_outputs
unspent = yield from self.provider.list_unspent(None if address is None else [str(address)], **kwargs)
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\asyncio\coroutines.py", line 212, in coro
res = func(*args, **kw)
File "D:\GitHub\colorcore\colorcore\providers.py", line 87, in list_unspent
return self._proxy.listunspent(addrs=addresses, minconf=min_confirmations, maxconf=max_confirmations)
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\site-packages\bitcoin\rpc.py", line 378, in listunspent
unspent['address'] = CBitcoinAddress(unspent['address'])
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\site-packages\bitcoin\base58.py", line 110, in new
return cls.from_bytes(data, bord(verbyte[0]))
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\site-packages\bitcoin\wallet.py", line 50, in from_bytes
raise CBitcoinAddressError('Version %d not a recognized Bitcoin Address' % nVersion)
bitcoin.wallet.CBitcoinAddressError: Version 196 not a recognized Bitcoin Address

getbalance throws error after first asset from coinprism arrives in the wallet

Hi,

I've set up my local testnet bitcoind and connected colorcore to it. Ive use these parameters for the bitcoin testnet:
version-byte=111
p2sh-version-byte=196
asset-version-byte=115

I was able send Bitcoins to the testnet wallet and
python colorcore.py getbalance
would give me a JSON object with the correct answer.

Now I've created an asset https://testnet.coinprism.info/asset/oZrgafn6vCZjdMb37zNVgcnjkpcnD1yPM5
on testnet.coinprism.com.
I've sent some of these colored coins to my colorcore wallet with this transaction:
https://testnet.coinprism.info/tx/e4ab8f5128f2c3758da34f823fdf714139ebe26cb11c9ca4924bf05b912a8061

I can see in bitcoin-qt that the transfer is confirmed, but now
python colorcore.py getbalance
gives me an exception. Can you please give me an idea why this doesn't work? It's on the testnet, so I can also provide the private key, if required.

Here's the stack trace:

C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore>c:\Python34\python colorcore.py getbalance
Traceback (most recent call last):
File "c:\Python34\lib\site-packages\bitcoin\rpc.py", line 307, in getrawtransaction
r = self._call('getrawtransaction', b2lx(txid), 1 if verbose else 0)
File "c:\Python34\lib\site-packages\bitcoin\rpc.py", line 146, in _call
raise JSONRPCException(response['error'])
bitcoin.rpc.JSONRPCException: msg: 'No information available about transaction' code: -5

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "colorcore.py", line 35, in
colorcore.routing.Program.execute()
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\routing.py", line 64, in execute
router.parse(sys.argv[1:])
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\routing.py", line 338, in parse
func(*_args)
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\routing.py", line 255, in decorator
self.event_loop.run_until_complete(coroutine_wrapper())
File "c:\Python34\lib\asyncio\base_events.py", line 316, in run_until_complete
return future.result()
File "c:\Python34\lib\asyncio\futures.py", line 275, in result
raise self._exception
File "c:\Python34\lib\asyncio\tasks.py", line 234, in _step
result = coro.throw(exc)
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\routing.py", line 240, in coroutine_wrapper
result = yield from function(controller, *args, *_kwargs)
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\operations.py", line 61, in getbalance
from_address, min_confirmations=self._as_int(minconf), max_confirmations=self._as_int(maxconf))
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\operations.py", line 343, in _get_unspent_outputs
output_result = yield from engine.get_output(item['outpoint'].hash, item['outpoint'].n)
File "c:\Python34\lib\site-packages\openassets\protocol.py", line 73, in get_output
colored_outputs = yield from self.color_transaction(transaction)
File "c:\Python34\lib\site-packages\openassets\protocol.py", line 104, in color_transaction
self.get_output(input.prevout.hash, input.prevout.n), loop=self._loop)))
File "c:\Python34\lib\asyncio\futures.py", line 386, in iter
yield self # This tells Task to wait for completion.
File "c:\Python34\lib\asyncio\tasks.py", line 287, in _wakeup
value = future.result()
File "c:\Python34\lib\asyncio\futures.py", line 275, in result
raise self._exception
File "c:\Python34\lib\asyncio\tasks.py", line 238, in _step
result = next(coro)
File "c:\Python34\lib\site-packages\openassets\protocol.py", line 68, in get_output
transaction = yield from self._transaction_provider(transaction_hash)
File "c:\Python34\lib\asyncio\coroutines.py", line 141, in coro
res = func(_args, *_kw)
File "C:\Users\ganesh\Documents\Projekte\Bitcoin\coloredcoins\colorcore\colorcore\providers.py", line 91, in get_transaction
return self._proxy.getrawtransaction(transaction_hash)
File "c:\Python34\lib\site-packages\bitcoin\rpc.py", line 310, in getrawtransaction
(self.class.name, ex.error['message'], ex.error['code']))
IndexError: Proxy.getrawtransaction(): No information available about transaction (-5)

Any help is highly appreciated.

Regards,
Ganesh

ImportError: No module named 'bitcoin'

I've just finished installing bitcoind from source on Ubuntu 14.04, and running it with the server and daemon arguments. After installing colorcore and all of its dependencies, I'm getting the following error after amy attempt to execute the script:

python3 colorcore.py --help
Traceback (most recent call last):
File "colorcore.py", line 31, in
import colorcore.routing
File "/home/colorcore/colorcore/routing.py", line 26, in
import bitcoin.core
ImportError: No module named 'bitcoin'

Perhaps the server is still downloading / building the blockchain? Any other ideas what may be causing this issue?

this is what i get when asking for help

root@franko:~/colorcore# python colorcore.py --help
Traceback (most recent call last):
File "colorcore.py", line 31, in
import colorcore.routing
File "/root/colorcore/colorcore/routing.py", line 126
return (yield from self.error(102, 'The request path is invalid', message))
^

ScriptSig seems to be strange

Hi,

I have setup the colorcore engine and I am using requests module to communicate with the colorcore server. So far everything seems good and working. However when I try issue an asset from a bitcoin address I get this raw transaction back.

Raw transaction from ColorCore:
0100000002b12711f432fb25b2cbbdce997d9177e2d2956df21888f6a22a79fb1da3532175020000001976a9145bacfcd3aa3bbcb43b7f9582e8560d91c391ebb588acffffffffb12711f432fb25b2cbbdce997d9177e2d2956df21888f6a22a79fb1da3532175030000001976a9145bacfcd3aa3bbcb43b7f9582e8560d91c391ebb588acffffffff0358020000000000001976a9145bacfcd3aa3bbcb43b7f9582e8560d91c391ebb588ac00000000000000001c6a1a4f410100010a13687474703a2f2f676f6f2e676c2f733334736430b2f953020000001976a9145bacfcd3aa3bbcb43b7f9582e8560d91c391ebb588ac00000000

Now the to the strange part here when you decode it and look at the ScriptSig its seems wrong. As I understand the bitcoin protocol if the transaction is unsigned nothing should be in ScriptSig. Since I use mode='unsigned' the ScriptSig should be blank, right?

Example:

    "Vin": [
        {
            "TxId": "752153a31dfb792aa2f68818f26d95d2e277917d99cebdcbb225fb32f41127b1",
            "Vout": "2",
            "ScriptSig": {
                **"Asm": "OP_DUP OP_HASH160 5bacfcd3aa3bbcb43b7f9582e8560d91c391ebb5 OP_EQUALVERIFY OP_CHECKSIG",
                "Hex": "76a9145bacfcd3aa3bbcb43b7f9582e8560d91c391ebb588ac"**
            },
            "CoinBase": null,
            "Sequence": "4294967295"
        },

Min confirmation and max confirmation doesn't seem to work

 """Obtains the balance of the wallet or an address."""
        from_address = self._as_any_address(address) if address is not None else None
        unspent_outputs = yield from self._get_unspent_outputs(
            from_address, min_confirmations=self._as_int(minconf), max_confirmations=self._as_int(maxconf))

They min confirmation and max confirmation is not implemented in the code below though its being passed on multiple times

def _get_unspent_outputs(self, address, **kwargs):
        cache = self.cache_factory()
        engine = openassets.protocol.ColoringEngine(self.provider.get_transaction, cache, self.event_loop)

        unspent = yield from self.provider.list_unspent(None if address is None else [str(address)], **kwargs)

        result = []
        for item in unspent:
            output_result = yield from engine.get_output(item['outpoint'].hash, item['outpoint'].n)
            output = openassets.transactions.SpendableOutput(
                bitcoin.core.COutPoint(item['outpoint'].hash, item['outpoint'].n), output_result)
            output.confirmations = item['confirmations']
            result.append(output)

        # Commit new outputs to cache
        yield from cache.commit()
        return result

Distribute price

How often can one change the price in "distribute" argument?
Or better: how often can I run a cron job that would run "distribute" with a different price, to sign and broadcast transactions?

Issue asset address

Something wrong I think with base58 encoding. currently investigating...

python3 colorcore.py issueasset 1LBKEjcZoPyhkm9hUb7XyM3ez3opNzXuXX 10000
Traceback (most recent call last):
  File "colorcore.py", line 35, in <module>
    colorcore.routing.Program.execute()
  File "/home/benjyz/lykke/colorcore/colorcore/routing.py", line 64, in execute
    router.parse(sys.argv[1:])
  File "/home/benjyz/lykke/colorcore/colorcore/routing.py", line 337, in parse
    func(**args)
  File "/home/benjyz/lykke/colorcore/colorcore/routing.py", line 254, in decorator
    self.event_loop.run_until_complete(coroutine_wrapper())
  File "/usr/lib/python3.4/asyncio/base_events.py", line 316, in run_until_complete
    return future.result()
  File "/usr/lib/python3.4/asyncio/futures.py", line 275, in result
    raise self._exception
  File "/usr/lib/python3.4/asyncio/tasks.py", line 238, in _step
    result = next(coro)
  File "/home/benjyz/lykke/colorcore/colorcore/routing.py", line 239, in coroutine_wrapper
    result = yield from function(controller, *args, **kwargs)
  File "/home/benjyz/lykke/colorcore/colorcore/operations.py", line 195, in issueasset
    to_address = self._as_any_address(from_address)
  File "/home/benjyz/lykke/colorcore/colorcore/operations.py", line 287, in _as_any_address
    result = colorcore.addresses.Base58Address.from_string(address)
  File "/home/benjyz/lykke/colorcore/colorcore/addresses.py", line 67, in from_string
    decoded_bytes = bitcoin.base58.decode(base58)
  File "/usr/local/lib/python3.4/dist-packages/bitcoin/base58.py", line 75, in decode
    if c not in b58_digits:
TypeError: 'in <string>' requires string as left operand, not int

Get OpenAssets address for given Bitcoin address

Hi,

when receiving assets I would like to generate a new address. I can generate an address with bitcoind, but this doesn't give me the corresponding OpenAssets address. In getbalance/listunspent a new address is only visible and converted to OpenAssets format after it has received a transactions.

Is there a way to use the API to convert an arbitrary bitcoin address?

Any help is highly appreciated.

Kind regards,
Ganesh

RegTest addresses

Hello,

I'm running a regtest server - the addresses generated by the server are not valid. I assume this is expected behaviour. Base58Address and bitcoin.wallet.CBitcoinAddress requires valid addresses. Is there a way of running colorcore with a regtest server?

Thanks
Fuzz.

Getbalance error?

While bitcoin core was updating, I sent an asset amount, and getbalance was returning "[]".
After bitcoin core in sync, I get the following error. Why is that?

root@node:/usr/share/colorcore# python3.5 colorcore.py getbalance
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/bitcoin/rpc.py", line 307, in getrawtransaction
r = self._call('getrawtransaction', b2lx(txid), 1 if verbose else 0)
File "/usr/local/lib/python3.5/site-packages/bitcoin/rpc.py", line 146, in _call
raise JSONRPCException(response['error'])
bitcoin.rpc.JSONRPCException: msg: 'No information available about transaction' code: -5

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "colorcore.py", line 35, in
colorcore.routing.Program.execute()
File "/usr/share/colorcore/colorcore/routing.py", line 64, in execute
router.parse(sys.argv[1:])
File "/usr/share/colorcore/colorcore/routing.py", line 338, in parse
func(*_args)
File "/usr/share/colorcore/colorcore/routing.py", line 255, in decorator
self.event_loop.run_until_complete(coroutine_wrapper())
File "/usr/local/lib/python3.5/asyncio/base_events.py", line 337, in run_until_complete
return future.result()
File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 241, in _step
result = coro.throw(exc)
File "/usr/share/colorcore/colorcore/routing.py", line 240, in coroutine_wrapper
result = yield from function(controller, *args, *_kwargs)
File "/usr/share/colorcore/colorcore/operations.py", line 61, in getbalance
from_address, min_confirmations=self._as_int(minconf), max_confirmations=self._as_int(maxconf))
File "/usr/share/colorcore/colorcore/operations.py", line 343, in _get_unspent_outputs
output_result = yield from engine.get_output(item['outpoint'].hash, item['outpoint'].n)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 73, in get_output
colored_outputs = yield from self.color_transaction(transaction)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 104, in color_transaction
self.get_output(input.prevout.hash, input.prevout.n), loop=self._loop)))
File "/usr/local/lib/python3.5/asyncio/futures.py", line 358, in iter
yield self # This tells Task to wait for completion.
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 290, in _wakeup
future.result()
File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 241, in _step
result = coro.throw(exc)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 73, in get_output
colored_outputs = yield from self.color_transaction(transaction)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 104, in color_transaction
self.get_output(input.prevout.hash, input.prevout.n), loop=self._loop)))
File "/usr/local/lib/python3.5/asyncio/futures.py", line 358, in iter
yield self # This tells Task to wait for completion.
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 290, in _wakeup
future.result()
File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 241, in _step
result = coro.throw(exc)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 73, in get_output
colored_outputs = yield from self.color_transaction(transaction)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 104, in color_transaction
self.get_output(input.prevout.hash, input.prevout.n), loop=self._loop)))
File "/usr/local/lib/python3.5/asyncio/futures.py", line 358, in iter
yield self # This tells Task to wait for completion.
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 290, in _wakeup
future.result()
File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 241, in _step
result = coro.throw(exc)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 73, in get_output
colored_outputs = yield from self.color_transaction(transaction)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 104, in color_transaction
self.get_output(input.prevout.hash, input.prevout.n), loop=self._loop)))
File "/usr/local/lib/python3.5/asyncio/futures.py", line 358, in iter
yield self # This tells Task to wait for completion.
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 290, in _wakeup
future.result()
File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/local/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "/usr/local/lib/python3.5/site-packages/openassets/protocol.py", line 68, in get_output
transaction = yield from self._transaction_provider(transaction_hash)
File "/usr/local/lib/python3.5/asyncio/coroutines.py", line 206, in coro
res = func(_args, *_kw)
File "/usr/share/colorcore/colorcore/providers.py", line 91, in get_transaction
return self._proxy.getrawtransaction(transaction_hash)
File "/usr/local/lib/python3.5/site-packages/bitcoin/rpc.py", line 310, in getrawtransaction
(self.class.name, ex.error['message'], ex.error['code']))
IndexError: Proxy.getrawtransaction(): No information available about transaction (-5)
root@node:/usr/share/colorcore#

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.