Host-customized fork of https://github.com/tecnovert/basicswap/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
2 years ago
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
# Copyright (c) 2020 tecnovert
|
||
|
# Distributed under the MIT software license, see the accompanying
|
||
|
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
||
|
|
||
|
from .btc import BTCInterface
|
||
|
from basicswap.chainparams import Coins
|
||
|
from .contrib.pivx_test_framework.messages import (
|
||
|
CBlock,
|
||
|
ToHex,
|
||
|
FromHex)
|
||
|
|
||
|
|
||
|
class PIVXInterface(BTCInterface):
|
||
|
@staticmethod
|
||
|
def coin_type():
|
||
|
return Coins.PIVX
|
||
|
|
||
|
def createRawSignedTransaction(self, addr_to, amount):
|
||
|
txn = self.rpc_callback('createrawtransaction', [[], {addr_to: self.format_amount(amount)}])
|
||
|
|
||
|
fee_rate, fee_src = self.get_fee_rate(self._conf_target)
|
||
|
self._log.debug(f'Fee rate: {fee_rate}, source: {fee_src}, block target: {self._conf_target}')
|
||
|
|
||
|
options = {
|
||
|
'lockUnspents': True,
|
||
|
'feeRate': fee_rate,
|
||
|
}
|
||
|
txn_funded = self.rpc_callback('fundrawtransaction', [txn, options])['hex']
|
||
|
txn_signed = self.rpc_callback('signrawtransaction', [txn_funded])['hex']
|
||
|
return txn_signed
|
||
|
|
||
|
def getBlockWithTxns(self, block_hash):
|
||
|
# TODO: Bypass decoderawtransaction and getblockheader
|
||
|
block = self.rpc_callback('getblock', [block_hash, False])
|
||
|
block_header = self.rpc_callback('getblockheader', [block_hash])
|
||
|
decoded_block = CBlock()
|
||
|
decoded_block = FromHex(decoded_block, block)
|
||
|
|
||
|
tx_rv = []
|
||
|
for tx in decoded_block.vtx:
|
||
|
tx_dec = self.rpc_callback('decoderawtransaction', [ToHex(tx)])
|
||
|
tx_rv.append(tx_dec)
|
||
|
|
||
|
block_rv = {
|
||
|
'hash': block_hash,
|
||
|
'tx': tx_rv,
|
||
|
'confirmations': block_header['confirmations'],
|
||
|
'height': block_header['height'],
|
||
|
'version': block_header['version'],
|
||
|
'merkleroot': block_header['merkleroot'],
|
||
|
}
|
||
|
|
||
|
return block_rv
|