了解BigchainDB中交易的状态

时间:2018-09-29 20:56:26

标签: bigchaindb

我向BigchainDB实例发送了一笔交易。

bdb = BigchainDB(url_of_instance_with_port)

如果我跑步 bdb.transactions.retrieve(txid),我得到以下信息:

{'inputs': [{'owners_before': ['31LBKyjyd6GEA7R88mnHwthMf2ygtyB8xGDv1dZHfkqu'],
   'fulfills': None,
   'fulfillment': 'pGSAIB3NDv0SG46f7PYdtgzMezpc8Kq8F1nR0Y1Brwe5zbkQgUDWwwaRXj4yx9Z49f76L33feu9iUhNYUs0B3oPyLllUDZrHopIoHRt0FeBLd_5Yt-m1riyc3-0jYNdM0VAyGwAG'}],
 'outputs': [{'public_keys': ['31LBKyjyd6GEA7R88mnHwthMf2ygtyB8xGDv1dZHfkqu'],
   'condition': {'details': {'type': 'ed25519-sha-256',
     'public_key': '31LBKyjyd6GEA7R88mnHwthMf2ygtyB8xGDv1dZHfkqu'},
    'uri': 'ni:///sha-256;cfREMIEIaEdXKEfokspCcfiu9jSYvlfeq6zwdj2x3Fw?fpt=ed25519-sha-256&cost=131072'},
   'amount': '1'}],
 'operation': 'CREATE',
 'metadata': {...},
 'asset': {...},
 'version': '2.0',
 'id': '61b7f06a106d7db4e5cbaaf23f160d934c7e6e5ef6ab1df7c1eefca1def6ea18'}

但是,bdb.blocks.get(txid)超时并且块状态保持不变,即,即使块零也不包含任何事务。 为什么?我该如何进一步调试?

这又引出了我一个问题,BigchainDB中的采矿是什么概念?何时创建块?

1 个答案:

答案 0 :(得分:0)

如果bdb.blocks.get(txid)调用超时,则这可能是Python驱动程序中的错误,除非在您进行调用时BigchainDB网络中断,在这种情况下它当然会超时。您可以重试一次吗,即发布新交易,然后执行bdb.blocks.get(txid)。如果再次超时,则可以通过网络浏览器尝试相同的HTTP请求,即在地址栏中输入类似的内容:

http://your-hostname:port/api/v1/blocks?transaction_id=blahblahblah

,然后按Enter键,看看它是否有效。如果不是,则该节点出了点问题。如果它能正常工作,则说明Python驱动程序有问题。

如果Python驱动程序有问题,请在https://github.com/bigchaindb/bigchaindb-driver/issues/new

提交新的问题

关于采矿

BigchainDB节点不像某些比特币或以太坊节点那样进行“挖矿”。 BigchainDB网络中的节点使用Tendermint共识机制以不同的方式达成拜占庭容错(BFT)共识。 BFT共识的理论和实践可以追溯到1970年代后期(尽管BFT术语仅在1980年代初才出现),因此这不是一个新主意。 Tendermint只是更新的BFT共识算法/协议之一。