コード例 #1
0
ファイル: transaction.py プロジェクト: snghoon/pythonbitcoin
def getScriptSigMessage(tx, i):  # -> bytes

    rawTx = ""

    rawTx += key.encode(tx["version"], 256, 4)[::-1]

    #rawTx += setCompactInt(len(prevTxs))
    rawTx += setCompactInt(1)

    #for i in range(len(prevTxs)):

    rawTx += key.changeBase(tx["txIns"][i]["prevOutTxid"], 16, 256)[::-1]
    rawTx += key.encode(tx["txIns"][i]["prevOutIndex"], 256, 4)[::-1]

    tempScriptPubKey = key.changeBase(tx["txIns"][i]["prevOutScriptPubKey"],
                                      16, 256)[::-1]

    rawTx += setCompactInt(len(tempScriptPubKey))
    rawTx += tempScriptPubKey[::-1]
    rawTx += key.encode(tx["txIns"][i]["sequence"], 256, 4)[::-1]

    rawTx += setCompactInt(tx["numOut"])

    for i in range(tx["numOut"]):
        rawTx += setTxOut(tx["txOuts"][i])

    rawTx += key.encode(tx["lockTime"], 256, 4)[::-1]
    rawTx += key.encode(tx["sigHashCode"], 256, 4)[::-1]

    print 'rawTx' + binascii.hexlify(rawTx)

    return rawTx
コード例 #2
0
ファイル: transaction.py プロジェクト: snghoon/pythonbitcoin
    def createTx(self, UTXOs, toAddr, amount):

        self._tx = {}
        self._tx["version"] = 1
        self._tx["numIn"] = len(UTXOs)
        self._tx["txIns"] = []

        for UTXO in UTXOs:
            tempTxIn = {}
            tempTxIn["prevOutTxid"] = UTXO["txid"]
            tempTxIn["prevOutIndex"] = UTXO["index"]
            tempTxIn["prevOutScriptPubKey"] = UTXO["scriptPubKey"]
            tempTxIn["lenScript"] = 0
            tempTxIn["scriptSig"] = None
            tempTxIn["sequence"] = 0xffffffff
            self._tx["txIns"].append(tempTxIn)

        self._tx["numOut"] = 1
        self._tx["txOuts"] = []

        for i in range(self._tx["numOut"]):
            tempTxOut = {}
            tempTxOut["value"] = amount
            pubKeyHash = key.changeBase(toAddr, 58, 256)[1:-4]
            tempTxOut["scriptPubKey"] = setScriptPubKey(pubKeyHash)
            tempTxOut['lenScript'] = len(
                key.changeBase(tempTxOut['scriptPubKey'], 16, 256))
            self._tx["txOuts"].append(tempTxOut)

        self._tx["lockTime"] = 0
        self._tx["sigHashCode"] = 1
コード例 #3
0
ファイル: transaction.py プロジェクト: snghoon/pythonbitcoin
def setTxIn(txIn):  # -> bytes
    _rawTxIn = ""

    _rawTxIn += key.changeBase(txIn["prevOutTxid"], 16, 256)[::-1]
    _rawTxIn += key.encode(txIn["prevOutIndex"], 256, 4)[::-1]
    _rawTxIn += setCompactInt(txIn["lenScript"])
    #scriptSig = setScriptSig(prevTxs, tx)
    #_rawTxIn += setCompactInt(len(scriptSig))
    #_rawTxIn += scriptSig
    _rawTxIn += key.changeBase(txIn["scriptSig"], 16, 256)
    _rawTxIn += key.encode(txIn["sequence"], 256, 4)[::-1]

    return _rawTxIn
コード例 #4
0
ファイル: transaction.py プロジェクト: snghoon/pythonbitcoin
def setTxOut(txOut):  # -> bytes
    _rawTxOut = ""

    _rawTxOut += key.encode(txOut["value"], 256, 8)[::-1]
    _rawTxOut += setCompactInt(txOut["lenScript"])
    _rawTxOut += key.changeBase(txOut["scriptPubKey"], 16, 256)

    return _rawTxOut
コード例 #5
0
ファイル: wallet.py プロジェクト: snghoon/pythonbitcoin
	def __init__(self, privKey=None):
		
		if privKey == None:
			self._privKey = key.getPrivKeyFromSeed(str(random.randrange(1,100000)+9218912379821897321978231892137)) # object
		else:
			self._privKey = key.getPrivKey(key.changeBase(privKey,16,256))

		self._pubKey = key.getPubKey(self._privKey, raw=False) # object
		self._address = key.getAddress(self._pubKey, raw=False) # bytes
コード例 #6
0
ファイル: transaction.py プロジェクト: snghoon/pythonbitcoin
    def __init__(self, rawTx=None):  # hex

        if rawTx != None:
            self._rawTx = key.changeBase(rawTx, 16, 256)

            self._tx = txDeserialize(self._rawTx)